| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> GRU和LSTM -> 正文阅读 |
|
[人工智能]GRU和LSTM |
GRU和LSTM
GRU门控循环单元
基本原理
Γ u = σ ( ω u [ c ? t ? 1 ? , x ? t ? ] + b u ) \Gamma_{u}=\sigma\left(\omega_{u}\left[c^{\langle t-1\rangle}, x^{\langle t\rangle}\right]+b_{u}\right) Γu?=σ(ωu?[c?t?1?,x?t?]+bu?) Γ r = σ ( ω u [ c ? t ? 1 ? , x ? t ? ] + b u ) \Gamma_{r}=\sigma\left(\omega_{u}\left[ {c^{\langle t-1\rangle}}, x^{\langle t\rangle}\right]+b_{u}\right) Γr?=σ(ωu?[c?t?1?,x?t?]+bu?)
c ~ ( t ) = tanh ? ( ω c [ Γ r c ? t ? 1 ? , x ( t ) ] + b c ) \tilde {c}^{(t)}=\tanh \left(\omega_{c}\left[{\Gamma_r }c^{\langle t-1\rangle}, x^{(t)}\right]+b_{c}\right) c~(t)=tanh(ωc?[Γr?c?t?1?,x(t)]+bc?)
c ? t ? = Γ u ? c ^ ( t ) + ( 1 ? Γ u ) ? c ? t ? 1 ) c^{\langle t\rangle}=\Gamma_{u} * \hat{c}^{(t)}+\left(1-\Gamma_{u}\right) * c^{\langle t-1)} c?t?=Γu??c^(t)+(1?Γu?)?c?t?1)
c ? t ? = a ? t ? c^{\langle t\rangle}=a^{\langle t\rangle} c?t?=a?t?
Γ r \Gamma_{r} Γr?其中 r r r表示相关性 长短时记忆网络LSTM (Long Short Term Memory )传统RNN中的存储着历史信息 a t a_t at?,但是 a t a_t at?每个时刻都会被重写,因此可以看做一种短期记忆。长期记忆可以看做是网络内部的某些参数,隐含了从数据中学到的经验,其更新周期要远远比短期记忆慢。
基本原理
Γ
u
=
σ
(
W
u
[
a
<
t
?
1
>
,
x
<
t
>
]
+
b
u
)
\Gamma_{u}=\sigma\left(W_{u}\left[a^{<t-1>}, x^{<t>}\right]+b_{u}\right)
Γu?=σ(Wu?[a<t?1>,x<t>]+bu?) c ~ < t > = tanh ? ( W c [ a < t ? 1 > , x < t > ] + b c ) \tilde{c}^{<t}>=\tanh \left(W_{c}\left[a^{<t-1>}, x^{<t>}\right]+b_{c}\right) c~<t>=tanh(Wc?[a<t?1>,x<t>]+bc?)
c
<
t
>
=
Γ
u
?
c
~
<
t
>
+
Γ
f
?
c
<
t
?
1
>
?
\left.c^{<t>}=\Gamma_{u} * \tilde{c}^{<t>}+\Gamma_{f} * c^{<t-1>}\right\rangle
c<t>=Γu??c~<t>+Γf??c<t?1>?
问题: 点乘,叉乘
c < t > c^{<t>} c<t>是记忆单元,是LSTM的核心部分,可以在某个状态捕捉到关键信息,并有能力将此关键信息保存一定的时间间隔 如何保存关键信息可以通过遗忘门 Γ f \Gamma_{f} Γf?和输入门 Γ u \Gamma_{u} Γu?控制,因此内部状态 c < t > c^{<t>} c<t>保存信息的周期要长于短期记忆,但又短于长期记忆,(或者说,关键信息中既有长期记忆的部分,也有短期记忆的部分),因此成为长短期记忆 代码来看LSTMLSTM的输入
对于每个时间步:
Γ
u
=
σ
(
W
u
[
a
<
t
?
1
>
,
x
<
t
>
]
+
b
u
)
\Gamma_{u}=\sigma\left(W_{u}\left[a^{<t-1>}, x^{<t>}\right]+b_{u}\right)
Γu?=σ(Wu?[a<t?1>,x<t>]+bu?) c ~ < t > = tanh ? ( W c [ a < t ? 1 > , x < t > ] + b c ) \tilde{c}^{<t}>=\tanh \left(W_{c}\left[a^{<t-1>}, x^{<t>}\right]+b_{c}\right) c~<t>=tanh(Wc?[a<t?1>,x<t>]+bc?)
c
<
t
>
=
Γ
u
?
c
~
<
t
>
+
Γ
f
?
c
<
t
?
1
>
?
\left.c^{<t>}=\Gamma_{u} * \tilde{c}^{<t>}+\Gamma_{f} * c^{<t-1>}\right\rangle
c<t>=Γu??c~<t>+Γf??c<t?1>? 输入数据维度为 [batch_size*input-embedding_size] 矩阵 W x W_x Wx?维度为[input-embedding_size*num_untis] 隐层输出数据:[batch_size*num_units] 矩阵 W h W_h Wh?的维度为[num_units*num_units] 上一时刻的输出 h t ? 1 h_{t-1} ht?1?数据维度为**[num_units](实际上是[batch_size*num_units]**) 每个时间步都是这样的,所以隐层在所有时间步(堆叠)乘上权重后,形成的Tensor为 [time_step,batch_size,num_units]或者[batch_size,time_step,num_units] LSTM内部网络门gate即实际上就是一层全连接层,它的输入是一个向量,输出是一个0到1之间的实数向量 可以看到中间的cell 里面有四个黄色小框,每一个小黄框代表一个前馈网络层,num_units(即HIDDEN_SIZE, 隐藏层结点个数)就是这个层的隐藏神经元个数,其中1、2、4的激活函数是sigmoid,3的激活函数是tanh cell的权重是共享的,这是什么意思呢?这是指这张图片上有三个绿色的大框,代表三个 cell对吧,但是实际上,它只是代表了一个 cell在不同时序时候的状态,所有的数据只会通过一个cell然后不断更新它的权重。 nn.LSTM()参数解析参数 输入 input,( h 0 , c 0 h_0,c_0 h0?,c0?),其中,如果 h 0 , c 0 h_0,c_0 h0?,c0?未提供,那么以0矩阵为初始化矩阵
输出
参数详解
双向LSTM
双向卷积神经网络的隐藏层要保存两个值, A 参与正向计算, A’ 参与反向计算。 即正向计算时,隐藏层的 s_t 与 s_t-1 有关;反向计算时,隐藏层的 s_t 与 s_t+1 有关 举例说明前向的LSTM与后向的LSTM结合成BiLSTM。比如,我们对“我爱中国”这句话进行编码,模型如图6所示 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/8 4:42:57- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |