论文原文:Siamese Recurrent Architectures for Learning Sentence Similarity

主要内容

本文主要为针对短语/句子/序列的相似性比较提出了一种评价模型——Siamese LSTM(孪生网络)。该模型是输入为句子对,输出为输入句子对的相似性得分(得分为1-5)。该模型在SemEval 2014数据集上取得了state-of-art的结果。

数据集

预训练数据集:STS历年数据集,共11000多条
训练集:SemEval 2014 train data,共5000条
测试集:SemEval 2014 test data, 共4927条
每条数据的形式如下:

[“I like playing basketball.”,”My favourite sports is basketball.”, 3.4]

模型

SiameseLSTM论文阅读及其Tensorflow实现

模型的输入:
句子1: “He is smart.”
句子2: “A truly wise man.”
在输入时,首先需要对句子进分词,以单词为单位通过查表方式转换成对应的预训练好的固定维度的词向量(word embedding),并按序输入网络。

模型的输出:
对输入句子的相似性的评价分数。由于模型采用的打分函数为ex,所以输出的得分区间为 (0, 1]。所以在具体实现的时候,作者将模型的输出进行了相应的变换,将得分的区间变换到了[1, 5]。

句子向量(sentence embedding):
本文作者直接将LSTM的最后一个隐藏状态作为句子的embedding。
或许可以在这一步上进行改近,提示句子向量的性能。

特别说明:
根据作者的意思,两个LSTM可以是共享权重的,也可以是不共享权重的。在作者提供的代码中,他在进行参数更新时,是将两个LSTM对应参数的梯度进行平均,然后进行更新的。(由于对Theano框架不是很熟悉,这部分没有看的很明白,大致应该是这个意思,如果有错误,欢迎批评指正。)

训练

损失函数:模型预测得分与真实得分的均方差
优化方法:AdaDelta

实验结果

具体结果参见博文开头的论文。

Tensorflow 实现

实验工具:Python3,TensorFlow1.1
具体实验代码在我的Github上,地址为:SiameseLSTM的tf实现

主要涉及的问题:
1. 实现LSTM的不定长输入
2. LSTMRNN的参数复用(reuse)

相关文章:

  • 2022-01-12
  • 2021-11-09
  • 2022-12-23
  • 2021-05-31
  • 2021-05-18
  • 2021-05-29
猜你喜欢
  • 2022-01-16
  • 2021-12-30
  • 2021-06-07
  • 2021-10-16
  • 2021-12-28
  • 2021-09-18
  • 2021-04-19
相关资源
相似解决方案