ML-Neural_Network_Note

神经网络神经网络中最基本的成分是神经元模型。将许多个神经元模型连接起来便成了神经网络。

M-P神经元模型在此模型中,神经元接收到来自n个其他神经元传递过来的输入信号,这些输入信号通过带权重的连接进行传递,神经元接收到的总输入将与神经元的阈值进行比较,然后通过”激活函数”处理以产生神经元的输出。

激活函数-阶跃函数理想中的激活函数是阶跃函数,它将以输入值映射为输出值”0″和”1″,0表示神经元抑制(未激活),1表示神经元兴奋(激活)。阶跃函数具有不连续、不光滑的性质。分段函数sgn(x)有:sgn(x) = 1 (x>=0), sgn(x) = 0 (x<0)。

激活函数-Sigmoid函数Sigmoid函数将较大范围内变化的输入值挤压到(0,1)输出值范围内,因此也被称为”挤压函数”。Sigmoid(x) = 1/(1 + e⁻ˣ)。

感知机(Perceptron)由两层神经元组成。输入层接收外界输入信号后传递给输出层,输出层是M-P神经元,也称为”阈值逻辑单元(threshold logic unit)”。感知机能实现简单逻辑与、或、非运算。感知机的学习过程一定会收敛,即求得合适的权重,否则,感知机的学习过程将会发生振荡。

感知机学习规则对训练样例(x,y),若当前感知机的输出为Ŷ,则感知机权重将调整:wi <- wi + △wi,△wi = η(Y – Ŷ)xi,其中η∊(0, 1)称为学习率。若感知机对训练样例(x, y)预测正确,即Ŷ=Y,则感知机不调整权重,否则,根据错误程度进行调整权重。

隐含层(hidden layer)用于解决非线性可分问题,可在输入层和输出层之间加入隐含层,隐含层和输出层神经元都是拥有激活函数的功能神经元。

多层前馈神经网络(multi-layer feedforward neural)每层神经元与下一层神经元全互连,神经元之间不存在同层连接,也不存在跨层连接。其中输入层神经元接收外界输入,隐含层与输出神经元对信号进行加工,最终结果由输出层神经元输出。即,输入层神经元只是接收输入,不进行函数处理,隐含层和输出层包含功能神经元。

神经网络学习过程:根据训练数据来调整神经元之间的”连接权(connection weight)”以及每个功能神经元的阈值。即,神经网络将”学”带的东西蕴含在连接权和阈值中。

误差逆传播算法(error BackPropagation, BP)给定训练集D = {(x1,y1),(x2,y2),…(xm,ym)},xi∊Rᵈ,yi∊Rᴸ,即输入示例由d个属性描述,输出L维实值向量。即d个输入神经元,L个输出神经元。在一个d个输入神经元,L个输出神经元以及q个隐含神经元的多层前馈网络结构,输入层第j个神经元的阈值用θ𝑗表示,隐含层第h个神经元的阈值用𝛾ℎ表示。输入层第i个神经元与隐含层第h个神经元之间的连接权为vᵢℎ,隐含层第h个神经元与输出层第j个神经元之间的连接权为wℎ𝑗。记隐含层第h个神经元接收到的输入为𝜶ℎ=∑ℎ(vᵢℎ * xᵢ)其中h∊1,2…,d,输出层第𝑗个神经元接收到的输入为β𝑗=∑ℎ(wℎ𝑗 * bℎ)其中h∊1,2…,q,其中bℎ为隐含层的第h个神经元的输出。假设隐含层和输出层的神经元都适用Sigmoid函数,则对训练例(xk, yk),有 Ŷ𝑗 = f(β𝑗 – θ𝑗)。则网络在(xk, yk)上的均方误差为:Ek = (1/2)∑𝑗(Ŷ𝑗 – Y𝑗)²。网络中有(d + l + 1)q + l个参数需确定:输入层到隐含层的d * q个权值,隐含层到输出层q * l个权值,q个隐含层神经元的阈值,l个输出层神经元的阈值。BP是一个迭代学习算法,在迭代的每一轮中采用广义的感知机学习规则对参数进行更新估计,任意参数v的更新估计式为v <- v + △v。

