一、激活函数

激活函数也称为响应函数,用于处理神经元的输出,理想的激活函数如阶跃函数,Sigmoid函数也常常作为激活函数使用。

在阶跃函数中,1表示神经元处于兴奋状态,0表示神经元处于抑制状态。

二、感知机

感知机是两层神经元组成的神经网络,感知机的权重调整方式如下所示:

按照正常思路wi+△wi是正常y的取值,wi是y\'的取值,所以两者做差,增减性应当同(y-y\')xi一致。参数η是一个取值区间在(0,1)的任意数,称为学习率。如果预测正确,感知机不发生变化,否则会根据错误的程度进行调整。

不妨这样假设一下,预测值不准确,说明Δw有偏差,无理x正负与否,w的变化应当和(y-y\')xi一致,分情况讨论一下即可,x为负数,当预测值增加的时候,权值应当也增加,用来降低预测值,当预测值减少的时候,权值应当也减少,用来提高预测值;x为正数,当预测值增加的时候,权值应当减少,用来降低预测值,反之亦然。(y-y\')是出现的误差,负数对应下调,正数对应上调,乘上基数就是调整情况,因为基数的正负不影响调整情况,毕竟负数上调需要减少w的值。

感知机只有输出层神经元进行激活函数处理,即只拥有一层功能的神经元,其学习能力可以说是非常有限了。如果对于两参数据,他们是线性可分的,那么感知机的学习过程会逐步收敛,但是对于线性不可分的问题,学习过程将会产生震荡,不断地左右进行摇摆,而无法恒定在一个可靠地线性准则中。

三、多层网络

使用多层感知机就能够解决线性不可分的问题,输出层和输入层之间的成为隐层/隐含层,它和输出层一样都是拥有激活函数的功能神经元。

神经元之间不存在同层连接,也不存在跨层连接,这种神经网络结构称为多层前馈神经网络。换言之,神经网络的训练重点就是链接权值和阈值当中。

四、误差逆传播算法

误差逆传播算法换言之BP(BackPropagation)算法,BP算法不仅可以用于多层前馈神经网络,还可以用于其他方面,但是单单提起BP算法,训练的自然是多层前馈神经网络。

整理一下对于一个单隐层的BP算法中,我们知道的仅仅是各层点的个数和输入层的值,两组权值还有两组阈值均需要推算,在这里,先初略的统计所有的已知条件:

1. a个输入层神经元个数、b个隐层神经元个数、c个输出层神经元个数

2. a到b的权值wab,b到c的权值vbc

3. b上的阈值pb,c上的阈值qc

那么可以得到第i个隐层神经元的输入为和第j个输出神经元的输出为:

神经网络给的输出为f(Bc-qc),输出层-阈值作为Sigmoid函数的输入点,则均方误差应当为:

BP算法是基于梯度下降策略,以目标的负梯度方向对参数进行调整,调整公式如下,那么问题来了,为什么是对目标的负梯度进行调整?

根据公式Bc对vbc求导就等价于yb,至于其他的部分,因为sigmoid存在f(x)求导=f(x)(1-f(x)),可以将前半部分化简并得到目标值的调整情况:

简言之,按照顺序来进行确立的话,步骤如下:

1. 确定误差函数,误差函数为了抹去常数,要在前面加上1/2

2. 根据梯度下降法确定如何调整参数

3. 通过确定影响顺序,确定求导连乘式子并化简

4. 在化简过程中因为激活函数的特征性可以简单进行化简f(x)=f(x)(1-f(x))

至于理解为逆向传播是因为先得到后续内容,才可以更新前续内容。

通过上面一系列的步骤可以不难看出,标准的BP算法是针对每一个样本进行调整网络,最终达到最小化训练集上的累积误差。换句话讲,一个样本的进入就要调整一次阈值和权值,每次更新的情况都是根据单次误差来统计的,导致出现如下情况:权值阈值更新太过于频繁,导致对于不同样例的更新效果呈现“抵消”现象。

标准BP算法--》累积BP算法(累积误差逆传播算法):直接针对累积误差进行更新,在读取全部训练集之后更新权值和阈值,能够有效的降低更新频率。当然可以配合使用两种方法,因为累积误差下降到一定程度后,进一步下降会特别的缓慢,对数据量特别大的训练集而言,后续使用标准BP算法能够更有效的得到最优解。

神经网络优秀于其他机器学习算法的主要原因是,只要该神经网络拥有足够多的隐层,多层前馈神经网络就能逼近任意复杂度的连续函数。但是这也会造成一个很严肃的问题:过拟合

因为太过于强大,过拟合在所难免,训练误差降低,但是测试误差攀升。解决方法如下:

1. 早停:将训练集再次进行分割,分割成真.训练集和验证集,验证集合一旦出现问题,那么就停止训练,同时返回具有最小验证集误差的连接权值和阈值。

2. 正则化:误差函数中添加用于影响模型复杂度的因子(例如:连接权值和阈值的平方和),同时对经验误差和网络复杂度同时进行分析,交叉验证法即可进行估计判断。

五、局部最小问题

类似于极值和最值的问题一样,我们分析二维函数的时候,可能会出现在某个邻域区间内,该点的值相对最小,对于神经网络训练集的误差和也一样,它分为全局最小值和局部最小值。

负梯度方向是根据函数值下降最快的方向来找寻最优解,当误差函数在下降梯度值为0的情况下,说明找到局部最小,更新变量将成为0(也就是无法更新),这也意味着迭代终止,但是可能对于这个函数他有很多个局部最小值点,不能保证他一定在全剧最小的情况下,也就是我们常说的参数寻优陷入局部极小。

1. 多进行:同时使用多组初始值来同时调整网络,选择最好的那个就好了。

2. 模拟退火:每一次,允许一定概率接受比自己差的结果,当然,这个概率需要逐步调整(降低),用于保证最后结果趋于稳定。

3. 随机梯度下降:加入随机影响,即使陷入局部极小值的全套,也不能为0,也可以有机会跳出。

4. 遗传算法:遗传算法也可以哟,之前用到过,防止其陷入局部最小,不断的生成子代。

六、常见的其他神经网络

1. RBF(Radial Basis Function)径向基函数——网络

网络结构:单隐层神经网络

激活函数:径向基函数(径向基使用高斯径向基函数)

网络函数:径向基函数的确定主要根据输入和隐层神经元所对应的中心,中心确定方法可以是随机采样,聚类等。通过BP算法计算w和β

 

在高斯函数中,σ称为径向基函数的扩展常数,它反应了函数图像的宽度,σ越小,宽度越窄,函数越具有选择性。

既然提到激活函数就好好搞一下:

a. sigmoid函数——总所周知 1/(1+e^-x)

优点:能够把输入的连续实值压缩到0到1之间;

缺点:

(1)容易饱和,当输入非常大或非常小的时候,神经元的梯度就接近0了,这使得在反向传播算法中反向传播接近于0的梯度,导致最终权重基本没什么更新;

(2)Sigmoid的输出不是0均值的,这会导致后层的神经元的输入是非0均值的信号,这会对梯度产生影响,假设后层神经元的输入都为正(e.g. x>0elementwise in f=wTx+b),那么对w求局部梯度则都为正,这样在反向传播的过程中w要么都往正方向更新,要么都往负方向更新,导致有一种捆绑的效果,使得收敛缓慢。  

解决方法:注意参数的初始值设置来避免饱和情况。

b. tanh函数——sigmoid变形 2*sigmoid(2*x)-1

 优点:0均值,能够压缩数据到-1到1之间;

 缺点:同Sigmoid缺点第二个,梯度饱和;

c. ReLU函数——线性函数 max(0,x)

优点:

(1)因为是线性,而且梯度不会饱和,所以收敛速度会比Sigmoid/tanh快很多;

(2)相比于Sigmoid/tanh需要计算指数等,计算复杂度高,ReLU只需要一个阈值就可以得到激活值;

缺点:训练的时候很脆弱,有可能导致神经元坏死。举个例子:由于ReLU在x<0时梯度为0,这样就导致负的梯度在这个ReLU被置零,而且这个神经元有可能再也不会被任何数据激活。如果这个情况发生了,那么这个神经元之后的梯度就永远是0了,也就是ReLU神经元坏死了,不再对任何数据有所响应。实际操作中,如果你的learning rate 很大,那么很有可能你网络中的40%的神经元都坏死了。

解决方法:设置合适的较小的learning rate.

d. Softplus函数——ReLU平滑版本 log(1+e^x)

一般来说,在分类问题上建议首先尝试 ReLU,其次ELU,这是两类不引入额外参数的激活函数。然后可考虑使用具备学习能力的PReLU和MPELU,并使用正则化技术,例如应该考虑在网络中增加Batch Normalization层。

通常来说,很少会把各种激活函数串起来在一个网络中使用的。

 

2. ART(Adaptive Resonance Theory)自适应谐振理论——网络

 

网络结构:比较层+识别层(双层)

原理:竞争型无监督学习网络结构,输出神经元相互竞争(胜者通吃)。比较层+识别层+识别阈值+重置模块。在识别层每个神经元对应一个模式类,神经元数目可以在训练过程中动态增加,换句话讲,就是增加新的模式类。

竞争方式:计算输入向量和各个识别层中神经元所对应模式类的代表向量的距离,距离最小的就获胜。

神经元生成:获胜神经元会告诉其他神经元,这个人是我的,你们都别抢,抑制其他神经元激活。

输入向量&获胜神经元对应模式类的代表向量相似度大于识别阈值——归类为代表向量的所属类别,权值更新指示相似输入能够获得更多的胜出几率。

输入向量&代表向量相似度不大于识别阈值——重置模块中生成新的神经元+对应模式+代表向量(就是这个输入向量哟)。

阈值定义:识别阈值的定义直接影响到无监督学习的分类情况,识别阈值较高,就将样本分的比较详细,反之则产生较少、比较粗略的分类情况。

竞争学习:竞争学习中一个很重要的点是“可塑性-稳定性窘境”,可塑性指的是神经网络需要有学习新知识的能力;稳定性指的是神经网络学习新东西要保留旧东西的记忆。换句话讲,就是增量学习or在线学习。

3. SOM(Self-Organizing Map)自映射组织——网络

网络结构:输入+输出(双层)

原理:竞争型无监督学习网络结构,将高维输入数据映射到低维空间,同时保持输入数据在高维空间的拓扑结构。换句话讲,高维空间中相似的样本点映射到网络输出层中的邻近神经元。

竞争方式:网络接受到输入向量后,每个输出神经元会计算该样本和自身所带权向量之间的距离,距离最小的就获胜。

权向量调整:和ART中调整每个神经元的阈值一样,SOM中的每个神经元都有权值,调整最佳匹配单元及其临近神经元的权向量(使权向量和当前输入样本距离缩小),迭代进行,直到收敛。(每个输出神经元都有自己的邻近神经元,调整就好了,啧啧)

4. 没缩写(Cascade-Correlation)级联相关——网络

网络结构:单隐层神经网络