1.背景:分类任务
2.cnn层的设计:
思路:将embedding维度(300维)的向量映射为新的embedding,new-embedding的数目最好比原来的大,因此设计256+256+512,在embedding维做
concat,如果numlayer为3层,则new_emb = 1024; 若为2层,则new_emb= 512, 比原有的embedding大,多层设计,适当的增加权重与网络复杂度。
cnn层的实现如下图解所示:
3.dot-attention的设计
思路:在许多应用场景下,如问答等,决定分类的不是一只是一个seq, 设计一个显示两个seq相关性的算子网络段。
实现图解:
4.loss 的问题:
这是pytorch的一个坑,crossentropyloss相当于softmax加nullloss,与交叉熵不太相关。
crossentropyloss
如果要使用二进制交叉熵的话,
使用binary_crossentroyloss, 该函数是BCEloss的拓展,经过笔者实验,是mean(BCEloss),如果weight设置是平均的,
weight*BCEloss = binargy_crossentroyloss