规范化
系列博客是博主学习神经网络中相关的笔记和一些个人理解,仅为作者记录笔记之用,不免有很多细节不对之处。
本节,我们会讨论一种最为常用的规范化(regularization)手段——有时候被称为权重衰减(weight-decay)或者L2规范化(regularization)。L2规范化的想法是增加一个额外的项到代价函数上,这个项叫做规范化项。下面是\规范化的的交叉熵代价函数:
(1)C=−1n∑xj[yjln⁡ajL+(1−yj)ln⁡(1−ajL)]+λ2n∑ww2" role="presentation" style="position: relative;">C=−1n∑xj[yjlnaLj+(1−yj)ln(1−aLj)]+λ2n∑ww2(1)
其中第一项就是常规的交叉熵的表达式。第二项是所有权重的
平方和,即规范化项。然后使用一个因子
λ/2n" role="presentation" style="position: relative;">
λ/2n 进行量化调整,其中
λ>0" role="presentation" style="position: relative;">
λ>0 可以称为
规范化参数,而
n" role="presentation" style="position: relative;">
n 就是训练集合的大小。我们会在后面讨论
λ" role="presentation" style="position: relative;">
λ 的选择策略。需要注意的是,规范化项里面并不包含偏置,这点我们后面也会再讲述。
当然,对其他的代价函数也可以进行规范化,例如二次代价函数。类似的规范化形式如下:
(2)C=12n∑x‖y−aL‖2+λ2n∑ww2" role="presentation" style="position: relative;">C=12n∑x‖y−aL‖2+λ2n∑ww2(2)
两者都可以写成这样:
(3)C=C0+λ2n∑ww2" role="presentation" style="position: relative;">C=C0+λ2n∑ww2(3)
其中
C0" role="presentation" style="position: relative;">
C0 是原始的代价函数。直觉地看,规则化的效果是让网络倾向于学习小一点的权重,其他的东西都一样的。在最小化代价函数时,大的权重只有能够给出原始代价足够的提升时才被允许。换言之,规范化可以当做一种寻找最小化权重和最小化原始代价函数的折中方法。这两部分之间相对的重要性就由
λ" role="presentation" style="position: relative;">
λ的值来控制了:
λ" role="presentation" style="position: relative;">
λ 越小,就越偏向于最小化原始代价函数,反之,越向于最小化权重。
更新方程
我们需要知道如何计算网络对权重和偏置的偏导数 ∂C/∂w" role="presentation" style="position: relative;">∂C/∂w 和 ∂C/∂b" role="presentation" style="position: relative;">∂C/∂b。对方程1 进行求偏导数得:
(3)∂C∂w=∂C0∂w+λnw" role="presentation" style="position: relative;">∂C∂w=∂C0∂w+λnw(3)
(4)∂C∂b=∂C0∂b" role="presentation" style="position: relative;">∂C∂b=∂C0∂b(4)
∂C0/∂w" role="presentation" style="position: relative;">
∂C0/∂w 和
∂C0/∂b" role="presentation" style="position: relative;">
∂C0/∂b 可以通过反向传播进行计算,我们看到其实计算规范化代价函数的梯度是很简单的:仅仅需要反向传播,然后加上
λnw" role="presentation" style="position: relative;">
λnw得到所有权重的偏导数。而偏置的偏导数没有变化,所以偏置的梯度下降学习规则不会发生变化:
(5)b→b−η∂C0∂b" role="presentation" style="position: relative;">b→b−η∂C0∂b(5)
权重的学习规则就变成:
(6)w→w−η∂C0∂w−ηλnw=(1−ηλn)w−η∂C0∂w" role="presentation" style="position: relative;">w→w−η∂C0∂w−ηλnw=(1−ηλn)w−η∂C0∂w(6)
除了多添加了一个因子
1−ηλn" role="presentation" style="position: relative;">
1−ηλn调整权重
w" role="presentation" style="position: relative;">
w,上式和通常的梯度下降学习规则相同。这种调整权重的方法有时被称为权重衰减}(weight-decay),因为它使得权重变小。粗看,这样会导致权重会不断下降到
0" role="presentation" style="position: relative;">
0,但实际不是这样的,
∂C0∂w" role="presentation" style="position: relative;">
∂C0∂w可能会让权重增加。
好了,这就是梯度下降工作的原理。
那么随机梯度呢?正如在没有规则化的随机梯度下降中,我们可以通过平均m" role="presentation" style="position: relative;">m个训练样本的小批量数据来估计∂C0/∂w" role="presentation" style="position: relative;">∂C0/∂w。随机梯度下降的规范化学习规则就变成
(7)w→(1−ηλn)w−ηm∑x∂Cx∂w" role="presentation" style="position: relative;">w→(1−ηλn)w−ηm∑x∂Cx∂w(7)
其中后一项是在训练样本的小批量数据x" role="presentation" style="position: relative;">x上进行的,而Cx" role="presentation" style="position: relative;">Cx是对每个训练样本的(无规范化的)代价。这其实和之前通常的随机梯度下降的规则是一样的,除了有一权重下降因子1−ηλn" role="presentation" style="position: relative;">1−ηλn。最后,为了完整,给出偏置的规范化学习规则。这当然是和我们之前的非规范化的情形一致了
(8)b→b−ηm∑x∂Cx∂b" role="presentation" style="position: relative;">b→b−ηm∑x∂Cx∂b(8)
这⾥求和也是在训练样本的⼩批量数据x" role="presentation" style="position: relative;">x上进⾏的。
测试
两种方案:
- ReLU激活函数+均方误差代价函数+L2规则化
- Sigmoid激活函数+交叉熵代价函数+L2规则化
第一种方案的的一个测例:epoch = 100, Mini_BATch_size = 100, eta = 1(学习速率), lAMDa = 5(lambda是关键词),网络结构 = [784,30,50,10]
最高识别率97.6%,加入规则化后能提高1%的识别率
第二种方案的的一个测例:epoch = 100, mini_batch_size = 100, eta = 1(学习速率), lamda = 5(lambda是关键词),网络结构 = [784,30,50,10]
提升效果有限,但是未达到97.5%
下面是利用 Michael Nielsen 的程序中network2进行的测试,epoch = 30, mini_batch_size = 10, eta = 0.5(学习速率), lamda = 5(lambda是关键词),网络结构 = [784,30,10]
下面是利用 Michael Nielsen 的程序中network2进行的测试,epoch = 100, mini_batch_size = 100, eta = 1 (学习速率), lamda = 5(lambda是关键词),网络结构 = [784,30,10]
本节代码可以在这里下载到。
相关阅读
C#总结---方法的out参数和ref参数
我们知道,在c#中,当我们在一个方法中想要访问另一个方法中的变量的时候,有两种解决方案---参数和返回值。但当需要返回多个值,并且是
Axure RP设计伸缩导航、遮罩弹窗、返回顶部的方法
以下几小教程使用的是Axure的动态面板来实现,内容简单,适合菜鸟查阅,老鸟可飘过,顺便帮忙点个赞哈/偷笑。一.伸缩/隐藏导航栏例如:鼠标
移动互联网APP推广的8大邪恶方法
小编按:小编只能说,都尼玛是人才啊…现在APP的火爆程度简直不亚于房地产,在移动互联网行业的影响下,大量的传统开发者进入APP的
Py之curses:curses库的简介、使用、安装方法详细攻略
Py之curses:curses库的简介、使用、安装方法详细攻略
目录
curses库简介
curses库安装
T1、直接命令法
T2、下载whl法
curses库
在进行软文推广代理和软文推广的时候,基本的方式方法要
互联网营销的现状非常混乱,各种网络营销正在涌入网络。特别是在软文推广代理的各种软文推广方法中,我们打开浏览器来搜索新闻,会有各