吃瓜教程第五章神经网络学习

1、神经网络的简介

定义:“神经网络是由具有适应性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应

随着计算机软硬件的飞速发展,现阶段通过拥有众多层数神经网络(Neural Network)来模拟人脑来解释数据,包括图像,文本,音频等内容。

目前来看常用的神经网络包括:

  1. 卷积神经网络(Convolutional Neural Network)
  2. 循环神经网络(Recurrent Neural Network)
  3. 生成对抗网络(Generative Adversarial Networks)
  4. 深度强化学习(Deep Reinforcement Learning)等。

⼈⼯神经⽹络( Artificial Neural Network,简写为ANN)也简称为神经⽹络(NN),是⼀种模仿⽣物神经⽹络结构和功能的计算模型。⼈脑可以看做是⼀个⽣物神经⽹络,由众多的神经元连接⽽成。各个神经元传递复杂的电信号,树突接收到输⼊信号,然后对信号进⾏处理,通过轴突输出信号。下图是⽣物神经元示意图: 

那怎么构建⼈⼯神经⽹络中的神经元呢?

“M -P 神经元模型”

受⽣物神经元的启发,在这个模型中,⼈⼯神经元接收来⾃其他神经元或外部源的输⼊,这些输入信号通过带权重的连接(connection)进行传递,神经元接收到的总输入值将与神经元的阈值进行比较,然后通过“激活函数”(activation function)处理以产生神经元的输出。

那接下来我们就利⽤神经元来构建神经⽹络,相邻层之间的神经元相互连 接,并给每⼀个连接分配⼀个强度,如下图所示:

神经⽹络中信息只向⼀个⽅向移动,即从输⼊节点向前移动,通过隐藏节点,再向输出节点移动,⽹络中没有循环或者环。其中的基本构件是:

  1. 输⼊层:即输⼊x的那⼀层
  2. 输出层:即输出y的那⼀层
  3. 隐藏层:输⼊层和输出层之间都是隐藏层

特点是:

  1. 同⼀层的神经元之间没有连接。
  2. 第N层的每个神经元和第N-1层的所有神经元相连(这就是full connected的含义),第N-1层神经元的输出就是第N层神经元的输⼊。
  3. 每个连接都有⼀个权值。

2、神经元是如何⼯作的? 

⼈⼯神经元接收到⼀个或多个输⼊,对他们进⾏加权并相加,总和通过⼀ 个⾮线性函数产⽣输出。

3、为什么引入激活函数? 

在神经元中引⼊了激活函数,它的本质是向神经⽹络中引⼊⾮线性因素的,通过激活函数,神经⽹络就可以拟合各种曲线。如果不⽤激活函数,每⼀层输出都是上层输⼊的线性函数,⽆论神经⽹络有多少层,输出都是输⼊的线性组合,引⼊⾮线性函数作为激活函数,那输出不再是输⼊的线性组合,可以逼近任意函数。

一些激活函数:

Sigmoid/logistics函数

曲线如下图:

RELU函数

 曲线如下图所示:

其他的激活函数:

如何选择激活函数
隐藏层

  1. 优先选择RELU激活函数
  2. 如果ReLu效果不好,那么尝试其他激活,如Leaky ReLu等。
  3. 如果你使用了Relu,需要注意一下Dead Relu问题,避免出现大的
  4. 梯度从而导致过多的神经元死亡。
  5. 不要使用sigmoid激活函数,可以尝试使用tanh激活函数

输出层

  1. 二分类问题选择sigmoid激活函数
  2. 多分类问题选择softmax激活函数
  3. 回归问题选择identity激活函数

 4、多层前馈神经网络简介

每层神经元与下一层神经元全互连,神经元之间不存在同层连接,也不存在跨层连接

使用多层前馈神经网络的原因:只拥有一层功能神经元 (functional neuron),其学习能力非常有限 .事实上,上述与、或、非问题都是线性可分(linearly separable)的问题 。

5、误差逆传播(error BackPropagation,简称BP)算法——也称“反向传播算法”

在介绍BP算法前,我们先看下前向传播与链式法则的内容。

前向传播指的是数据输⼊的神经⽹络中,逐层向前传输,⼀直到运算到输出层为⽌。

在⽹络的训练过程中经过前向传播后得到的最终结果跟训练样本的真实值总是存在⼀定误差,这个误差便是损失函数。想要减⼩这个误差,就⽤损失函数ERROR,从后往前,依次求各个参数的偏导,这就是反向传播(Back Propagation)。

西瓜书中给出的BP算法流程:

先将输入示例提供给输入层神经元,然后逐层将信号前传,直到产生输出层的结果;然后计算输出层的误差(第4-5行),再将误差逆向传播至隐层神经元(第6行),最后根据隐层神经元的误差来对连接权和阈值进行调整(第7行). 该迭代过程循环进行,直到达到某些停止条件为止,例如训练误差已达到一个很小的值。

6、全局最小与局部极小

我们常会谈到两种“最优”:“局部极小”(local minimum)和 “全局最 小”(global minimum).对{w}^*\theta^*,若存在\epsilon>0使得:

\forall(\boldsymbol{w};\theta)\in\{(\boldsymbol{w};\theta)\mid\|(\boldsymbol{w};\theta)-(\boldsymbol{w}^*;\theta^*)\|\leqslant\epsilon\}

在现实任务中,人们常采用以下策略来试图“跳出”局部极小,从而进一 步接近全局最小:

  1. 以多组不同参数值初始化多个神经网络,按标准方法训练后,取其中误差最小的解z作为最终参数.这相当于从多个不同的初始点开始搜索,这样就可能陷入不同的局部极小,从中进行选择有可能获得更接近全局最小的结果。
  2. 使用 “模拟退火" (simulated annealing)技术 [Aarts and Korst, 1989]. 模拟退火在每一步都以一定的概率接受比当前解更差的结果,从而有助于“跳出”局部极小.在每步迭代过程中,接受 “次优解”的概率要随着时间的推移而逐渐降低,从而保证算法稳定。
  3. 使用随机梯度下降.与标准梯度下降法精确计算梯度不同,随机梯度下降法在计算梯度时加入了随机因素.于是,即便陷入局部极小点,它计算出的梯度仍可能不为零,这样就有机会跳出局部极小继续搜索.

此外,遗传算法(genetic algorithms) [Goldberg, 1989]也常用来训练神经网络以更好地逼近全局最小.需注意的是,上述用于跳出局部极小的技术大多是启发式,理论上尚缺乏保障。

参考:

西瓜书

GitCode - 开发者的代码家园

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值