Attention机制最先被应用在图像处理中,后来逐渐被nlp引入,并且取得了不错的效果。watson系统研究人员在2016年发表了论文“LSTM-BASED DEEP LEARNING MODELS FOR NON-FACTOID ANSWER SELECTION”,通过对问答对进行建模,然后采用BILSTM抽取问答对的特征,最后利用问答对常用的hinge loss作为模型的目标函数。
目标函数QA_LSTM算法的计算流程如下图1:
图1BILSTM的优势在于可以考虑到词与词顺序上的关系而被广泛应用nlp中,但是经过远距离的计算,距离较远的词所起到的作用降低。考虑到BILSTM在隐含层计算单元的限制,Attention机制被引入增强关联较强的词权重,降低关联较小的词的权重。论文“LSTM-BASED DEEP LEARNING MODELS FOR NON-FACTOID ANSWER SELECTION”采用问题特征与答案特征进行Attention计算,然后将attention计算得到的权值应用到答案特征用以加强对问题较为重要的词的权值,降低对问题不是很重要词的权值。整个算法的流程图如下图2:
图2QA_LSTM_Attention算法步骤如下:
1、Q(batch_size, sequence_len):由于算法采用的是固定长度LSTM,因此需要对问题和答案进行预处理(超出固定长度则截断,不足则补充)。
2、Embedding(batch_size, sequence_len, embedding_size):将问题和答案进行embedding表示。
3、BILSTM特征计算(sequence_len, batch_size, rnn_size)。
4、Attention计算。采用BILSTM计算的问题特征和答案特征计算Attention权值,用于保留答案中较为重要的词。
5、目标函数计算(cosine_similary)。
本实验采用insurance_qa数据集,你可以在这里获得。本次实验同时也参考了本组同学之前的研究(QA问答系统中的深度学习技术实现)。
步骤1中,本实验采用batch_size为20,sequence_len为100(由于实验计算量较大,batch_size调整太大容易导致OOM)。
步骤2中,本实验预先对词向量进行word2vec预训练,embedding_size采用100。
步骤3中,由于同时需要计算问题、正向答案和负向答案的BILSTM特征,因此这里需要共享一个LSTM网络(博主最开始也在这里犯错,没有共享网络,导致效果不佳)
BILSTM特征计算步骤4中,计算Attention权值。这里对问题特征进行max-pooling计算最大特征,然后用这个特征去和答案特征计算Attention权值,然后将Attention权值应用在答案特征之上,最后再取max-pooling。(论文中采用取平均,但是本人实验时效果不佳)
参数设置:
1:、这里优化函数采用论文中使用的SGD。
2、学习速率为0.1。
3:、训练150轮,大概需要1天的时间,从训练日志观察得到,100轮左右基本达到稳定。
4、margin这里采用论文中的0.2,其它参数也试过0.05、0.1效果一般。
5、这里训练没有采用dropout和l2约束,之前试过dropout和l2对实验效果没有提升,这里就没有采用了。
实验效果对比:
QA_CNN:0.62左右
QA_LSTM:0.66左右
QA_LSTM_CNN:0.67左右
QA_LSTM_Attention :0.686左右
如果有任何问题欢迎发送邮件到lirainbow0@163.com。
网友评论