2017-11-22 01:28
人工神经网络是进行机器学习的基础,模仿生物神经元的工作方式构建神经网络,让计算机拥有“自我学习“的能力。人工神经网络的诞生具有革命性的意义,”自我学习“是其最大的优点,通过适当的训练,它语音识别、图像识别、人机对话、大数据方面发挥的了巨大的作用。
神经网络的概念早在数十年前就已经提出来了,但限于当时计算机的计算能力,还无法应用。近些年来,随着计算机的计算能力大幅提升,机器学习兴起,导致神经网络的使用日益广泛。
目前最常用的构建神经网络的方法就是反向传播,当程序运算过一遍后,查看计算出的结果与理想结果之间的误差,通过反向传播算法让计算机优化人工神经元之间的权值(连接强度),然后再次计算结果,不断循环这一过程,经过一定次数的循环后,获得解将非常接近理想结果。
这是一个非常简单的神经网络,分为三层,输入层(包含两个神经元i1、i2,截距项b1),隐含层(包含两个神经元h1、h2,截距项b2),输出层(o1,o2)。假设输入3对应输出映射0.2,输入8对应的是输出映射0.9。
令i1=3,i2=8
o1=0.2,o2=0.9
我们把权值用w表示,通常我们会随机初始化权值。
初始化权值w1=0.15,w2=0.2,w3=0.25,w4=0.3,w5=0.4,w6=0.45,w7=0.5,w8=0.55。
初始化b1=0.35,b2=0.6
首先进行前向传播:
输入层——》隐含层——》输出层,下图为本例中神经元h1的结构:
隐含层****计算net:
neth1=w1*i1+w2*i2+b1
neth2=w3*i1+w4*i2+b1
计算out:
outh1=sigma(neth1)
outh2=sigma(neth2)
(其中sigma函数是常用的激活函数之一,此外还有tanh(),sigma(x)=1/(1+e^(-x)))
输出层****计算net:
neto1=w5*outh1+w6*outh2+b2
neto2=w7*outh1+w8*outh2+b2
计算out:
outo1=sigma(neto1)
outo2=sigma(neto2)
计算总误差:
Eo1=0.5*(o1-outo1)*(o1-outo1)
Eo2=0.5*(o2-outo2)*(o2-outo2)
Etotal=Eo1+Eo2
(其中Etotal代表总误差,Eo1代表神经元o1输出的值与理想值o1得误差,Eo2代表神经元o2输出的值与理想值o2得误差)
反向传播:
delta_o1=-(o1-outo1)*sigma_da(outo1)
delta_o2=-(o2-outo2)*sigma_da(outo2)
(delta_o1,delta_o2分别为neth1,neth2值对整体的误差)
dw1=sigma_da(outh1)*i1*(delta_o1*w5+delta_o2*w7)
dw2=sigma_da(outh1)*i2*(delta_o1*w5+delta_o2*w7)
dw3=sigma_da(outh2)*i1*(delta_o1*w6+delta_o2*w8)
dw4=sigma_da(outh2)*i2*(delta_o1*w6+delta_o2*w8)
(dw1,dw2,dw3,dw4分别是w1~w4对整体的偏导)
w1-=alpha*dw1
w2-=alpha*dw2
w3-=alpha*dw3
w4-=alpha*dw4
(w1~w4为更新后的权值,alpha是学习率,自定义)
dw5=delta_o1*outh1
dw6=delta_o1*outh2
dw7=delta_o2*outh1
dw8=delta_o2*outh2
(dw5~dw8为w5~w8对整体的偏导)
w5-=alpha*dw5
w6-=alpha*dw6
w7-=alpha*dw7
w8-=alpha*dw8
(w5~w8为更新后的权值)
循环一次:
outo1=0.802745098356
outo2=0.830938316533
(训练一次后,结果与理想值还有很大误差,理想值:o1=0.2,o2=0.9)
循环40次:
outo1=0.222343700362
outo2=0.879218779053
(训练40次后,结果已经比较接近理想值了,理想值:o1=0.2,o2=0.9)
循环200次:
outo1=0.199989353333
outo2=0.898828168138
(训练200次后,结果变得极其接近理想值,最大误差不超过0.002,理想值:o1=0.2,o2=0.9)
现在,这个简单的神经网络已可以根据输入值3、8, 预测出输出值0.2、0.9。如果还想要处理更加复杂的神经网络,就需要增加更多的隐含层,这就叫深度学习,通过更多层的神经网络来实现机器学习。目前国际上的一些神经网络已经达到了一千多层。
下面是其中一些公式的推导: