一篇吃透RNN(循环神经网络),LSTM(长短期记忆网络),BiLSTM(双向长短期记忆网络)算法,计算机小白也能轻松看懂
NLP-AHU-125神秘暗号哈喽各位CSDN的小伙伴们我是一名专注AI入门干货的大学生博主 相信刚接触深度学习序列模型的同学都被RNN、LSTM、BiLSTM这三个“孪生兄弟”绕晕过明明都是处理序列数据为啥RNN频频拉胯LSTM成了香饽饽BiLSTM又凭啥在NLP里封神今天我将从设计灵感、核心结构和数学表达三个方面讲解一下这三个模型话不多说直接开始。一、先搞懂为啥要发明RNN灵感藏在人类记忆里在RNN出现之前传统神经网络比如CNN、全连接网络就是个“没记性”的呆子处理图片、独立数据时很拿手可碰到序列数据文本、语音、时间序列、股票数据直接傻眼——完全记不住前面的信息根本没法理解上下文关联。这时候研究者就琢磨人类处理序列信息靠的是记忆啊 比如我们读一句话看到后半句时脑子里还记着前半句的内容才能读懂整句话的意思听一首歌后面的旋律要结合前面的节奏才好听。RNN设计灵感RNNRecurrent Neural Network循环神经网络的设计灵感正是模仿人类的短时记忆机制让神经网络拥有“记忆功能”处理当前输入时能把之前的信息存起来和当前信息结合一起输出结果。简单说RNN的核心就是“循环复用隐藏状态”同一个网络结构在序列的每个时间步重复使用把上一时刻的记忆传递到当前时刻完美适配序列数据的时序依赖特性。RNN核心结构RNN的结构十分简单就像一条单向链条包含三个核心部分1. 输入层每个时间步t的输入比如一句话里第t个词的词向量2. 隐藏层存储记忆的核心表示t时刻的隐藏状态既接收当前输入也接收上一时刻的隐藏状态3. 输出层根据当前隐藏状态生成输出比如文本分类、词性标注结果。这里要吐槽一句RNN虽然想法很美好但它是个“金鱼脑子”记忆只有7秒。处理短序列还行一旦序列变长比如长文本、长时间序列前面的信息就会彻底丢失还会出现梯度消失/梯度爆炸问题根本学不到长距离的依赖关系这也是后来LSTM诞生的原因。RNN数学表达1. 隐藏状态更新公式核心•输入层到隐藏层的权重矩阵•隐藏层自循环的权重矩阵•隐藏层偏置项•双曲正切激活函数把隐藏状态值压缩到[-1,1]之间保证数值稳定。2. 输出层公式•隐藏层到输出层的权重矩阵•输出层偏置项• 要是做分类任务后面再加个softmax函数转概率就行。二、LSTMRNN的“升级版学霸”专治长序列健忘症眼看着RNN在长序列面前频频翻车研究者们坐不住了既然是记性差那就给它装个“可控记忆仓库”于是LSTMLong Short-Term Memory长短期记忆网络横空出世完美解决了RNN的梯度消失问题成了序列建模的顶流。LSTM设计灵感LSTM的灵感很直接人类不会记住所有信息而是选择性记忆、遗忘比如我们看完一篇长文会记住核心观点忘掉无关紧要的细节早上出门会记住带钥匙忘掉昨晚无关紧要的小事。基于这个思路LSTM在RNN的基础上新增了细胞状态Cell State 这个“长期记忆传送带”再搭配三个门控单元像三个小管家一样精准控制哪些信息该忘、哪些该记、哪些该输出彻底告别“金鱼记忆”。LSTM核心结构LSTM的结构比RNN复杂一丢丢但每个部分都有明确作用。1. 细胞状态长期记忆仓库像一条贯穿整个序列的传送带只做少量线性操作信息能轻松流过负责存储长期重要信息不容易丢失2. 遗忘门“忘事小管家”决定把细胞状态里哪些旧信息丢掉比如长文中的冗余词汇、无关数据3. 输入门“记事小管家”决定把当前输入的哪些新信息存进细胞状态比如长文的核心论点、关键数据4. 候选细胞状态待存入的新信息相当于要记的新内容5. 输出门“输出小管家”决定从细胞状态里提取哪些信息作为当前隐藏状态输出。LSTM数学表达每个门控都用sigmoid激活函数输出[0,1]之间的值0代表完全丢弃1代表完全保留公式安排1. 遗忘门2. 输入门3. 细胞状态更新旧记忆新信息融合出当前长期记忆4. 输出门5. 隐藏状态输出从长期记忆里提取当前输出简单总结LSTM通过门控实现了长期记忆的可控读写长序列文本、语音、时间序列随便拿捏比RNN的性能强了不止一个档次。三、BiLSTM双向拿捏上下文NLP场景的神LSTM已经很厉害了但它还有个小短板只能单向处理序列从前往后记信息没法看到后面的内容反过来理解前面的。可在NLP里上下文是双向的。比如一句话“我今天去____买了一杯奶茶”光看前面不知道填啥看后面“买奶茶”就知道是奶茶店。这种需要结合前后文理解的场景LSTM就力不从心了于是BiLSTMBidirectional LSTM双向长短期记忆网络应运而生。BiLSTM的设计灵感人类理解语言会兼顾前文和后文不是只顺着读倒着看也能辅助理解。比如做词性标注、命名实体识别只有结合上下文才能准确判断词义。BiLSTM它没有改动LSTM的内部结构而是把两个LSTM拼在一起一个正向LSTM从左到右处理序列一个反向LSTM从右到左处理序列最后把两个方向的隐藏状态拼接起来同时捕捉过去和未来的信息。BiLSTM核心结构BiLSTM的结构就是“正向LSTM反向LSTM”1. 对同一个输入序列x_1,x_2,...,x_t正向LSTM计算出正向隐藏状态记录从开头到当前时刻的信息2. 反向LSTM从序列末尾开始处理计算出反向隐藏状态记录从当前时刻到结尾的信息3. 把正向和反向隐藏状态拼接得到最终的隐藏状态再输入输出层得到结果。这种双向结构让模型能完整捕捉上下文信息在文本分类、情感分析、命名实体识别、机器翻译等NLP任务中效果远超单向LSTM。BiLSTM数学表达BiLSTM的公式就是正向和反向LSTM的结合核心是隐藏状态拼接1. 正向LSTM隐藏状态2. 反向LSTM隐藏状态3. 最终隐藏状态代表向量拼接4. 输出层四、总结RNN、LSTM、BiLSTM到底有什么区别模型核心特点优点缺点使用场景RNN单向循环短时记忆结构简单计算快记性差长序列梯度消失短序列任务LSTM门控细胞状态长时记忆解决梯度消失长序列友好结构复杂计算量稍大长序列、时序依赖强的任务BiLSTM双向LSTM兼顾上下文整捕捉上下文NLP效果好计算量翻倍参数更多NLP核心任务文本标注、翻译、分类
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2483733.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!