BP算法的梯度下降策略以目标的负梯度方向对参数进行调整。对于上方中的误差Ek,给定学习率η,则有:△wℎ𝑗 = -η(𝛛Ek / 𝛛wℎ𝑗),且wℎ𝑗先影响到第j个输出层神经元的输入值β𝑗,在影响到其输出值Ŷ𝑗,然后影响到Ek,则有:𝛛Ek / 𝛛wℎ𝑗 = (𝛛Ek/𝛛Ŷ𝑗)*(𝛛Ŷ𝑗/𝛛β𝑗) * (𝛛β𝑗/𝛛wℎ𝑗),根据β𝑗的定义有:𝛛β𝑗/𝛛wℎ𝑗 = bℎ。Sigmoid函数的性质:f'(x) = f(x)(1 – f(x)),有 g𝑗 = (- 𝛛Ek/𝛛Ŷ𝑗) * (𝛛Ŷ𝑗/𝛛β𝑗) = Ŷ𝑗(1 – Ŷ𝑗)*(Y𝑗 – Ŷ𝑗)。通过上面的式子得到:△wℎ𝑗 = η(g𝑗)(bℎ),△θ𝑗 = -η(g𝑗),△vᵢℎ = η(eℎ)(xᵢ),△𝛾ℎ = -η(eℎ),eℎ = bℎ(1 – bℎ)∑𝑗(wℎ𝑗)(g𝑗)。其中学习速率η控制算法每一轮迭代中的更新步长,若太大则容易振荡,太小则收敛速度又会过慢。

BP算法流程先将输入示例提供给输入层神经元,然后逐层将信号前传,直到产生输出层的结果;然后计算输出层的误差,再将误差逆向传播至隐含层神经元,最后根据隐含层神经元的误差来对连接权和阈值进行调整。该迭代过程循环进行,知道达到某些停止条件为止。BP算法的目标是要最小化训练集D上的累积误差。该算法中的更新规则是基于单个Ek推导而得的。

累积误差逆传播算法(accumulated error backpropagation)基于累积误差最小化的更新规则。

累积BP算法和标准BP算法标准BP算法每次只针对单个样例,参数更新频繁,对不同样例进行更新的效果可能出现”抵消”现象。因此标准BP需要更多次数的迭代。在很多任务中,累积误差下降到一定程度后,进一步下降会非常缓慢,这时标准BP会更快获得较好的解,尤其在训练集D非常大的情况下。累积BP算法直接针对累积误差最小化,因此在读取整个数据集D一遍后才对参数进行更新,导致参数更新频率很低。

设置隐含层神经网络的方式:试错法

缓解BP神经网络过拟合的方式

1.早停法将数据分成训练集和验证集,训练集用来计算梯度、更新连接权和阈值,验证集用来估计误差,若训练集误差降低,但验证集误差升高,则停止训练,同时返回具有最小验证集误差的连接权和阈值。

2.正则化在误差目标函数中增加一个用于描述网络复杂度的部分,例如连接权与阈值的平方和。仍令Ek表示第k个训练样例上的误差,wi表示连接权和阈值,则误差目标函数则改变为:E  = 𝝀(1/m)∑𝒌(Ek) + (1-𝝀)∑ᵢ(wᵢ)²,其中𝝀∊(0,1)用于对经验误差与网络复杂度这两项进行折中,常通过交叉验证法来估计。

局部极小和全局最小对w*和θ*,若存在∊ > 0使得∀ (w;θ) ∊ {(w;θ) | ||(w;θ) – (w*;θ*) <= ∊},都有E(w;θ)>=E(w*;θ*)成立,则(w*;θ*)为局部最小解;若对参数空间中的任意(w;θ)都有E(w;θ)>=E(w*;θ*),则E(w*;θ*)为全局最小解。即:局部最小解是参数空间中的某个点,其邻域点的误差函数均不小于该点的误差函数值;全局最小解则是指整个参数空间中所有的误差函数值均不小于该点的误差函数值。

