机器学习笔记——7 神经网络(一个BP神经网络的python实现:手写数字识别)

机器学习笔记——7 神经网络(一个BP神经网络的python实现:手写数字识别)

本篇介绍神经网络,首先讨论神经网络的基本架构,然后讨论神经网络是依据什么进行学习的,进一步总结神经网络并讨论它的优势。
然后我们具体的讨论BP神经网络,它基于梯度迭代算法,我们讨论它的递推式和梯度更新公式,最后利用理论上的讨论结果,用python具体地实现一个识别手写数字的BP神经网络。

神经网络的基本架构

  1. 网络层(layer):从左往右,从0开始计数,第0层称为输入层,第 l − 1 l-1 l1层称为输出层,中间的层称为隐藏层(hidden layer)。
  2. 神经元(neuron),即节点,可以理解为一个潜在特征。
  3. 激活函数(activation function),一般是非线性函数,常用的有sigmod函数,ReLU函数,softmax函数。
    对于中间层的节点,可以选用sigmoid函数。对于输出层的节点,根据输出值的特点,选用相应的函数作为输出层节点的激活函数,如果是二分类的,选用sigmoid函数,多分类的选用softmax函数,只取非负值的选用ReLU函数。

神经网络的学习方式

神经网络寻找潜在特征的方式,实际上通过训练确定下各个连接权重值。这些权重值即是整个网络的参数。
训练参数的方法跟前面广义线性模型的训练方式是一样的,即是从某一准则确定出一个损失函数,最值化这个损失函数,在这个过程中调整网络的参数。
一般而言,可以从两个角度来确定损失函数:

  1. 几何角度。通过输出值与样本标签值的距离定义损失函数,当我们采用欧式距离时,损失函数为: J ( θ ) = 1 2 m ∑ i = 1 m ( y ( i ) − y ^ ( i ) ) 2 J(\theta) = \frac{1}{2m}\sum_{i = 1}^{m}(y^{(i)}-\hat{y}^{(i)})^2 J(θ)=2m1i=1m(y(i)y^(i))2
  2. 概率角度。如果输出值可以看成一个概率值,那么可以根据似然原理定义损失函数。对于k分类标签值,对数似然函数为: ℓ ( θ ) = 1 m ∑ i = 1 m ∑ j = 1 k y j ( i ) l o g ( y ^ j ( i ) ) \ell(\theta) =\frac{1}{m} \sum_{i = 1}^{m}\sum_{j = 1}^{k}y_j^{(i)}log(\hat{y}_j^{(i)}) (θ)=m1i=1mj=1kyj(i)log(y^j(i))

利用迭代算法来最值化损失函数,在BP神经网络中,用的是梯度迭代法。

梯度下降的拓展算法momentum

momentum算法是在梯度下降的基础上,对每一轮的梯度进行指数平滑,类似时间序列中的指数平滑模型。
数学上的表达式为

  • v d W [ t ] = β v d W [ t ] + ( 1 − β ) ∂ J ∂ W [ t ] v_{dW^{[t]}} = \beta v_{dW^{[t]}} + (1-\beta)\frac{\partial J}{\partial W^{[t]}} vdW[t]=βvdW[t]+(1β)W[t]J
  • W [ t ] = W [ t ] − α v d W [ t ] W^{[t]} =W^{[t]} - \alpha v_{dW^{[t]}} W[t]=W[t]αvdW[t]

分析可知,在该优化算法中,每一次梯度不仅结合了本轮计算的结果,还指数地综合了以往各轮的梯度,因此使得本轮的梯度更加地稳定。另外,可以形象地从物理学上运动和动量的角度理解该算法,所以算法称为momentum。

This technique has signi cantly helped neural networks during the training phase.——cs229, Andrew Ng

神经网络的创新之处

传统统计分析方法的局限

由于人类观测手段的有限,有很多决定输出的特征我们无从观测。因此我们只能将我们能观测到属性作为问题的输入。而从输入的各个属性,到我们期望的输出之间,隐藏着一些我们无法直接观测的特征,称之为潜在特征或潜在因子。
利用传统的多元统计方法因子分析,我们有可能通过主成分的旋转找到一些有实际意义的成分,从而提取出有可理解的特征。但是大多数问题,我们根本无从分析这些“有意义”的特征,无论是特征的形式及其量化形式。

神经网络(neural network)的优势

神经网络的优势在于它有较大规模数量的参数,这为各种可能的潜在特征映射提供了可能。但与此同时,神经网络需要数量更多的样本,以此来保证找到可靠的潜在特征(intermediate features)。神经网络通过输入端的属性值与输出端的标签值,来矫正和寻找潜在特征,这是神经网络一个很神奇的地方,这种方式也称为端到端学习 (end-to-end learining)。通过学习的成果,我们可能发现一些特征,但是这些特征不一定具备“可理解”的意义。
从退化的角度上看,神经网络是广义线性模型的一个扩展,其中激活函数所起的作用类似于广义线性模型中的典则相应函数

BP(后向传播)神经网络

BP神经网络利用梯度下降法来最值化损失函数,因此其重点在于梯度表达式的推导。好的记号可以让大脑思考得更为高效,因此引入记号如下:

记号(notation)
  • g [ i ] g^{[i]} g[i]:第 i i i层的激活函数
  • z j [ i ] z^{[i]}_j zj[i]:第 i i i层第 j j j个节点的值
  • a j [ i ] a^{[i]}_j aj[i]:第 i i i层第 j j
  • 2
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值