① 神经网络Hopfield模型
一、Hopfield模型概述
1982年,美国加州工学院J.Hopfield发表一篇对人工神经网络研究颇有影响的论文。他提出了一种具有相互连接的反馈型人工神经网络模型——Hopfield人工神经网络。
Hopfield人工神经网络是一种反馈网络(Recurrent Network),又称自联想记忆网络。其目的是为了设计一个网络,存储一组平衡点,使得当给网络一组初始值时,网络通过自行运行而最终收敛到所存储的某个平衡点上。
Hopfield网络是单层对称全反馈网络,根据其激活函数的选取不同,可分为离散型Hopfield网络(Discrete Hopfield Neural Network,简称 DHNN)和连续型 Hopfield 网络(Continue Hopfield Neural Network,简称CHNN)。离散型Hopfield网络的激活函数为二值型阶跃函数,主要用于联想记忆、模式分类、模式识别。这个软件为离散型Hopfield网络的设计、应用。
二、Hopfield模型原理
离散型Hopfield网络的设计目的是使任意输入矢量经过网络循环最终收敛到网络所记忆的某个样本上。
正交化的权值设计
这一方法的基本思想和出发点是为了满足下面4个要求:
1)保证系统在异步工作时的稳定性,即它的权值是对称的,满足
wij=wji,i,j=1,2…,N;
2)保证所有要求记忆的稳定平衡点都能收敛到自己;
3)使伪稳定点的数目尽可能地少;
4)使稳定点的吸引力尽可能地大。
正交化权值的计算公式推导如下:
1)已知有P个需要存储的稳定平衡点x1,x2…,xP-1,xP,xp∈RN,计算N×(P-1)阶矩阵A∈RN×(P-1):
A=(x1-xPx2-xP…xP-1-xP)T。
2)对A做奇异值分解
A=USVT,
U=(u1u2…uN),
V=(υ1υ2…υP-1),
中国矿产资源评价新技术与评价新模型
Σ=diαg(λ1,λ2,…,λK),O为零矩阵。
K维空间为N维空间的子空间,它由K个独立的基组成:
K=rαnk(A),
设{u1u2…uK}为A的正交基,而{uK+1uK+2…uN}为N维空间的补充正交基。下面利用U矩阵来设计权值。
3)构造
中国矿产资源评价新技术与评价新模型
总的连接权矩阵为:
Wt=Wp-T·Wm,
其中,T为大于-1的参数,缺省值为10。
Wp和Wm均满足对称条件,即
(wp)ij=(wp)ji,
(wm)ij=(wm)ji,
因而Wt中分量也满足对称条件。这就保证了系统在异步时能够收敛并且不会出现极限环。
4)网络的偏差构造为
bt=xP-Wt·xP。
下面推导记忆样本能够收敛到自己的有效性。
(1)对于输入样本中的任意目标矢量xp,p=1,2,…,P,因为(xp-xP)是A中的一个矢量,它属于A的秩所定义的K个基空间的矢量,所以必存在系数α1,α2,…,αK,使
xp-xP=α1u1+α2u2+…+αKuK,
即
xp=α1u1+α2u2+…+αKuK+xP,
对于U中任意一个ui,有
中国矿产资源评价新技术与评价新模型
由正交性质可知,上式中
当i=j,
当i≠j,
对于输入模式xi,其网络输出为
yi=sgn(Wtxi+bt)
=sgn(Wpxi-T·Wmxi+xP-WpxP+T·WmxP)
=sgn[Wp(xi-xP)-T·Wm(xi-xP)+xP]
=sgn[(Wp-T·Wm)(xi-xP)+xP]
=sgn[Wt(xi-xP)+xP]
=sgn[(xi-xP)+xP]
=xi。
(2)对于输入模式xP,其网络输出为
yP=sgn(WtxP+bt)
=sgn(WtxP+xP-WtxP)
=sgn(xP)
=xP。
(3)如果输入一个不是记忆样本的x,网络输出为
y=sgn(Wtx+bt)
=sgn[(Wp-T·Wm)(x-xP)+xP]
=sgn[Wt(x-xP)+xP]。
因为x不是已学习过的记忆样本,x-xP不是A中的矢量,则必然有
Wt(x-xP)≠x-xP,
并且再设计过程中可以通过调节Wt=Wp-T·Wm中的参数T的大小来控制(x-xP)与xP的符号,以保证输入矢量x与记忆样本之间存在足够的大小余额,从而使sgn(Wtx+bt)≠x,使x不能收敛到自身。
用输入模式给出一组目标平衡点,函数HopfieldDesign( )可以设计出 Hopfield 网络的权值和偏差,保证网络对给定的目标矢量能收敛到稳定的平衡点。
设计好网络后,可以应用函数HopfieldSimu( ),对输入矢量进行分类,这些输入矢量将趋近目标平衡点,最终找到他们的目标矢量,作为对输入矢量进行分类。
三、总体算法
1.Hopfield网络权值W[N][N]、偏差b[N]设计总体算法
应用正交化权值设计方法,设计Hopfield网络;
根据给定的目标矢量设计产生权值W[N][N],偏差b[N];
使Hopfield网络的稳定输出矢量与给定的目标矢量一致。
1)输入P个输入模式X=(x[1],x[2],…,x[P-1],x[P])
输入参数,包括T、h;
2)由X[N][P]构造A[N][P-1]=(x[1]-x[P],x[2]-x[P],…,x[P-1]-x[P]);
3)对A[N][P-1]作奇异值分解A=USVT;
4)求A[N][P-1]的秩rank;
5)由U=(u[1],u[2],…,u[K])构造Wp[N][N];
6)由U=(u[K+1],…,u[N])构造Wm[N][N];
7)构造Wt[N][N]=Wp[N][N]-T*Wm[N][N];
8)构造bt[N]=X[N][P]-Wt[N][N]*X[N][P];
9)构造W[N][N](9~13),
构造W1[N][N]=h*Wt[N][N];
10)求W1[N][N]的特征值矩阵Val[N][N](对角线元素为特征值,其余为0),特征向量矩阵Vec[N][N];
11)求Eval[N][N]=diag{exp[diag(Val)]}[N][N];
12)求Vec[N][N]的逆Invec[N][N];
13)构造W[N][N]=Vec[N][N]*Eval[N][N]*Invec[N][N];
14)构造b[N],(14~15),
C1=exp(h)-1,
C2=-(exp(-T*h)-1)/T;
15)构造
中国矿产资源评价新技术与评价新模型
Uˊ——U的转置;
16)输出W[N][N],b[N];
17)结束。
2.Hopfield网络预测应用总体算法
Hopfield网络由一层N个斜坡函数神经元组成。
应用正交化权值设计方法,设计Hopfield网络。
根据给定的目标矢量设计产生权值W[N][N],偏差b[N]。
初始输出为X[N][P],
计算X[N][P]=f(W[N][N]*X[N][P]+b[N]),
进行T次迭代,
返回最终输出X[N][P],可以看作初始输出的分类。
3.斜坡函数
中国矿产资源评价新技术与评价新模型
输出范围[-1,1]。
四、数据流图
Hopfield网数据流图见附图3。
五、调用函数说明
1.一般实矩阵奇异值分解
(1)功能
用豪斯荷尔德(Householder)变换及变形QR算法对一般实矩阵进行奇异值分解。
(2)方法说明
设A为m×n的实矩阵,则存在一个m×m的列正交矩阵U和n×n的列正交矩阵V,使
中国矿产资源评价新技术与评价新模型
成立。其中
Σ=diag(σ0,σ1,…σp)p⩽min(m,n)-1,
且σ0≥σ1≥…≥σp>0,
上式称为实矩阵A的奇异值分解式,σi(i=0,1,…,p)称为A的奇异值。
奇异值分解分两大步:
第一步:用豪斯荷尔德变换将A约化为双对角线矩阵。即
中国矿产资源评价新技术与评价新模型
其中
中国矿产资源评价新技术与评价新模型
j具有如下形式:
中国矿产资源评价新技术与评价新模型
其中ρ为一个比例因子,以避免计算过程中的溢出现象与误差的累积,Vj是一个列向量。即
Vj=(υ0,υ1,…,υn-1),
则
中国矿产资源评价新技术与评价新模型
其中
中国矿产资源评价新技术与评价新模型
第二步:用变形的QR算法进行迭代,计算所有的奇异值。即:用一系列的平面旋转变换对双对角线矩阵B逐步变换成对角矩阵。
在每一次的迭代中,用变换
中国矿产资源评价新技术与评价新模型
其中变换
在每次迭代时,经过初始化变换V01后,将在第0列的主对角线下方出现一个非0元素。在变换V01中,选择位移植u的计算公式如下:
中国矿产资源评价新技术与评价新模型
最后还需要对奇异值按非递增次序进行排列。
在上述变换过程中,若对于某个次对角线元素ej满足
|ej|⩽ε(|sj+1|+|sj|)
则可以认为ej为0。
若对角线元素sj满足
|sj|⩽ε(|ej-1|+|ej|)
则可以认为sj为0(即为0奇异值)。其中ε为给定的精度要求。
(3)调用说明
int bmuav(double*a,int m,int n,double*u,double*v,double eps,int ka),
本函数返回一个整型标志值,若返回的标志值小于0,则表示出现了迭代60次还未求得某个奇异值的情况。此时,矩阵的分解式为UAVT;若返回的标志值大于0,则表示正常返回。
形参说明:
a——指向双精度实型数组的指针,体积为m×n。存放m×n的实矩阵A;返回时,其对角线给出奇异值(以非递增次序排列),其余元素为0;
m——整型变量,实矩阵A的行数;
n——整型变量,实矩阵A的列数;
u——指向双精度实型数组的指针,体积为m×m。返回时存放左奇异向量U;
υ——指向双精度实型数组的指针,体积为n×n。返回时存放右奇异向量VT;
esp——双精度实型变量,给定的精度要求;
ka——整型变量,其值为max(m,n)+1。
2.求实对称矩阵特征值和特征向量的雅可比过关法
(1)功能
用雅可比(Jacobi)方法求实对称矩阵的全部特征值与相应的特征向量。
(2)方法说明
雅可比方法的基本思想如下。
设n阶矩阵A为对称矩阵。在n阶对称矩阵A的非对角线元素中选取一个绝对值最大的元素,设为apq。利用平面旋转变换矩阵R0(p,q,θ)对A进行正交相似变换:
A1=R0(p,q,θ)TA,
其中R0(p,q,θ)的元素为
rpp=cosθ,rqq=cosθ,rpq=sinθ,
rqp=sinθ,rij=0,i,j≠p,q。
如果按下式确定角度θ,
中国矿产资源评价新技术与评价新模型
则对称矩阵A经上述变换后,其非对角线元素的平方和将减少
综上所述,用雅可比方法求n阶对称矩阵A的特征值及相应特征向量的步骤如下:
1)令S=In(In为单位矩阵);
2)在A中选取非对角线元素中绝对值最大者,设为apq;
3)若|apq|<ε,则迭代过程结束。此时对角线元素aii(i=0,1,…,n-1)即为特征值λi,矩阵S的第i列为与λi相应的特征向量。否则,继续下一步;
4)计算平面旋转矩阵的元素及其变换后的矩阵A1的元素。其计算公式如下
中国矿产资源评价新技术与评价新模型
5)S=S·R(p,q,θ),转(2)。
在选取非对角线上的绝对值最大的元素时用如下方法:
首先计算实对称矩阵A的非对角线元素的平方和的平方根
中国矿产资源评价新技术与评价新模型
然后设置关口υ1=υ0/n,在非对角线元素中按行扫描选取第一个绝对值大于或等于υ1的元素αpq进行平面旋转变换,直到所有非对角线元素的绝对值均小于υ1为止。再设关口υ2=υ1/n,重复这个过程。以此类推,这个过程一直作用到对于某个υk<ε为止。
(3)调用说明
void cjcbj(double*a,int n,double*v,double eps)。
形参说明:
a——指向双精度实型数组的指针,体积为n×n,存放n阶实对称矩阵A;返回时,其对角线存放n个特征值;
n——整型变量,实矩阵A的阶数;
υ——指向双精度实型数组的指针,体积为n×n,返回特征向量,其中第i列为与λi(即返回的αii,i=0,1,……,n-1)对应的特征向量;
esp——双精度实型变量。给定的精度要求。
3.矩阵求逆
(1)功能
用全选主元高斯-约当(Gauss-Jordan)消去法求n阶实矩阵A的逆矩阵。
(2)方法说明
高斯-约当法(全选主元)求逆的步骤如下:
首先,对于k从0到n-1做如下几步:
1)从第k行、第k列开始的右下角子阵中选取绝对值最大的元素,并记住此元素所在的行号和列号,再通过行交换和列交换将它交换到主元素位置上,这一步称为全选主元;
2)
3)
4)αij-
5)-
最后,根据在全选主元过程中所记录的行、列交换的信息进行恢复,恢复原则如下:在全选主元过程中,先交换的行、列后进行恢复;原来的行(列)交换用列(行)交换来恢复。
图8-4 东昆仑—柴北缘地区基于HOPFIELD模型的铜矿分类结果图
(3)调用说明
int brinv(double*a,int n)。
本函数返回一个整型标志位。若返回的标志位为0,则表示矩阵A奇异,还输出信息“err**not inv”;若返回的标志位不为0,则表示正常返回。
形参说明:
a——指向双精度实型数组的指针,体积为n×n。存放原矩阵A;返回时,存放其逆矩阵A-1;
n——整型变量,矩阵的阶数。
六、实例
实例:柴北缘—东昆仑地区铜矿分类预测。
选取8种因素,分别是重砂异常存在标志、水化异常存在标志、化探异常峰值、地质图熵值、Ms存在标志、Gs存在标志、Shdadlie到区的距离、构造线线密度。
构置原始变量,并根据原始数据构造预测模型。
HOPFIELD模型参数设置:训练模式维数8,预测样本个数774,参数个数8,迭代次数330。
结果分44类(图8-4,表8-5)。
表8-5 原始数据表及分类结果(部分)
续表
② 深度学习之卷积神经网络经典模型
LeNet-5模型 在CNN的应用中,文字识别系统所用的LeNet-5模型是非常经典的模型。LeNet-5模型是1998年,Yann LeCun教授提出的,它是第一个成功大规模应用在手写数字识别问题的卷积神经网络,在MNIST数据集中的正确率可以高达99.2%。
下面详细介绍一下LeNet-5模型工作的原理。
LeNet-5模型一共有7层,每层包含众多参数,也就是卷积神经网络中的参数。虽然层数只有7层,这在如今庞大的神经网络中可是说是非常少的了,但是包含了卷积层,池化层,全连接层,可谓麻雀虽小五脏俱全了。为了方便,我们把卷积层称为C层,下采样层叫做下采样层。
首先,输入层输入原始图像,原始图像被处理成32×32个像素点的值。然后,后面的隐层计在卷积和子抽样之间交替进行。C1层是卷积层,包含了六个特征图。每个映射也就是28x28个神经元。卷积核可以是5x5的十字形,这28×28个神经元共享卷积核权值参数,通过卷积运算,原始信号特征增强,同时也降低了噪声,当卷积核不同时,提取到图像中的特征不同;C2层是一个池化层,池化层的功能在上文已经介绍过了,它将局部像素值平均化来实现子抽样。
池化层包含了六个特征映射,每个映射的像素值为14x14,这样的池化层非常重要,可以在一定程度上保证网络的特征被提取,同时运算量也大大降低,减少了网络结构过拟合的风险。因为卷积层与池化层是交替出现的,所以隐藏层的第三层又是一个卷积层,第二个卷积层由16个特征映射构成,每个特征映射用于加权和计算的卷积核为10x10的。第四个隐藏层,也就是第二个池化层同样包含16个特征映射,每个特征映射中所用的卷积核是5x5的。第五个隐藏层是用5x5的卷积核进行运算,包含了120个神经元,也是这个网络中卷积运算的最后一层。
之后的第六层便是全连接层,包含了84个特征图。全连接层中对输入进行点积之后加入偏置,然后经过一个激活函数传输给输出层的神经元。最后一层,也就是第七层,为了得到输出向量,设置了十个神经元来进行分类,相当于输出一个包含十个元素的一维数组,向量中的十个元素即0到9。
AlexNet模型
AlexNet简介
2012年Imagenet图像识别大赛中,Alext提出的alexnet网络模型一鸣惊人,引爆了神经网络的应用热潮,并且赢得了2012届图像识别大赛的冠军,这也使得卷积神经网络真正意义上成为图像处理上的核心算法。上文介绍的LeNet-5出现在上个世纪,虽然是经典,但是迫于种种复杂的现实场景限制,只能在一些领域应用。不过,随着SVM等手工设计的特征的飞速发展,LeNet-5并没有形成很大的应用状况。随着ReLU与dropout的提出,以及GPU带来算力突破和互联网时代大数据的爆发,卷积神经网络带来历史的突破,AlexNet的提出让深度学习走上人工智能的最前端。
图像预处理
AlexNet的训练数据采用ImageNet的子集中的ILSVRC2010数据集,包含了1000类,共1.2百万的训练图像,50000张验证集,150000张测试集。在进行网络训练之前我们要对数据集图片进行预处理。首先我们要将不同分辨率的图片全部变成256x256规格的图像,变换方法是将图片的短边缩放到 256像素值,然后截取长边的中间位置的256个像素值,得到256x256大小的图像。除了对图片大小进行预处理,还需要对图片减均值,一般图像均是由RGB三原色构成,均值按RGB三分量分别求得,由此可以更加突出图片的特征,更方便后面的计算。
此外,对了保证训练的效果,我们仍需对训练数据进行更为严苛的处理。在256x256大小的图像中,截取227x227大小的图像,在此之后对图片取镜像,这样就使得原始数据增加了(256-224)x(256-224)x2= 2048倍。最后对RGB空间做PCA,然后对主成分做(0,0.1)的高斯扰动,结果使错误率下降1%。对测试数据而言,抽取以图像4个角落的大小为224224的图像,中心的224224大小的图像以及它们的镜像翻转图像,这样便可以获得10张图像,我们便可以利用softmax进行预测,对所有预测取平均作为最终的分类结果。
ReLU激活函数
之前我们提到常用的非线性的激活函数是sigmoid,它能够把输入的连续实值全部确定在0和1之间。但是这带来一个问题,当一个负数的绝对值很大时,那么输出就是0;如果是绝对值非常大的正数,输出就是1。这就会出现饱和的现象,饱和现象中神经元的梯度会变得特别小,这样必然会使得网络的学习更加困难。此外,sigmoid的output的值并不是0为均值,因为这会导致上一层输出的非0均值信号会直接输入到后一层的神经元上。所以AlexNet模型提出了ReLU函数,公式:f(x)=max(0,x)f(x)=max(0,x)。
用ReLU代替了Sigmoid,发现使用 ReLU 得到的SGD的收敛速度会比 sigmoid快很多,这成了AlexNet模型的优势之一。
Dropout
AlexNet模型提出了一个有效的模型组合方式,相比于单模型,只需要多花费一倍的时间,这种方式就做Dropout。在整个神经网络中,随机选取一半的神经元将它们的输出变成0。这种方式使得网络关闭了部分神经元,减少了过拟合现象。同时训练的迭代次数也得以增加。当时一个GTX580 GPU只有3GB内存,这使得大规模的运算成为不可能。但是,随着硬件水平的发展,当时的GPU已经可以实现并行计算了,并行计算之后两块GPU可以互相通信传输数据,这样的方式充分利用了GPU资源,所以模型设计利用两个GPU并行运算,大大提高了运算效率。
模型分析
AlexNet模型共有8层结构,其中前5层为卷积层,其中前两个卷积层和第五个卷积层有池化层,其他卷积层没有。后面3层为全连接层,神经元约有六十五万个,所需要训练的参数约六千万个。
图片预处理过后,进过第一个卷积层C1之后,原始的图像也就变成了55x55的像素大小,此时一共有96个通道。模型分为上下两块是为了方便GPU运算,48作为通道数目更加适合GPU的并行运算。上图的模型里把48层直接变成了一个面,这使得模型看上去更像一个立方体,大小为55x55x48。在后面的第二个卷积层C2中,卷积核的尺寸为5x5x48,由此再次进行卷积运算。在C1,C2卷积层的卷积运算之后,都会有一个池化层,使得提取特征之后的特征图像素值大大减小,方便了运算,也使得特征更加明显。而第三层的卷积层C3又是更加特殊了。第三层卷积层做了通道的合并,将之前两个通道的数据再次合并起来,这是一种串接操作。第三层后,由于串接,通道数变成256。全卷积的卷积核尺寸也就变成了13×13×25613×13×256。一个有4096个这样尺寸的卷积核分别对输入图像做4096次的全卷积操作,最后的结果就是一个列向量,一共有4096个数。这也就是最后的输出,但是AlexNet最终是要分1000个类,所以通过第八层,也就是全连接的第三层,由此得到1000个类输出。
Alexnet网络中各个层发挥了不同的作用,ReLU,多个CPU是为了提高训练速度,重叠pool池化是为了提高精度,且不容易产生过拟合,局部归一化响应是为了提高精度,而数据增益与dropout是为了减少过拟合。
VGG net
在ILSVRC-2014中,牛津大学的视觉几何组提出的VGGNet模型在定位任务第一名和分类任务第一名[[i]]。如今在计算机视觉领域,卷积神经网络的良好效果深得广大开发者的喜欢,并且上文提到的AlexNet模型拥有更好的效果,所以广大从业者学习者试图将其改进以获得更好地效果。而后来很多人经过验证认为,AlexNet模型中所谓的局部归一化响应浪费了计算资源,但是对性能却没有很大的提升。VGG的实质是AlexNet结构的增强版,它侧重强调卷积神经网络设计中的深度。将卷积层的深度提升到了19层,并且在当年的ImageNet大赛中的定位问题中获得了第一名的好成绩。整个网络向人们证明了我们是可以用很小的卷积核取得很好地效果,前提是我们要把网络的层数加深,这也论证了我们要想提高整个神经网络的模型效果,一个较为有效的方法便是将它的深度加深,虽然计算量会大大提高,但是整个复杂度也上升了,更能解决复杂的问题。虽然VGG网络已经诞生好几年了,但是很多其他网络上效果并不是很好地情况下,VGG有时候还能够发挥它的优势,让人有意想不到的收获。
与AlexNet网络非常类似,VGG共有五个卷积层,并且每个卷积层之后都有一个池化层。当时在ImageNet大赛中,作者分别尝试了六种网络结构。这六种结构大致相同,只是层数不同,少则11层,多达19层。网络结构的输入是大小为224*224的RGB图像,最终将分类结果输出。当然,在输入网络时,图片要进行预处理。
VGG网络相比AlexNet网络,在网络的深度以及宽度上做了一定的拓展,具体的卷积运算还是与AlexNet网络类似。我们主要说明一下VGG网络所做的改进。第一点,由于很多研究者发现归一化层的效果并不是很好,而且占用了大量的计算资源,所以在VGG网络中作者取消了归一化层;第二点,VGG网络用了更小的3x3的卷积核,而两个连续的3x3的卷积核相当于5x5的感受野,由此类推,三个3x3的连续的卷积核也就相当于7x7的感受野。这样的变化使得参数量更小,节省了计算资源,将资源留给后面的更深层次的网络。第三点是VGG网络中的池化层特征池化核改为了2x2,而在AlexNet网络中池化核为3x3。这三点改进无疑是使得整个参数运算量下降,这样我们在有限的计算平台上能够获得更多的资源留给更深层的网络。由于层数较多,卷积核比较小,这样使得整个网络的特征提取效果很好。其实由于VGG的层数较多,所以计算量还是相当大的,卷积层比较多成了它最显著的特点。另外,VGG网络的拓展性能比较突出,结构比较简洁,所以它的迁移性能比较好,迁移到其他数据集的时候泛化性能好。到现在为止,VGG网络还经常被用来提出特征。所以当现在很多较新的模型效果不好时,使用VGG可能会解决这些问题。
GoogleNet
谷歌于2014年Imagenet挑战赛(ILSVRC14)凭借GoogleNet再次斩获第一名。这个通过增加了神经网络的深度和宽度获得了更好地效果,在此过程中保证了计算资源的不变。这个网络论证了加大深度,宽度以及训练数据的增加是现有深度学习获得更好效果的主要方式。但是增加尺寸可能会带来过拟合的问题,因为深度与宽度的加深必然会带来过量的参数。此外,增加网络尺寸也带来了对计算资源侵占过多的缺点。为了保证计算资源充分利用的前提下去提高整个模型的性能,作者使用了Inception模型,这个模型在下图中有展示,可以看出这个有点像金字塔的模型在宽度上使用并联的不同大小的卷积核,增加了卷积核的输出宽度。因为使用了较大尺度的卷积核增加了参数。使用了1*1的卷积核就是为了使得参数的数量最少。
Inception模块
上图表格为网络分析图,第一行为卷积层,输入为224×224×3 ,卷积核为7x7,步长为2,padding为3,输出的维度为112×112×64,这里面的7x7卷积使用了 7×1 然后 1×7 的方式,这样便有(7+7)×64×3=2,688个参数。第二行为池化层,卷积核为3×33×3,滑动步长为2,padding为 1 ,输出维度:56×56×64,计算方式:1/2×(112+2×1?3+1)=56。第三行,第四行与第一行,第二行类似。第 5 行 Inception mole中分为4条支线,输入均为上层产生的 28×28×192 结果:第 1 部分,1×1 卷积层,输出大小为28×28×64;第 2 部分,先1×1卷积层,输出大小为28×28×96,作为输入进行3×3卷积层,输出大小为28×28×128;第 3部分,先1×1卷积层,输出大小为28×28×32,作为输入进行3×3卷积层,输出大小为28×28×32;而第3 部分3×3的池化层,输出大小为输出大小为28×28×32。第5行的Inception mole会对上面是个结果的输出结果并联,由此增加网络宽度。
ResNet
2015年ImageNet大赛中,MSRA何凯明团队的ResialNetworks力压群雄,在ImageNet的诸多领域的比赛中上均获得了第一名的好成绩,而且这篇关于ResNet的论文Deep Resial Learning for Image Recognition也获得了CVPR2016的最佳论文,实至而名归。
上文介绍了的VGG以及GoogleNet都是增加了卷积神经网络的深度来获得更好效果,也让人们明白了网络的深度与广度决定了训练的效果。但是,与此同时,宽度与深度加深的同时,效果实际会慢慢变差。也就是说模型的层次加深,错误率提高了。模型的深度加深,以一定的错误率来换取学习能力的增强。但是深层的神经网络模型牺牲了大量的计算资源,学习能力提高的同时不应当产生比浅层神经网络更高的错误率。这个现象的产生主要是因为随着神经网络的层数增加,梯度消失的现象就越来越明显。所以为了解决这个问题,作者提出了一个深度残差网络的结构Resial:
上图就是残差网络的基本结构,可以看出其实是增加了一个恒等映射,将原本的变换函数H(x)转换成了F(x)+x。示意图中可以很明显看出来整个网络的变化,这样网络不再是简单的堆叠结构,这样的话便很好地解决了由于网络层数增加而带来的梯度原来越不明显的问题。所以这时候网络可以做得很深,到目前为止,网络的层数都可以上千层,而能够保证很好地效果。并且,这样的简单叠加并没有给网络增加额外的参数跟计算量,同时也提高了网络训练的效果与效率。
在比赛中,为了证明自己观点是正确的,作者控制变量地设计几个实验。首先作者构建了两个plain网络,这两个网络分别为18层跟34层,随后作者又设计了两个残差网络,层数也是分别为18层和34层。然后对这四个模型进行控制变量的实验观察数据量的变化。下图便是实验结果。实验中,在plain网络上观测到明显的退化现象。实验结果也表明,在残差网络上,34层的效果明显要好于18层的效果,足以证明残差网络随着层数增加性能也是增加的。不仅如此,残差网络的在更深层的结构上收敛性能也有明显的提升,整个实验大为成功。
除此之外,作者还做了关于shortcut方式的实验,如果残差网络模块的输入输出维度不一致,我们如果要使维度统一,必须要对维数较少的进行増维。而增维的最好效果是用0来填充。不过实验数据显示三者差距很小,所以线性投影并不是特别需要。使用0来填充维度同时也保证了模型的复杂度控制在比较低的情况下。
随着实验的深入,作者又提出了更深的残差模块。这种模型减少了各个层的参数量,将资源留给更深层数的模型,在保证复杂度很低的情况下,模型也没有出现梯度消失很明显的情况,因此目前模型最高可达1202层,错误率仍然控制得很低。但是层数如此之多也带来了过拟合的现象,不过诸多研究者仍在改进之中,毕竟此时的ResNet已经相对于其他模型在性能上遥遥领先了。
残差网络的精髓便是shortcut。从一个角度来看,也可以解读为多种路径组合的一个网络。如下图:
ResNet可以做到很深,但是从上图中可以体会到,当网络很深,也就是层数很多时,数据传输的路径其实相对比较固定。我们似乎也可以将其理解为一个多人投票系统,大多数梯度都分布在论文中所谓的effective path上。
DenseNet
在Resnet模型之后,有人试图对ResNet模型进行改进,由此便诞生了ResNeXt模型。
这是对上面介绍的ResNet模型结合了GoogleNet中的inception模块思想,相比于Resnet来说更加有效。随后,诞生了DenseNet模型,它直接将所有的模块连接起来,整个模型更加简单粗暴。稠密相连成了它的主要特点。
我们将DenseNet与ResNet相比较:
从上图中可以看出,相比于ResNet,DenseNet参数量明显减少很多,效果也更加优越,只是DenseNet需要消耗更多的内存。
总结
上面介绍了卷积神经网络发展史上比较著名的一些模型,这些模型非常经典,也各有优势。在算力不断增强的现在,各种新的网络训练的效率以及效果也在逐渐提高。从收敛速度上看,VGG>Inception>DenseNet>ResNet,从泛化能力来看,Inception>DenseNet=ResNet>VGG,从运算量看来,Inception<DenseNet< ResNet<VGG,从内存开销来看,Inception<ResNet< DenseNet<VGG。在本次研究中,我们对各个模型均进行了分析,但从效果来看,ResNet效果是最好的,优于Inception,优于VGG,所以我们第四章实验中主要采用谷歌的Inception模型,也就是GoogleNet。
③ 神经网络ART1模型
一、ART1模型概述
自适应共振理论(Adaptive Resonance Theory)简称ART,是于1976年由美国Boston大学S.Grossberg提出来的。
这一理论的显著特点是,充分利用了生物神经细胞之间自兴奋与侧抑制的动力学原理,让输入模式通过网络双向连接权的识别与比较,最后达到共振来完成对自身的记忆,并以同样的方法实现网络的回想。当提供给网络回想的是一个网络中记忆的、或是与已记忆的模式十分相似的模式时,网络将会把这个模式回想出来,提出正确的分类。如果提供给网络回想的是一个网络中不存在的模式,则网络将在不影响已有记忆的前提下,将这一模式记忆下来,并将分配一个新的分类单元作为这一记忆模式的分类标志。
S.Grossberg和G.A.Carpenter经过多年研究和不断发展,至今已提出了ART1,ART2和ART3三种网络结构。
ART1网络处理双极型(或二进制)数据,即观察矢量的分量是二值的,它只取0或1。
二、ART1模型原理
ART1网络是两层结构,分输入层(比较层)和输出层(识别层)。从输入层到输出层由前馈连接权连接,从输出层到输入层由反馈连接权连接。
设网络输入层有N个神经元,网络输出层有M个神经元,二值输入模式和输出向量分别为:Xp=(
ART1网络的学习及工作过程,是通过反复地将输入学习模式由输入层向输出层自下而上的识别和由输出层向输入层自上而下的比较过程来实现的。当这种自下而上的识别和自上而下的比较达到共振,即输出向量可以正确反映输入学习模式的分类,且网络原有记忆没有受到不良影响时,网络对一个输入学习模式的记忆分类则告完成。
ART1网络的学习及工作过程,可以分为初始化阶段、识别阶段、比较阶段和探寻阶段。
1.初始化阶段
ART1网络需要初始化的参数主要有3个:
即W=(wnm)N×M,T=(tnm)N×M和ρ。
反馈连接权T=(tnm)N×M在网络的整个学习过程中取0或1二值形式。这一参数实际上反映了输入层和输出层之间反馈比较的范围或强度。由于网络在初始化前没有任何记忆,相当于一张白纸,即没有选择比较的余的。因此可将T的元素全部设置为1,即
tnm=1,n=1,2,…,N,m=1,2,…,M。(1)
这意味着网络在初始状态时,输入层和输出层之间将进行全范围比较,随着学习过程的深入,再按一定规则选择比较范围。
前馈连接权W=(wnm)N×M在网络学习结束后,承担着对学习模式的记忆任务。在对W初始化时,应该给所有学习模式提供一个平等竞争的机会,然后通过对输入模式的竞争,按一定规则调整W。W的初始值按下式设置:
中国矿产资源评价新技术与评价新模型
ρ称为网络的警戒参数,其取值范围为0<ρ≤1。
2.识别阶段
ART1网络的学习识别阶段发生在输入学习模式由输入层向输出层的传递过程中。在这一阶段,首先将一个输入学习模式Xp=(
中国矿产资源评价新技术与评价新模型
中国矿产资源评价新技术与评价新模型
中国矿产资源评价新技术与评价新模型
至此,网络的识别过程只是告一段落,并没有最后结束。此时,神经元m=g是否真正有资格代表对输入学习模式Xp的正确分类,还有待于下面的比较和寻找阶段来进一步确定。一般情况下需要对代表同一输入学习模式的分类结果的神经元进行反复识别。
3.比较阶段
ART1网络的比较阶段的主要职能是完成以下检查任务,每当给已学习结束的网络提供一个供识别的输入模式时,首先检查一下这个模式是否是已学习过的模式,如果是,则让网络回想出这个模式的分类结果;如果不是,则对这个模式加以记忆,并分配一个还没有利用过的输出层神经元来代表这个模式的分类结果。
具体过程如下:把由输出层每个神经元反馈到输入层的各个神经元的反馈连接权向量Tm=(t1m,t2m,…,tNm),m=1,2,…,M作为对已学习的输入模式的一条条记录,即让向量Tm=(t1m,t2m,…,tNm)与输出层第m个神经元所代表的某一学习输入模式Xp=(
当需要网络对某个输入模式进行回想时,这个输入模式经过识别阶段,竞争到神经元g作为自己的分类结果后,要检查神经元g反馈回来的向量Tg是否与输入模式相等。如果相等,则说明这是一个已记忆过的模式,神经元g代表了这个模式的分类结果,识别与比较产生了共振,网络不需要再经过寻找阶段,直接进入下一个输入模式的识别阶段;如果不相符,则放弃神经元g的分类结果,进入寻找阶段。
在比较阶段,当用向量Tg与输入模式XP进行比较时,允许二者之间有一定的差距,差距的大小由警戒参数ρ决定。
首先计算
中国矿产资源评价新技术与评价新模型
Cg表示向量Tg与输入模式XP的拟合度。
在式中,
当Tg=XP时,Cg=1。
当Cg≥ρ时,说明拟合度大于要求,没有超过警戒线。
以上两种情况均可以承认识别结果。
当Cg≠1且Cg>ρ时,按式(6)式(7)将前馈连接权Wg=(w1g,w2g,…,wNg)和反馈连接权Tg=(t1g,t2g,…,tNg)向着与XP更接近的方向调整。
中国矿产资源评价新技术与评价新模型
tng(t+1)=tng(t)*xn,n=1,2,…,N。(7)
当Cg<ρ时,说明拟合度小于要求,超过警戒线,则拒绝识别结果,将神经元g重新复位为0,并将这个神经元排除在下次识别范围之外,网络转入寻找阶段。
4.寻找阶段
寻找阶段是网络在比较阶段拒绝识别结果之后转入的一个反复探寻的阶段,在这一阶段中,网络将在余下的输出层神经元中搜索输入模式Xp的恰当分类。只要在输出向量Yp=(
三、总体算法
设网络输入层有N个神经元,网络输出层有M个神经元,二值输入模式和输出向量分别为:Xp=(
(1)网络初始化
tnm(0)=1,
中国矿产资源评价新技术与评价新模型
n=1,2,…,N,m=1,2,…,M。
0<ρ≤1。
(2)将输入模式Xp=(
(3)计算输出层各神经元输入加权和
中国矿产资源评价新技术与评价新模型
(4)选择XP的最佳分类结果
中国矿产资源评价新技术与评价新模型
令神经元g的输出为1。
(5)计算
中国矿产资源评价新技术与评价新模型
中国矿产资源评价新技术与评价新模型
判断
中国矿产资源评价新技术与评价新模型
当式(8)成立,转到(7),否则,转到(6)。
(6)取消识别结果,将输出层神经元g的输出值复位为0,并将这一神经元排除在下一次识别的范围之外,返回步骤(4)。当所有已利用过的神经元都无法满足式(8),则选择一个新的神经元作为分类结果,转到步骤(7)。
(7)承认识别结果,并按下式调整连接权
中国矿产资源评价新技术与评价新模型
tng(t+1)=tng(t)*xn,n=1,2,…,N。
(8)将步骤(6)复位的所有神经元重新加入识别范围之内,返回步骤(2)对下一模式进行识别。
(9)输出分类识别结果。
(10)结束。
四、实例
实例为ART1神经网络模型在柴北缘-东昆仑造山型金矿预测的应用。
1.建立综合预测模型
柴北缘—东昆仑地区位于青海省的西部,是中央造山带的西部成员——秦祁昆褶皱系的一部分,是典型的复合造山带(殷鸿福等,1998)。根据柴北缘—东昆仑地区地质概括以及造山型金矿成矿特点,选择与成矿相关密切的专题数据,建立柴北缘—东昆仑地区的综合信息找矿模型:
1)金矿重砂异常数据是金矿的重要找矿标志。
2)金矿水化异常数据是金矿的重要找矿标志。
3)金矿的化探异常数据控制金矿床的分布。
4)金矿的空间分布与通过该区的深大断裂有关。
5)研究区内断裂密集程度控制金矿的产出。
6)重力构造的存在与否是金矿存在的一个标志。
7)磁力构造线的存在也是金矿存在的一个重要标志。
8)研究区地质复杂程度也对金矿的产出具有重要的作用。
9)研究区存在的矿(化)点是一个重要的标志。
2.划分预测单元
预测工作是在单元上进行的,预测工作的结果是与单元有着较为直接的联系,在找矿模型指导下,以最大限度地反映成矿信息和预测单元面积最小为原则,通过对研究区内地质、地球物理、地球化学等的综合资料分析,对可能的成矿地段圈定了预测单元。采用网格化单元作为本次研究的预测单元,网格单元的大小是,40×40,将研究区划分成774个预测单元。
3.变量选择(表8-6)
4.ART1模型预测结果
ART1神经网络模型算法中,给定不同的阈值,将改变预测分类的结果。本次实验选取得阈值为ρ=0.41,系统根据此阈值进行计算获得计算结果,并通过将不同的分类结果赋予不同的颜色,最终获得ART模型预测单元的分类结果。分类的结果是形成29个类别。分类结果用不同的颜色表示,其具体结果地显示见图8-5。图形中颜色只代表类别号,不代表分类的好坏。将矿点专题图层叠加以后,可以看出,颜色为灰色的单元与矿的关系更为密切。
表8-6 预测变量标志的选择表
图8-5 东昆仑—柴北缘地区基于ARTL模型的金矿分类结果图
④ 一文看懂四种基本的神经网络架构
原文链接:
http://blackblog.tech/2018/02/23/Eight-Neural-Network/
更多干货就在我的个人博客 http://blackblog.tech 欢迎关注
刚刚入门神经网络,往往会对众多的神经网络架构感到困惑,神经网络看起来复杂多样,但是这么多架构无非也就是三类,前馈神经网络,循环网络,对称连接网络,本文将介绍四种常见的神经网络,分别是CNN,RNN,DBN,GAN。通过这四种基本的神经网络架构,我们来对神经网络进行一定的了解。
神经网络是机器学习中的一种模型,是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。
一般来说,神经网络的架构可以分为三类:
前馈神经网络:
这是实际应用中最常见的神经网络类型。第一层是输入,最后一层是输出。如果有多个隐藏层,我们称之为“深度”神经网络。他们计算出一系列改变样本相似性的变换。各层神经元的活动是前一层活动的非线性函数。
循环网络:
循环网络在他们的连接图中定向了循环,这意味着你可以按照箭头回到你开始的地方。他们可以有复杂的动态,使其很难训练。他们更具有生物真实性。
循环网络的目的使用来处理序列数据。在传统的神经网络模型中,是从输入层到隐含层再到输出层,层与层之间是全连接的,每层之间的节点是无连接的。但是这种普通的神经网络对于很多问题却无能无力。例如,你要预测句子的下一个单词是什么,一般需要用到前面的单词,因为一个句子中前后单词并不是独立的。
循环神经网路,即一个序列当前的输出与前面的输出也有关。具体的表现形式为网络会对前面的信息进行记忆并应用于当前输出的计算中,即隐藏层之间的节点不再无连接而是有连接的,并且隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的输出。
对称连接网络:
对称连接网络有点像循环网络,但是单元之间的连接是对称的(它们在两个方向上权重相同)。比起循环网络,对称连接网络更容易分析。这个网络中有更多的限制,因为它们遵守能量函数定律。没有隐藏单元的对称连接网络被称为“Hopfield 网络”。有隐藏单元的对称连接的网络被称为玻尔兹曼机。
其实之前的帖子讲过一些关于感知机的内容,这里再复述一下。
首先还是这张图
这是一个M-P神经元
一个神经元有n个输入,每一个输入对应一个权值w,神经元内会对输入与权重做乘法后求和,求和的结果与偏置做差,最终将结果放入激活函数中,由激活函数给出最后的输出,输出往往是二进制的,0 状态代表抑制,1 状态代表激活。
可以把感知机看作是 n 维实例空间中的超平面决策面,对于超平面一侧的样本,感知器输出 1,对于另一侧的实例输出 0,这个决策超平面方程是 w⋅x=0。 那些可以被某一个超平面分割的正反样例集合称为线性可分(linearly separable)样例集合,它们就可以使用图中的感知机表示。
与、或、非问题都是线性可分的问题,使用一个有两输入的感知机能容易地表示,而异或并不是一个线性可分的问题,所以使用单层感知机是不行的,这时候就要使用多层感知机来解决疑惑问题了。
如果我们要训练一个感知机,应该怎么办呢?
我们会从随机的权值开始,反复地应用这个感知机到每个训练样例,只要它误分类样例就修改感知机的权值。重复这个过程,直到感知机正确分类所有的样例。每一步根据感知机训练法则来修改权值,也就是修改与输入 xi 对应的权 wi,法则如下:
这里 t 是当前训练样例的目标输出,o 是感知机的输出,η 是一个正的常数称为学习速率。学习速率的作用是缓和每一步调整权的程度,它通常被设为一个小的数值(例如 0.1),而且有时会使其随着权调整次数的增加而衰减。
多层感知机,或者说是多层神经网络无非就是在输入层与输出层之间加了多个隐藏层而已,后续的CNN,DBN等神经网络只不过是将重新设计了每一层的类型。感知机可以说是神经网络的基础,后续更为复杂的神经网络都离不开最简单的感知机的模型,
谈到机器学习,我们往往还会跟上一个词语,叫做模式识别,但是真实环境中的模式识别往往会出现各种问题。比如:
图像分割:真实场景中总是掺杂着其它物体。很难判断哪些部分属于同一个对象。对象的某些部分可以隐藏在其他对象的后面。
物体光照:像素的强度被光照强烈影响。
图像变形:物体可以以各种非仿射方式变形。例如,手写也可以有一个大的圆圈或只是一个尖头。
情景支持:物体所属类别通常由它们的使用方式来定义。例如,椅子是为了让人们坐在上面而设计的,因此它们具有各种各样的物理形状。
卷积神经网络与普通神经网络的区别在于,卷积神经网络包含了一个由卷积层和子采样层构成的特征抽取器。在卷积神经网络的卷积层中,一个神经元只与部分邻层神经元连接。在CNN的一个卷积层中,通常包含若干个特征平面(featureMap),每个特征平面由一些矩形排列的的神经元组成,同一特征平面的神经元共享权值,这里共享的权值就是卷积核。卷积核一般以随机小数矩阵的形式初始化,在网络的训练过程中卷积核将学习得到合理的权值。共享权值(卷积核)带来的直接好处是减少网络各层之间的连接,同时又降低了过拟合的风险。子采样也叫做池化(pooling),通常有均值子采样(mean pooling)和最大值子采样(max pooling)两种形式。子采样可以看作一种特殊的卷积过程。卷积和子采样大大简化了模型复杂度,减少了模型的参数。
卷积神经网络由三部分构成。第一部分是输入层。第二部分由n个卷积层和池化层的组合组成。第三部分由一个全连结的多层感知机分类器构成。
这里举AlexNet为例:
·输入:224×224大小的图片,3通道
·第一层卷积:11×11大小的卷积核96个,每个GPU上48个。
·第一层max-pooling:2×2的核。
·第二层卷积:5×5卷积核256个,每个GPU上128个。
·第二层max-pooling:2×2的核。
·第三层卷积:与上一层是全连接,3*3的卷积核384个。分到两个GPU上个192个。
·第四层卷积:3×3的卷积核384个,两个GPU各192个。该层与上一层连接没有经过pooling层。
·第五层卷积:3×3的卷积核256个,两个GPU上个128个。
·第五层max-pooling:2×2的核。
·第一层全连接:4096维,将第五层max-pooling的输出连接成为一个一维向量,作为该层的输入。
·第二层全连接:4096维
·Softmax层:输出为1000,输出的每一维都是图片属于该类别的概率。
卷积神经网络在模式识别领域有着重要应用,当然这里只是对卷积神经网络做了最简单的讲解,卷积神经网络中仍然有很多知识,比如局部感受野,权值共享,多卷积核等内容,后续有机会再进行讲解。
传统的神经网络对于很多问题难以处理,比如你要预测句子的下一个单词是什么,一般需要用到前面的单词,因为一个句子中前后单词并不是独立的。RNN之所以称为循环神经网路,即一个序列当前的输出与前面的输出也有关。具体的表现形式为网络会对前面的信息进行记忆并应用于当前输出的计算中,即隐藏层之间的节点不再无连接而是有连接的,并且隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的输出。理论上,RNN能够对任何长度的序列数据进行处理。
这是一个简单的RNN的结构,可以看到隐藏层自己是可以跟自己进行连接的。
那么RNN为什么隐藏层能够看到上一刻的隐藏层的输出呢,其实我们把这个网络展开来开就很清晰了。
从上面的公式我们可以看出,循环层和全连接层的区别就是循环层多了一个权重矩阵 W。
如果反复把式2带入到式1,我们将得到:
在讲DBN之前,我们需要对DBN的基本组成单位有一定的了解,那就是RBM,受限玻尔兹曼机。
首先什么是玻尔兹曼机?
[图片上传失败...(image-d36b31-1519636788074)]
如图所示为一个玻尔兹曼机,其蓝色节点为隐层,白色节点为输入层。
玻尔兹曼机和递归神经网络相比,区别体现在以下几点:
1、递归神经网络本质是学习一个函数,因此有输入和输出层的概念,而玻尔兹曼机的用处在于学习一组数据的“内在表示”,因此其没有输出层的概念。
2、递归神经网络各节点链接为有向环,而玻尔兹曼机各节点连接成无向完全图。
而受限玻尔兹曼机是什么呢?
最简单的来说就是加入了限制,这个限制就是将完全图变成了二分图。即由一个显层和一个隐层构成,显层与隐层的神经元之间为双向全连接。
h表示隐藏层,v表示显层
在RBM中,任意两个相连的神经元之间有一个权值w表示其连接强度,每个神经元自身有一个偏置系数b(对显层神经元)和c(对隐层神经元)来表示其自身权重。
具体的公式推导在这里就不展示了
DBN是一个概率生成模型,与传统的判别模型的神经网络相对,生成模型是建立一个观察数据和标签之间的联合分布,对P(Observation|Label)和 P(Label|Observation)都做了评估,而判别模型仅仅而已评估了后者,也就是P(Label|Observation)。
DBN由多个限制玻尔兹曼机(Restricted Boltzmann Machines)层组成,一个典型的神经网络类型如图所示。这些网络被“限制”为一个可视层和一个隐层,层间存在连接,但层内的单元间不存在连接。隐层单元被训练去捕捉在可视层表现出来的高阶数据的相关性。
生成对抗网络其实在之前的帖子中做过讲解,这里在说明一下。
生成对抗网络的目标在于生成,我们传统的网络结构往往都是判别模型,即判断一个样本的真实性。而生成模型能够根据所提供的样本生成类似的新样本,注意这些样本是由计算机学习而来的。
GAN一般由两个网络组成,生成模型网络,判别模型网络。
生成模型 G 捕捉样本数据的分布,用服从某一分布(均匀分布,高斯分布等)的噪声 z 生成一个类似真实训练数据的样本,追求效果是越像真实样本越好;判别模型 D 是一个二分类器,估计一个样本来自于训练数据(而非生成数据)的概率,如果样本来自于真实的训练数据,D 输出大概率,否则,D 输出小概率。
举个例子:生成网络 G 好比假币制造团伙,专门制造假币,判别网络 D 好比警察,专门检测使用的货币是真币还是假币,G 的目标是想方设法生成和真币一样的货币,使得 D 判别不出来,D 的目标是想方设法检测出来 G 生成的假币。
传统的判别网络:
生成对抗网络:
下面展示一个cDCGAN的例子(前面帖子中写过的)
生成网络
判别网络
最终结果,使用MNIST作为初始样本,通过学习后生成的数字,可以看到学习的效果还是不错的。
本文非常简单的介绍了四种神经网络的架构,CNN,RNN,DBN,GAN。当然也仅仅是简单的介绍,并没有深层次讲解其内涵。这四种神经网络的架构十分常见,应用也十分广泛。当然关于神经网络的知识,不可能几篇帖子就讲解完,这里知识讲解一些基础知识,帮助大家快速入(zhuang)门(bi)。后面的帖子将对深度自动编码器,Hopfield 网络长短期记忆网络(LSTM)进行讲解。
⑤ 神经网络:欠拟合和过拟合
以我们前面讲述的线性回归为例,比如我们在训练集上训练出最优的模型,但是当我们将其使用到测试集时,测试的误差很大,我们该怎么办?
我们一般采取的措施主要包括以下6种:
增加训练样本的数目(该方法适用于过拟合现象时,解决高方差。一般都是有效的,但是代价较大,如果下面的方法有效,可以优先采用下面的方式);
尝试减少特征的数量(该方法适用于过拟合现象时,解决高方差);
尝试获得更多的特征(该方法适用于欠拟合现象时,解决高偏差);
尝试增加多项式特征(该方法适用于欠拟合现象时,解决高偏差);
尝试减小正则化程度λ(该方法适用于欠拟合现象时,解决高偏差);
尝试增加正则化程度λ(该方法适用于过拟合现象时,解决高方差);
上面的方法不是随机选择,是在合适的情况下(过拟合和欠拟合)选择合适的方法,对于怎么判断一个模型是过拟合还是欠拟合,我们会在下面给出一些机器学习诊断法。
如何对一个假设进行评估?
我们前面在讲述线性回归和逻辑回归时,只是注重针对训练数据集训练出一个最优的参数,但是我们训练处的模型对于测试集的性能好坏我们没有进行判断,我们只是训练的模型使得损失函数最小,我们前面也讨论过,在训练数据集上损失函数最小并不能代表对于给定的测试数据,测试数据的评估非常准确,比如过拟合现象发生时,那我们如何评价一个假设的好坏呢?
主要的方法包括两种:
1.对于简答的模型,我们可以采用将hθ(x)的图像画出,来判断模型的好坏,但是这种方法对于特征变量不是一个时,这种方法很难实现或者不可能实现。例如我们曾经看到过这样的图像,可以通过hθ(x)的图像明显可以看出,该假设存在着过拟合现象。
2.另一种评估假设的方法为:将原来的数据集分为训练集和测试集,一般我们是从原来的数据集中随机选取(保证训练集和测试集中都含有各种类型的数据)70%的数据作为训练集,剩下的30%的样本作为测试集。同时这种将原来数据集划分为训练集和测试集的方法可以用于帮助特征选择、多项式次数的选择以及正则化参数的选择等。数据集划分的过程如下:
以上面数据集为例,选取前7个为训练集,后3个为测试集。用前7个数据集做训练训练出一个最优的模型,评价这个训练出的模型的好坏可以使用测试集来进行判断,判断的标准可以使用测试集的损失函数来进行定量的衡量。
对于回归问题,测试集的损失函数计算公式如下:
Jtest(θ)=12mtest∑i=1mtest(hθ(x(i)test)−y(i)test)2
而对于分类问题,测试集的损失函数计算公式如下:
这种测量方式,如果测试样本损失函数很大,则代表训练出的模型泛化能力不好。
对于分类问题,还有另外一种测量的方式,称为误分类率,它对于每一个测试样本进行计算,计算的公式如下:
error=1mtest∑i=1mtesterr(hθ(x(i)test),y(i)))
其中,
模型的选择和交叉验证集:
上述我们是在模型选择好了之后进行训练的,也就是上述我们都是确定了假设进行训练的,但是我们怎么对模型进行选择呢,这一节我们来讨论一下模型的选择,以及和交叉验证集的关系。
模型选择主要包括以下内容:1.怎样选择正确的特征来构造学习算法?2.怎样选择学习算法中正则化参数λ?等问题。
首先我们结合一个例子来引出模型的选择和验证集:
例如我们有上面十个模型,我们对于给定的数据集选择哪种模型呢?按照我们上面讨论的将数据集划分为训练集和测试集,使用训练集对上述模型进行训练,然后使用测试集来进行选择最佳的模型,比如最优的为第五个模型,但是这并不能衡量这个模型的泛化能力,因为测试集已经用于选择最优的模型,这个模型对于其他未知数据的泛化能力还是未知的。
所以针对上述问题我们可以将数据集划分为训练集、交叉验证集和测试集。一般情况下,训练集占总样本的60%,交叉验证集占20%,测试集占20%。其中训练集用于训练,交叉验证集用于选择最优的模型,测试集用于测试模型的泛化能力。
模型选择方法为:
1. 使用训练集训练10个模型;
2. 用10个模型分别对交叉验证集计算出交叉验证误差(代价函数的值),其中计算公式为:
3. 选取交叉验证误差最小的模型作为选择的模型;
4. 用测试集对选择出的模型计算泛化能力(测试样本的损失函数),计算公式如上文中讨论的一样。
假设对诊断偏差和方差(即过拟合还是欠拟合)的影响
利用上述方法学习到的算法性能不好一般会有两种情况:
1.会出现过拟合,也就是所谓的方差很大;
2.会出现欠拟合,也就是所谓的偏差很大;
首先应该确定算法性能的不好,是由哪种原因造成的,然后针对不同的情况采取不同的改进策略,可以有效的改进当前的算法。下面我们来讲述一下怎么判断是过拟合还是欠拟合。
以下面例子为例,来进行讨论:
我们可以通过绘制出训练集的代价函数和交叉验证验证集的代价函数与方次d的关系来进行判断是上述哪种情况的一种:
对于训练集,当d较小时,模型的拟合程度不是很好,所以训练样本集的代价函数比较大;随着d的增加,模型的拟合程度不断提高,代价函数不断的减小;
对于交叉验证集,由于d比较小时,模型的拟合程度不是很好,对于新来的样本预测结果会偏差很大,所以交叉验证集的代价函数在初始阶段会很大,而随着d的增加会出现一个比较好的方次d,使得模型的拟合程度最佳,同时对于新来的样本泛化能力很强,所以会有一个代价函数最小的点出现(该转折点即是模型开始由欠拟合转向过拟合的点),随后随着d的增加,由于过拟合,会存在对新的样本预测结果不良的现象,所以代价函数会逐渐增大。
当我们绘制出上述曲线时,我们就可以判断出什么时候是过拟合什么时候欠拟合,判断的标准如下:
1. 当训练误差与交叉验证集误差接近时,并且都很大时,该模型高偏差(欠拟合);
2. 当训练误差远小于验证集误差时,并且训练误差很小时,该模型高方差(过拟合)。
判断出该模型是过拟合或者欠拟合之后,然后使用上述提到的过拟合和欠拟合的解决方法,对算法进行改进。
正则化对偏差和方差的影响
我们前面讲述过正则化可以有效的处理过拟合现象,但是我们上述所说的处理过拟合是在合适的λ情况下,那么λ值的大小对模型的性能是怎样影响的呢?我们采用上述与方次d对性能的影响相同的方式来分析λ的值对性能的影响。
我们首先选择一系列的λ值,通常λ的选择是0~10之间呈现二倍关系的值(如:0,0.01,0.02,0.04,0.08,0.15,0.32,0.64,1.28,5.26,5.12,10)
构建方式如下:
选择λ的方法如下:
1.使用训练集训练处12个不同程度正则化模型;
2.用12个模型分别对交叉验证集计算出交叉验证误差;
3.选择得出交叉验证误差最小的模型;
4.运用步骤3选出的模型对测试集计算得出推广误差
我们同样可以将训练集和交叉验证集模型的代价函数与λ的值绘制在一张图上。对于训练集、验证集和测试集的代价函数计算公式为:
需要注意的是,当计算训练集、交叉验证集和测试集误差时,不计算正则项,然后绘制出训练集和交叉验证集代价函数与λ值的关系,如下图所示:
1. 当λ较小时,训练误差较小(过拟合)而交叉验证集误差较大;
2. 随着λ的增加(从过拟合到欠拟合的过程),训练集误差逐渐增大(欠拟合),而交叉验证集误差则是先减小后增大。
学习曲线
学习曲线也是一种可以判断算法是否处于过拟合还是欠拟合的情况,学习曲线是将训练集误差和交叉验证集误差作为训练集实例数量(m)的函数绘制的图像。学习曲先不仅可以帮助我们是不是处于过拟合或者欠拟合,它还可以帮助我们判断是否为了提高算法的性能需要我们收集多的数据。
假设我们有100行数据,我们从第一行数据开始,逐渐增加数据进行训练,得到每次训练数据的代价函数值。当数据很少时,训练模型能够非常完美的拟合很少的数据,但是训练出的模型却不能泛化其他的数据,所以当数据很少时,训练集的代价函数很小,但是交叉验证集的代价函数很大,随着样本的增加,训练集的代价函数逐渐增大,交叉验证集的代价函数逐渐减小。绘制的曲线如下图所示:
1. 如何用学习曲线识别欠拟合:
假设我们的模型处于欠拟合的情况下,拟合曲线如下图所示:
我们可以看出,无论我们怎样增加样本数据,误差都不会有很大改观。同时在欠拟合的情况下,会出现随着样本的增加,训练集代价函数和交叉验证集代价函数都很大的情况,在这种情况下,就没有必要花费时间在收集数据上了,同时这也是一种判断模型是过拟合还是欠拟合的方法。
2. 如何使用学习曲线识别过拟合:
假设我们有一个非常高次的多项式模型(比如最高次项达到100次),并且正则化非常小时,从下图可以看出,当交叉验证集误差远大于训练集误差时,往训练集增加更多数据可以提高模型的效果。
对于过拟合现象时,会出现训练集代价函数一直都很小(虽然是增加的趋势),但是验证集的损失函数会很大(虽然是减小的趋势),同时训练集代价函数和验证集代价函数相差会很大,可以使用这种方法来判断该模型处于过拟合阶段。
对于神经网络我们在讨论一下过拟合和欠拟合现象:
使用较小的神经网络,类似于参数较少的情况,容易导致高偏差和欠拟合,但是计算代价小;使用较大的神经网络,类似于参数较多的情况,容易导致高方差和过拟合,虽然计算代价比较大,但是可以通过正则化手段来调整而更加适应数据。
对于 神经网络的模型选择 :我们一般选择较大的神经网络并采用正则化处理,而不会选择较小的神经网络。
对于 神经网络隐藏层的层数选择 ,一般我们从一层开始逐渐增加层数,为了更好的选择出最佳的层数,可以针对不同隐藏层层数的神经网络进行训练,然后选择交叉验证集代价函数最小的神经网络。
⑥ 神经网络BP模型
一、BP模型概述
误差逆传播(Error Back-Propagation)神经网络模型简称为BP(Back-Propagation)网络模型。
Pall Werbas博士于1974年在他的博士论文中提出了误差逆传播学习算法。完整提出并被广泛接受误差逆传播学习算法的是以Rumelhart和McCelland为首的科学家小组。他们在1986年出版“Parallel Distributed Processing,Explorations in the Microstructure of Cognition”(《并行分布信息处理》)一书中,对误差逆传播学习算法进行了详尽的分析与介绍,并对这一算法的潜在能力进行了深入探讨。
BP网络是一种具有3层或3层以上的阶层型神经网络。上、下层之间各神经元实现全连接,即下层的每一个神经元与上层的每一个神经元都实现权连接,而每一层各神经元之间无连接。网络按有教师示教的方式进行学习,当一对学习模式提供给网络后,神经元的激活值从输入层经各隐含层向输出层传播,在输出层的各神经元获得网络的输入响应。在这之后,按减小期望输出与实际输出的误差的方向,从输入层经各隐含层逐层修正各连接权,最后回到输入层,故得名“误差逆传播学习算法”。随着这种误差逆传播修正的不断进行,网络对输入模式响应的正确率也不断提高。
BP网络主要应用于以下几个方面:
1)函数逼近:用输入模式与相应的期望输出模式学习一个网络逼近一个函数;
2)模式识别:用一个特定的期望输出模式将它与输入模式联系起来;
3)分类:把输入模式以所定义的合适方式进行分类;
4)数据压缩:减少输出矢量的维数以便于传输或存储。
在人工神经网络的实际应用中,80%~90%的人工神经网络模型采用BP网络或它的变化形式,它也是前向网络的核心部分,体现了人工神经网络最精华的部分。
二、BP模型原理
下面以三层BP网络为例,说明学习和应用的原理。
1.数据定义
P对学习模式(xp,dp),p=1,2,…,P;
输入模式矩阵X[N][P]=(x1,x2,…,xP);
目标模式矩阵d[M][P]=(d1,d2,…,dP)。
三层BP网络结构
输入层神经元节点数S0=N,i=1,2,…,S0;
隐含层神经元节点数S1,j=1,2,…,S1;
神经元激活函数f1[S1];
权值矩阵W1[S1][S0];
偏差向量b1[S1]。
输出层神经元节点数S2=M,k=1,2,…,S2;
神经元激活函数f2[S2];
权值矩阵W2[S2][S1];
偏差向量b2[S2]。
学习参数
目标误差ϵ;
初始权更新值Δ0;
最大权更新值Δmax;
权更新值增大倍数η+;
权更新值减小倍数η-。
2.误差函数定义
对第p个输入模式的误差的计算公式为
中国矿产资源评价新技术与评价新模型
y2kp为BP网的计算输出。
3.BP网络学习公式推导
BP网络学习公式推导的指导思想是,对网络的权值W、偏差b修正,使误差函数沿负梯度方向下降,直到网络输出误差精度达到目标精度要求,学习结束。
各层输出计算公式
输入层
y0i=xi,i=1,2,…,S0;
隐含层
中国矿产资源评价新技术与评价新模型
y1j=f1(z1j),
j=1,2,…,S1;
输出层
中国矿产资源评价新技术与评价新模型
y2k=f2(z2k),
k=1,2,…,S2。
输出节点的误差公式
中国矿产资源评价新技术与评价新模型
对输出层节点的梯度公式推导
中国矿产资源评价新技术与评价新模型
E是多个y2m的函数,但只有一个y2k与wkj有关,各y2m间相互独立。
其中
中国矿产资源评价新技术与评价新模型
则
中国矿产资源评价新技术与评价新模型
设输出层节点误差为
δ2k=(dk-y2k)·f2′(z2k),
则
中国矿产资源评价新技术与评价新模型
同理可得
中国矿产资源评价新技术与评价新模型
对隐含层节点的梯度公式推导
中国矿产资源评价新技术与评价新模型
E是多个y2k的函数,针对某一个w1ji,对应一个y1j,它与所有的y2k有关。因此,上式只存在对k的求和,其中
中国矿产资源评价新技术与评价新模型
则
中国矿产资源评价新技术与评价新模型
设隐含层节点误差为
中国矿产资源评价新技术与评价新模型
则
中国矿产资源评价新技术与评价新模型
同理可得
中国矿产资源评价新技术与评价新模型
4.采用弹性BP算法(RPROP)计算权值W、偏差b的修正值ΔW,Δb
1993年德国 Martin Riedmiller和Heinrich Braun 在他们的论文“A Direct Adaptive Method for Faster Backpropagation Learning:The RPROP Algorithm”中,提出Resilient Backpropagation算法——弹性BP算法(RPROP)。这种方法试图消除梯度的大小对权步的有害影响,因此,只有梯度的符号被认为表示权更新的方向。
权改变的大小仅仅由权专门的“更新值”
中国矿产资源评价新技术与评价新模型
其中
权更新遵循规则:如果导数是正(增加误差),这个权由它的更新值减少。如果导数是负,更新值增加。
中国矿产资源评价新技术与评价新模型
RPROP算法是根据局部梯度信息实现权步的直接修改。对于每个权,我们引入它的
各自的更新值
于在误差函数E上的局部梯度信息,按照以下的学习规则更新
中国矿产资源评价新技术与评价新模型
其中0<η-<1<η+。
在每个时刻,如果目标函数的梯度改变它的符号,它表示最后的更新太大,更新值
为了减少自由地可调参数的数目,增大倍数因子η+和减小倍数因子η–被设置到固定值
η+=1.2,
η-=0.5,
这两个值在大量的实践中得到了很好的效果。
RPROP算法采用了两个参数:初始权更新值Δ0和最大权更新值Δmax
当学习开始时,所有的更新值被设置为初始值Δ0,因为它直接确定了前面权步的大小,它应该按照权自身的初值进行选择,例如,Δ0=0.1(默认设置)。
为了使权不至于变得太大,设置最大权更新值限制Δmax,默认上界设置为
Δmax=50.0。
在很多实验中,发现通过设置最大权更新值Δmax到相当小的值,例如
Δmax=1.0。
我们可能达到误差减小的平滑性能。
5.计算修正权值W、偏差b
第t次学习,权值W、偏差b的的修正公式
W(t)=W(t-1)+ΔW(t),
b(t)=b(t-1)+Δb(t),
其中,t为学习次数。
6.BP网络学习成功结束条件每次学习累积误差平方和
中国矿产资源评价新技术与评价新模型
每次学习平均误差
中国矿产资源评价新技术与评价新模型
当平均误差MSE<ε,BP网络学习成功结束。
7.BP网络应用预测
在应用BP网络时,提供网络输入给输入层,应用给定的BP网络及BP网络学习得到的权值W、偏差b,网络输入经过从输入层经各隐含层向输出层的“顺传播”过程,计算出BP网的预测输出。
8.神经元激活函数f
线性函数
f(x)=x,
f′(x)=1,
f(x)的输入范围(-∞,+∞),输出范围(-∞,+∞)。
一般用于输出层,可使网络输出任何值。
S型函数S(x)
中国矿产资源评价新技术与评价新模型
f(x)的输入范围(-∞,+∞),输出范围(0,1)。
f′(x)=f(x)[1-f(x)],
f′(x)的输入范围(-∞,+∞),输出范围(0,
一般用于隐含层,可使范围(-∞,+∞)的输入,变成(0,1)的网络输出,对较大的输入,放大系数较小;而对较小的输入,放大系数较大,所以可用来处理和逼近非线性的输入/输出关系。
在用于模式识别时,可用于输出层,产生逼近于0或1的二值输出。
双曲正切S型函数
中国矿产资源评价新技术与评价新模型
f(x)的输入范围(-∞,+∞),输出范围(-1,1)。
f′(x)=1-f(x)·f(x),
f′(x)的输入范围(-∞,+∞),输出范围(0,1]。
一般用于隐含层,可使范围(-∞,+∞)的输入,变成(-1,1)的网络输出,对较大的输入,放大系数较小;而对较小的输入,放大系数较大,所以可用来处理和逼近非线性的输入/输出关系。
阶梯函数
类型1
中国矿产资源评价新技术与评价新模型
f(x)的输入范围(-∞,+∞),输出范围{0,1}。
f′(x)=0。
类型2
中国矿产资源评价新技术与评价新模型
f(x)的输入范围(-∞,+∞),输出范围{-1,1}。
f′(x)=0。
斜坡函数
类型1
中国矿产资源评价新技术与评价新模型
f(x)的输入范围(-∞,+∞),输出范围[0,1]。
中国矿产资源评价新技术与评价新模型
f′(x)的输入范围(-∞,+∞),输出范围{0,1}。
类型2
中国矿产资源评价新技术与评价新模型
f(x)的输入范围(-∞,+∞),输出范围[-1,1]。
中国矿产资源评价新技术与评价新模型
f′(x)的输入范围(-∞,+∞),输出范围{0,1}。
三、总体算法
1.三层BP网络(含输入层,隐含层,输出层)权值W、偏差b初始化总体算法
(1)输入参数X[N][P],S0,S1,f1[S1],S2,f2[S2];
(2)计算输入模式X[N][P]各个变量的最大值,最小值矩阵 Xmax[N],Xmin[N];
(3)隐含层的权值W1,偏差b1初始化。
情形1:隐含层激活函数f( )都是双曲正切S型函数
1)计算输入模式X[N][P]的每个变量的范围向量Xrng[N];
2)计算输入模式X的每个变量的范围均值向量Xmid[N];
3)计算W,b的幅度因子Wmag;
4)产生[-1,1]之间均匀分布的S0×1维随机数矩阵Rand[S1];
5)产生均值为0,方差为1的正态分布的S1×S0维随机数矩阵Randnr[S1][S0],随机数范围大致在[-1,1];
6)计算W[S1][S0],b[S1];
7)计算隐含层的初始化权值W1[S1][S0];
8)计算隐含层的初始化偏差b1[S1];
9))输出W1[S1][S0],b1[S1]。
情形2:隐含层激活函数f( )都是S型函数
1)计算输入模式X[N][P]的每个变量的范围向量Xrng[N];
2)计算输入模式X的每个变量的范围均值向量Xmid[N];
3)计算W,b的幅度因子Wmag;
4)产生[-1,1]之间均匀分布的S0×1维随机数矩阵Rand[S1];
5)产生均值为0,方差为1的正态分布的S1×S0维随机数矩阵Randnr[S1][S0],随机数范围大致在[-1,1];
6)计算W[S1][S0],b[S1];
7)计算隐含层的初始化权值W1[S1][S0];
8)计算隐含层的初始化偏差b1[S1];
9)输出W1[S1][S0],b1[S1]。
情形3:隐含层激活函数f( )为其他函数的情形
1)计算输入模式X[N][P]的每个变量的范围向量Xrng[N];
2)计算输入模式X的每个变量的范围均值向量Xmid[N];
3)计算W,b的幅度因子Wmag;
4)产生[-1,1]之间均匀分布的S0×1维随机数矩阵Rand[S1];
5)产生均值为0,方差为1的正态分布的S1×S0维随机数矩阵Randnr[S1][S0],随机数范围大致在[-1,1];
6)计算W[S1][S0],b[S1];
7)计算隐含层的初始化权值W1[S1][S0];
8)计算隐含层的初始化偏差b1[S1];
9)输出W1[S1][S0],b1[S1]。
(4)输出层的权值W2,偏差b2初始化
1)产生[-1,1]之间均匀分布的S2×S1维随机数矩阵W2[S2][S1];
2)产生[-1,1]之间均匀分布的S2×1维随机数矩阵b2[S2];
3)输出W2[S2][S1],b2[S2]。
2.应用弹性BP算法(RPROP)学习三层BP网络(含输入层,隐含层,输出层)权值W、偏差b总体算法
函数:Train3BP_RPROP(S0,X,P,S1,W1,b1,f1,S2,W2,b2,f2,d,TP)
(1)输入参数
P对模式(xp,dp),p=1,2,…,P;
三层BP网络结构;
学习参数。
(2)学习初始化
1)
2)各层W,b的梯度值
(3)由输入模式X求第一次学习各层输出y0,y1,y2及第一次学习平均误差MSE
(4)进入学习循环
epoch=1
(5)判断每次学习误差是否达到目标误差要求
如果MSE<ϵ,
则,跳出epoch循环,
转到(12)。
(6)保存第epoch-1次学习产生的各层W,b的梯度值
(7)求第epoch次学习各层W,b的梯度值
1)求各层误差反向传播值δ;
2)求第p次各层W,b的梯度值
3)求p=1,2,…,P次模式产生的W,b的梯度值
(8)如果epoch=1,则将第epoch-1次学习的各层W,b的梯度值
(9)求各层W,b的更新
1)求权更新值Δij更新;
2)求W,b的权更新值
3)求第epoch次学习修正后的各层W,b。
(10)用修正后各层W、b,由X求第epoch次学习各层输出y0,y1,y2及第epoch次学习误差MSE
(11)epoch=epoch+1,
如果epoch≤MAX_EPOCH,转到(5);
否则,转到(12)。
(12)输出处理
1)如果MSE<ε,
则学习达到目标误差要求,输出W1,b1,W2,b2。
2)如果MSE≥ε,
则学习没有达到目标误差要求,再次学习。
(13)结束
3.三层BP网络(含输入层,隐含层,输出层)预测总体算法
首先应用Train3lBP_RPROP( )学习三层BP网络(含输入层,隐含层,输出层)权值W、偏差b,然后应用三层BP网络(含输入层,隐含层,输出层)预测。
函数:Simu3lBP( )。
1)输入参数:
P个需预测的输入数据向量xp,p=1,2,…,P;
三层BP网络结构;
学习得到的各层权值W、偏差b。
2)计算P个需预测的输入数据向量xp(p=1,2,…,P)的网络输出 y2[S2][P],输出预测结果y2[S2][P]。
四、总体算法流程图
BP网络总体算法流程图见附图2。
五、数据流图
BP网数据流图见附图1。
六、实例
实例一 全国铜矿化探异常数据BP 模型分类
1.全国铜矿化探异常数据准备
在全国铜矿化探数据上用稳健统计学方法选取铜异常下限值33.1,生成全国铜矿化探异常数据。
2.模型数据准备
根据全国铜矿化探异常数据,选取7类33个矿点的化探数据作为模型数据。这7类分别是岩浆岩型铜矿、斑岩型铜矿、矽卡岩型、海相火山型铜矿、陆相火山型铜矿、受变质型铜矿、海相沉积型铜矿,另添加了一类没有铜异常的模型(表8-1)。
3.测试数据准备
全国化探数据作为测试数据集。
4.BP网络结构
隐层数2,输入层到输出层向量维数分别为14,9、5、1。学习率设置为0.9,系统误差1e-5。没有动量项。
表8-1 模型数据表
续表
5.计算结果图
如图8-2、图8-3。
图8-2
图8-3 全国铜矿矿床类型BP模型分类示意图
实例二 全国金矿矿石量品位数据BP 模型分类
1.模型数据准备
根据全国金矿储量品位数据,选取4类34个矿床数据作为模型数据,这4类分别是绿岩型金矿、与中酸性浸入岩有关的热液型金矿、微细浸染型型金矿、火山热液型金矿(表8-2)。
2.测试数据准备
模型样本点和部分金矿点金属量、矿石量、品位数据作为测试数据集。
3.BP网络结构
输入层为三维,隐层1层,隐层为三维,输出层为四维,学习率设置为0.8,系统误差1e-4,迭代次数5000。
表8-2 模型数据
4.计算结果
结果见表8-3、8-4。
表8-3 训练学习结果
表8-4 预测结果(部分)
续表
⑦ 神经网络参数如何确定
神经网络各个网络参数设定原则:
①、网络节点 网络输入层神经元节点数就是系统的特征因子(自变量)个数,输出层神经元节点数就是系统目标个数。隐层节点选按经验选取,一般设为输入层节点数的75%。如果输入层有7个节点,输出层1个节点,那么隐含层可暂设为5个节点,即构成一个7-5-1 BP神经网络模型。在系统训练时,实际还要对不同的隐层节点数4、5、6个分别进行比较,最后确定出最合理的网络结构。
②、初始权值的确定 初始权值是不应完全相等的一组值。已经证明,即便确定 存在一组互不相等的使系统误差更小的权值,如果所设Wji的的初始值彼此相等,它们将在学习过程中始终保持相等。故而,在程序中,我们设计了一个随机发生器程序,产生一组一0.5~+0.5的随机数,作为网络的初始权值。
③、最小训练速率 在经典的BP算法中,训练速率是由经验确定,训练速率越大,权重变化越大,收敛越快;但训练速率过大,会引起系统的振荡,因此,训练速率在不导致振荡前提下,越大越好。因此,在DPS中,训练速率会自动调整,并尽可能取大一些的值,但用户可规定一个最小训练速率。该值一般取0.9。
④、动态参数 动态系数的选择也是经验性的,一般取0.6 ~0.8。
⑤、允许误差 一般取0.001~0.00001,当2次迭代结果的误差小于该值时,系统结束迭代计算,给出结果。
⑥、迭代次数 一般取1000次。由于神经网络计算并不能保证在各种参数配置下迭代结果收敛,当迭代结果不收敛时,允许最大的迭代次数。
⑦、Sigmoid参数 该参数调整神经元激励函数形式,一般取0.9~1.0之间。
⑧、数据转换。在DPS系统中,允许对输入层各个节点的数据进行转换,提供转换的方法有取对数、平方根转换和数据标准化转换。
(7)神经网络模型的选择扩展阅读:
神经网络的研究内容相当广泛,反映了多学科交叉技术领域的特点。主要的研究工作集中在以下几个方面:
1.生物原型
从生理学、心理学、解剖学、脑科学、病理学等方面研究神经细胞、神经网络、神经系统的生物原型结构及其功能机理。
2.建立模型
根据生物原型的研究,建立神经元、神经网络的理论模型。其中包括概念模型、知识模型、物理化学模型、数学模型等。
3.算法
在理论模型研究的基础上构作具体的神经网络模型,以实现计算机模拟或准备制作硬件,包括网络学习算法的研究。这方面的工作也称为技术模型研究。
神经网络用到的算法就是向量乘法,并且广泛采用符号函数及其各种逼近。并行、容错、可以硬件实现以及自我学习特性,是神经网络的几个基本优点,也是神经网络计算方法与传统方法的区别所在。
⑧ 神经网络Kohonen模型
一、Kohonen模型概述
1981年芬兰赫尔辛基大学Kohonen教授提出了一个比较完整的,分类性能较好的自组织特征影射(Self-Organizing Feature Map)人工神经网络(简称SOM网络)方案。这种网络也称为Kohonen特征影射网络。
这种网络模拟大脑神经系统自组织特征影射功能,它是一种竞争式学习网络,在学习中能无监督地进行自组织学习。
二、Hohonen模型原理
1.概述
SOM网络由输入层和竞争层组成。输入层神经元数为N,竞争层由M=R×C神经元组成,构成一个二维平面阵列或一个一维阵列(R=1)。输入层和竞争层之间实现全互连接。
SOM网络的基本思想是网络竞争层各神经元竞争对输入模式的响应机会,最后仅有一个神经元成为竞争的胜者,并对那些与获胜神经元有关的各连接权朝着更有利于它竞争的方向调整,这一获胜神经元就表示对输入模式的分类。
SOM算法是一种无教师示教的聚类方法,它能将任意输入模式在输出层映射成一维或二维离散图形,并保持其拓扑结构不变。即在无教师的情况下,通过对输入模式的自组织学习,在竞争层将分类结果表示出来。此外,网络通过对输入模式的反复学习,可以使连接权矢量空间分布密度与输入模式的概率分布趋于一致,即连接权矢量空间分布能反映输入模式的统计特征。
2.网络权值初始化
因为网络输入很可能出现在中间区,因此,如果竞争层的初始权值选择在输入空间的中间区,则其学习效果会更加有效。
3.邻域距离矩阵
SOM网络中的神经元可以按任何方式排列,这种排列可以用表示同一层神经元间的Manhattan距离的邻域距离矩阵D来描述,而两神经元的Manhattan距离是指神经元坐标相减后的矢量中,其元素绝对值之和。
4.Kohonen竞争学习规则
设SOM网络的输入模式为Xp=(
Wj=(wj1,wj2,…,wjN),j=1,2,…,M。
Kohonen网络自组织学习过程包括两个部分:一是选择最佳匹配神经元,二是权矢量自适应变化的更新过程。
确定输入模式Xp与连接权矢量Wj的最佳匹配的评价函数是两个矢量的欧氏距离最小,即
g,确定获胜神经元g。
dg=mjin(dj),j=1,2,…,M。
求输入模式Xp在竞争层的获胜神经元g及其在邻域距离nd内的神经元的输出。
中国矿产资源评价新技术与评价新模型
dgm为邻域距离矩阵D的元素,为竞争层中获胜神经元g与竞争层中其它神经元的距离。
求输入模式Xp在竞争层的获胜神经元g及其在邻域距离nd内的神经元的权值修正值。
中国矿产资源评价新技术与评价新模型
式中:i=1,2,…,N;
lr为学习速率;
t为学习循环次数。
Δwjt(t+1)的其余元素赋值为0。
进行连接权的调整
wji(t+1)=wji(t)+Δwji(t+1)。
5.权值学习中学习速率及邻域距离的更新
(1)SOM网络的学习过程分为两个阶段
第一阶段为粗学习与粗调整阶段。在这一阶段内,连接权矢量朝着输入模式的方向进行调整,神经元的权值按照期望的方向在适应神经元位置的输入空间建立次序,大致确定输入模式在竞争层中所对应的影射位置。一旦各输入模式在竞争层有了相对的影射位置后,则转入精学习与细调整阶段,即第二阶段。在这一阶段内,网络学习集中在对较小的范围内的连接权进行调整,神经元的权值按照期望的方向在输入空间伸展,直到保留到他们在粗调整阶段所建立的拓扑次序。
学习速率应随着学习的进行不断减小。
(2)邻域的作用与更新
在SOM网络中,脑神经细胞接受外界信息的刺激产生兴奋与抑制的变化规律是通过邻域的作用来体现的邻域规定了与获胜神经元g连接的权向量Wg进行同样调整的其他神经元的范围。在学习的最初阶段,邻域的范围较大,随着学习的深入进行,邻域的范围逐渐缩小。
(3)学习速率及邻域距离的更新
在粗调整阶段,
学习参数初始化
最大学习循环次数 MAX_STEP1=1000,
粗调整阶段学习速率初值 LR1=1.4,
细调整阶段学习速率初值 LR2=0.02,
最大邻域距离 MAX_ND1=Dmax,
Dmax为邻域距离矩阵D的最大元素值。
粗调阶段
学习循环次数step≤MAX_STEP1,
学习速率lr从LR1调整到LR2,
邻域距离nd 从MAX_ND1调整到1,
求更新系数r,
r=1-step/MAX_STEP1,
邻域距离nd更新,
nd=1.00001+(MAX_ND1-1)×r。
学习速率lr更新,
lr=LR2+(LR1-LR2)×r。
在细调整阶段,
学习参数初始化,
最大学习循环次数 MAX_STEP2=2000,
学习速率初值 LR2=0.02,
最大邻域距离 MAX_ND2=1。
细调阶段
MAX_STEP1<step≤MAX_STEP1+MAX_STEP2,
学习速率lr慢慢从LR2减少,
邻域距离nd设为1,
邻域距离nd更新,
nd=MAX_ND2+0.00001。
学习速率lr更新,
lr=LR2×(MAX_STEP1/step)。
6.网络的回想——预测
SOM网络经学习后按照下式进行回想:
中国矿产资源评价新技术与评价新模型
Yj=0,j=1,2,…,M,(j≠g)。
将需要分类的输入模式提供给网络的输入层,按照上述方法寻找出竞争层中连接权矢量与输入模式最接近的神经元,此时神经元有最大的激活值1,而其它神经元被抑制而取0值。这时神经元的状态即表示对输入模式的分类。
三、总体算法
1.SOM权值学习总体算法
(1)输入参数X[N][P]。
(2)构造权值矩阵W[M][N]。
1)由X[N][P]求Xmid[N],
2)由Xmid[N]构造权值W[M][N]。
(3)构造竞争层。
1)求竞争层神经元数M,
2)求邻域距离矩阵D[M][M],
3)求矩阵D[M][M]元素的最大值Dmax。
(4)学习参数初始化。
(5)学习权值W[M][N]。
1)学习参数学习速率lr,邻域距离nd更新,分两阶段:
(i)粗调阶段更新;
(ii)细调阶段更新。
2)求输入模式X[N][p]在竞争层的获胜神经元win[p]。
(i)求X[N][p]与W[m][N]的欧氏距离dm;
(ii)按距离dm最短,求输入模式X[N][p]在竞争层的获胜神经元win[p]。
3)求输入模式X[N][p]在竞争层的获胜神经元win[p]及其在邻域距离nd内的神经元的输出Y[m][p]。
4)求输入模式X[N][p]在竞争层的获胜神经元win[p]及其
在邻域距离nd内的神经元的权值修正值ΔW[m][N],
从而得到输入模式X[N][p]产生的权值修正值ΔW[M][N]。
5)权值修正W[M][N]=W[M][N]+ΔW[M][N]。
6)学习结束条件:
(i)学习循环到MAX_STEP次;
(ii)学习速率lr达到用户指定的LR_MIN;
(iii)学习时间time达到用户指定的TIME_LIM。
(6)输出。
1)学习得到的权值矩阵W[M][N];
2)邻域距离矩阵D[M][M]。
(7)结束。
2.SOM预测总体算法
(1)输入需分类数据X[N][P],邻域距离矩阵D[M][M]。
(2)求输入模式X[N][p]在竞争层的获胜神经元win[p]。
1)求X[N][p]与W[m][N]的欧氏距离dm;
2)按距离dm最短,求输入模式X[N][p]在竞争层的获胜神经元win[p]。
(3)求获胜神经元win[p]在竞争层排列的行列位置。
(4)输出与输入数据适应的获胜神经元win[p]在竞争层排列的行列位置,作为分类结果。
(5)结束。
四、总体算法流程图
Kohonen总体算法流程图见附图4。
五、数据流图
Kohonen数据流图见附图4。
六、无模式识别总体算法
假定有N个样品,每个样品测量M个变量,则有原始数据矩阵:
X=(xij)N×M,i=1,2,…,N,j=1,2,…,M。
(1)原始数据预处理
X=(xij)N×M处理为Z=(zij)N×M,
分3种处理方法:
1)衬度;
2)标准化;
3)归一化。
程序默认用归一化处理。
(2)构造Kohonen网
竞争层与输入层之间的神经元的连接权值构成矩阵WQ×M。
WQ×M初始化。
(3)进入Kohonen网学习分类循环,用epoch记录循环次数,epoch=1。
(4)在每个epoch循环中,对每个样品n(n=1,2,…,N)进行分类。从1个样品n=1开始。
(5)首先计算输入层的样品n的输入数据znm(m=1,2,…,M)与竞争层Q个神经元对应权值wqm的距离。
(6)寻找输入层的样品n与竞争层Q个神经元的最小距离,距离最小的神经元Win[n]为获胜神经元,将样品n归入获胜神经元Win[n]所代表的类型中,从而实现对样品n的分类。
(7)对样品集中的每一个样品进行分类:
n=n+1。
(如果n≤N,转到5。否则,转到8。)
(8)求分类后各神经元所对应的样品的变量的重心,用对应的样品的变量的中位数作为重心,用对应的样品的变量的重心来更新各神经元的连接权值。
(9)epoch=epoch+1;
一次学习分类循环结束。
(10)如果满足下列两个条件之一,分类循环结束,转到11;
否则,分类循环继续进行,转到4。
1)全部样品都固定在某个神经元上,不再改变了;
2)学习分类循环达到最大迭代次数。
(11)输出:
1)N个样品共分成多少类,每类多少样品,记录每类的样品编号;
2)如果某类中样品个数超过1个,则输出某类的样品原始数据的每个变量的均值、最小值、最大值和均方差;
3)如果某类中样品个数为1个,则输出某类的样品原始数据的各变量值;
4)输出原始数据每个变量(j=1,2,…,M)的均值,最小值,最大值和均方差。
(12)结束。
七、无模式识别总体算法流程图
Kohonen无模式总体算法流程图见附图5。
⑨ 人工神经网络的网络模型
人工神经网络模型主要考虑网络连接的拓扑结构、神经元的特征、学习规则等。目前,已有近40种神经网络模型,其中有反传网络、感知器、自组织映射、Hopfield网络、波耳兹曼机、适应谐振理论等。根据连接的拓扑结构,神经网络模型可以分为:
网络内神经元间有反馈,可以用一个无向的完备图表示。这种神经网络的信息处理是状态的变换,可以用动力学系统理论处理。系统的稳定性与联想记忆功能有密切关系。Hopfield网络、波耳兹曼机均属于这种类型。