深度学习笔记1——常见激活函数、MP、BP

1、常见的深度学习框架

1.1 TensorFlow

最流行的深度学习框架,接口过于复杂抽象

1.2 Keras

缺少灵活性

1.3 Caffe

缺少灵活性

1.4 PyTorch

新增自对求导系统

2、万能近似定理

是深度学习最根本的理论依据。它声明了在给定网络具有足够多的隐藏单元的条件下,配备一个线性输出层和一个带有任何“挤压”性质的激活函数(如logistic sigmoid激活函数)的隐藏层的前馈神经网络,能够以任何想要的误差量近似任何从一个有限维度的空间映射到到另一个有限维度空间的Borel可测的函数。

3、常见激活函数

3.1 0-1 激活函数

将任意的输出转换为0或1的输出
Y = f(W * X + b)
W * X + b>0输出1
W * X + b<=0输出0

3.2 sigmod 函数

在这里插入图片描述
输出在(0,1)开区间内,在中间斜率比较大的地方是神经元的敏感区,在两边斜率很平缓的地方是神经元的抑制区。
深度学习笔记1——常见激活函数、MP、BP_第1张图片

3.3 tanh 函数

在这里插入图片描述
tanh是双曲正切函数,输出在(-1,1)开区间内,整个函数是以0为中心的
深度学习笔记1——常见激活函数、MP、BP_第2张图片
sigmod和tanh函数容易导致梯度消失,因为这两个函数在x很大或很小时,容易趋近于0

3.4 ReLU 函数

在这里插入图片描述
深度学习笔记1——常见激活函数、MP、BP_第3张图片
相比于sigmod函数和tanh函数,它有以下几个优点

  1. 在输入为正数的时候,不存在梯度饱和问题。
  2. 计算速度要快很多,ReLU函数只有线性关系。

ReLU函数在0点通常会返回左导数或右导数中的一个
缺点

  1. 当输入是负数的时候,ReLU是完全不被激活的。到了反向传播过程中,输入负数,梯度就会完全到0,这个和sigmod函数、tanh函数有一样的问题。

3.5 ELU函数

在这里插入图片描述
深度学习笔记1——常见激活函数、MP、BP_第4张图片
ELU函数是针对ReLU函数的一个改进型,相比于ReLU函数,在输入为负数的情况下,是有一定的输出的,而且这部分输出还具有一定的抗干扰能力。这样可以消除ReLU死掉的问题,不过还是有梯度饱和和指数运算的问题。

4、MP模型与感知机

神经元是一个多输入单输出的信息处理单元,对信息的处理是非线性的。
在MP模型中,
深度学习笔记1——常见激活函数、MP、BP_第5张图片
参考博文链接:https://blog.csdn.net/livan1234/article/details/81559649

5、BP神经网络与反向传播算法

人工神经网络最常见的算法之一,主要通过对连接权值得到不断调整,使输出结果逐渐逼近期望值。
优点:将输入和输出数据之间的关系转化为非线性问题,泛化能力强。
缺点:收敛速度慢,容易陷入局部极小点,隐含层神经元数不好直接确定。
原理:BP神经网络各层神经元之间互相连接,从外界接到输入向量后 ——>经过隐藏层的非线性变换 ——>产生输出。训练过程,主要采用反向传播。
BP神经网络:一个万能的模型 + 误差修正函数

5.1 信号正向传播

最简单的BP神经网络模型分为三层:输入层、隐藏层、输出层

正向传播:指数据从X传入到神经网络,经过各个隐藏层得到最终损失的过程,第二层的输入值为第一层的输出值
深度学习笔记1——常见激活函数、MP、BP_第6张图片

  • Wmn(j)为各个层级的权重,W是一个矩阵,mn为m行n列;
  • Z(j)为第几个隐藏层的输入求和值:Z=WX+b;
  • a(j)为第几个隐藏层的输出值:a=g(Z);
    深度学习笔记1——常见激活函数、MP、BP_第7张图片

5.2 误差反向传播

反向传播:在训练时的正向传播,通过模型的输出与真实值之间的误差建立误差函数,从输出端反向沿着损失函数的梯度下降方向,并通过求偏导的方式调整权重参数、偏置等,使得经过训练的模型的输出与期望值相比达到最优。

通过输出值与期望值的对比、反校,可以确定输出的误差范围,从而将误差进一步反向传播到BP神经网络的隐藏层,BP神经网络进行下一步的学习,直到输出误差满足要求。

至此,全连接神经网络正式起来。

深度学习笔记1——常见激活函数、MP、BP_第8张图片

深度学习笔记1——常见激活函数、MP、BP_第9张图片

5.3 BP网络模型的缺陷

  • 梯度消失问题:由于BP神经网络一般设置较多层数,而反向传播,每一层残差都需要向前一层累积,当层数较多,很可能到某一层出现梯度消失,导致这一层无法更新参数。
  • 合适的超参数选择只能依靠经验或不断调试。
  • 局部最小值问题。BP神经网络的训练非常依赖超参数的初始选择,如果超参数的初始选择不合适,就可能导致模型在训练时会陷入局部最小值。
  • 没有时间序列的概念。BP神经网络没有设置记忆单元,也没有表示方向和时间的传递方式。

5.4 传统神经网络的训练方式为什么不能用在深度神经网络

  • BP算法作为传统训练多层网络的典型算法,网络稍微加深,训练就会不理想,主要因为梯度越来越稀疏:从顶层往下,误差校正信号越来越小,易收敛到局部最小值。
  • 深度结构非凸目标代价函数中普遍存在局部最小,如果利用BP神经网络训练会比较困难

你可能感兴趣的:(深度学习,深度学习,人工智能)