对RNN(循环神经网络),LSTM(长短期记忆网络),BiLSTM(双向长短期记忆网络)等算法的一些介绍
NLP-AHU-053本文旨在从设计灵感、算法细节、数学表达介绍NLP(自然语言处理)中三个最常见的算法同时以博客的形式理清他们三个的设计逻辑帮助大家更好的理解序列模型。前言RNN-LSTM-BiLSTM是一种递进关系都在前者基础上进行了升级下面将展开逐步介绍。一、RNN的诞生解决传统神经网络的痛点1.RNN的设计启发在RNN出现之前传统的神经网络存在明显的缺陷比如只能处理独立的输入无法捕捉序列数据的时序关系、输入输出长度固定等。为解决这些问题所以科学家们就想能不能设计一种带有“记忆”功能的网络让它能把上一步的信息传递到下一步模拟人类的“记忆习惯”从而逐步理解整个序列。于是RNN(循环神经网络育孕而生它引入隐状态“Hidden State”概念能保留前文信息并传递到后续计算中达成对序列数据的动态处理。2.RNN的核心结构RNN的核心在于”循环“如图所示它的每一步的输入都会结合上一步的隐藏状态更新当前的隐藏状态再输出结果。这里介绍一种单隐层RNN结构分为以下三个部分1.输入层表示第t时刻的输入比如句子中的第t个词的嵌入向量2.隐藏层核心是隐藏状态负责“记忆”上一步的信息是RNN的核心3. 输出层表示第t时刻的输出RNN的记忆是短期的无法记住序列中早期的关键信息还会出现梯度消失、梯度爆炸等问题。梯度消失当序列过长时梯度会随着反向传播不断减小最终趋近于0导致模型无法更新早期参数无法学习到远距离依赖。梯度爆炸少数情况下梯度会急剧增大超出参数更新范围导致模型训练崩溃。3.RNN算法细节与数学公式RNN的核心是“隐藏状态的循环更新”1.更新隐藏状态公式核心2.计算当前时刻输出公式公式中各参数含义输入层到隐藏层的权重矩阵负责把输入映射到隐藏层维度隐藏层到自身的循环权重矩阵负责把上一步的隐藏状态传递到当前时刻隐藏层到输出层的权重矩阵负责把隐藏状态映射到输出维度、分别是隐藏层和输出层的偏置项用于调整输出基线二、LSTM长短期记忆网络RNN的“PLUS版”解决“记不住”的问题1.LSTM的设计启发既然RNN记不住长序列那我们可以设计一种“更聪明”的记忆机制让它能选择性遗忘没用的信息、记住有用的信息于是LSTM诞生了。LSTM是由Hochreiter Schmidhuber在1997年提出的核心就是解决RNN的梯度消失问题让模型能记住长序列的信息。就像追剧时我们能记住主角的核心目标却会忘记前三集里路人甲的台词这种“选择性记忆”的能力正是LSTM的核心逻辑它在RNN基础上增加了门控机制能自主“记住”重要信息、“遗忘”无关信息相当于给RNN的“记忆”加了“筛选器”。2.LSTM的核心结构3种门控结构核心结构组成1. 新增细胞状态负责存储长期记忆梯度可以沿着细胞状态流畅传播不会轻易消失2. 候选细胞状态相当于“临时记忆草稿”存储当前输入的新信息等待被筛选后写入长期记忆库3. 三个门控均用sigmoid激活输出0~1之间的值0表示“完全关闭”1表示“完全打开”遗忘门决定“忘掉多少旧记忆”筛选长期记忆库中的信息输入门更新细胞状态将当前输入的重要信息存入“长期记忆”输出门决定输出多少记忆从长期记忆库中筛选信息更新隐藏状态并输出3.LSTM的算法细节和数学公式1. 遗忘门判断上一时刻的细胞状态长期记忆中哪些信息需要保留哪些需要遗忘公式2. 输入门分两步处理新信息先筛选当前输入的新信息再生成候选记忆公式3. 更新细胞状态将旧的长期记忆和新的候选记忆结合得到当前时刻的长期记忆公式4. 输出门从当前的长期记忆中筛选出对当前任务有用的信息更新隐藏状态并输出结果公式三、BiLSTM双向长短期记忆网络LSTM的“加强版”兼顾上下文1.BiLSTM的设计启发LSTM虽然解决了长序列记忆问题但它有一个局限只能 “从左到右” 处理序列或者从右到左无法同时利用“前文”和“后文”的信息。而我们人类理解语言时很多时候需要结合上下文才能判断语义。简单来说LSTM是单向记忆BiLSTM是双向记忆它能同时从左到右和从右到左处理序列捕捉更全面的上下文信息。2.BiLSTM的结构设计BiLSTM的结构其实很简单核心就是“两个独立的LSTM并行工作”一个按原始序列顺序从左到右前向LSTM处理一个按逆序从右到左后向LSTM处理两者共享输入最后把两个LSTM的输出拼接起来得到每个时刻的最终隐藏状态。核心结构组成前向LSTM按序列顺序处理输出前向隐藏状态后向LSTM按序列逆序处理输出后向隐藏状态最终隐藏状态将前向和后向隐藏状态拼接再输入输出层得到结果这种双向运行的结构可以让模型在文本分类、机器翻译、情感分析等NLP任务中取得更好的效果3.BiLSTM的算法细节和数学公式BiLSTM的数学表达很简单因为它的核心还是LSTM的计算逻辑只是多了一个反向的LSTM然后拼接输出。1. 前向LSTM计算公式2. 后向LSTM计算与普通LSTM完全一致只是序列相反公式3. 最终隐藏状态与输出将前后隐藏状态拼接得到最终隐藏状态与输出公式四、总结RNN,LSTM,BiLSTM三者对比模型设计启发核心结构记忆能力方向RNN模拟人类“顺序记忆”捕捉序列时序关系单一隐藏状态无门控差易梯度消失记不住长序列单向LSTM模拟人类“选择性记忆”解决RNN长依赖问题细胞状态三个门控候选细胞强可记住长序列避免梯度消失单向BiLSTM模拟人类“上下文理解”利用序列双向信息两个并行LSTM前向后向拼接输出最强兼顾长序列和上下文双向