摘要: 循环神经网络 (Recurrent Neural Network, RNN) 用于处理序列数据.
本贴以前的算法, 我都用 Java 代码实现过. 很遗憾, 从本贴开始, 就只知道一点概念了.
1. 动机
序列数据中, 前后数据之间不是独立的, 而是会产生上下文影响. 如:
- 文本, 机器翻译一个句子的时候, 不是逐个单词的翻译 (你可以发现近 10 年机器翻译的质量大幅提升, 最近的 chatGPT 更是火得一蹋糊涂);
- 音频, 可以在微信中让机器把你讲的话转成文字;
- 投票, 虽然股价预测不靠谱, 但根据时序进行预测却是人们最喜欢干的事情.
2. RNN 的机制
如图 1 所示, RNN 把前一时刻 (简便起见, 前一个单词我也称为前一时刻) 的输出, 当作本阶段输入的一部分. 这里 x t − 1 x_{t - 1} xt−1 为前一时刻的输入, 而 s t − 1 s_{t-1} st−1 为前一时刻的输出. 这样, 就把数据的前后联系体现出来了.
3. 长短期记忆网络 (Long Short-Term Memory, LSTM)
如图 2 所示, LSTM 与 RNN 的基本思想一致, 即前一时刻的输出作为当前时刻的输入. 但它的结构更复杂了, 涉及好几个门, 既有记忆 (重要信息) 的功能, 也有遗忘 (不重要信息) 的功能.
讨论: 遗忘也是一种功能吗? 当然是了. 所谓好了伤疤忘了痛, 如果一个人不会遗忘, 很快就精神失常了.文章来源:https://www.toymoban.com/news/detail-474156.html
4. Transformer
如图 3 所示, 更复杂的就是 Transformer (变形金刚). 它为当前的机器翻译作了很大贡献. 到这个程度真的很容易成为调包侠.文章来源地址https://www.toymoban.com/news/detail-474156.html
到了这里,关于机器学习常识 22: 循环神经网络的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!