课程简单介绍:
本节课主要介绍人工神经网络.通过介绍评定模型,随机梯度下降法,生物启示和感知器系统,讲师用视图和数学解析式具体地解说了神经网络的执行过程以及原理.
课程大纲:
1、Stochastic Gradient Descent ( 随机梯度下降法 )
2、Neural Network Model ( 神经网络模型 )
3、Backpropagation Algorithm ( 反向传播算法 )
4、Summarize
1、Stochastic Gradient Descent
在上一节课里,我们利用梯度下降法找到最优的方向,然后向该方向移动一小步,可是很有可能会导致陷入一个差的局部最优解,并且每次移动都要计算所有的点,因此计算量大。那假设每次移动仅仅看一个点,依据当前的点找到最优的方向进行移动,当所有的点都被选择后,理论上总的移动方向是跟之前的方法一致的,由于数学期望是相等的。可是利用随机的选取一个点,却有可能让我们逃脱很差的局部最长处的陷阱,当然无法逃脱所有的陷阱。那是由于当你随便选取一点的时候,它的方向并不一定就是最优化的那个方向,因此下一步有可能移动到高点去,然后在新的位置又一次寻找出路,这样就有更大的可能性获得较好的局部最长处。考虑以下的图片,在左图中,当我们第一次选择的初始化位置是第一个黑点的时候,那么依据总体梯度下降法,就会陷入那个很糟糕的局部嘴有点去了。然而假设我们选择的是随机梯度下降法,就有可能由于某个点的方向是偏离最长处的而使得前进的方向是想着右边的,这样就能够跳过该陷阱了。由图中,依据总体梯度下降法,当遇到平缓区域的时候,该方法就会觉得找到最长处了,就会停滞不前。而随机梯度下降法却由于不同点的方向不一致从而推动了算法继续向前移动,于是我们再次逃脱了该陷阱了。
应用随机梯度下降法有例如以下优点:
1、计算代价小,由于每次仅仅选取一个点进行计算
2、随机性有助于逃脱局部最小点,找到较好的最小点
3、简单,由于每次仅仅选取一个点进行计算
2、Neural Network Model ( 神经网络模型 )
在学习感知器模型的时候我们知道当输入数据点超过三个的时候,最坏情况下我们没办法把所有的点所有正确分类,即 dVC = 3。然而假设利用两个感知器模型进行分类,然后再综合这两个模型的结果得到最总的结果,我们就有办法把所有的 4 个点所有分类,例如以下图:
对于很多其它的点,我们能够利用很多其它的模型进行分类。通过综合不同模型的结果,就有可能通过感知器模型找到最优的解(权重)。
利用下面图形进行直观的解释:
上图中共同拥有第一列是输入,后面三列表示三层模型,共 5 个感知器模型(每一个圆圈表示一个感知器模型,也叫一个神经元或节点)。最后的感知器输出的就是终于的结果。
每一条线上都有一些数值,这些便是我们须要学习的权重(參数),開始的时候是未知的。上述模型事实上就是一个神经网络。
理论上通过这些感知器的排列组合(随意个),能够产生不论什么输出。
定义:
神经网络的模型是通过组合不同的简单模型而得到的一个综合的模型,组合方式例如以下图所看到的:
当中第一列是输入数据,最右边的是输出,剩下的是隐藏层,该网络的层次 L = 3.
每条线表示一个权值,须要学习确定,而每一个 θ 表示一个模型(不论什么模型,能够互不相等),每条线所属的层次跟其所指向的模型所在的层次同样.
下一层模型的输入是上一层模型的输出乘上相应的权值(所在的线的值)。
为了方便对神经网路进行讨论,这里假定每一个模型的 θ(s) = (1-e^s)/(1+e^s), 处理的数据是二分类。此外,定义例如以下符号:
w是我们须要学习的參数,相应图中的线,上标 l 表示当前的 w 属于第 l 层,下标表示该线出发的节点位置。j 表示该线指向的节点位置。值得注意的是 i 的取值范围,之所以可以去得到 i 是由于存在常数项: x0
于是我们有:
当中 x 表示输出,s 表示输入。
当 l = 0 的时候表示的是原始的数据,这时候 0 < j < d + 1
对 x 的求解是一个递归的过程,先求出第 1 层,再求第二层...直到终于输出。
该模型要解决例如以下两大难题:
1、generalization:众多的模型、參数、权重等导致自由度非常大,正如在误差偏差分析里面所讲到的,如果集大会增大找到最优函数的难度。
2、optimization:应该怎样进行学习才干把这么多參数学好?
第三部分将设法解决上述问题。
3、Backpropagation Algorithm ( 反向传播算法 )
这一部分基本是数学分析,看得有点晕,理解的也不是非常好,仅仅能是不断地截图了...
利用随机梯度下降法,每次仅仅关注一个点。因此我们须要找出 Ein(W) 关于每个数据的偏微分:▽e(W)。当中 e(W) = (h(xn),yn)。方便起见,令 e(W) = ( h(xn) - yn)^2(理论上能够用一切有效的误差度量函数)。
有 =
由于 Sj(l) = Xi(l-1) * Wij(l) 所以(注:这里的 (l) 表示的是上标为 l ):令 ,
当 l = 1 的时候 Xi(l) 表示的是原始输入的数据,因此我们能够递归的求得上述等式右边的第二项,仅仅要我们能够求出第一项就能够对 w 进行学习了。
为了求出第一项,先从最后一层開始,由于最后一层距离整个算法的输出最接近,且 θ(S1(L)) 就是 X1(L),( 注:当中 L 是上标 ),有:
当最后一层求出后,便能够递归的求出前面的值了。例如以下:( 之所以要求和是由于位于 l-1 层的节点受到 l 层的全部节点的反馈)
以下是伪代码:
总结:
第一部分承接了上一节课,介绍了一种更好的梯度測量方法,也为神经网络參数学习打下了基础。第二部分主要是介绍神经网络的基本概念及作用。最后一部分是基于数学的分析,从而把神经网络模型转换到计算机能够处理的层面,因此最后一部分是理论联系实际。