1.4 通过时间的反向传播-深度学习第五课《序列模型》-Stanford吴恩达教授
←上一篇 | ↓↑ | 下一篇→ |
---|---|---|
1.3 循环神经网络 | 回到目录 | 1.5 不同类型的循环神经网络 |
通过时间的反向传播 (Backpropagation through time)
之前我们已经学过了循环神经网络的基础结构,在本节视频中我们将来了解反向传播是怎样在循环神经网络中运行的。和之前一样,当你在编程框架中实现循环神经网络时,编程框架通常会自动处理反向传播。但我认为,在循环神经网络中,对反向传播的运行有一个粗略的认识还是非常有用的,让我们来一探究竟。
在之前你已经见过对于前向传播(上图蓝色箭头所指方向)怎样在神经网络中从左到右地计算这些激活项,直到输出所有地预测结果。而对于反向传播,我想你已经猜到了,反向传播地计算方向(上图红色箭头所指方向)与前向传播基本上是相反的。
我们来分析一下前向传播的计算,现在你有一个输入序列, x<1>,x<2>,x<3>x^{<1>},x^{<2>},x^{<3>}x<1>,x<2>,x<3> 一直到 x<Tx>x^{<T_x>}x<Tx> ,然后用 x<1>x^{<1>}x<1> 还有 a<0>a^{<0>}a<0> 计算出时间步1的激活项,再用 x<2>x^{<2>}x<2> 和 a<1>a^{<1>}a<1> 计算出 a<2>a^{<2>}a<2> ,然后计算 a<3>a^{<3>}a<3> 等等,一直到 a<Tx>a^{<T_x>}a<Tx> 。
为了真正计算出 a<1>a^{<1>}a<1> ,你还需要一些参数, WaW_aWa 和 bab_aba ,用它们来计算出 a<1>a^{<1>}a<1> 。这些参数在之后的每一个时间步都会被用到,于是继续用这些参数计算 a<2>,a<3>a^{<2>},a^{<3>}a<2>,a<3> 等等,所有的这些激活项都要取决于参数 WaW_aWa 和 bab_aba 。有了 a<1>a^{<1>}a<1> ,神经网络就可以计算第一个预测值 y^<1>\hat{y}^{<1>}y^<1> ,接着到下一个时间步,继续计算出 y^<2>,y^<3>\hat{y}^{<2>},\hat{y}^{<3>}y^<2>,y^<3> ,等等,一直到 y^<Ty>\hat{y}^{<T_y>}y^<Ty> 。为了计算出 y^\hat{y}y^ ,需要参数 WyW_yWy 和 byb_yby ,它们将被用于所有这些节点。
然后为了计算反向传播,你还需要一个损失函数。我们先定义一个元素损失函数(上图编号1所示)
L<t>(y^<t>,y<t>)=−y<t>logy^<t>−(1−y<t>)log(1−y^<t>)L^{<t>}(\hat{y}^{<t>},y^{<t>})=-y^{<t>}\log \hat{y}^{<t>}-(1-y^{<t>})\log(1-\hat{y}^{<t>})L<t>(y^<t>,y<t>)=−y<t>logy^<t>−(1−y<t>)log(1−y^<t>)
它对应的是序列中一个具体的词,如果它是某个人的名字,那么 y<t>y^{<t>}y<t> 的值就是1,然后神经网络将输出这个词是名字的概率值,比如0.1。我将它定义为标准逻辑回归损失函数,也叫交叉熵损失函数(Cross Entropy Loss),它和之前我们在二分类问题中看到的公式很像。所以这是关于单个位置上或者说某个时间步 ttt 上某个单词的预测值的损失函数。
现在我们来定义整个序列的损失函数,将 LLL 定义为(上图编号2所示)
L(y^,y)=∑t=1TxL<t>(y^<t>,y<t>)L(\hat{y},y)=\sum_{t=1}^{T_x}L^{<t>}(\hat{y}^{<t>},y^{<t>})L(y^,y)=∑t=1TxL<t>(y^<t>,y<t>)
在这个计算图中,通过 y^<1>\hat{y}^{<1>}y^<1> 可以计算对应的损失函数,于是计算出第一个时间步的损失函数(上图编号3所示),然后计算出第二个时间步的损失函数,然后是第三个时间步,一直到最后一个时间步,最后为了计算出总体损失函数,我们要把它们都加起来,通过下面的等式(上图编号2所示的等式)计算出最后的 LLL (上图编号4所示),也就是把每个单独时间步的损失函数都加起来。
这就是完整的计算图,在之前的例子中,你已经见过反向传播,所以你应该能够想得到反向传播算法需要在相反的方向上进行计算和传递信息,最终你做的就是把前向传播的箭头都反过来,在这之后你就可以计算出所有合适的量,然后你就可以通过导数相关的参数,用梯度下降法来更新参数。
在这个反向传播的过程中,最重要的信息传递或者说最重要的递归运算就是这个从右到左的运算,这也就是为什么这个算法有一个很别致的名字,叫做“通过(穿越)时间反向传播(backpropagation through time)”。取这个名字的原因是对于前向传播,你需要从左到右进行计算,在这个过程中,时刻 ttt 不断增加。而对于反向传播,你需要从右到左进行计算,就像时间倒流。“通过时间反向传播”,就像穿越时光,这种说法听起来就像是你需要一台时光机来实现这个算法一样。
RNN反向传播示意图:
希望你大致了解了前向和反向传播是如何在RNN中工作的,到目前为止,你只见到了RNN中一个主要的例子,其中输入序列的长度和输出序列的长度是一样的。在下节课将展示更多的RNN架构,这将让你能够处理一些更广泛的应用。
课程板书
←上一篇 | ↓↑ | 下一篇→ |
---|---|---|
1.3 循环神经网络 | 回到目录 | 1.5 不同类型的循环神经网络 |
1.4 通过时间的反向传播-深度学习第五课《序列模型》-Stanford吴恩达教授相关推荐
- 深度学习教程(6) | 神经网络优化算法(吴恩达·完整版)
作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/35 本文地址:https://www.showmeai.tech/article-d ...
- 深度学习教程(10) | 卷积神经网络解读(吴恩达·完整版)
作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/35 本文地址:http://www.showmeai.tech/article-det ...
- 2.19 总结-深度学习-Stanford吴恩达教授
←上一篇 ↓↑ 下一篇→ 2.18 Logistic 损失函数的解释 回到目录 3.1 神经网络概览 文章目录 总结 习题 第 11 题 第 12 题 第 13 题 第 14 题 第 15 题 第 1 ...
- 3.10 直观理解反向传播-深度学习-Stanford吴恩达教授
←上一篇 ↓↑ 下一篇→ 3.9 神经网络的梯度下降法 回到目录 3.11 随机初始化 直观理解反向传播 (Backpropagation Intuition (Optional)) 这个视频主要是推 ...
- 1.13 总结-深度学习第五课《序列模型》-Stanford吴恩达教授
←上一篇 ↓↑ 下一篇→ 1.12 深层循环神经网络 回到目录 1.13 总结 总结 习题 第 141 题 假设你的训练样本是句子(单词序列),下面哪个选项指的是第i个训练样本中的第j个词? A.x( ...
- 3.12 总结-深度学习-Stanford吴恩达教授
←上一篇 ↓↑ 下一篇→ 3.11 随机初始化 回到目录 4.1 深层神经网络 文章目录 总结 习题 第 21 题 第 22 题 第 23 题 第 24 题 第 25 题 第 26 题 第 27 题 ...
- 机器学习和深度学习到底怎么学?顶尖专家吴恩达告诉你
机器学习和深度学习到底怎么学? 在外国版知乎上,有位网友问:新手如何学习机器学习?学习完MOOC的课程后有没有能力阅读研究论文或者真正的做出一点研究成果? 这个困惑很多人的问题吴恩达给出了详细的回答, ...
- 2.8 Adam 优化算法-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授
←上一篇 ↓↑ 下一篇→ 2.7 RMSprop 回到目录 2.9 学习率衰减 Adam优化算法 (Adam Optimization Algorithm) 在深度学习的历史上,包括许多知名研究者在内 ...
- 3.5 向量化实现的解释-深度学习-Stanford吴恩达教授
←上一篇 ↓↑ 下一篇→ 3.4 多个例子中的向量化 回到目录 3.6 激活函数 向量化实现的解释 (Explanation for Vectorized Implementation) 在上一个视频 ...
最新文章
- 051_Array对象
- 满足人工智能日益增长的要求
- 程序员如何用Python了解女朋友的情绪变化?
- magento如何在首页显示产品
- 【bzoj1742】[Usaco2005 nov]Grazing on the Run 边跑边吃草 区间dp
- java常用的空对象 null
- exit()与_exit()函数的区别(Linux系统中)
- VALSE学习(十二):视频时序建模和动作识别
- Unity第一人称可视化传送门制作
- 3.1 电磁干扰EMI
- ubuntu串口调试工具kermit和minicom
- Md5加密算法的原理及应用
- nvme分区选mbr还是guid_硬盘分区不求人:秒懂MBR和GPT分区表
- Mvtec数据集批量加各种噪声(高斯,椒盐,随机噪声)
- 阿米洛键盘失灵_阿米洛 海韵评测:可爱的键帽,强大的轴型,少女心十足!...
- 什么是模块化 ? 模块化的好处
- java 时间类_Java日期和时间类简介
- ftp软件是什么如何使用,ftp软件是什么如何使用
- ChatGPT常用的提示语(prompts)系列三
- Golang当中的定时器
热门文章
- Ubuntu16.04中安装mininet
- 不同版本的Chrom浏览器对应的ChromDriver的版本
- 翻译:XtraDB/InnoDB中的AUTO_INCREMENT处理方式(已提交到MariaDB官方手册)
- 使用log4jdbc记录SQL信息
- 鍵盤彈出,頁面佈局被推上去了.....
- JavaScript学习总结(五)——Javascript中==和===的区别
- UA MATH563 概率论的数学基础 中心极限定理24 随机变量的特征函数
- UA MATH564 概率论VI 数理统计基础4 t分布
- Linux查看系统信息命令实例
- 电脑不能上网学习总结