神经网络基础知识
@ Shen Jianan · Thursday, Oct 27, 2016 · 5 minute read · Update at Oct 27, 2016

神经网络基础认识

神经网络基础知识

感知机

感知机的输出为0或1,通过调整w和b,感知机可以用于表示任何逻辑运算。XOR需要至少三层感知机。 因为感知机这样广泛的逻辑运算表达能力,再加上自动调节参数的学习策略,感知机神经网络可以解决大量的问题,甚至一些在逻辑电路中难以解决的问题。

sigmoid激活函数

如果参数的细小改变只会引起结果的细微改变,那么我们可以使用这个特性让神经网络的输出更加正确。

但是感知机的输出只有0或1,这样的跃迁函数不符合上面的要求,微小的改变可能导致不同输出单元的巨大改变。通过引入sigmoid函数,就得到了sigmoid神经网络,它可以保证参数的细小改变只会引起结果的细微改变。

$$\Delta{output}\approx\sum_j{\frac{\partial{output}}{\partial{w_j}}\Delta{w_j}}+\frac{\partial{output}}{\partial{b}}\Delta{b}$$

从这里可以看出,输出结果的变化是参数改变的线性组合。使用sigmoid的原因是它的偏导性质很好,实际上可以使用很多其他的激活函数。

神经网络结构

如果只允许前层的输出作为后层的输入,那么称为前向反馈神经网络。如果允许后层的输出反过来再次成为前层的输入,那么称为循环神经网络,这种神经网络适用于序列当前输出与前面时间的输出也有关的情况,如文本预测等。循环神经网络比前馈神经网络更接近大脑的思维方式,但是现阶段因为循环神经网络的算法表现没有比前馈神经网络更强,所以暂时不如前馈神经网络有影响力。

输出层单元数选择

在手写数字识别问题中,为什么不用4个输出单元而使用10个输出单元?因为对于手写数字,肯定有一些特征和某个数字关联,如果使用10个输出单元,那么这些特征可以和这些输出单元映射起来,在这些输出单元对这些特征有偏好。但是如果使用4个输出单元的话,就没有办法顾全每个数字的偏好了。

不同的梯度下降法

最速下降法/steepest descent

就是负梯度方向,说是最速下降法,实际上收敛到最低点的速度是很慢的,这里的最速只是指取负梯度方向是最快的下降方向罢了。

牛顿法/newton

利用泰勒二阶展式,用到二阶求导的海森矩阵。步数比最速下降法少,但是由于涉及海森矩阵,所以计算时间不一定比最速下降法少。

共轭方向法/conjugate direction

共轭方向法要求新的搜索方向与前面所有的搜索方向是共轭的。它介于最速下降法和牛顿法之间,收敛速度比最速下降法快,比牛顿法慢,同时它的计算量又比牛顿法要小,比最速法大

共轭方向法可以不使用目标函数的一阶导数信息(当然也可以使用)。所以,如果目标函数的一阶导数不容易求的话,共轭方向法可能就可以派上用场了。

所谓的共轭就是: $d_m^TGd_n=0$ 其中$G$是对称正定矩阵,这就说明$d_m$和$d_n$的方向是互不相关的。共轭方向法显然是想要在每一个方向都不重复地进行梯度下降,在任何一个方向上的移动,都不会影响到在另一个方向上已经找到的极小值。

当目标函数是二次函数$f(x)=\frac{1}{2}x^TGx+b^Tx+c$时,共轭方向法最多经过N步(N为向量维数)迭代,就可以到达极小值点——这种特性叫作二次收敛性(Quadratic Convergence)。虽然目标函数大多是时候都不是二次函数,但实践证明,很多函数都可以用二次函数模拟,将二次收敛算法用于非二次的目标函数,常常也有很好的效果,只不过不能保证N步到达极小值点。

共轭方向法的理论基础是:在精确线性搜索的情况下,当前迭代点的梯度$g$与前面所有的搜索方向$d$正交:$g_{i+1}^Td_j=0,j=1,2,…,i$

具体过程:

  1. 确定搜索方向$d_k$满足$g_k^Td_k<0$与$d_k^TGd_j=0,j=1,2,…,k-1$两者分别保证在当前方向梯度下降与共轭这两个条件。
  2. 在这个方向下找到使得函数值最小的$\alpha_k$:$argmin_{\alpha_k}f(x_{k-1}+\alpha_kd_k)$3.
  3. $x_{k+1} = x_k + \alpha_kd_k$

这里的关键是如何找到N个两两无关的搜索方向,有经典的解决方案称为Powell共轭方向集方法

共轭梯度法/conjugate gradient

需要找资料

梯度下降的应用问题

梯度下降在神经网络中的应用存在很多需要解决的问题,这里只举一个例子:

每个样例都有一个对应的梯度下降值,如果每次都是用所有的样例得到的梯度下降值,运算的效率会非常低。为了解决这个问题,随即梯度下降每次随机使用一个小样本集来计算本次梯度下降。

深度学习

神经网络为什么有用很难解释,深度学习的主要想法是前面层解决简单的问题,后面层在前面层的抽象层次上再解决更复杂的问题,最后解决类似面部识别这样的复杂问题。

对于深度学习,单纯的后向传播,随即梯度下降这样的训练方法效率十分低下。从2006年开始,一系列的基于后向传播和随机梯度下降的新方法让训练更深的神经网络成为了可能,并且表现得比浅层神经网络要好很多(因为更深的层数提供了更多的抽象层级)

卷积神经网络

卷积网络是为了识别二维形状而特殊设计的一个多层感知机,对平移、比例缩放、倾斜或者其他形式的变形具有高度不变性。通过如下形式的约束来完成这个艰巨的任务:

  1. 特征提取:每一个神经元从上一层的局部接受域得到突触输入,迫使它提取局部特征。一旦一个特征被提取出来,只要它相对于其他特征的位置被近似保留下来,那么它的精确位置就显得没那么重要了。
  2. 特征映射:网络的每一个计算层都是由多个特征映射组成的,每个特征映射都是平面形式的,平面中单独的神经元在约束下共享相同的突触。

About Me

2018.02至今 杭州嘉云数据 算法引擎

2017.6-2017.12 菜⻦网络-⼈工智能部-算法引擎

2016.09-2018.06 南京大学研究生

2015.07-2015.09 阿里巴巴-ICBU-实习

2012.09-2016.06 南京大学本科