跳出局部极小的方式:

1.以多组不同的初始值初始化多个神经网络,按标准方法训练后,取其误差最小的解作为最终参数。这相当于从多个不同的初始点开始搜索,这样就可能陷入不同的局部极小,从中进行选择有可能获得更接近全局最小的结果。

2.使用”退火模拟(simulated annealing)”技术。模拟退火在每一步都以一定的概率接受比当前解更差的结果,从而有助于”跳出”局部极小。在每步迭代过程中,接受”次优解”的概率要随着时间的推移而降低,从而保证算法稳定。

3.使用随机梯度下降。与标准梯度下降法精确计算梯度不同,随机梯度下降法在计算时加入了随机因素。于是,即便陷入局部极小点,它计算出的梯度仍可能不为零,这样就有机会跳出局部极小继续搜索。

还有遗传算法。

RBF网络(Radial Basis Function,径向基函数)一种单隐含层前馈神经网络,它使用径向基函数作为隐含层神经元激活函数,而输出层则是对隐含层神经元输出的线性组合。

RBF网络表示假定输入为d为向量x,输出为实值,则RBF网络可表示为:𝛿(x) =∑ᵢ(wᵢ𝛒(xᵢ, cᵢ))其中i=1,2,3…,q,q表示隐含层神经元个数,ci和wi表示第i个隐含层神经元所对应的中心和权重,𝛒(xᵢ, cᵢ)是径向基函数,某种沿径向堆成的标量函数,通常定义为样本x到数据中心ci之间的欧氏距离的单调函数。常用的高斯径向基函数为𝛒(xᵢ, cᵢ) = e^(-βᵢ||x-ci||²),含有足够多隐含层神经元的RBF网络能以任意精度逼近任意的连续函数。

RBF网络的训练

1.确定神经元中心ci,常用方式通过随机采样、聚类等。

2.利用BP算法来确定参数wi和βi。

ART网络(Adaptive Resonance Theory,自适应谐振理论)竞争型学习的代表。由比较层,识别层,识别层阈值和充值模块构成。比较层负责接收输入样本,并将其传递给识别层神经元。识别层神经元对应一个模式类,神经元数目可在训练过程中动态增长以增加新的模式类。在接收到比较层的输入信号后,识别层神经元之间通过相互竞争的方式产生获胜神经元。

ART网络竞争的方式:计算输入向量与每个识别层神经元所对应的模式类的代表向量之间的距离,距离小的获胜。获胜神经元则会向其他神经元传递信号,抑制其他神经元的激活。如果输入向量与获胜神经元所对应的代表向量之间的相似度大于识别阈值,则当前输入样本将被归为该代表向量所属类别,同时,网络连接权将会更新,使得以后在接收到相似输入样本时该模式类会计算出更大的相似度,从而使该获胜神经元有更大可能获胜;若相似度不大于识别阈值,则重置模块将在识别层增设一个新的神经元,其代表向量就设置为当前输入向量。

阈值对ART网络的影响当识别阈值较高时,输入样本将会被分成比较多、比较精细的模式类,而如果识别阈值较低,则会产生比较少、比较粗略的模式类。

ART网络的优点ART缓解了竞争学习中的”可塑性-稳定性窘境”,可塑性是指神经网络要有学习新知识的能力,而稳定性是指神经网络在学习新知识时要保持对旧知识的记忆。因此ART的一个重要优点就是:可进行增量式学习或在线学习。

ART算法族ART2网络,用于处理实值输入;FuzzyART网络,结合模糊处理;ARTMAP,可进行监督是学习。等。

SOM网络(Self-Organizing Map,自组织映射)一种竞争学习行的无监督神经网络,它能将高维度输入数据映射到低维度空间,同时保持输入数据在高维度的拓扑结构,即将高维度空间中相似的样本点映射到网络输出层中的邻近神经元。

SOM训练过程在接收到一个训练样本后,每个输出层神经元会计算该样本与自身携带的权向量之间的距离,距离最近的神经元成为竞争获胜者,成为最佳匹配单元。然后,最佳匹配单元及邻近神经元的权向量将被调整,以使得这些权向量与当前输入样本的距离缩小。这个过程不断迭代,直至收敛。

