深度学习笔记整理(二)——神经网络

1.神经网络的历史

第一阶段(1940-1970)

  • 1943年,形式神经元模型的产生(M-P模型);
  • 1958年,感知器的提出(经过训练确定神经元的连接权重);
  • 1969年,提出感知器无法解决线性不可分问题。

第二阶段(1980-1990)

  • 1980年,神经认知机的提出;
  • 1982年,Hopfield模型的提出;
  • 1986年,误差反向传播算法的提出(利用多层感知器解决线性不可分问题);
  • 1989年,卷积神经网络的提出。

2.M-P模型

假设有三个参数,相应的M-P模型如下:

深度学习笔记整理(二)——神经网络_第1张图片

  • y=f(\sum_{i=1}^{n}w_{i}x_{i}-h)
  • 其中w_{1}w_{2}w_{3}为参数,参数需要人为事先计算后决定;

3.感知器模型

  • 与M-P模型相比,感知器模型通过训练自动确定参数
  • 感知器模型是有监督学习模型,通过误差修正学习方法迭代求解。
  • y=f(\sum_{i=1}^{n}w_{i}x_{i}-h)
  • 误差修正学习策略如下:
  1. w_{i}=w_{i}+\alpha (r-y)x_{i},\, \, h=h-\alpha (r-y)  其中r是得到的实际值,y是期望值;
  2. 当y=0,r=1时:增大x_{i}=1的连接权重w_{i},即增大w_{i}x_{i},减小h——此时y增大;
  3. 当y=0,r=1时:降低x_{i}=1的连接权重w_{i},即降低w_{i}x_{i},增大h——此时y减小。
  • 感知器模型中,只有输出层神经元是拥有激活函数的神经元。

4.多层感知器模型

多层感知器模型是一个前馈网络正向传播网络。

问题:无法跨层调整参数

  • 输入层和中间层用随机数确定权重;
  • 中间层和输出层之间使用误差修正学习方法确定参数,中间层神经元和输出层神经元是拥有激活函数的神经元。

5.误差反向传播算法(BP算法)

BP算法:通过比较实际输出和期望输出得到的误差信号,把误差信号从输出层逐层向前传播得到各层的误差信号,再通过调整各层的连接权重以减小误差。

主要通过梯度下降法调整权重,连接权重的调整值\Delta w=-\frac{\partial E}{\partial w},其中η为学习率,学习率太大会影响稳定性,学习率太小会导致收敛速度过慢。

  • 下述举例中的激活函数为sigmoid函数,S(x)=\frac{1}{1+e^{-x}}
  • 使用最小二乘误差作为误差函数,E=\sum_{n=1}^{N}\left \| r_{n}-y_{n} \right \|^{2}

存在的问题——梯度消失问题

深度学习笔记整理(二)——神经网络_第2张图片

  • 如上图,当u远小于0或者远大于1都会导致激活函数导数为0,导致无法调整梯度,即所谓的梯度消失问题。

接下来求解不同情况下连接权重调整值公式:

单层感知器

\Delta w=\eta (r-y)y(1-y)x_{i}

只有一个输出单元的多层感知器

中间层与输出层(中间层输出为z_{i}):

  • \Delta w=\eta (r-y)y(1-y)z_{i}
  • 各项意义如下:

深度学习笔记整理(二)——神经网络_第3张图片

输入层与中间层:

  • \Delta w=\eta (r-y)y(1-y)w_{2j1}\, z_{j}(1-z_{j})x_{i}
  • 各项意义如下:

深度学习笔记整理(二)——神经网络_第4张图片

有多个(q个)输出单元的多层感知器

中间层与输出层(中间层输出为z_{i}):

  • \Delta w=\eta (r-y_{k})y_{k}(1-y_{k})z_{j}
  • 各项意义如下:

深度学习笔记整理(二)——神经网络_第5张图片

输入层与中间层:

  • \Delta w=\eta \sum_{k=1}^{q}[(r_{k}-y_{k})y_{k}(1-y_{k})w_{2jk}\, z_{j}(1-z_{j})x_{i}]
  • 各项意义如下:

深度学习笔记整理(二)——神经网络_第6张图片

6.一些神经网络

RBF网络(径向基函数网络)

单隐层前馈神经网路,径向函数作为隐层神经元激活函数,输出层对隐层神经元输出进行线性组合

深度学习笔记整理(二)——神经网络_第7张图片

具有足够多隐层单元的RBF网络能够以任意精度逼近任意连续函数。

训练步骤:确定c_{i}(随机采样或聚类)、BP算法确定w_{i}\beta _{i}

ART网络(自适应谐振理论网络)

竞争学习型的无监督学习网络

  • 比较层:接收输入样本
  • 识别层:每个神经元对应一个模式类,计算输入向量与模式类代表向量之间的距离,距离最小者获胜,如果与最小这距离差大于设定的阈值,则当前样本属于该类,并更新该类连接权,否则在识别层新增一个代表当前样本的神经元(重置模块)

SOM网络(自组织映射网络)

竞争学习型的无监督学习网络

将高维数据映射到低维空间(通常是二维),同时保持输入数据在高维空间的拓扑结构,输出层每个神经元都拥有一个权向量

训练:计算样本与输出神经元权向量之间的距离,最小者(最佳匹配单元)获胜,调整最佳匹配单元及其邻近神经元的权向量

级联相关网络

将网络结构也当作学习目标之一:包括隐层数量以及神经元数量的学习

Elman网络

递归神经网络:允许出现环形,将一些神经元的输出反馈作为输入

7.其它

误差函数

  • 多分类问题:交叉熵代价函数E=-\sum_{c=1}^{C}\sum_{n=1}^{N}r_{cn}lny_{cn}
  • 二分类问题:E=-\sum_{n=1}^{N}\left \{ r_{n}lny_{n}+(1-r_{n})ln(1-y_{n}) \right \}
  • 回归问题:最小二乘误差函数E=-\sum_{n=1}^{N}\left \| r_{n}- y_{n}\right \|^{2}

激活函数

  • step函数:用于M-P模型
  • sigmoid函数:用于多层感知器,f(u)=\frac{1}{1+e^{-u}},u=\sum_{i=1}^{n}w_{i}x_{i},曲线变换比较平缓
  • tanh函数:tanh(u)=\frac{e^{u}-e^{-u}}{e^{u}+e^{-u}},f'(u)=1-f^{2}(u)为单调函数
  • ReLU函数:修正线性单元,f(u)=max(0,u)

似然函数

用于计算多层感知器的输出结果

  • softmax函数:归一化操作输出概率值
  • 回归问题有时选择线性函数作为似然函数,直接输出激活值

梯度下降法

  • 批量学习算法:每次迭代训练全部训练样本。可以有效抑制带噪声的样本导致的输入模式剧烈变动,但是训练时间太长;
  • 在线学习算法:逐个输入训练样本。训练时间短,但是迭代结果可能无法收敛;
  • 小批量梯度下降法(随机梯度下降法):将训练集分为n个子集,每次迭代使用其中一个子集。可缩短单次训练的时间且减少迭代结果变动,但是求得的解可能是局部最优解。

学习率设置

  • 根据经验,先设置较大的值,再慢慢减小
  • AdaGrad方法进行自适应学习,存在\eta不断衰减的问题
  • AdaDelta方法
  • 动量方法,以指数衰减的形式累积之前的学习率,常用的方法。

你可能感兴趣的:(机器学习&强化学习,神经网络,算法,深度学习)