深度学习基础笔记——基本概念

相关申明及相关参考:

体系学习地址 主要学习笔记地址

梯度消失和梯度爆炸及解决方法 重点梯度部分理解

一文弄懂神经网络中的反向传播法——BackPropagation

由于是文章阅读整合,依据个人情况标注排版,

不确定算不算转载,主要学习围绕AI浩的五万字总结,深度学习基础
如有侵权,请联系删除。

1 神经网络(人工神经网络-Artificial Neural Networks,简写为ANNs)

 一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。

这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的,并具有自学习自适应的能力。神经网络类型众多,其中最为重要的是多层感知机

感知机:

感知机是1957年,由Rosenblatt提出,是神经网络和支持向量机基础

感知机灵感来源于生物学,其参照对象和理论依据可以参考下图:

  • 大脑可以认为是一个神经网络(生物的神经网络),在这个生物的神经网络里边。
  • 最小单元是一个神经元(neuron),当很多个神经元连接起来时就形成一个错综复杂的网络,称之为神经网络。
  • 在深度学习(包括机器学习)指的神经网络Neural Networks实际上指的是人工神经网络Artificial Neural Networks,简写为ANNs,简称为神经网络。
  • 人的神经网络是由这样一些神经元来构成的,其工作机制如图所示:
  1. 输入信号(Signals)——树突(dendrite)组织——细胞里边的细胞核(nucleus)被激活——轴突(Axon)输出刺激——大脑接收信号(这些信号是以什么形式存在的呢?这些信号比如说眼睛接收到的光信号,或者耳朵接收到的声音信号,到树突的时候会产生一些微弱的生物电,那么就形成这样的一些刺激,那么在细胞核里边对这些收集到的接收到的刺激进行综合的处理,当他的信号达到了一定的阈值(threshold)之后,那么他就会被激活,就会产生一个刺激的输出,那么就会形成一个我们大脑接收到的进一步的信号,那么他是通过轴突这样的输出计算的,这就是人脑的一个神经元进行感知的时候大致的一个工作原理。)

同理,简单的感知器如下图所示:

  • 感知机的输入:x_{1}x_{2}x_{n} ,常量1(实际上常量1相当于w_{0}\cdot 1=w_{0}w_{0}的计算与输入无关,w_{0}相当于一个偏置,即i从1到n,再加上w_{0}阈值threshold),其输出为:

  • 案例:
  • 感知机类似加权投票机制,如3位评委给一个歌手打分,打分分别为4分,1分,− 3分,这3位评分的权重分别是1, 3 , 2 ,则该歌手最终得分为4 × 1 + 1 × 3 + ( − 3 ) × 2 = 1 。按照比赛规则,选取的threshold为3,说明只有歌手的综合评分大于3时,才可顺利晋级,因此该选手被淘汰,因为:

    用-b代替threshold,输出量为:

  • 设置合适的 x \boldsymbol{x}x 和 b bb,一个简单的感知机单元的与非门表示如下:

     当输入为0,1时,感知机输出为0 × ( − 2 ) + 1 × ( − 2 ) + 3 = 1 。  

复杂的感知机又简单单元组合而成:

多层感知机

多层感知机由感知机推广而来,最主要的特点是有多个神经元层,因此也叫深度神经网络。相比于单独的感知机,多层感知机的第 i 层的每个神经元和第i − 1层的每个神经元都有连接。

  •  多层感知机的第 i 层的每个神经元和第i − 1层的每个神经元都有连接。

  • 输出层可以不止有 1 个神经元。隐藏层可以只有 1 层,也可以有多层。输出层为多个神经元的神经网络例如下图所示:

2 神经网络常用的模型结构

3 深度学习开发平台的选择

深度学习开源平台主要有 PyTorch, MXNet, CNTK, Theano, TensorFlow, Keras, PaddlePaddle等

参考1:与现有编程平台、技能整合的难易程度

主要是前期积累的开发经验和资源,比如编程语言,前期数据集存储格式等。

参考2: 与相关机器学习、数据处理生态整合的紧密程度

​ 深度学习研究离不开各种数据处理、可视化、统计推断等软件包。考虑建模之前,是否具有方便的数据预处理工具?建模之后,是否具有方便的工具进行可视化、统计推断、数据分析。

参考3:对数据量及硬件的要求和支持

​深度学习在不同应用场景的数据量是不一样的,这也就导致需要考虑分布式计算、多GPU计算的问题。例如,对计算机图像处理研究的人员往往需要将图像文件和计算任务分部到多台计算机节点上进行执行。当下每个深度学习平台都在快速发展,每个平台对分布式计算等场景的支持也在不断演进。

