一、Embedding 介绍
一般来说,NLP任务的基本流程包括以下方面:
(1)文本预处理:文本清理、标准化、纠错、改写等。
(2)Tokenzing:分字、分词、分子词等。
(3)构造数据:将 Token转为模型需要的输入。
(4)文本特征表征:将输入的数据转换为向量表征(One-Hot、TF-IDF、Embedding)。
(5)结果输出:将向量表征转换为最终输出。
对于自然语言因其输入是一段文本,在中文中也即一个个字或一个个词,而行业内把这个字或词叫Token。如果要使用模型,拿到一段文本的第一件事就是把他Token化。当然,可以按字也可按词,或按你想要的其他方式。例如给定文本:我们相信AI可以让世界变得更美好。
按字Token化:我/们/相/信/A/I/可/以/让/世/界/变/得/更/美/好/。
按词Token化:我们/相信/AI/可以/让/世界/变得/更/美好/。
按Bi-Gram Token化:我们/们相/相信/信A/AI/I可/可以/以让/让世/世界/界变/变得/得更/更美/美好/好。
以上每种方法都有自己的优点和不足,在大模型之前,按词的方式比较常见,但在有了大模型之后,基本都是按字来了。
Token化后就要思考怎么表示这些Token,计算机只能处理数字,所以要想办法把Token变成计算机认识的数字。可以认为Embedding就是把Token变成计算机认识的数字的过程。
Embedding就是用一个低维向量(数据降维)表示一个物体,这个物体可以是一个单词、一个商品、一部电影等。Embedding的性质能使有相近含义的物体经映射后产生的向量们距离相近,比如Embedding(复仇者联盟)和Embedding(钢铁侠)的距离会很接近,而Embedding(复仇者联盟)和Embedding(阿甘正传)的距离就会远一些。此外,Embedding还有数学运算的关系,可以推断出单词之间的语义关系,例如 queen = king - man + woman。
二、LSTM介绍
假如现在有一任务,需要预测“ I grew up in France...I speak fluent French" 最后的词 ”French“。
当前建议下一个词可能是一种语言的名字,若需弄清楚就需要前文提到的France,而相关信息和当前预测位置之间的间隔很大。不幸的是,在这个间隔不断增大时,RNN会丧失学习连接到如此远的信息的能力。即RNN在反向传播时会面临梯度消失问题,而梯度是用来更新权值的(新权值=旧权值-梯度*学习率),进而导致权值几乎不更新,较早的学习器停止学习。
因此RNN会忘记它在较长序列中以前的内容,只具有短时记忆。而LSTM可在一定程度上解决梯度消失和梯度爆炸问题(本质上都是梯度反向传播的连乘效应),从而具有长期记忆,能够解决长期依赖问题。
LSTM是一种RNN特殊的类型,和基线RNN并没有特别大的结构不同,但用了不同的函数来计算隐状态。LSTM中重复的模块包含四个交互的层(三个sigmoid层和一个tanh层)。
LSTM的核心思想:
(1)LSTM关键就是细胞状态C,直接在模型上方整个链条上传输,只有少量线性交互,使得有效信息长期传递变得容易。
(2)LSTM有通过精心设计称作”门“的结构来给细胞丢弃或增加信息的能力。
(1)遗忘门,决定我们会从细胞状态中丢弃什么信息。向量 的值在(0,1)之间,1表示完全保留,0表示完全丢弃。
(2)输入门。sigmoid层决定我们需要更新的信息,tanh层创建一个新的候选记忆,会被加入到细胞状态(记忆)中。通俗来讲就是,新细胞记忆 = 旧细胞记忆*丢弃需要丢弃的信息 + 候选记忆*需要更新的信息。即 。
(3)输出门。基于细胞状态,确定最终输出什么值,可以看成是一个过滤后的版本。具体来说就是把得到的细胞状态(记忆)通过tanh处理(得到一个位于(-1,1)之间的值),再将它和sigmoid门得到的输出相乘。
总结:
遗忘门:决定什么信息需要从记忆细胞中删除——0:将(过去的记忆)的值删除,1:保留的值;
输入门:决定输入的哪些新信息(输入信息通过候选记忆细胞传入)需要增加至记忆细胞中;
输出门:决定从记忆细胞中选出哪些信息进行输出。
LSTM 的核心概念在于细胞状态以及“门”结构。细胞状态相当于信息传输的路径,让信息能在序列连中传递下去——即网络的“记忆”。理论上讲,细胞状态能够将序列处理过程中的相关信息一直传递下去。因此,即使是较早时间步的信息也能携带到较后时间步的细胞中来,这克服了短时记忆的影响(RNN可能会因为指数项的累积,变得越来越小或大到“面目全非”,LSTM将累积下来的影响由指数运算转化为了加法运算与参数学习控制去留)。信息的添加和移除我们通过“门”结构来实现,“门”结构在训练过程中会去学习该保存或遗忘哪些信息。
三、GRU介绍
GRU(门控循环单元,Gate Recurrent Unit)也是 RNN 的一个变体,与LSTM类似通过门控单元解决RNN中不能长期记忆和反向传播中的梯度问题等,但内部结构比LSTM更为简单。
GRU内部使用了更新门()和重置门()。重置门决定了如何将新的输入信息与前面的记忆相结合;更新门定义了前面记忆中保存到当前时间步的量。如果将重置门设置为1,更新门设置为0,则可获得标准的RNN模型。
四、其它变种
(1)peephole
(2)coupled