神经网络与深度学习笔记——神经网络与梯度下降

来源:互联网 发布:如何申请淘宝小号流程 编辑:程序博客网 时间:2024/05/21 10:08

利用神经网络进行手写体识别


两种重要的人工神经网络:感知机,sigmoid神经元。
神经网络标准学习算法:sgd(随机梯度下降)

Perceptrons(感知机)

二进制输入x1,x2,x3...

perceptrons
sum=jwjxj,其中wj是对应输入项的权重。

output={0,1,if sumthresholdif sum>threshold

当我们将多个感知机级联起来,能得到一个更加丰富的函数网络,如下:

multiple perceptrons

层级的关系,可以使得输入到输出的决策趋于抽象,从而在最终层得出一个抽象层次最高的决策。
当我们将感知机的公式进行简化:

f(wx+b)={0,1,if wx+b0if wx+b>0
x=一条样本输入的行向量,w=感知机权重的列向量,b=threshold

感知机不仅可以权衡输入,还能实现电路逻辑函数。

nand

上图实现了nand(与非)逻辑运算。因此感知机网络可以像普通逻辑电路一样实现任意的函数。下图是对运算符的实现:

xor
xor

到目前为止,感知机网络似乎就是另一种形式的逻辑电路。但是,利用学习算法,我们可以借助外部的数据刺激,使网络中的参数自动地调整,以得到期望的函数结果。

Sigmoid 神经元

期待的学习算法:对参数进行细微的调整Δw,得到输出结果细微的改变Δoutput,根据Δoutput继续对参数进行细微的调整,直到最优。

这里写图片描述

通过上述感知机的定义公式,可以发现,limz0+f(z)limz0f(z),即f(z)z=0处间断,无法满足上述期待。
我们需要一个连续的函数才能获得上述性质。

引入Sigmoid神经元:
形式上与感知机类似,而输入x1,x2,x3...范围变为(0,1)的实数且f(x)=σ(wx+b),其中σ(z)1/1+ez,也叫logistic函数。

这里写图片描述

这里写图片描述
这里写图片描述
由于sigmoid函数的连续性,我们可以得到:

Δoutput=joutputwjΔwj+outputbΔb

性质
1.感知机网络中,wb同时乘以c(c>0),网络的功能不改变。
2.若网络中任一神经元的输入wx+b0,在输入值x不变,c+的情况下,sigmoid神经网络与原感知机网络功能一致。

f(wx+b)f(c(wx+b))limc+σ(c(wx+b))

神经网络结构

MLP(sigmoid 神经元):

这里写图片描述

mnist手写字体识别:

这里写图片描述

28*28的输入灰度图片
cost函数:均方误差

C(w,b)12nxy(x)a2.

y(x)是正确的标签值。
事实上,10分类仅仅需要4位二进制即可完全表示,但实验显示10个神经元的输出层效果优于4个神经元。这在一定程度上可以理解为神经网络在完成图像识别的基础上完成了一个编码器的工作。

这里写图片描述

以梯度下降的方式学习

由于自变量数量众多,利用微积分求多元函数的极值方法求解最优值相对复杂,因此需要新的解决方案。
C(w,b)仅为二元函数,则其图像如下:

这里写图片描述

由多元函数的微分我们可以得到:

ΔCCv1Δv1+Cv2Δv2.

我们似乎能够以偏导数为标准来设定Δv1Δv2,使得ΔC
C
C(Cv1,Cv2)T

因此,
ΔCCΔv
,此时我们取Δv=ηC,可使得函数C沿着梯度方向不断减少。最终的迭代公式为:
vv=vηC.

当维度推广至多维时,上述迭代仍然成立。另外,梯度方向也是函数变化最快的方向,在相同的步长下,梯度下降是最优的。
wkblwk=wkηCwkbl=blηCbl.

由上述cost函数公式可知C=1nxCx,Cxy(x)a22,n为样本数。当n较大时,计算速度较慢,于是引入随机梯度下降。具体做法:每次随机的从总样本中选取m个样本,并以X1,X2,,Xmm<=n作为迭代的数据,其中mbatch的大小。直至总样本被全部使用,完成一个epoch
C1mj=1mCXj

此时,迭代公式如下:
wkblwk=wkηmjCXjwkbl=blηmjCXjbl,

例如训练集大小n=60000,当m=10,在估算梯度向量时,可提升6000倍速度。当m=1时,神经网络每次仅根据一个样本进行迭代,此时称其为在线学习或者增量学习。

阅读全文
0 0
原创粉丝点击