ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

李宏毅机器学习课程笔记-9.5详解基于LSTM的RNN

2021-04-14 11:04:44  阅读:269  来源: 互联网

标签:运算 RNN 李宏毅 cell vector 9.5 LSTM 时刻 神经元


目录

1层LSTM神经元的架构

根据上述内容,你可能看不出LSTM与RNN有什么关系,接下来具体介绍LSTM在RNN中的应用。

假设我们现在有一些LSTM(下图中白色部分)作为神经元,每个LSTM的memory cell里都存了一个scalar值(下图中红框中内容),把这些scalar连接起来就组成了1个vector \(c^{t-1}\),即关于上个input(时间点为t-1)的memory。

img

在时间点t,输入为1个vector \(x^t\),它会经过4个线性的transform得到\(z^f,z^i,z,z^o\),\(z^f,z^i,z,z^o\)这4个vector的dimension数量和LSTM神经元的数量相等,这4个vector的1个dimension即为1个LSTM神经元的输入(4个vector的第1个dimension为第1个LSTM神经元的输入)。

1个LSTM神经元的运算方法

下图是单个LSTM神经元的运算方法,其4个input分别是\(z\)、\(z^i\)、\(z^f\)和\(z^o\)的其中1维(1维为1个神经元的输入)。每个LSTM神经元的input是各不相同的,但它们可以共同运算。

1个LSTM神经元的运算方法如下图所示。

img

\(f(z^f)\)与上一个时间点的memory \(c^{t-1}\)对应的cell值相乘,加上\(g(z)\)与\(f(z^i)\)的乘积,得到该时刻该cell中的值\(c^t\),最终再乘以output gate的信号\(f(z^o)\),得到输出\(y^t\)。

1个LSTM神经元在相邻时刻时的运算方法

img

上图是同1个LSTM神经元在2个相邻时刻的运算方法,其中与前文描述略有不同的是,这里还需要把当前时刻该神经元的输出\(y^t\)以及该神经元中cell保存的值\(c^t\)(peephole)都连接到下一时刻的输入上。因此在\(t+1\)时刻,神经元不只是考虑当前的输入\(x^{t+1}\),还要看前一时刻该神经元的输出\(h^t\)和cell保存值\(c^t\)。

如何考虑结合\(t+1\)时刻的输入\(x^{t+1}\)和上一时刻该神经元的信息\(h^t,c^t\)呢?====>把\(x^{t+1}\)、\(h^t\)和\(c^t\)这3个vector并在一起,乘上4个不同的转换矩阵,得到该神经元\(t+1\)时刻的4个输入\(z\)、\(z^i\)、\(z^f\)、\(z^o\)。

多层LSTM在相邻时刻的运算方法

img

上图中左边一列的2个LSTM代表2层LSTM,右边一列的2个LSTM则代表它们在下一时刻的状态。即横向是时间轴,纵向是层轴。

虽然看起来很复杂,感觉不一定work,但LSTM在RNN中已成为了标准做法。


Github(github.com):@chouxianyu

Github Pages(github.io):@臭咸鱼

知乎(zhihu.com):@臭咸鱼

博客园(cnblogs.com):@臭咸鱼

B站(bilibili.com):@绝版臭咸鱼

微信公众号:@臭咸鱼

转载请注明出处,欢迎讨论和交流!


标签:运算,RNN,李宏毅,cell,vector,9.5,LSTM,时刻,神经元
来源: https://www.cnblogs.com/chouxianyu/p/14656744.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有