| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 从零实现深度学习框架——LSTM从理论到实战【理论】 -> 正文阅读 |
|
[人工智能]从零实现深度学习框架——LSTM从理论到实战【理论】 |
引言
我们前面介绍的简单RNN存在一些问题,即很难保持远离当前位置的信息和梯度消失的问题。 LSTMLSTM被设计来解决上面的问题。通过使网络学到忘记不需要的信息,并记住将来作出决定所需要的信息,以明确地管理上下文信息。 LSTM将上下文管理问题分成两个子问题:从上下文中移除不再需要的信息,以及增加未来决定更可能需要的信息。 架构解决这两个问题的关键是学习如何管理这个上下文,而不是将策略硬编码到架构中。LSTM首先增加一个显示的上下文层到网络中(除了常用的RNN隐藏层),并通过使用专门的神经元,利用门来控制信息流进流出组成网络层的单元。这些门是通过使用在输入、前一个隐藏状态和前一个上下文状态上分别添加的额外权重操作来实现的。 LSTM中的这些门共用了同样的设计模式:每个包含一个前馈网络,接着是sigmoid激活函数,最后是一个与被门控层元素级乘法。 选择sigmoid作为激活函数基于它的输出是在0到1之间。与元素级乘法结合的效果类似于二元掩码(binary mask)。与掩码中接近1的值对应的门层中的值几乎原样通过;与较低值对应的值基本上被擦除。 遗忘门我们第一个介绍的门为遗忘门(forget gate)。该门的目的是删除上下文不再需要的信息。遗忘门计算前一个隐藏状态和当前输入的加权和,并通过sigmoid进行转换。得到mask,该mask然后与上下文向量元素级相乘来移除不再需要的上下文信息。
f
t
=
σ
(
U
f
h
t
?
1
+
W
f
x
t
)
(1)
f_t = \sigma(U_f h_{t-1} + W_fx_t) \tag 1
ft?=σ(Uf?ht?1?+Wf?xt?)(1)
k
t
=
c
t
?
1
⊙
f
t
(2)
k_t = c_{t-1} \odot f_t \tag 2
kt?=ct?1?⊙ft?(2) 遗忘门控制内存之中的上下文向量 c t ? 1 c_{t-1} ct?1?是否被遗忘掉。 输入门类似地,输入门也通过前一个隐藏状态
h
t
?
1
h_{t-1}
ht?1?和当前输入
x
t
x_t
xt?计算: 乘上输入门用来控制 g t g_t gt?(也称为候选值)能多大程度地存入当前上下文状态 c t c_t ct?。 我们把上面得到的
j
t
j_t
jt?和
k
t
k_t
kt?加起来就得到了当前上下文状态
c
t
c_t
ct?: 输出门最后一个门是输出门,它用于控制当前隐藏状态的哪些信息是需要的。 h t = o t ⊙ tanh ? ( c t ) (8) h_t = o_t \odot \tanh(c_t) \tag 8 ht?=ot?⊙tanh(ct?)(8) 给定不同门的权值,LSTM接受前一时刻的上下文层和隐藏层以及当前输入向量作为输入。然后,它生成更新的上下文向量和隐藏向量作为输出。隐藏层 h t h_t ht?可以用作堆叠RNN中后续层的输入,或者为网络的最后一层生成输出。 比如基于当前的隐藏状态,可以计算出当前时刻的输出
y
^
t
\hat y_t
y^?t?: 总之,LSTM计算 c t c_t ct?和 h t h_t ht?。 c t c_t ct?就是长期记忆, h t h_t ht?就是短期记忆。使用输入 x t x_t xt?和 h t ? 1 h_{t-1} ht?1?更新长期记忆,在更新中,一些 c t c_t ct?的特征由遗忘门 f t f_t ft?清除,还有一些特征由输入门增加到 c t c_t ct?中。 新的短期记忆是长期记忆经过 tanh ? \tanh tanh后乘以输出门得到的。注意,执行更新时,LSTM不会查看长期记忆 c t c_t ct?。只修改它。 c t c_t ct?也永远不会经历线性转换。这就是解决梯度消失和爆炸的原因。 References
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/29 9:37:55- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |