2020-09-17——神经网络小白初探——感知学习和反向传播算法

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

神经网络小白初探——感知学习和反向传播算法
Perceptron Learning and Backpropagation


前言

关于感知机和反向传播几个小问题


提示:以下是本篇文章正文内容,下面案例可供参考
https://machinelearningmastery.com/learning-rate-for-deep-learning-neural-networks/

一、什么是感知机

  1. 感知机的定义是什么?

感知机(perceptron)是二类分类的线性分类模型,其输入为实例的特征向量,输出为实例的类别。

  1. 感知机的取值是什么?

取+1和 0 二值。

  1. 感知机对应于输入空间(特征空间)中的什么?

感知机对应于输入空间中将实例划分为正负两类的分离超平面,属于判别模型。

  1. 感知机学习的目的是什么?

感知机学习旨在求出将训练数据进行线性划分的分离超平面,为此,导入基于误分类的损失函数,利用梯度下降法对损失函数进行极小化,求得感知机模型。

  1. 感知机学习算法有什么特点?

感知机学习算法具有简单,并且易于实现的特点,分为原始形式和对偶形式。

  1. 什么是感知机预测?

感知机预测是用学习得到的感知机模型对新的输入实例进行分类。它是神经网络与支持向量机的基础。

7)感知机模型学习规则
2020-09-17——神经网络小白初探——感知学习和反向传播算法

二、QUIZ

1.能从感知机中学到什么类型函数?

What class of functions can be learned by a Perceptron?
答:线性函数。

2.解释感知器学习和反向传播之间的区别

Explain the difference between Perceptron Learning and Backpropagation.
答:

  1. 首先感知器分为单层感知器和多层感知器:单层感知器——这是最简单的前馈神经网络,不包含任何隐藏层;多层感知器——多层感知器有至少一个隐藏层。
  2. 单层感知器只能学习线性函数,而多层感知器也可以学习非线性函数。
  3. 训练多层感知器:使用反向传播算法。
    总结:感知器学习为前馈神经网络,其主要由输入层,单一隐藏层和输出层构成,数据在其中进行前向传播;多层感知器学习,使用反向传播算法(具体实习不在此进行讨论),第一步先进行前向传播,第二步进行反向传播和权重更新。

3.反向传播时,学习率太高或太低的影响?

When training a Neural Network by Backpropagation, what happens if the Learning Rate is too low? What happens if it is too high?
答:
1.通常,一个大的学习率允许模型学习得更快,但代价是得到一个次优的最终权重集。更小的学习率可以让模型学习更优甚至全局最优的权值集,但可能需要更长的训练时间。
2.在极端情况下,学习率过大将导致权值更新过大,并且模型的性能(例如它在训练数据集上的损失)将在训练时间内波动。振荡的表现据说是由权重的分歧引起的。如果学习率太小,可能永远不会收敛,或者会陷入次优解。

4.为什么在神经网络中输入值的调整有时是必要的

Explain why rescaling of inputs is sometimes necessary for Neural Networks.
答:在此简单述说两点。
原因1:如果数据集中的某个特征在尺度上比其他特征大,那么这个大尺度的特征就会成为主要特征,因此,对神经网络的预测就不会是准确的。
例如:对于员工数据,如果我们考虑年龄和工资,年龄将是两位数,而工资可以是7位数或8位数(100万等)。在这种情况下,工资将主导神经网络的预测。但是如果我们对这些特征进行标准化,两个特征的值都将在(0到1)之间。

原因2:神经网络的前端传播涉及到权值与输入特征的点积。因此,如果值非常高(对于图像和非图像数据),计算输出将花费大量的计算时间和内存。在反向传播期间也是如此。因此,如果输入没有归一化,则模型收敛缓慢。
例如:如果我们进行图像分类,图像的大小会非常大,因为每个像素的值都在0到255之间。在这种情况下,标准化是非常重要的。

5.在线学习、批量学习、小批量学习和经验回放有什么区别?这些方法中哪一种被称为“随机梯度下降”?

What is the difference between Online Learning, Batch Learning, Mini-Batch Learning and Experience Replay? Which of these methods are referred to as “Stochastic Gradient Descent”?
答:
一、批量学习
在监督学习的批量方法中,多层感知器的突出权值的调整在训练样本集合的所有N个例子都出现后进行,这构成了训练的一个回合。换句话说,批量学习的代价函数是由平均误差能量定义的。多层感知器的突触权值的调整是以回合-回合为基础的。相应地,学习曲线的一种实现方式是通过描绘平均误差能量对回合数的图形而得到,对于训练的每一个回合,训练样本集合的样例是随机选取的。学习曲线通过对足够大量的这样实现的总体平均来计算,这里每次实现是在随机选取不同初始条件下完成的。这一特点符合交叉验证的规律,实验中的实验集、验证集、测试集一般都是批量处理的典例。

