IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> NLP论文解读《Learning Text Similarity with Siamese Recurrent Networks》 -> 正文阅读

[游戏开发]NLP论文解读《Learning Text Similarity with Siamese Recurrent Networks》

目录

1、摘要

2.相关工作

3.Siamese RNN

3.1? Bidirectional RNNs 以及 LSTM模型:

3.2?Siamese network 孪生网络

3.3?Contrastive loss function 相对损失函数

4.实验部分

4.1.n-gram matcher

4.2 数据增强

4.2.1、Typo and spelling invariance?增加拼写错误

4.2.2、Synonyms?同义词替换

4.2.3、Extra words?增加多余信息

4.2.4、Feedback??人工反馈(工业应用)

5. 总结

创新点

启发点

文章: Learning Text Similarity with Siamese Recurrent Networks

来源:ACL 2016?

介绍:论文提出了一种学习变长字符序列相似性度量的深层结构。该模型将字符级双向LSTM与Siamese体系结构相结合。模型将可变长度的字符串投影到固定维度的嵌入空间中。模型不仅能学到不同词之间的语义差异性与语义不变性,应用于基于人工标注的分类任务。

1、摘要

论文提出一种模型用于解决职位归一化问题,将输入字符串映射到外部预定义的类别中去,可视为高度多类别的的分类任务。例如,字符串“software architectural technician Java/J2EE”可能映射为“Java developer”。

本文采用的方法着重于学习字符串的表示形式,使得具有相同含义的职位的表达能够紧密地联系在一起。优点:灵活性比较高,即字符串的表示可以作为后续分类器的输入,也可以用于查找密切相关的职位或者将职位进行聚类,模型的架构可以让我们在有限的监督学习下学习到有用的表示。

主要讲解本篇论文提出一个基于字符级别变长序列的双向LSTM网络结构,并且文中提出多种文本增强的思路,模型不仅能学到不同词之间的语义差异性与语义不变。

2.相关工作

神经网络以及词表示在NLP任务中的发展,以及孪生网络的发展和应用。

??

3.Siamese RNN

主要讲解孪生网络的模型输入数据、相关参数矩阵介绍、对比损失函数公式介绍

3.1? Bidirectional RNNs 以及 LSTM模型:

?

3.2?Siamese network 孪生网络

孪生网络是共享权重的双分支网络,它包括两部分相同的网络,然后最后通过一个energy function合并在一起。图1是本文研究的网络的结构。孪生网络的数据集由三元组?(x_{1},x_{2},y)?组成,其中(x_{1},x_{2}) 是字符序列,y\in {[0,1]}?表示?(x_{1},x_{2})? 是否相似 ( y=1)或不相似( y=0 )【y只是个标志量,相似为1,不相似为0】)。训练的目标是最小化嵌入空间中相似度之间的距离,最大化不同对之间的距离。

3.3?Contrastive loss function 相对损失函数

该网络包含四层双向LSTM节点,最后一个BiLSTM层的每个时间步的激活值被平均化,从而产生一个固定维度的输出。这个输出再通过一个densely connected前馈层进行投影。

f_{W}(x_{1})?和f_{W}(x_{2})是由网络函数f_{W}计算出的嵌入空间中 x_{1}?和?x_{2}?的投影。我们将模型的energy functionE E_{W}?定义为嵌入向量 x_{1}?和?x_{2}的余弦相似度:

损失函数的自变量为全体数据集,是数据集中每一个数据损失的累加。?

简洁起见,我们将用E_{W}表示? E_{W}(x_{1},x_{2})数据集?X= {< x_{1}^{(i)} ,x_{2}^{(i)},y^{(i)}> } 的总的损失函数由下式给出(上标中的 i 表示数据集中的第 i 个元素):

每一个实例的损失函数 L_{W}^{i}是一个Contrastive loss function,由相似度?y = 1 情况下的损失函数L_{+}和相似度?y=0?情况下的损失函数L_{-}?组成:

相似和不相似情况下的损失函数如下:

其中,E_{W}?表示为文本相似度,范围是{0,1}。

句子对越相似,E_{W}的值越大,反之?L_{+}?越小。L_{+}?越小表示模型函数越小,不用优化。

如果数据集中标签为1的两文本模型输出的余弦相似度很小,需要进一步优化返回一个较大的损失函数值。

输入标签为负值。输入标签为负余弦相似度值很小,即小于给定的阈值m,则可以认为模型已经可以分出为负样例,则让损失为0.如果模型返回的相似度值大于m,则需要优化。模型计算出的余弦相似值越大,说明模型越不好,需要返回的损失值越大。

下图是损失函数的几何图,分别显示了正和负分量。需要注意的是L_{+}按比例缩小,以补偿正负样本的采样比例。

?上图中的图像蓝色表示标签为正的增长损失,红色表示标签为负的增长损失。

