一文看懂从 RNN 到 LSTM
数据分析挖掘与算法
共 1849字,需浏览 4分钟
· 2020-07-24
![ba4a9b83e260d812f604105dfe225543.webp](https://filescdn.proginn.com/c11eb01c82c3b55ec1c4042f243b4c71/ba4a9b83e260d812f604105dfe225543.webp)
这是在看了台大李宏毅教授的深度学习视频之后的一点总结和感想。看完介绍的第一部分 RNN 尤其 LSTM 的介绍之后,整个人醍醐灌顶。本篇博客就是对视频的一些记录加上了一些个人的思考。
0. 从 RNN 说起
循环神经网络(Recurrent Neural Network,RNN)是一种用于处理序列数据的神经网络。相比一般的神经网络来说,他能够处理序列变化的数据。比如某个单词的意思会因为上文提到的内容不同而有不同的含义,RNN 就能够很好地解决这类问题。1. 普通 RNN
先简单介绍一下一般的 RNN。其主要形式如下图所示(图片均来自台大李宏毅教授的PPT):![3ff20d91f2f1bc681910ba7bee40730c.webp](https://filescdn.proginn.com/c9420335e38a681fa496078b36f2439d/3ff20d91f2f1bc681910ba7bee40730c.webp)
![9093eb1befcce7da4a955840433b50e1.webp](https://filescdn.proginn.com/940cfaeaae9ea2ebd6e2b2199e57e781/9093eb1befcce7da4a955840433b50e1.webp)
![25b01e4121ad3d7d284cfdeaf8a82c5c.webp](https://filescdn.proginn.com/3e29c14cae954e35ee251558b2080dc5/25b01e4121ad3d7d284cfdeaf8a82c5c.webp)
![1f7221c4c7b60410f741fab0c087970e.webp](https://filescdn.proginn.com/857e570121aec98192016757ee469dab/1f7221c4c7b60410f741fab0c087970e.webp)
![c88bfbda64f266f926dba51e261a69a2.webp](https://filescdn.proginn.com/4f7fcc0b2ab2d81fff265585680b64e5/c88bfbda64f266f926dba51e261a69a2.webp)
![f52ca5966648c3d77e9bfae32c0e5018.webp](https://filescdn.proginn.com/90802bea64232ba4632639086493852d/f52ca5966648c3d77e9bfae32c0e5018.webp)
2. LSTM
2.1 什么是 LSTM
长短期记忆(Long short-term memory, LSTM)是一种特殊的 RNN,主要是为了解决长序列训练过程中的梯度消失和梯度爆炸问题。简单来说,就是相比普通的 RNN,LSTM 能够在更长的序列中有更好的表现。LSTM 结构(图右)和普通 RNN 的主要输入输出区别如下所示。![8c94fb9a59756a884d979449b3cb473d.webp](https://filescdn.proginn.com/bb147911358c67afb888e684d8cb76aa/8c94fb9a59756a884d979449b3cb473d.webp)
![95cc15b522848d152bb90a6ecb4f477a.webp](https://filescdn.proginn.com/7d0289fd34ab8a1500edeef9c76e860f/95cc15b522848d152bb90a6ecb4f477a.webp)
![71b1059a102930b2fb09b97059061c30.webp](https://filescdn.proginn.com/4292785d362f6dfd6e8e0153c0ac77b3/71b1059a102930b2fb09b97059061c30.webp)
![95cc15b522848d152bb90a6ecb4f477a.webp](https://filescdn.proginn.com/7d0289fd34ab8a1500edeef9c76e860f/95cc15b522848d152bb90a6ecb4f477a.webp)
![95cc15b522848d152bb90a6ecb4f477a.webp](https://filescdn.proginn.com/7d0289fd34ab8a1500edeef9c76e860f/95cc15b522848d152bb90a6ecb4f477a.webp)
![71b1059a102930b2fb09b97059061c30.webp](https://filescdn.proginn.com/4292785d362f6dfd6e8e0153c0ac77b3/71b1059a102930b2fb09b97059061c30.webp)
![71b1059a102930b2fb09b97059061c30.webp](https://filescdn.proginn.com/4292785d362f6dfd6e8e0153c0ac77b3/71b1059a102930b2fb09b97059061c30.webp)
![71b1059a102930b2fb09b97059061c30.webp](https://filescdn.proginn.com/4292785d362f6dfd6e8e0153c0ac77b3/71b1059a102930b2fb09b97059061c30.webp)
![f025ee5fbd7b124a35cfa47965cad4b1.webp](https://filescdn.proginn.com/1509f28785ca00d5c4bd602befc92d7e/f025ee5fbd7b124a35cfa47965cad4b1.webp)
![95cc15b522848d152bb90a6ecb4f477a.webp](https://filescdn.proginn.com/7d0289fd34ab8a1500edeef9c76e860f/95cc15b522848d152bb90a6ecb4f477a.webp)
2.2 深入 LSTM 结构
下面具体对 LSTM 的内部结构来进行剖析。首先使用 LSTM 的当前输入![c9c36eecea01c7b914e502eae9c60d9a.webp](https://filescdn.proginn.com/db415a4b2257707393b8a146597d8527/c9c36eecea01c7b914e502eae9c60d9a.webp)
![4830486f6f669a153430494ef4ec72df.webp](https://filescdn.proginn.com/69ac064c7502ccf52fc4b4cdf2234a10/4830486f6f669a153430494ef4ec72df.webp)
![9893497efa72763f1fa9e5e179691b00.webp](https://filescdn.proginn.com/461df7cd1ea5422d4448d45303a6f00d/9893497efa72763f1fa9e5e179691b00.webp)
![43327100db4e126d7fa76b1b9cc0157f.webp](https://filescdn.proginn.com/1999df09940901e7fbe1e7c0bc4ed139/43327100db4e126d7fa76b1b9cc0157f.webp)
![61ea6af5365e2c8b42643a429febc2cd.webp](https://filescdn.proginn.com/90c26ef6c0ccfda7d9ada00fa319dcc8/61ea6af5365e2c8b42643a429febc2cd.webp)
![93a5796341ed7440c5065d1e9cbfa56f.webp](https://filescdn.proginn.com/33924229f72234aa85d740a52801c7af/93a5796341ed7440c5065d1e9cbfa56f.webp)
![0f8cc60244943be033c9368103e893b1.webp](https://filescdn.proginn.com/fa6e7f44b827f5b28698f06942ab9aae/0f8cc60244943be033c9368103e893b1.webp)
![bd62a36f8d625e7eb16d3f6880d7ad05.webp](https://filescdn.proginn.com/80cb4131e81442821335aeff560aabdc/bd62a36f8d625e7eb16d3f6880d7ad05.webp)
![7f6cef486c7074ee48cecae54f6abc77.webp](https://filescdn.proginn.com/9a05d01d8336240bbf9300792bc5dcb4/7f6cef486c7074ee48cecae54f6abc77.webp)
![34d950532c60cf7410931051843e60d6.webp](https://filescdn.proginn.com/f3aa2e3f51a3b940d51521e207da14cd/34d950532c60cf7410931051843e60d6.webp)
![34d950532c60cf7410931051843e60d6.webp](https://filescdn.proginn.com/f3aa2e3f51a3b940d51521e207da14cd/34d950532c60cf7410931051843e60d6.webp)
下面开始进一步介绍这四个状态在 LSTM 内部的使用。(敲黑板)
![e90f44fc546ca93a80b7b2d8f2bf946f.webp](https://filescdn.proginn.com/df985dcaf6e759e64e263da453679399/e90f44fc546ca93a80b7b2d8f2bf946f.webp)
![97e78c5a8e3d2c0f783cf0af2cbc553c.webp](https://filescdn.proginn.com/06c140209bc799ab0047d109d9fc3401/97e78c5a8e3d2c0f783cf0af2cbc553c.webp)
![0065db13c3f6c4058c80573b67a96375.webp](https://filescdn.proginn.com/f43f91c81566ffab7348ecd6a3dacdae/0065db13c3f6c4058c80573b67a96375.webp)
LSTM 内部主要有三个阶段:1. 忘记阶段。这个阶段主要是对上一个节点传进来的输入进行选择性忘记。简单来说就是会 “忘记不重要的,记住重要的”。具体来说是通过计算得到的
![61ea6af5365e2c8b42643a429febc2cd.webp](https://filescdn.proginn.com/90c26ef6c0ccfda7d9ada00fa319dcc8/61ea6af5365e2c8b42643a429febc2cd.webp)
![f025ee5fbd7b124a35cfa47965cad4b1.webp](https://filescdn.proginn.com/1509f28785ca00d5c4bd602befc92d7e/f025ee5fbd7b124a35cfa47965cad4b1.webp)
![c9c36eecea01c7b914e502eae9c60d9a.webp](https://filescdn.proginn.com/db415a4b2257707393b8a146597d8527/c9c36eecea01c7b914e502eae9c60d9a.webp)
![7f6cef486c7074ee48cecae54f6abc77.webp](https://filescdn.proginn.com/9a05d01d8336240bbf9300792bc5dcb4/7f6cef486c7074ee48cecae54f6abc77.webp)
![93a5796341ed7440c5065d1e9cbfa56f.webp](https://filescdn.proginn.com/33924229f72234aa85d740a52801c7af/93a5796341ed7440c5065d1e9cbfa56f.webp)
将上面两步得到的结果相加,即可得到传输给下一个状态的3. 输出阶段。这个阶段将决定哪些将会被当成当前状态的输出。主要是通过。也就是上图中的第一个公式。
![0f8cc60244943be033c9368103e893b1.webp](https://filescdn.proginn.com/fa6e7f44b827f5b28698f06942ab9aae/0f8cc60244943be033c9368103e893b1.webp)
![e6a2bb12a92b29003fad6fe4eb11e13b.webp](https://filescdn.proginn.com/e0d0e8e90691a129de583d2110a31f98/e6a2bb12a92b29003fad6fe4eb11e13b.webp)
![609c51f1126980aa67fccc62c51e0104.webp](https://filescdn.proginn.com/c1bfd2992754095967928c67c96aaf55/609c51f1126980aa67fccc62c51e0104.webp)
![95cc15b522848d152bb90a6ecb4f477a.webp](https://filescdn.proginn.com/7d0289fd34ab8a1500edeef9c76e860f/95cc15b522848d152bb90a6ecb4f477a.webp)
3. 总结
以上,就是 LSTM 的内部结构。通过门控状态来控制传输状态,记住需要长时间记忆的,忘记不重要的信息;而不像普通的 RNN 那样只能够“呆萌”地仅有一种记忆叠加方式。对很多需要“长期记忆”的任务来说,尤其好用。但也因为引入了很多内容,导致参数变多,也使得训练难度加大了很多。因此很多时候我们往往会使用效果和 LSTM 相当但参数更少的 GRU 来构建大训练量的模型。— 完 —猜你喜欢
评论