级联相关网络:级联相关网络是结构自适应网络的重要代表。它拥有两个主要成分:”级联”和”相关”。”级联”指的是建立层次连接的层级结构,在训练开始时,网络只有输入层和输出层,处于最小拓扑结构;随着训练的进行,新的隐含层神经元逐渐渐入,从而建立起层级结构。当新的隐含层神经元加入时,其输入端连接权是固定的。”相关”指的是通过最大化神经元的输出与网络误差之间的相关性来训练相关参数。

级联相关网络的优缺点:无需设置网络层数、隐含层神经元数目,且训练速度快,但其在数据较小时容易陷入过拟合。

递归神经网络(Recurrent Neural Network)与前馈神经网络不同,该网络允许网络中出现环形结构,从而让一些神经元的输出反馈回来作为输入信号。该结构与信息反馈过程,使得网络在t时刻的输出状态不仅与t时刻的输入有关,还与t-1时刻的网络状态有关,从而能处理与时间有关的动态变化。

Elman网络递归神经网络的一种。它的结构与多层前馈网络很相似,单隐含层神经元的输出被反馈回来,与下一时刻输入层神经元提供的信号一起,作为隐含层神经元在下一刻的输入。隐含层神经元通常采用Sigmoid激活函数,而网络的训练则常通过推广的BP算法进行。

Boltzmann机一种”基于能量的模型”的递归神经网络,其神经元分为两层:显层和隐层。显层用于表示数据的输入与输出,隐层则被理解为数据的内在状态。

Boltzmann机原理在该算法中,神经元都是布尔型的,只有1和0两种状态,1表示激活,0表示抑制。令向量s∊{0, 1}ᴺ表示N个神经元的状态,wij表示神经元i与j之间的连接权,θi表示神经元i的阈值,则状态向量s所对应的Boltzmann机能量定义为:E(s) = -∑i∑j(wij)(si)(sj) – ∑i(θi)(si)其中前式(i=1,2,…,n-1;j=i+1,i+2,…,n),后式(i = 1,2,..n)。如果网络中的神经元不依赖输入值的顺序进行更新,则网络最终将达到Boltzmann分布,此时状态向量s出现的概率将仅由其能量与所有可能状态向量的能量确定:P(s) = (e^E(s))/∑t(e^E(t))。Boltzmann机的训练过程就是将每个训练样本视为一个状态向量,使其出现的概率尽可能大。

受限Boltzmann机(Restricted Boltzmann Machine, RBM)标准的Boltzmann机是一个全连接图,训练网络复杂度很高,因此这里采用RBM,它仅保留显层与隐层之间的连接麻将Boltzmann机的结构变为二部图。

RBM的训练RBM通常用”对比散度(Contrastive Divergence)”算法来进行训练。假定网络中有d个显层神经元和q个隐层神经元,令v和h分别表示显层和隐层的状态向量,则由于同一层内不存在连接,有P(v|h) = ∏P(vi | h)其中i=1,2,…,d,P(h|v) = ∏P(hj|v)其中j=1,2,…,q。通过CD算法训练每个样本v,接着根据P(h|v)计算出隐层神经元状态的概率分布,然后根据这个概率分布采样得到h;此后,类似的根据P(v|h)从h产生v’,再从v’产生h’;连接权的更新公式为△w = η(vhᵀ – v’h’ᵀ)。

权共享:在卷积神经网络中发挥了作用,在训练中,无论是卷积层还是采样层,其每一组神经元都是用相同的连接权,从而大幅减少了需要训练的参数数目。

深度学习的理解:无论是DBN还是CNN,其原理都是通过多层处理,逐渐将初始的”低层”特征表示转化为”高层”特征表示之后,用”简单模型”即可完成复杂的分类等学习任务。因此也可以把深度学习理解为”特征学习”或”表示学习”。

发表评论

电子邮件地址不会被公开。 必填项已用*标注