网络包含4层BiLSTM(64-d hidden),最后一层的BiLSTM的hidden state和cell state进行concat,然后在timestep维度进行average处理,并接一个Dense层(激活函数为tanh),得到的两个Embedding Space进行Cosine sim计算,得到的相似度分数E用于损失函数计算,损失函数使用对比损失函数,计算方法为,损失函数正例:1/4(1-E)^2,负例:E^2(如果E<m),否则0。

4.实验部分

主要首先讲解了baseline模型n-gram matcher,然后介绍了文本数据增强的方法,主要有随机替换字符和一定比例的拼写错误、同义词替换、添加多余信息可以增加鲁棒性、以及人工反馈情况。

4.1.n-gram matcher

将模型与基准n-gram匹配器的性能进行比较。给定输入字符串,此匹配器通过最大化相似性评分功能从基本分类法中查找最接近的邻居。匹配器随后使用该邻居的组标签来标记输入字符串。相似度评分函数定义如下。令Q =?q1,...,qM?是作为字符序列的查询,而C =?c1,。 。 。 ,cN?是分类法中的候选匹配。

其中,Q和C为文本,M、N分别为Q、C的文本长度。

举例子说明匹配器:

Q: I love you? ?C:l hate you? 假设使用3-gram匹配器则:

M= 8,N=8

TQ= {llo, lov, ove, vey, eyo, you}

TC= {lha, hat, ate, tey,eyo, you}

TQ-TC={llo, lov, ove, vey, lha, hat, ate, tey} ,? ?TQ?\cap?TC={eyo,you}

|TQ-TC| = 8,? |TQ?\cap?TC| =2

Match(Q,C) = 8-2 =6 ,Sim(Q,C)=8-6=2

4.2 数据增强

工作职称分类法。该分类法将一组19,927个作业标题划分为4,431个组Group内包含job。

title数量与group数量之间的分布:含有上百条title的group是很少的,通常一个group只含几个title.

数据集采样:按照4:1的采样方式,其中4为between-class (negative) pairs,1为within-class (positive) pairs。

分类数据集的建设:分为四个stage,每个stage又分为两步:

  1. 使用特殊属性来进行数据扩充
  2. 对模型进行与该特殊属性相关的行为测试(存疑)四个stage环环相扣,每次augmentation都是基于之前augmentation的基础上

4.2.1、Typo and spelling invariance?增加拼写错误

针对正类样本,随机替换20%字符并删除5%字符,操作之后额外生成大量训练数据。
再取19928条作为测试数据,这些测试数据中被替换或删除的字符占比5%,符合正常人类拼写错误。同时构建了N=19928的Typos测试集,5%的字母被随机替换或者删除。

4.2.2、Synonyms?同义词替换

1、人工构建的同义词词库

2、归纳:在同一个group内,如果两个job title都有某一个或两个词,如“C++ developer”和“C++ programmer”都有“C++”,那么就推断developer和programmer就被认为是同义词(candidate),只要满足:1 两者不出现在isolation(可能是指其他group或者人为设置的排除域),2 不包含特殊字符如“&”,3 包含最多两个词,那么两者就会被认为是同义词(组)

同时构建了N=7909的Composition测试集,构建方法为同义词替换。

4.2.3、Extra words?增加多余信息

实际文本看上去往往不是那么精简,有一些无用信息,加入后不影响语义。

实验共构造了1949条测试数据。

4.2.4、Feedback??人工反馈(工业应用)

实际生产中,数据样本并非每一条都是人工录入,程序自动导入的数据可能出现标签错误,这个时候要求人工可以接入修改标签,测试模型是否能改正之前的错误。

实验设置了1000个测试样例。

实验结果:

5. 总结

创新点

  • 运用孪生神经网络?接收输入数据
  • 利用双向LSTM网络?提取文本特征
  • 利用对比损失函数?优化模型
  • 通过对同类job titles的各种变体(多种spell、错别字、同义词、额外词汇)的学习获得了invariant,对不同类别的学习获得了selectivity

启发点

  • 循环神经网络结构对于处理文本、语义特征的强大表现;
  • 分层结构是深度学习的基本结构(嵌入层、RNN层、全连接层、预测层)
  • 可以考虑对网络output的位置使用attention而不是直接对每个时刻的输出求均值
  • 可以考虑采用triplet loss function替换余弦相似度
  • 可以考虑CNN与RNN结合
  • 仅仅在job titles这个task上效果出众,但是其他标准的文本similarity尚未验证
  • 用于对比的baseline较弱
  • 负样本的采样方法需要改进,原本是直接在其他类中随机采样,例如负样本可以是在距离较小的group之间采集,加大难度从而进行明确区分

6、实现代码? (待实现)

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-04-15 00:35:02  更:2022-04-15 00:39:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 16:30:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码