IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: 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反向传播公式推导

目录

1、正向传播

2、反向传播

?

3、总结


1、正向传播

LSTM的正向传播公式:

\Gamma_f^{<t>}= \sigma(W_f[a^{<t-1>},x^{<t>}]+b_f)

\Gamma_u^{<t>}= \sigma(W_u[a^{<t-1>},x^{<t>}]+b_u)

\Gamma_o^{<t>}= \sigma(W_o[a^{<t-1>},x^{<t>}]+b_o)

\widetilde{c}^{<t>}=tanh(W_c[a^{<t-1>},x^{<t>}]+bc)

c^{<t>}=\Gamma_u^{<t>}.*\widetilde{c}^{<t>}+\Gamma_f.*c^{<t-1>}

a^{<t>}=\Gamma_o^{<t>}.*tanh(c^{<t>})

z^{<t>}= W_ya^{<t>}+b_y

\hat{y}^{<t>}=softmax(z^{<t>})

\mathcal{L}^{<t>}(\hat{y}^{<t>}, y^{<t>})=-\sum_{j=1}^{n_y}y^{<t>}_jlog(\hat{y}^{<t>}_j)

L=\sum_{t=1}^{T_x}\mathcal{L}^{<t>}(\hat{y}^{<t>}, y^{<t>})??

由于传播过程比较复杂,我们画一个计算草图来反映时间步t的正向传播中,各个量的关系:

