反向传播与梯度下降算法

在深度学习中最重要的算法莫过于反向传播算法(Back Propagation,BP)和梯度下降算法(Gradient Descent,GD),从宏观上理解深层神经网络中的这两个算法,前项传播经激活函数输入到后一层,在最后一层计算误差,经反向传播将误差传递至前一层,然后在前一层利用梯度下降算法进行参数优化,再利用反向传播将误差向前传递,以此类推。

梯度下降算法主要目的是通过迭代使得目标函数收敛到最小值或极小值,梯度下降实际上是微分过程,梯度是对每个变量进行微分,具体计算如下:

层归一化

在深度神经网络中,一方面随着反向传播导致参数的更新,中间隐藏层的数据分布也会发生较大的差异,这就导致了神经网络需要不断的去适应新的数据分布,导致学习难度变大。另一方面,无论是tanh激活函数还是sigmod激活函数,在数据出现较大或较小时都容易出现梯度消失,使得网络收敛较慢甚至参数无法更新。为了应对这个问题,人们提出了批次归一化(Bath Normalization,BN)、层归一化(Layer Normalization,LN)。BN是基于批量数据进行归一化处理,但对于动态网络以及当batCH很小或者数据集的方差较大时均不可以使用。
LN的训练过程分为两步:
(1)计算神经网络层的均值与方差
令l层的输入为xlx^lxl,则其均值和方差为:

(2)进行归一化,计算公式如下所示:

层归一化优缺点如下。优点:适用于batch较小的情况以及动态网络。缺点:
在卷积神经网络中使用层归一化会破坏卷积学习到的特征,导致模型无法收敛,所以一般卷积神经网络后不会做归一化处理;由于LN基于自身数据,同一特征在进行归一化处理时容易造成数据信息损失。

Adam优化器

在使用传统梯度下降算法时,由于学习率固定,所以更新步长为定值,然而需要优化的参数对目标函数(残差)的依赖不同,所需要更新的也不一样,所以比较合理的做法应该是对每个参数给与独特的学习率,在训练过程中算法能够自适应的调整学习率去调整残差对参数大小的更新。目前最常用的自适应学习率优化算法莫过于Adam(Adaptive moment estimation)算法。Kingma D和Ba J在2014年提出Adam优化器,该算法结合AdaGrad(Adaptive gradient algorithm)和RMSProp(root mean square prop)的优点,综合考虑了梯度的一阶有偏矩估计和二阶有偏矩估计,计算并更新参数及步长。Adam优化器具有以下优点:计算高效、内存需求少;参数更新与梯度变换无关;超参数的可解释性强,通常使用默认值;更新的步长能够自动调整;适用于大规模数据及大模型优化。
Adam算法的更新规则如下:



长短时记忆网络

循环神经网络通过对历史信息的获取和保存来帮助当前时刻做决策,但很难解决较长时间依赖的问题。为了解决较长时间依赖的问题,Hochreiter S等人提出了长短时记忆网络(Long Short Term Memory,LSTM)。顾名思义,LSTM模型有长时状态和短时状态,相比标准的RNN模型,LSTM拥有三个“门”结构,通过门控机制来控制信息的遗忘与更新。LSTM的结构如图2.2所示:

在LSTM模型中,有两个状态向量,分别为长时状态向量CtC_tCt​,和短时状态向量hth_tht​,其中hth_tht​也是输出向量。LSTM模型的“输入门”和“遗忘门”保证了模型能够有效地长期记忆,其中“遗忘门”的作用是让网络遗忘之前的部分信息,“输入门”的作用是在“遗忘门”遗忘了部分状态后,还需要从当前输入补充多少最新的信息。在计算得到新的状态CtC_tCt​,后需要产生当前的输出,这就是“输出门”的作用。
下面分别介绍三种门控的原理:
(1)遗忘门
遗忘门主要作用是控制上一时刻的状态Ct−1C_{t-1}Ct−1​对当前时刻的影响。遗忘门的控制变量计算如下:


