| |
|
开发:
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、正向传播LSTM的正向传播公式: ?? 由于传播过程比较复杂,我们画一个计算草图来反映时间步t的正向传播中,各个量的关系: 计算图中红色部分不属于时间步t,而是属于时间步t+1,把这几个红色的计算加入以后,可以更清晰的看到,的值会传播到两个位置(即在时间步t的正向传播中,传递到,在时间步t+1的正向传播中,传递到;而的值会传播到5个位置(即时间步t的正向传播中,传递到,在时间步t+1的正向传播中,传递到、、和)。这对于理解反向传播中、的导数从何而来非常重要,在反向传播中,我们会看到,的误差从相应的2个位置反向传播得到,的误差从相应的5个位置反向传播得到。 2、反向传播把正向传播的计算图反过来就是时间步t的反向传播的计算图:? ?红色的部分是时间步t+1的量对于?、?导数的贡献。我们根据这张图,从上往下推导。 对于输出激活函数是softmax,损失函数是交叉熵的情况,常用的公式是: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????????????????????????????? (1) 我在RNN反向传播的推导中证明了这个公式,这里就不证明了。 根据 我们可以进而得到: ? ? ? ?????????????????????????????????????????? ? (2) ? ? ? ? ? ? ? ? ?(3) ? ? ? ? ????????????????????????????????????????????????????????????????????????????????(4) ?以上公式和RNN的情况是一模一样的,也不多解释了。 正如反向传播的计算图所示的那样,的导数除了包含式(4)中的那一项,还包括来自?、、和?的四项,即: ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????(5.a) ?类似的,的导数也可以表示为两项,一项来自,另一项来自: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(6.a) ?公式(5)(6)实际上给出了、导数的递推关系式。 对于最后一个时间步,t=Tx,没有来自下一个时间步的导数传入,公式(5)(6)变为: (5):????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (7) (6):????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(8.a) 根据的下标表示: 并把公式(8.a)也用下标表示,可得: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(8.b) 上式的推导用到了 ?式(7)和(8.b)给出了最后一个时间步和的导数,我们下面只需要假设已知和的导数,并求出和导数的表达式(递推关系式),就能够利用递推关系一步步反向传播求出所有时间步下?和的导数。 先根据和的导数,得到??、、和?的导数: 根据这两个正向传播的式子: 写成下标表示: 应用链式法则,得到: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????(9) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? (10) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(11) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (12) 于是如公式(5.a)所示,可以表示为如下5项: ? ? (5.b) 根据正向传播的公式: ? ?写为下标形式: 式中的代表三个门中的任意一个 于是,我们可以给出偏导数: 以上的推导用到了sigmoid函数的导数 带入(5.b),可以得到 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (5.c) (5.c)中W下标的a表示只考虑W中与a有关的部分,即 再考虑(6.a): ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(6.a) (6.a)右边第一项等于: ? 这里的推导和(8.b)是一模一样的,就不再证明了。 考虑(6.a)右边第二项 利用正向传播的公式: 第二项?? 故(6.a)可以写为: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (6.b) 至此,我们给出了、的导数的递推关系式(5.c)、(6.b)。接下来的部分就比较简单了,只需要根据、的导数计算等参数的梯度。以下式子和公式(9)(10)(11)(12)是一样的,只是把时间步t+1改为了t: 结合正向传播的公式: (公式中下标不指示那个门的,代表三个门中的任意一个) 得到: ? ? ? ? ? ? ? ? ? ? ? ? (13) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (14) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (15) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (16) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (17) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(18) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (19) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (20) 以上就是LSTM反向传播所需要的所有公式。 3、总结LSTM的正向传播由以下公式给出: ?? 反向传播步骤: ①在每个时间步t,接受来自上一个时间步t+1的导数、,(最后一个时间步下的值可以准确得到) ② ——计算参数Wy、by的导数 ?? ? ? ?????????????????????????????????????????? ? (2) ? ? ? ? ? ? ? ? ?(3) (虽然是对所有时间步求和,但是时间步t的时候可以计算一项,最后再加到一起就行) ——计算 ?? ? ? ? ????????????????????????????????????????????????????????????????????????????????(4)? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (5.c) ?——计算 ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (6.b) —— 计算其他参数的导数 ?? ? ? ? ? ? ? ? ? ? ? ? (13) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (14) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (15) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (16) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (17) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(18) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (19) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (20) (虽然是对所有时间步求和,但是时间步t的时候可以计算一项,最后再加到一起就行) ③把、传递给下一个时间步t-1 ? ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |