联系我们
- 地 址:北京市海淀区北四环西路9号 ,主 营:人脸识别,活体检测,身份证识别,银行卡识别,名片识别,车牌识别,OCR识别等及智能识别技术。
- 电 话:13146317170 廖经理
- 传 真:
- 邮 箱:398017534@qq.com
机器学习之神经网络
机器学习之神经网络
一、神经元模型
神经网络(neural networks)的研讨很早就曾经呈现,往常的神经网络曾经是一个相当大的学科范畴,也有许多定义,在周志华教师的《机器学习》一书中采用的定义为:“神经网络是由具有顺应性的简单单元组成的普遍并行互连的网络,它的组织可以模仿生物神经系统对真实世界物体所作出的交互反响”。
神经网络中最根本的成分是神经元(neural)模型,即上述定义中的“简单单元”。在生物网络中,每个神经元与其他神经元相连,当它“兴奋”(神经元的电位超越一定“阈值”(threshold))时,就会向相连的神经元发送化学物质,从而改动这些神经元内的电位。上图为生物神经元与神经元模型的比照,是不是很类似?
图源自:《机器学习》——周志华
上图为“M-P神经网络”神经元模型“,在上图中,神经元收到来自n个其他神经元传送过来的输入信号,输入信号经过带权重的衔接
目前常用典型的的激活函数有阶跃函数,Sigmoid函数。
那么问题来了,为什么要参加激活函数?
由于假如不参加激活函数,或者运用恒等函数作为激活函数,那最终得到的函数一定是线性的函数,也就是说只能处理简单的线性可分问题,它的局限性是十分明显的。理想是我们有许多的非线性的问题,假如不引入激活函数,我们连简单的异或逻辑都无法完成。引入激活函数就是往模型中参加了非线性的影响因子,使它具有一定处理非线性问题的才能。详细推导这里就不再描绘。
接着,问题又来了,为什么引入激活函数后,经过增加隐层神经元,神经网络一定能够迫近恣意复杂的连续函数?
把许多上面提到的神经元依照一定的层次构造衔接起来,就得到了神经网络。
二、感知机与多层网络
感知机(Perceptron)由两层神经元组成,输入层接纳外界输入信号后传送给输出层。
留意感知机只要输出层是M-P神经元亦称“阈值逻辑单元”(threshold logic unite),输入层神经元只是将数据经过带权值的衔接传送给输出层。感知机可以容易的完成逻辑与、或、非运算。假定输出层采用的激活函数为阶跃函数。于是有:
“与”逻辑,仅当两个输入均为1时输出为1:
“或”逻辑,当有一个输入为1时,输出为1:
“非”逻辑,输入为0时输出1,输入为1时输出0:
理解了感知机后,接下来就是该怎样计算各个参数了,也就是算法如何“学习”。普通会给定锻炼集,权重和阈值能够经过学习得到,阈值能够看做一个固定输入为-1.0,我觉得也能够是1.0的“哑结点”,给它一个权重,这样就能够同权重普通对阈值停止学习了。感知机的学习规则很简单:
但是,感知机只要输出层神经元存在激活函数,也即只要一层功用神经元(functional neural),它只能处理线性可分的问题(存在一个线性超平面可以将他们分开),但它并不能处理非线性可分问题,即便再简单的非线性可分问题也不能处理。
要处理非线性可分问题,则需求采用多层功用神经元(感知机只要输出层一层)。每层神经元与下一层神经元全互连,神经元之间不存在同层衔接,也不存在跨层衔接,这样的神经网络构造称为“多层前馈神经网络”
输入层神经元仅接纳外界输入,输入层与输出层之间存在若干层,统称为“隐层”,除了输入层不测的神经元都具备对信号停止处置的才能,也即都为功用神经元。仅有一层隐层的神经网络被称为“单隐层网络”,只需包含隐层就能够称之为多层网络,神经网络的学习过程,就是依据锻炼数据集来不时调整神经元之间的“衔接权”以及每个功用神经元的阈值。
三、误差逆传播算法
多层网络的学习才能比单层的感知机强多了,要锻炼多层网络的话,靠之前感知机的学习规则显然是不够的,于是需求找一个效果比之前学习规则好的算法。误差逆传播(error BackPropagation 简称BP)算法就是一个出色的算法,而且BP算法不只能够用于多层前馈神经网络,还能够用于其他类型的神经网络,但通常“BP网络”指的是用BP算法锻炼的多层前馈神经网络。
关于BP算法,其主要思想为,给定锻炼集D={(x1,y1),(x2,y2),...,(xm,ym)},关于输入x由d个属性描绘,输出y为l维的向量,为便于讨论,一下给出了一个合适这个的网络,具有d个输入神经元,l个输出神经元,q 个隐层神经元的多层前馈网络构造,其中输出层第 j 个神经元的阀值用θj 表示,隐层第 h 个神经元的阔值用 γh 表示。输入层第 i 个神经元与隐居第h 个神经元之间的衔接权为vih,记隐层第 h 个神经元与输出层第 j 个神经元之间的衔接权为 ωhj。隐层第h个神经元收到的输入为:
输出层第 j 个神经元接纳到的输入为:
其中 bh 为隐层第 h 个神经元的输出。假定隐层和输出层都是用sigmoid函数作为激活函数。
设sigmoid函数为f(x),关于锻炼样例(xk,yk),假定神经网络输出为:
也即:
我们能够计算出网络在锻炼样例上的均方误差为:
关于上面整个网络来说,存在(d+l+1)q+l个参数待肯定,输入层到隐层,输入层每一个神经元到隐层每一个神经元之间都存在一个权值,故输入层到隐层之间参数个数为d*q个,同理隐层到输出层之间参数个数为l*q个,而隐层本身,由于每一个神经元都需求一个阈值,故还有q个参数同理关于输出层,也存在l个参数,所以整理一下总共有:(d+l+1)q+l个参数。
说了半天还是没说如何学习得到这些参数呢?可依据广义的感知机学习规则对参数停止更新估量,对恣意参数v的更新估量公式为:v=v+Δv。
下面给一个例子:
那如今有了误差的计算公式,基于误差计算公式得到了参数更新的公式,那么,该开端说BP算法的工作流程了:每个锻炼样例, BP 算法执行以 F操作:先将输入示例提供应输入层神经元,然后逐层将信号前传,直到产生输出层的结果;然后计算输出层的误差(第 4-5 行) ,再将误差逆向传播至隐层神经元(第 6 行) ,最后依据隐层神经元的误差来别衔接权和|词值停止调整(第 7 行).该法代过程循环停止,直抵达到某些中止条件为止。例如锻炼误差己到达一个很小的值。
留意,BP算法的目的是要最小化锻炼集上的积聚误差:
而我们上面引见的更新规则是基于单个锻炼例推导得到的,假如相似推导出基于积聚误差最小化的更新规则,就能够得到积聚误差传播算法,积聚BP算法和规范BP算法都很常用。规范BP算法每次更新只针对单个样例,参数更新频繁,而对不同的样例停止更新的效果可能呈现“抵消”现象。因而相比于积聚BP,到达相同积聚误差的极小点,可能常常需求更多的迭代次数。关于积聚BP算法,只在读完好个锻炼集一遍后才对参数停止更新,但是可能在积聚误差降落到一定水平后,降落会十分迟缓,由于每次都得遍历一遍整个锻炼集,这时规范BP会更快取得较好的解。(梯度降落算法和批梯度降落算法,随机梯度降落算法也称增量梯度降落算法)。
如何取η的值以及如何设置隐层神经元个数?η为控制梯度降落的步长,不能太长也不能太短,那怎样办?先放一放,看看怎样设置神经元个数,在周志华教师的《机器学习》一书中提到了用“试错法”停止调整,(嗯,我觉得意义就是瞎猜,哦不,是有经历的猜。)那η的取值是不是也能够思索一下“试错法”。
由于神经网络太强大了,能以恣意精度迫近恣意复杂的连续函数,那就经常会遭遇过拟合,其锻炼误差降低,但是测试误差却上升。有两种战略来缓解BP的过拟合:一是“早停”,将数据分红锻炼集和考证集,锻炼集用来计算梯度,更新参数。考证集用于估量误差,若锻炼集误差降低但是考证集误差升高则中止锻炼。而是“正则化”其根本思想是在误差目的函数中增加一个用于描绘网络复杂度的局部。(有待进一步学习....)
四、其他常见神经网络
1.RBF网络
RBF(Radial Basis Function径向基函数网络),是单隐层前馈神经网络,它运用径向基函数作为激活函数,输出层是对隐层神经元的线性组合。
其中q为隐层神经元个数,ci和wi分别为第i个隐层神经元所对应的中心和权重。采用两个步骤来锻炼RBF网络:首先肯定中心,可经过随机采样、聚类等方式,其次应用BP肯定其他参数。
RBF网络对神经元和锻炼方式都做了限定: RBF神经网络的隐节点采用输入形式与中心向量的间隔(如欧式间隔)作为函数的自变量,用高斯函数作为神经元的激活函数。首先可经过非监视式的聚类算法等算法肯定中心。 再经过监视式锻炼,BP 锻炼方式对其他参数停止锻炼。
2.ART网络
该网络由比拟层、辨认层、辨认阈值和重置模块构成.其中 ,比拟层担任接纳输入样本,并将其传送给辨认层神经元。辨认层每个神经元对应 一个形式类,神经元数目可在锻炼过程中动态增长以增加新的形式类。ART(Adaptive Resonance Theory,自顺应谐振理论)网络为竞争学习类型的网络。
在接纳到比拟层的输入信号后辨认层神经元之间互相竞争以产生获胜神经元.竞争的最简双方式是计算输入向量与每个辨认层神经元所对应的形式类的代表向量之间的间隔,间隔最小者胜.获胜神经元将向其他辨认层神经元发送信号,抑止其激活。若输向量与获胜神经元所对应的代表向量之间的类似度大于辨认阈值,则当前输入样本将被归为该代表向量所属类别,同时,网络衔接权将会更新,使得以后在接纳到类似输入样本时该形式类会计算出更大的类似度, 从而使该获胜神经元有更大可能获胜;若类似度不大于辨认阈值,则重置模块将在辨认层增设一个新的神经元,其代表向量就设置为当前输入向量。
ART是以认知和行为形式为根底的一种无教员、矢量聚类和竞争学习的算法。在数学上ART为非线性微分方程的方式;在网络构造上,ART是全反应构造,且各层节点具有不同性质,ART网络分为三品种型:ART-1,ART-2,ART-3
3.SOM网络
SOM(Self-Organizing Map ,自组织映射)网络是一种竞争学习型的无监视神经网络,它能将高维输入数据映射到低维空间(通常为二维) ,同时坚持输入数据在高维空间的拓扑构造,行将高维空间中类似的样本点映射到网络输出层中的临近神经元。
SOM网络中的输出层以矩阵方式排列在二维空间中,每个神经元都具有一个权向量,网络接纳输入向量后,将会肯定输出层获胜神经元,它决议了该输入向量在低维空间中的位置。SOM 的锻炼目的就是为每个输出层神经元找到适宜的权向量,以到达坚持拓扑构造的目的。
4.级联相关网络
普通的神经网络模型通常是假定网络构造是事前固定的,锻炼只是为了找到适宜的衔接权,阈值等参数。与此不同的是,构造自顺应网络将网络构造也当做学习的目的。级联相关(Cascade-Correlation)网络与ART网络一样都是构造自顺应网络。
级联相关网络的两个主要成分是:“级联”和“相关”。级联是树立层次衔接的层级构造,初始状态为上图,只要输入层和输出层,经过锻炼,参加新的隐层神经元。新的隐层神经元参加时,输入端衔接权值是冻结固定的??相关是指经过最大化新神经元的输出与网络误差之间的相关性(correlation)来锻炼相关参数。也就是说级联相关网络学习规则不同于BP网络基于梯度降落,而是基于新神经元的输出与网络误差之间的相关性。
5.Elman网络
与前馈网络不同,递归神经网络(recurrent neural networks)允许网络中呈现环形构造,从而可让一些神经元的输出反应回来作为输入信号。这样的构造与信息反应过程,使得网络在 t 时辰的输出状态不只与 t 时辰的输入有关,还与 t 一 1 时辰的网络状态有关,从而能处置与时间有关的动态变化。
Elman网络为一种递归神经网络,构造与多层前馈网络类似,但是隐层神经元的输出反应回来与下一时辰输入层神经元提供的信号一同,作为隐层神经元在下一时辰的输入。通常采用sigmoid激活函数,锻炼规则经过推行的BP算法。
6.Boltzmann机(将模仿退火算法与神经网络分离)
神经网络中有一类模型是为网络状态定义一个"能量" (energy) ,能量最小化时网络到达理想状态,而网络的锻炼就是在最小化这个能量函数。Boltzmann机就是这样一种基于能量模型的网络。神经元分为两层:显层与隐层。显层用于表示数据的输入和输出,隐层了解为数据的内在表达,Boltzmann机中神经元都是布尔型的。令向量s∈{0,1}ⁿn个神经元的状态,wij表示神经元i与j之间的衔接权,θi表示神经元i的阈值,状态向量s所对应的能量定义为:
若网络神经元以恣意不依赖输入值的次第停止更新,则网络最终将到达Boltzmann散布,此时状态向量s呈现的概率仅由其能量与一切可能状态向量的能量肯定:
锻炼过程就是每个锻炼样本视为一个状态向量,使其呈现概率尽可能的大,在上述公式中能够看出来,能量越低,分子越大,也就意味着概率越大。
规范Boltzmann机时全衔接的,复杂度很高,难以处理实践问题,于是常常采用首先得Boltzmann机简称RBM。
上一条:AI图像质量检测方法
下一条:人脸比对验证机