计算图中红色部分不属于时间步t,而是属于时间步t+1,把这几个红色的计算加入以后,可以更清晰的看到,c^{<t>}的值会传播到两个位置(即在时间步t的正向传播中,传递到a^{<t>},在时间步t+1的正向传播中,传递到c^{<t+1>};而a^{<t>}的值会传播到5个位置(即时间步t的正向传播中,传递到z^{<t>},在时间步t+1的正向传播中,传递到\Gamma_u^{<t+1>}\Gamma_f^{<t+1>}\Gamma_o^{<t+1>}\widetilde{c}^{<t+1>})。这对于理解反向传播中a^{<t>}c^{<t>}的导数从何而来非常重要,在反向传播中,我们会看到,c^{<t>}的误差从相应的2个位置反向传播得到,a^{<t>}的误差从相应的5个位置反向传播得到。

2、反向传播

把正向传播的计算图反过来就是时间步t的反向传播的计算图:?

?红色的部分是时间步t+1的量对于?a^{<t>}c^{<t>}?导数的贡献。我们根据这张图,从上往下推导。

对于输出激活函数是softmax,损失函数是交叉熵的情况,常用的公式是:

\frac{\partial \mathcal{L}^{<t>}}{\partial z^{<t>}}=\hat{y}^{<t>}-y^{<t>}? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????????????????????????????? (1)

我在RNN反向传播的推导中证明了这个公式,这里就不证明了。

根据

z^{<t>}= W_ya^{<t>}+b_y

我们可以进而得到:

\frac{\partial \mathcal{L}^{<t>}}{\partial b_y}=\hat{y}^{<t>}-y^{<t>}\Rightarrow\frac{\partial L}{\partial b_y}=\sum_t\hat{y}^{<t>}-y^{<t>}? ? ? ?????????????????????????????????????????? ? (2)

\frac{\partial \mathcal{L}^{<t>}}{\partial W_y}=(\hat{y}^{<t>}-y^{<t>})(a^{<t>})^T\Rightarrow\frac{\partial L}{\partial W_y}=\sum_t(\hat{y}^{<t>}-y^{<t>})(a^{<t>})^T? ? ? ? ? ? ? ? ?(3)

\frac{\partial \mathcal{L}^{<t>}}{\partial a^{<t>}}=W_y^T(\hat{y}^{<t>}-y^{<t>})? ? ? ? ????????????????????????????????????????????????????????????????????????????????(4)

?以上公式和RNN的情况是一模一样的,也不多解释了。

正如反向传播的计算图所示的那样,a^{<t>}的导数除了包含式(4)中的那一项,还包括来自?\Gamma_u^{<t+1>}\Gamma_f^{<t+1>}\Gamma_o^{<t+1>}\widetilde{c}^{<t+1>}?的四项,即:

\frac{\partial L}{\partial a^{<t>}}\\ =\frac{\partial \mathcal{L}^{<t>}}{\partial a^{<t>}}+\frac{\partial L}{\partial \Gamma_o^{<t+1>}}\frac{\partial \Gamma_o^{<t+1>}}{\partial a^{<t>}}+\frac{\partial L}{\partial \Gamma_u^{<t+1>}}\frac{\partial \Gamma_u^{<t+1>}}{\partial a^{<t>}}+\frac{\partial L}{\partial \Gamma_f^{<t+1>}}\frac{\partial \Gamma_f^{<t+1>}}{\partial a^{<t>}}+\frac{\partial L}{\partial \widetilde{c}^{<t+1>}}\frac{\partial \widetilde{c}^{<t+1>}}{\partial a^{<t>}}???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????(5.a)

?类似的,c^{<t>}的导数也可以表示为两项,一项来自a^{<t>},另一项来自c^{<t+1>}

\frac{\partial L}{\partial c^{<t>}}=\frac{\partial L}{\partial a^{<t>}}\frac{\partial a^{<t>}}{\partial c^{<t>}}+\frac{\partial L}{\partial c^{<t+1>}}\frac{\partial c^{<t+1>}}{\partial c^{<t>}}? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(6.a)

?公式(5)(6)实际上给出了a^{<t>}c^{<t>}导数的递推关系式。

对于最后一个时间步,t=Tx,没有来自下一个时间步的导数传入,公式(5)(6)变为:

(5):????????\frac{\partial L}{\partial a^{<T_x>}}=\frac{\partial \mathcal{L}^{<T_x>}}{\partial a^{<T_x>}}=W_y^T(\hat{y}^{<T_x>}-y^{<T_x>})? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (7)

(6):????????\frac{\partial L}{\partial c^{<T_x>}}=\frac{\partial L}{\partial a^{<T_x>}}\frac{\partial a^{<T_x>}}{\partial c^{<T_x>}}? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(8.a)

根据a^{<t>}=\Gamma_o^{<t>}.*tanh(c^{<t>})的下标表示:

a_i^{<T_x>}=\Gamma_{oi}^{<T_x>}tanh(c_i^{<T_x>})

并把公式(8.a)也用下标表示,可得:

\frac{\partial L}{\partial c^{<T_x>}_i}=\frac{\partial L}{\partial a^{<T_x>}_i}\frac{\partial a^{<T_x>}_i}{\partial c^{<T_x>}_i}=\frac{\partial L}{\partial a^{<T_x>}_i}\Gamma_{oi}^{<T_x>}[1-tanh^2(c_i^{<T_x>})]\\ \Rightarrow \frac{\partial L}{\partial c^{<T_x>}}=\frac{\partial L}{\partial a^{<T_x>}}.*\Gamma_{o}^{<T_x>}.*[1-tanh^2(c^{<T_x>})]? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(8.b)

上式的推导用到了tanh^{'}(x)=1-tanh^2(x)

?式(7)和(8.b)给出了最后一个时间步a^{<T_x>}c^{<T_x>}的导数,我们下面只需要假设已知a^{<t+1>}c^{<t+1>}的导数,并求出a^{<t>}c^{<t>}导数的表达式(递推关系式),就能够利用递推关系一步步反向传播求出所有时间步下?a^{<t>}c^{<t>}的导数。

先根据a^{<t+1>}c^{<t+1>}的导数,得到??\Gamma_u^{<t+1>}\Gamma_f^{<t+1>}\Gamma_o^{<t+1>}\widetilde{c}^{<t+1>}?的导数:

根据这两个正向传播的式子:

c^{<t+1>}=\Gamma_u^{<t+1>}.*\widetilde{c}^{<t+1>}+\Gamma_f^{<t+1>}.*c^{<t>}

a^{<t+1>}=\Gamma_o^{<t+1>}.*tanh(c^{<t+1>})

写成下标表示:

c^{<t+1>}_i=\Gamma_{ui}^{<t+1>}\widetilde{c}^{<t+1>}_i+\Gamma_{fi}^{<t+1>}c^{<t>}_i

a^{<t+1>}_i=\Gamma_{oi}^{<t+1>}tanh(c^{<t+1>}_i)

应用链式法则,得到:

\frac{\partial L}{\partial \Gamma_{oi}^{<t+1>}}=\frac{\partial L}{\partial a_{i}^{<t+1>}}\frac{\partial a_{i}^{<t+1>}}{\partial \Gamma_{oi}^{<t+1>}}=\frac{\partial L}{\partial a_{i}^{<t+1>}}tanh(c^{<t+1>}_i)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????(9)

\frac{\partial L}{\partial \Gamma_{ui}^{<t+1>}}=\frac{\partial L}{\partial c_{i}^{<t+1>}}\frac{\partial c_{i}^{<t+1>}}{\partial \Gamma_{ui}^{<t+1>}}=\frac{\partial L}{\partial c_{i}^{<t+1>}}\widetilde{c}^{<t+1>}_i? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? (10)

\frac{\partial L}{\partial \Gamma_{fi}^{<t+1>}}=\frac{\partial L}{\partial c_{i}^{<t+1>}}\frac{\partial c_{i}^{<t+1>}}{\partial \Gamma_{fi}^{<t+1>}}=\frac{\partial L}{\partial c_{i}^{<t+1>}}c^{<t>}_i? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(11)

\frac{\partial L}{\partial \widetilde{c}^{<t+1>}_i}=\frac{\partial L}{\partial c_{i}^{<t+1>}}\frac{\partial c_{i}^{<t+1>}}{\partial \widetilde{c}^{<t+1>}_i}=\frac{\partial L}{\partial c_{i}^{<t+1>}}\Gamma_{ui}^{<t+1>}? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (12)

于是如公式(5.a)所示,\frac{\partial L}{\partial a^{<t>}_j}可以表示为如下5项:

\frac{\partial L}{\partial a^{<t>}_j}\\ =\frac{\partial \mathcal{L}^{<t>}}{\partial a^{<t>}_j}+\sum_i\frac{\partial L}{\partial \Gamma_{oi}^{<t+1>}}\frac{\partial \Gamma_{oi}^{<t+1>}}{\partial a^{<t>}_j}+\sum_i\frac{\partial L}{\partial \Gamma_{ui}^{<t+1>}}\frac{\partial \Gamma_{ui}^{<t+1>}}{\partial a^{<t>}_j}+\sum_i\frac{\partial L}{\partial \Gamma_{fi}^{<t+1>}}\frac{\partial \Gamma_{fi}^{<t+1>}}{\partial a^{<t>}_j}+\sum_i\frac{\partial L}{\partial \widetilde{c}^{<t+1>}_i}\frac{\partial \widetilde{c}^{<t+1>}_i}{\partial a^{<t>}_j}? ? (5.b)

根据正向传播的公式:

?\Gamma_f^{<t>}= \sigma(W_f[a^{<t-1>},x^{<t>}]+b_f)

\Gamma_u^{<t>}= \sigma(W_u[a^{<t-1>},x^{<t>}]+b_u)

\Gamma_o^{<t>}= \sigma(W_o[a^{<t-1>},x^{<t>}]+b_o)

\widetilde{c}^{<t>}=tanh(W_c[a^{<t-1>},x^{<t>}]+bc)

?写为下标形式:

\Gamma_{i}^{<t+1>}= \sigma(W_{ij}[a^{<t>},x^{<t+1>}]_j+b_i)

\widetilde{c}^{<t+1>}_i=tanh(W_{cij}[a^{<t>},x^{<t+1>}]_j+b_{ci})

式中的\Gamma代表三个门中的任意一个

于是,我们可以给出偏导数:

\frac{\partial \Gamma_{i}^{<t+1>}}{\partial a^{<t>}_j}=\Gamma_{i}^{<t+1>}(1-\Gamma_{i}^{<t+1>})W_{ij}

\frac{\partial \widetilde{c}^{<t+1>}_i}{\partial a^{<t>}_j}=(1-(\widetilde{c}^{<t+1>}_i)^2)W_{cij}

以上的推导用到了sigmoid函数的导数\sigma^{'}(x)=\sigma(x)(1-\sigma(x))

带入(5.b),可以得到

\frac{\partial L}{\partial a^{<t>}_j}\\ =\frac{\partial \mathcal{L}^{<t>}}{\partial a^{<t>}_j}\\ +\sum_i\frac{\partial L}{\partial a_{i}^{<t+1>}}tanh(c^{<t+1>}_i)\Gamma_{oi}^{<t+1>}(1-\Gamma_{oi}^{<t+1>})W_{oij}\\ +\sum_i\frac{\partial L}{\partial c_{i}^{<t+1>}}\widetilde{c}^{<t+1>}_i\Gamma_{ui}^{<t+1>}(1-\Gamma_{ui}^{<t+1>})W_{uij}\\ +\sum_i\frac{\partial L}{\partial c_{i}^{<t+1>}}c^{<t>}_i\Gamma_{fi}^{<t+1>}(1-\Gamma_{fi}^{<t+1>})W_{fij}\ \\ +\sum_i\frac{\partial L}{\partial c_{i}^{<t+1>}}\Gamma_{ui}^{<t+1>}(1-(\widetilde{c}^{<t+1>}_i)^2)W_{cij}\\ \Rightarrow

\frac{\partial L}{\partial a^{<t>}}\\ =\frac{\partial \mathcal{L}^{<t>}}{\partial a^{<t>}}\\ +W_{oa}^T[\frac{\partial L}{\partial a^{<t+1>}}.*tanh(c^{<t+1>}).*\Gamma_{o}^{<t+1>}.*(1-\Gamma_{o}^{<t+1>})]\\ +W_{ua}^T[\frac{\partial L}{\partial c^{<t+1>}}.*\widetilde{c}^{<t+1>}.*\Gamma_{u}^{<t+1>}.*(1-\Gamma_{u}^{<t+1>})]\\ +W_{fa}^T[\frac{\partial L}{\partial c^{<t+1>}}.*c^{<t>}.*\Gamma_{f}^{<t+1>}.*(1-\Gamma_{f}^{<t+1>})] \\ +W_{ca}^T[\frac{\partial L}{\partial c^{<t+1>}}.*\Gamma_{u}^{<t+1>}.*(1-(\widetilde{c}^{<t+1>})^2)]? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (5.c)

(5.c)中W下标的a表示只考虑W中与a有关的部分,即W[:,1:n_a]

再考虑(6.a):

\frac{\partial L}{\partial c^{<t>}}=\frac{\partial L}{\partial a^{<t>}}\frac{\partial a^{<t>}}{\partial c^{<t>}}+\frac{\partial L}{\partial c^{<t+1>}}\frac{\partial c^{<t+1>}}{\partial c^{<t>}}? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(6.a)

(6.a)右边第一项等于:

?\frac{\partial L}{\partial a^{<t>}}\frac{\partial a^{<t>}}{\partial c^{<t>}}=\frac{\partial L}{\partial a^{<t>}}.*\Gamma_{o}^{<t>}.*[1-tanh^2(c^{<t>})]

这里的推导和(8.b)是一模一样的,就不再证明了。

考虑(6.a)右边第二项

利用正向传播的公式:c^{<t+1>}_i=\Gamma_{ui}^{<t+1>}\widetilde{c}^{<t+1>}_i+\Gamma_{fi}^{<t+1>}c^{<t>}_i

第二项??\frac{\partial L}{\partial c^{<t+1>}_i}\frac{\partial c^{<t+1>}_i}{\partial c^{<t>}_i}=\frac{\partial L}{\partial c^{<t+1>}_i}\Gamma_{fi}^{<t+1>}

故(6.a)可以写为:

\frac{\partial L}{\partial c^{<t>}}\\ =\frac{\partial L}{\partial a^{<t>}}\frac{\partial a^{<t>}}{\partial c^{<t>}}+\frac{\partial L}{\partial c^{<t+1>}}\frac{\partial c^{<t+1>}}{\partial c^{<t>}}\\ =\frac{\partial L}{\partial a^{<t>}}.*\Gamma_{o}^{<t>}.*[1-tanh^2(c^{<t>})]+\frac{\partial L}{\partial c^{<t+1>}}.*\Gamma_{f}^{<t+1>}? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (6.b)

至此,我们给出了a^{<t>}c^{<t>}的导数的递推关系式(5.c)、(6.b)。接下来的部分就比较简单了,只需要根据a^{<t>}c^{<t>}的导数计算W_ob_oW_uB_u等参数的梯度。以下式子和公式(9)(10)(11)(12)是一样的,只是把时间步t+1改为了t:

\frac{\partial L}{\partial \Gamma_{oi}^{<t>}}=\frac{\partial L}{\partial a_{i}^{<t>}}\frac{\partial a_{i}^{<t>}}{\partial \Gamma_{oi}^{<t>}}=\frac{\partial L}{\partial a_{i}^{<t>}}tanh(c^{<t>}_i)

\frac{\partial L}{\partial \Gamma_{ui}^{<t>}}=\frac{\partial L}{\partial c_{i}^{<t>}}\frac{\partial c_{i}^{<t>}}{\partial \Gamma_{ui}^{<t>}}=\frac{\partial L}{\partial c_{i}^{<t>}}\widetilde{c}^{<t>}_i

\frac{\partial L}{\partial \Gamma_{fi}^{<t>}}=\frac{\partial L}{\partial c_{i}^{<t>}}\frac{\partial c_{i}^{<t>}}{\partial \Gamma_{fi}^{<t>}}=\frac{\partial L}{\partial c_{i}^{<t>}}c^{<t-1>}_i

\frac{\partial L}{\partial \widetilde{c}^{<t>}_i}=\frac{\partial L}{\partial c_{i}^{<t>}}\frac{\partial c_{i}^{<t>}}{\partial \widetilde{c}^{<t>}_i}=\frac{\partial L}{\partial c_{i}^{<t>}}\Gamma_{ui}^{<t>}

结合正向传播的公式:

\Gamma_{i}^{<t>}= \sigma(W_{ij}[a^{<t-1>},x^{<t>}]_j+b_i)

\widetilde{c}^{<t>}_i=tanh(W_{cij}[a^{<t-1>},x^{<t>}]_j+b_{ci})

(公式中下标不指示那个门的\Gamma,代表三个门中的任意一个)

得到:

\frac{\partial L}{\partial W_{ij}}=\sum_{t=1}^{T_x}\frac{\partial L}{\partial \Gamma_{i}^{<t>}}\frac{\partial \Gamma_{i}^{<t>}}{\partial W_{ij}}=\sum_{t=1}^{T_x}\frac{\partial L}{\partial \Gamma_{i}^{<t>}}\Gamma_{i}^{<t>}(1-\Gamma_{i}^{<t>})[a^{<t-1>},x^{<t>}]_j

\frac{\partial L}{\partial b_{i}}=\sum_{t=1}^{T_x}\frac{\partial L}{\partial \Gamma_{i}^{<t>}}\frac{\partial \Gamma_{i}^{<t>}}{\partial b_{i}}=\sum_{t=1}^{T_x}\frac{\partial L}{\partial \Gamma_{i}^{<t>}}\Gamma_{i}^{<t>}(1-\Gamma_{i}^{<t>})

\frac{\partial L}{\partial W_{cij}}=\sum_{t=1}^{T_x}\frac{\partial L}{\partial \widetilde{c}^{<t>}_i}\frac{\partial \widetilde{c}^{<t>}_i}{\partial W_{cij}}=\sum_{t=1}^{T_x}\frac{\partial L}{\partial \widetilde{c}^{<t>}_i}[1-(\widetilde{c}^{<t>}_i)^2][a^{<t-1>},x^{<t>}]_j

\frac{\partial L}{\partial b_{ci}}=\sum_{t=1}^{T_x}\frac{\partial L}{\partial \widetilde{c}^{<t>}_i}\frac{\partial \widetilde{c}^{<t>}_i}{\partial b_{ci}}=\sum_{t=1}^{T_x}\frac{\partial L}{\partial \widetilde{c}^{<t>}_i}[1-(\widetilde{c}^{<t>}_i)^2]

\Rightarrow

\frac{\partial L}{\partial W}=\sum_{t=1}^{T_x}\frac{\partial L}{\partial \Gamma^{<t>}}.*\Gamma^{<t>}.*(1-\Gamma^{<t>})[a^{<t-1>},x^{<t>}]^T

\frac{\partial L}{\partial b}=\sum_{t=1}^{T_x}\frac{\partial L}{\partial \Gamma^{<t>}}.*\Gamma^{<t>}.*(1-\Gamma^{<t>})

\frac{\partial L}{\partial W_{c}}=\sum_{t=1}^{T_x}\frac{\partial L}{\partial \widetilde{c}^{<t>}}.*[1-(\widetilde{c}^{<t>})^2][a^{<t-1>},x^{<t>}]^T

\frac{\partial L}{\partial b_{c}}=\sum_{t=1}^{T_x}\frac{\partial L}{\partial \widetilde{c}^{<t>}}.*[1-(\widetilde{c}^{<t>})^2]

\Rightarrow

\frac{\partial L}{\partial W_{o}}=\sum_{t=1}^{T_x}\frac{\partial L}{\partial a^{<t>}}.*tanh(c^{<t>}).*\Gamma^{<t>}_o.*(1-\Gamma^{<t>}_o)[a^{<t-1>},x^{<t>}]^T? ? ? ? ? ? ? ? ? ? ? ? (13)

\frac{\partial L}{\partial b_o}=\sum_{t=1}^{T_x}\frac{\partial L}{\partial a^{<t>}}.*tanh(c^{<t>}).*\Gamma^{<t>}_o.*(1-\Gamma^{<t>}_o)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (14)

\frac{\partial L}{\partial W_{u}}=\sum_{t=1}^{T_x}\frac{\partial L}{\partial c^{<t>}}.*\widetilde{c}^{<t>}.*\Gamma^{<t>}_u.*(1-\Gamma^{<t>}_u)[a^{<t-1>},x^{<t>}]^T? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (15)

\frac{\partial L}{\partial b_u}=\sum_{t=1}^{T_x}\frac{\partial L}{\partial c^{<t>}}.*\widetilde{c}^{<t>}.*\Gamma^{<t>}_u.*(1-\Gamma^{<t>}_u)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (16)

\frac{\partial L}{\partial W_{f}}=\sum_{t=1}^{T_x}\frac{\partial L}{\partial c^{<t>}}.*c^{<t-1>}.*\Gamma^{<t>}_f.*(1-\Gamma^{<t>}_f)[a^{<t-1>},x^{<t>}]^T? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (17)

\frac{\partial L}{\partial b_f}=\sum_{t=1}^{T_x}\frac{\partial L}{\partial c^{<t>}}.*c^{<t-1>}.*\Gamma^{<t>}_f.*(1-\Gamma^{<t>}_f)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(18)

\frac{\partial L}{\partial W_{c}}=\sum_{t=1}^{T_x}\frac{\partial L}{\partial c^{<t>}}.*\Gamma_{u}^{<t>}.*[1-(\widetilde{c}^{<t>})^2][a^{<t-1>},x^{<t>}]^T? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (19)

\frac{\partial L}{\partial b_{c}}=\sum_{t=1}^{T_x}\frac{\partial L}{\partial c^{<t>}}.*\Gamma_{u}^{<t>}.*[1-(\widetilde{c}^{<t>})^2]? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (20)

以上就是LSTM反向传播所需要的所有公式。

3、总结

LSTM的正向传播由以下公式给出:

\Gamma_f^{<t>}= \sigma(W_f[a^{<t-1>},x^{<t>}]+b_f)

\Gamma_u^{<t>}= \sigma(W_u[a^{<t-1>},x^{<t>}]+b_u)

\Gamma_o^{<t>}= \sigma(W_o[a^{<t-1>},x^{<t>}]+b_o)

\widetilde{c}^{<t>}=tanh(W_c[a^{<t-1>},x^{<t>}]+bc)

c^{<t>}=\Gamma_u^{<t>}.*\widetilde{c}^{<t>}+\Gamma_f.*c^{<t-1>}

a^{<t>}=\Gamma_o^{<t>}.*tanh(c^{<t>})

z^{<t>}= W_ya^{<t>}+b_y

\hat{y}^{<t>}=softmax(z^{<t>})

\mathcal{L}^{<t>}(\hat{y}^{<t>}, y^{<t>})=-\sum_{j=1}^{n_y}y^{<t>}_jlog(\hat{y}^{<t>}_j)

L=\sum_{t=1}^{T_x}\mathcal{L}^{<t>}(\hat{y}^{<t>}, y^{<t>})??

反向传播步骤:

①在每个时间步t,接受来自上一个时间步t+1的导数\frac{\partial L}{\partial a^{<t+1>}}\frac{\partial L}{\partial c^{<t+1>}},(最后一个时间步下的值可以准确得到)

——计算参数Wy、by的导数

?\frac{\partial \mathcal{L}^{<t>}}{\partial b_y}=\hat{y}^{<t>}-y^{<t>}\Rightarrow\frac{\partial L}{\partial b_y}=\sum_t\hat{y}^{<t>}-y^{<t>}? ? ? ?????????????????????????????????????????? ? (2)

\frac{\partial \mathcal{L}^{<t>}}{\partial W_y}=(\hat{y}^{<t>}-y^{<t>})(a^{<t>})^T\Rightarrow\frac{\partial L}{\partial W_y}=\sum_t(\hat{y}^{<t>}-y^{<t>})(a^{<t>})^T? ? ? ? ? ? ? ? ?(3)

(虽然是对所有时间步求和,但是时间步t的时候可以计算一项,最后再加到一起就行)

——计算\frac{\partial L}{\partial a^{<t>}}

?\frac{\partial \mathcal{L}^{<t>}}{\partial a^{<t>}}=W_y^T(\hat{y}^{<t>}-y^{<t>})? ? ? ? ????????????????????????????????????????????????????????????????????????????????(4)?

?\frac{\partial L}{\partial a^{<t>}}\\ =\frac{\partial \mathcal{L}^{<t>}}{\partial a^{<t>}}\\ +W_{oa}^T[\frac{\partial L}{\partial a^{<t+1>}}.*tanh(c^{<t+1>}).*\Gamma_{o}^{<t+1>}.*(1-\Gamma_{o}^{<t+1>})]\\ +W_{ua}^T[\frac{\partial L}{\partial c^{<t+1>}}.*\widetilde{c}^{<t+1>}.*\Gamma_{u}^{<t+1>}.*(1-\Gamma_{u}^{<t+1>})]\\ +W_{fa}^T[\frac{\partial L}{\partial c^{<t+1>}}.*c^{<t>}.*\Gamma_{f}^{<t+1>}.*(1-\Gamma_{f}^{<t+1>})] \\ +W_{ca}^T[\frac{\partial L}{\partial c^{<t+1>}}.*\Gamma_{u}^{<t+1>}.*(1-(\widetilde{c}^{<t+1>})^2)]? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (5.c)

?——计算\frac{\partial L}{\partial c^{<t>}}

?\frac{\partial L}{\partial c^{<t>}}\\ =\frac{\partial L}{\partial a^{<t>}}\frac{\partial a^{<t>}}{\partial c^{<t>}}+\frac{\partial L}{\partial c^{<t+1>}}\frac{\partial c^{<t+1>}}{\partial c^{<t>}}\\ =\frac{\partial L}{\partial a^{<t>}}.*\Gamma_{o}^{<t>}.*[1-tanh^2(c^{<t>})]+\frac{\partial L}{\partial c^{<t+1>}}.*\Gamma_{f}^{<t+1>}? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (6.b)

—— 计算其他参数的导数

?\frac{\partial L}{\partial W_{o}}=\sum_{t=1}^{T_x}\frac{\partial L}{\partial a^{<t>}}.*tanh(c^{<t>}).*\Gamma^{<t>}_o.*(1-\Gamma^{<t>}_o)[a^{<t-1>},x^{<t>}]^T? ? ? ? ? ? ? ? ? ? ? ? (13)

\frac{\partial L}{\partial b_o}=\sum_{t=1}^{T_x}\frac{\partial L}{\partial a^{<t>}}.*tanh(c^{<t>}).*\Gamma^{<t>}_o.*(1-\Gamma^{<t>}_o)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (14)

\frac{\partial L}{\partial W_{u}}=\sum_{t=1}^{T_x}\frac{\partial L}{\partial c^{<t>}}.*\widetilde{c}^{<t>}.*\Gamma^{<t>}_u.*(1-\Gamma^{<t>}_u)[a^{<t-1>},x^{<t>}]^T? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (15)

\frac{\partial L}{\partial b_u}=\sum_{t=1}^{T_x}\frac{\partial L}{\partial c^{<t>}}.*\widetilde{c}^{<t>}.*\Gamma^{<t>}_u.*(1-\Gamma^{<t>}_u)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (16)

\frac{\partial L}{\partial W_{f}}=\sum_{t=1}^{T_x}\frac{\partial L}{\partial c^{<t>}}.*c^{<t-1>}.*\Gamma^{<t>}_f.*(1-\Gamma^{<t>}_f)[a^{<t-1>},x^{<t>}]^T? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (17)

\frac{\partial L}{\partial b_f}=\sum_{t=1}^{T_x}\frac{\partial L}{\partial c^{<t>}}.*c^{<t-1>}.*\Gamma^{<t>}_f.*(1-\Gamma^{<t>}_f)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(18)

\frac{\partial L}{\partial W_{c}}=\sum_{t=1}^{T_x}\frac{\partial L}{\partial c^{<t>}}.*\Gamma_{u}^{<t>}.*[1-(\widetilde{c}^{<t>})^2][a^{<t-1>},x^{<t>}]^T? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (19)

\frac{\partial L}{\partial b_{c}}=\sum_{t=1}^{T_x}\frac{\partial L}{\partial c^{<t>}}.*\Gamma_{u}^{<t>}.*[1-(\widetilde{c}^{<t>})^2]? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (20)

(虽然是对所有时间步求和,但是时间步t的时候可以计算一项,最后再加到一起就行)

③把\frac{\partial L}{\partial a^{<t>}}\frac{\partial L}{\partial c^{<t>}}传递给下一个时间步t-1

?

?

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-08-02 20:48:53  更:2021-08-02 20:49:01 
 
开发: 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/22 14:46:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码