参考4:深度学习平台的成熟程度

​成熟程度的考量是一个比较主观的考量因素,这些因素可包括:社区的活跃程度;是否容易和开发人员进行交流;当前应用的势头。

参考5:平台利用是否多样性?

​有些平台是专门为深度学习研究和应用进行开发的,有些平台对分布式计算、GPU 等构架都有强大的优化,能否用这些平台/软件做其他事情?比如有些深度学习软件是可以用来求解二次型优化;有些深度学习平台很容易被扩展,被运用在强化学习的应用中。

一般来说,现在做科学研究和竞赛用Pytorch较多,工业级的用Tensorflow较多。

4 深层训练的难度

梯度消失(理论原理 数学角度 其他解说

梯度消失是指通过隐藏层从后向前看,梯度会变的越来越小,说明前面层的学习会显著慢于后面层的学习,所以学习会卡住,除非梯度变大。

​梯度消失的原因受到多种因素影响,产生的原因有:一是在深层网络中,二是采用了不合适的损失函数。比如sigmoid。例如学习率的大小,网络参数的初始化,激活函数的边缘效应等。(反向传播)在深层神经网络中,每一个神经元计算得到的梯度都会传递给前一层,较浅层的神经元接收到的梯度受到之前所有层梯度的影响。如果计算得到的梯度值非常小,随着层数增多,求出的梯度更新信息将会以指数形式衰减,就会发生梯度消失。【当梯度消失发生时,接近于输出层的隐藏层由于其梯度相对正常,所以权值更新时也就相对正常,但是当越靠近输入层时,由于梯度消失现象,会导致靠近输入层的隐藏层权值更新缓慢或者更新停滞。这就导致在训练时,只等价于后面几层的浅层网络的学习。】

不同隐含层的学习速率 

梯度爆炸

一般出现在深层网络权值初始化值太大的情况下。在深层神经网络或循环神经网络中,误差的梯度可在更新中累积相乘。如果网络层之间的梯度值大于 1.0,那么重复相乘会导致梯度呈指数级增长,梯度变的非常大,然后导致网络权重的大幅更新,并因此使网络变得不稳定。梯度爆炸会伴随一些细微的信号,如:①模型不稳定,导致更新过程中的损失出现显著变化;②训练过程中,在极端情况下,权重的值变得非常大,以至于溢出,导致模型损失变成 NaN等等。

如果接近输出层的激活函数求导后梯度值大于1,那么层数增多的时候,最终求出的梯度很容易指数级增长,就会产生梯度爆炸;相反,如果小于1,那么经过链式法则的连乘形式,也会很容易衰减至0,就会产生梯度消失

从深层网络角度来讲,不同的层学习的速度差异很大,表现为网络中靠近输出的层学习的情况很好,靠近输入的层学习的很慢,有时甚至训练了很久,前几层的权值和刚开始随机初始化的值差不多。

因此,梯度消失、爆炸,其根本原因在于反向传播训练法则,属于先天不足。

权重矩阵的退化导致模型的有效自由度减少

​参数空间中学习的退化速度减慢,导致减少了模型的有效维数,网络的可用自由度对学习中梯度范数的贡献不均衡,随着相乘矩阵的数量(即网络深度)的增加,矩阵的乘积变得越来越退化。在有硬饱和边界的非线性网络中(例如 ReLU 网络),随着深度增加,退化过程会变得越来越快。Duvenaud等人2014年的论文里展示了关于该退化过程的可视化。

随着深度的增加,输入空间(左上角所示)会在输入空间中的每个处被扭曲成越来越细的单丝,只有一个与细丝正交的方向影响网络的响应。沿着这个方向,网络实际上对变化变得非常敏感。

 5 深度学习和机器学习的区别

​机器学习:利用计算机、概率论、统计学等知识,输入数据,让计算机学会新知识。机器学习的过程,就是训练数据去优化目标函数。

深度学习:是一种特殊的机器学习,具有强大的能力和灵活性。它通过学习将世界表示为嵌套的层次结构,每个表示都与更简单的特征相关,而抽象的表示则用于计算更抽象的表示。

​传统的机器学习需要定义一些手工特征,从而有目的的去提取目标信息, 非常依赖任务的特异性以及设计特征的专家经验。而深度学习可以从大数据中先学习简单的特征,并从其逐渐学习到更为复杂抽象的深层特征,不依赖人工的特征工程,这也是深度学习在大数据时代受欢迎的一大原因。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值