优点:
(1)消除样本顺序的影响
(2)由全数据集确定的方向能够更好地代表样本总体,从而更准确地朝向极值所在的方向。当目标函数为凸函数时,BGD一定能够得到全局最优。
(3)一次迭代是对所有样本进行计算,此时利用矩阵进行操作,实现了并行。
缺点:
(1)当样本数目很大时,每迭代一步都需要对所有样本计算,训练过程会很慢。
(2)从迭代的次数上来看,BGD迭代的次数相对较少。

二、在线学习
在监督学习的在线方法下,对于多层感知器突触权值的调整是以样例-样例为基础的,用来最小化的代价函数是全体瞬时误差能量。和批量学习一样,在线学习的学习曲线是通过足够大量的随机选取的初始条件上的总体平均来计算的。对于给定的网络结构,在线学习下获得的学习曲线和批量学习下获得的学习曲线有着很大的不同。

给定训练样本以随机的方式呈现给网络,在线学习的使用使得在多维权值空间中的搜索事实上是随机的;正是由于这个原因,在线学习方法有时被称为随机方法。

优点:
(1)容易执行
(2)对于大规模和困难模式分类问题它提供有效解。
(3)随机性使得不容易陷入局部极值点
(4)存储量少得多

三、小批量梯度下降(Mini-Batch Gradient Descent, MBGD)
小批量梯度下降,是对批量梯度下降以及随机梯度下降的一个折中办法。其思想是:每次迭代 使用 batch_size 个样本来对参数进行更新
优点:

(1)通过矩阵运算,每次在一个batch上优化神经网络参数并不会比单个数据慢太多。
(2)每次使用一个batch可以大大减小收敛所需要的迭代次数,同时可以使收敛到的结果更加接近梯度下降的效果。可实现并行化。
缺点:
(1)batch_size 的不当选择可能会带来一些问题。

batch_size 的选择带来的影响:
在合理地范围内,增大 batch_size 的好处
(1)内存利用率提高了,大矩阵乘法的并行化效率提高。
(2)跑完一次 epoch(全数据集)所需的迭代次数减少,对于相同数据量的处理速度进一步加快。
(3)在一定范围内,一般来说 batch_size 越大,其确定的下降方向越准,引起训练震荡越小。
盲目增大batch_size的坏处:
(1)内存利用率提高了,但是内存容量可能撑不住了。
(2)跑完一次 epoch(全数据集)所需的迭代次数减少,要想达到相同的精度,其所花费的时间大大增加了,从而对参数的修正也就显得更加缓慢。
(3)增大到一定程度,其确定的下降方向已经基本不再变化。

四、经验回放(Experience replay)
使用Deep Q-learning方法,从每一episode中得到的奖励来迭代更新Q(s,a). DQN算法中,(具体方法后续更出)继将每一个episode中使用的(s,a,r,a’)存储于M中,再从M中抽取mini-batch转换来最小化损失函数。基于价值的深度强化学习不仅仅是把 Q-Learning 中的价值函数用深度神经网络近似,还做了其他改进。这个算法就是著名的 DQN 算法,由 DeepMind 在 2013 年在 NIPS 提出。DQN 算法的主要做法是 Experience Replay,其将系统探索环境得到的数据储存起来,然后随机采样样本更新深度神经网络的参数。

Experience Replay 的动机是:1)深度神经网络作为有监督学习模型,要求数据满足独立同分布,2)但 Q Learning 算法得到的样本前后是有关系的。为了打破数据之间的关联性,Experience Replay 方法通过存储-采样的方法将这个关联性打破了。

主要作用是克服经验数据的相关性(correlated data)和非平稳分布(non-stationary distribution)问题。它的做法是从以往的状态转移(经验)中随机采样进行训练。优点:1. 数据利用率高,因为一个样本被多次使用。2. 连续样本的相关性会使参数更新的方差(variance)比较大,该机制可减少这种相关性。注意这里用的是随机采样,这也给之后的改进埋下了伏笔。摘自博客。

在用mini-batch SGD做优化时,都假设样本之间相对独立,每一次根据所获得的来更新Q-value,本质就是stochastic gradient descent (SGD)。一般在用mini-batch SGD做优化时,都假设样本之间的相对独立,从而使得每个mini-batch内数据所含的噪声相互抵消,算法收敛的更快。

在这个问题中,之所以加入experience replay是因为样本是从游戏中的连续帧获得的,这与简单的reinforcement learning问题(比如maze)相比,样本的关联性大了很多,如果没有experience replay,算法在连续一段时间内基本朝着同一个方向做gradient descent,那么同样的步长下这样直接计算gradient就有可能不收敛。因此experience replay是从一个memory pool中随机选取了一些 experience,然后再求梯度,从而避免了这个问题。摘自知乎回答。