(2)输入门
首先,通过对当前时刻输入xtx_txt​,和上一时刻输出ht−1h_{t-1}ht−1​做非线性变换得到新的输入向量iti_tit​;,同时使用tanh激活函数来控制输入向量Ct′{C_t} ^{'}Ct​′,iti_tit​、Ct′{C_t} ^{'}Ct​′计算如公式2.21、2.22所示,通过输入门后,待写入状态的向量为it∗Ct′{i_t}*{C_t} ^{'}it​∗Ct​′,具体结构见图2.3所示。

(3)输出门
输出门的门控变量为OtO_tOt​,CtC_tCt​经过tanh激活函数后与输入门作用,得到LSTM的输出hth_tht​,OtO_tOt​,hth_tht​,计算如公式2.23、2.24所示,具体结构见图2.3所示。

参考文献:
[1]郑正凯. 基于深度学习端到端的对话状态跟踪研究[D].山东大学,2021.

深度学习相关基础理论相关推荐

  1. 深度学习英文缩写_深度学习相关专业词汇简称汇总

    深度学习相关专业词汇简称汇总 zoerywzhou@gmail.com 作者:Zhouw 2016-3-15 版权声明:本文为博主原创文章,未经博主允许不得转载. 作者是深度学习的初学者,经由导师指导 ...

  2. 如何评价深度学习相关顶级期刊论文难复现的问题?

    链接:https://www.zhihu.com/question/265953178 编辑:深度学习与计算机视觉 声明:仅做学术分享,侵删 在本人的研究动作识别过程中,曾多次复现该领域顶级期刊的论文 ...

  3. 交通运输相关机器学习/深度学习相关资源列表,关于交通运输场景的机器学习/深度学习的资源这里都有

    本文素材来源于GitHub,经本人翻译及整理首发于CSDN,仅供技术交流所用,请勿商用.欢迎大家关注我的公众号: gbxiao992 原文地址:https://github.com/zzsza/Awe ...

  4. 深度学习相关公开数据集

    目录 介绍 图像处理相关 自然语言处理相关 语音处理相关 Supplement 一.介绍 通常来说,深度学习的关键在于实践.从图像处理到语音识别,每一个细分领域都有着独特的细微差别和解决方法. 然而, ...

  5. 二十五个深度学习相关公开数据集

    转 [干货]二十五个深度学习相关公开数据集 2018年04月18日 13:42:53 阅读数:758 (选自Analytics Vidhya:作者:Pranav Dar:磐石编译) 目录 介绍 图像处 ...

  6. 深度学习相关的主要 GPU 初识

    和深度学习相关的主要 GPU 性能指标如下: 内存带宽:GPU 处理大量数据的能力,是最重要的性能指标. 处理能力:表示 GPU 处理数据的速度,将其量化为 CUDA 核心数量和每一个核心的频率的乘积 ...

  7. 做深度学习相关的科研工作,这一篇就够了?

    大家好,我是羽峰,今天要和大家分享的是做与深度学习相关的科研工作的一些相关网站,相关工具,相关数据集等. 目录 深度学习白嫖网站 相关科研网站 论文写作 文献管理 深度学习白嫖网站 吴恩达:深度学习工 ...

  8. 深度学习相关的模式识别知识

    #深度学习相关的模式识别知识 本文记录了博主学习<模式识别:算法及实现方法>一书中总结的与深度学习相关的知识点,如果有兴趣建议阅读原著.更新于2018.09.15. 附书的信息:书名< ...

  9. 深度学习相关阅读论文汇总(持续更新)

    深度学习相关阅读论文汇总(持续更新) 1 Long-Term Temporal Convolutions(LTC)for Action Recognition IEEE Transactions on ...

最新文章

  1. 春招来袭!程序员如何拿下硅谷顶级公司200万年薪?
  2. [LeetCode/LintCode] Factorial Trailing Zeros
  3. 《Android编程权威指南》-读书笔记(七) -处理旋转设备
  4. RHEL 6 下VNC Server 的安装配置
  5. 3.X内核下设备树–platform设备驱动
  6. android 服务器返回302,Android WebView 内处理302重定向不跳转的解决
  7. 前端:JS/17/前篇总结(JS程序的基本语法,变量),数据类型-变量的类型(数值型,字符型,布尔型,未定义型,空型),数据类型转换,typeof()判断数据类型,从字符串提取整数或浮点数的函数
  8. 腾讯联手国家信息中心启动共筑疫情“数据长城”计划
  9. 随想录(uclibc的学习)
  10. 跨过虚拟化技术浪潮,Veeam快步入局云数据管理
  11. 使用Telnet 在DS300上配置阵列
  12. C++中回调(CallBack)的使用方法
  13. java虚拟器安装教程_Java虚拟机安装教程都有什么?该如何下载?
  14. 简析三种近场通信及其未来发展趋势
  15. python猴子偷桃问题_java猴子偷桃问题
  16. 17zwd获得17网商品详情接口 API 返回值说明,API接口获取方案
  17. 判断回文串,最长回文串方法
  18. 【Java核心技术卷】深入理解Java近似数(近似存储)与有效数字、精确度、最大有效位数的概念
  19. 泰拉瑞亚 (Terraria v1.4.1.2) ---PC
  20. BTIM提升移动运维管理效率

热门文章

  1. 数据分析 知识体系 Python篇
  2. 产品经理的六大工作职责——最简洁
  3. 2022最新软件测试面试题(附答案)来测试下你的水平
  4. 简单易懂的CRC校验原理阐述
  5. ubuntu 20.04 设置DNS
  6. 【时间序列】时间序列曲线平滑+预测(LSTM)
  7. 为什么选择软件测试这个岗位?(面经)
  8. Docker Hub的使用以及配置阿里云镜像加速
  9. 人形机器人踢“世界杯”有经验!主动躲避摔伤风险,跟踪目标精准进球
  10. 从程序员角度看心理学中的恐慌区、学习区和舒适区