《神经网络与深度学习》边学边问

20181203日,这么快就进入2018年的尾巴了,年尾是整理所学所做的最佳时刻。今天借着重新温故神经网络基础知识的机会,将这本书只有198页的教程重新泛读一遍,并阅读笔记记录下来,希望可以温故知新,更加深刻的理解其原理,并发现之前阅读的时候没有注意到的小细节。

一、使用神经网络识别手写数字

1、感知器为什么不适合学习?S型神经元的优点。

因为感知器是不可微的,权重的一个微小变化可能会导致结果的完全反转。使得变化不可控。我们希望的是每次学习的过程中,逐步修改权重和偏置来让网络产生更好的输出。
S型神经元和感知器类似,但是被修改为权重和偏置的微⼩改动只引起输出的微⼩变化。


S神经元

S型神经元在输入很大的时候,结果接近1;在输入为很大负数的时候,结果接近0。和感知器类似。

2. 对于数字的识别为什么是十个输出位而不是四个输出位

最终的判断是基于经验主义的:我们可以实验两种不同的⽹络设计,结果证明对于这个特定的问题⽽⾔, 10 个输出神经元的神经⽹络⽐ 4 个的识别效果更好。
从理解上,隐藏层的每个神经元用于检测图像的一个部分的特征,比如上部是弧形等,通过不同部位的识别和激活,最终得到这个数字是不是0.但是如果只有4个输出,那么就应该去判断数字的最高有效位是什么等细节。把数字的最⾼有效位和数字的形状联系起来并不是⼀个简单的问题。很难想象出有什么恰当的历史原因,⼀个数字的形状要素会和⼀个数字的最⾼有效位有什么紧密联系。当然我们可以通过在神经网络的十位输出之后再额外添加一层就可以实现按位表示数字的功能。

3. 代价函数为什么选择均方误差,而不用“正确分类的图片的数量”?有其他的选择么?

因为在神经⽹络中,被正确分类的图像数量所关于权重和偏置的函数并不是⼀个平滑的函数。对权重和偏置做出的微⼩变动完全不会影响被正确分类的图像的数量。这会导致我们很难去解决如何改变权重和偏置来取得改进的性能。
均方误差的平滑代价函数则能更好地去解决如何⽤权重和偏置中的微⼩的改变来取得更好的效果。
均方误差可以很好的利用,但是也有其他的代价函数可以使用。

4.梯度下降法&&随机梯度下降法

梯度下降法是一种在C下降最快方向上做微小变化的方法。
随机梯度下降的算法能够加速学习。其思想就是通过随机选取⼩量训练输⼊样本来
计算 ∇Cx,进⽽估算梯度 ∇C。所有的训练输入用完一次,称为一个训练迭代期(epoch).
随机梯度下降法的小批量数据m的选择一般有1,10,20。数量越小则训练速度越快,但是波动越明显,受噪声数据和错误数据的影响越大。

5. 简单的算法加上好的数据优于复杂的算法

神经网络之所以需要设计良好,是因为对于神经网络来说,数据总是不够的。这时人工的技巧就很重要了。

二、反向传播算法

1. 应用反向传播算法的前提假设是什么?

首先,代价函数可以被协程一个在每个训练样本x上的到家函数Cx的均值;其次代价可以写成神经网络输出的函数。这样在X输入域固定,y输出固定的情况下,代价函数受到输出aL的影响,而aL可以通过改变权重和偏置来改变。

2. 反向传播算法的计算

image.png

输出层的误差:相对于线性组合zj而言


image.png

image.png

image.png

image.png

当激活值 ain 很⼩, ain ≈ 0,梯度也会趋向很⼩。这样,我们就说权重缓慢学习,表⽰在梯度下降的时候,这个权重不会改变太多。


image.png

反向传播算法

3. 反向传播算法相对于传统的计算代价C相对于W参数的偏导数的优势是什么?

优势在于速度很快。
传统的计算偏导数的方式是:


image.png

那么对于有100万参数的网络来说,需要计算100万次代价函数来确定C(w+ε * ej),从而计算上面的偏导数。而使用反向传播算法只需要正向执行一次前向传播算法,然后计算一次后向传播算法即可。

4. 反向传播算法的原理(正向思考其思路)

假设某个权值w扰动导致了l层第j个神经元的激活值变化了delta aj,即

1

那么这个变换会导致下一层(l+1)的所有激活值变化,其中一个激活值的变化如下:
2

即:
3

而这种影响又会一直传递下去直到最终的代价函数(其中的一条路径)
4

这种顺序思考的表示告诉我们权重的细微变化最终作用到代价函数上影响,可以理解为这个细微变化通过不同路径到达代价函数的变化的和。

5. 在使用sigmoid函数作为激活函数的时候,均方误差代价函数的缺点是什么?有什么替代的代价函数?

当使用sigmoid作为代价函数的时候,可以看到其偏导数在接近0或者接近1的时候值很小。这样不符合正常的学习规律:错误运算越明显,学习的速度反而越慢。
sigmoid函数

而且在计算代价函数关于权重w的表达式中,存在的求导也拖慢了计算的速度。


image.png

可目前有很多可以替代的代价函数比如交叉熵函数。

交叉熵函数的表达式如下:
交叉熵

虽然表面上看不出和代价函数的直接关系。但是对分类问题而言,他满足了代价C永远大于0,正确的时候代价C接近0,错误的时候代价则比较大这样的代价函数的原则。而且计算C关于权重的偏导数会发现,其最终表达式与真实标签y和预测输出的误差成正比,这意味着学习的速度和误差成正比。同时表达式和激活函数的导数没有关系。减轻了计算代价。

什么时候使用交叉熵是合适的呢?实际上,如果在输出神经元是 S 型神经元时,交叉熵⼀般都是比二次代价函数更好的选择。


交叉熵代价函数相对于最后一层的导数

交叉熵究竟表示什么?交叉熵很像是信息熵,这里可以将a理解成是1的概率。概率越大或者概率越小的时候,则代价越小;当a=0.5的时候,代价是最大的。

6. 使用交叉熵代价的Sigmoid输出层还是使用对数似然代价的softmax输出层?

softmax也是一种不错的替代。把softmax放在最后一层,每一层的输出是输入的每个元素的权重,如下:

softmax神经元层

保证了所有的输出都大于0,且在0-1之间。这层的输出总和为1,因此这层的结果可以理解为输出的概率分布。很适合用于多分类输出。
softmax作为输出层,其代价函数C应该如何设置使得学习速率加快呢?可以使用对数似然函数。
对数似然函数

这样通过求导运算,我们得到这样的结论
反馈算法的结果

可以看到使用对数似然代价的柔性最⼤值输出层的参数导数表达式和具有交叉熵代价的 S 型输出层的参数导数表达式整的很像。柔性最⼤值加上对数似然的组合更加适⽤于那些需要将输出激活值解释为概率的场景。

7. 过度拟合的表现以及如何避免过度拟合?

当训练数据较少且模型的训练参数额很多的时候,模型可以很好的拟合训练数据,但是却无法在测试集上持续的表现好。
迹象一:训练集和测试集的准确率
如下图所示,训练集的错误率随着迭代次数的增加而逐渐减小。测试集在前 200 迭代期(图中没有显⽰)中准确率提升到了 82%,然后学习逐渐变缓,最终,在 280 迭代期左右分类准确率就停⽌了增⻓。可见训练集上模型显示效果变得越来越好只是一种假象而已。

训练集误差持续降低
测试集上的准确率从280次迭代之后就震荡

迹象二:代价函数曲线
测试集代价曲线在15次迭代之前都在减少,但是后面越来越差。
需要注意的是,这里我们应该将 15 还是 280 迭代期当作是过度拟合开始影响学习的时间点?实践⻆度,我们真的关⼼的是提升测试数据集上的分类准确率,⽽测试集合上的代价不过是分类准确率的⼀个反应。所以更加合理的选择就是将 280 迭代期看成是过度拟合开始影响学习的时间点。
代价函数

迹象三: 训练集的准确率接近100%,而测试集只有82%,因此过拟合了

我们主要通过第一种迹象来判断是够过拟合,如果我们看到测试数据上的准确率不再提升,那么我们就停⽌训练。

最好的降低过度拟合的⽅式之⼀就是增加训练样本的量,但是这不切合实际。一般我们会减少参数的数量和网络的规模、采用提前停止的手段、以及使用规范化技术来减轻过度拟合的问题。

8. 有了测试集为什么还需要验证集?

validation set用来衡量不同的超参数的选择效果,我们用验证集来寻找合适的超参数。测试集用于准确率测量。
当设置超参数时,我们想要尝试许多不同的超参数选择。如果我们设置超参数是基于 test_data 的话,可能最终我们就会得到过度拟合于test_data 的超参数。也就是说,我们可能会找到那些符合test_data 特点的超参数,但是⽹络的性能并不能够泛化到其他数据集合上。我们借助 validation_data 来克服这个问题。然后⼀旦获得了想要的超参数,最终我们就使⽤ test_data 进⾏准确率测量。
一般validation set是从训练集中抽取出来的,称为hold out.

9. L2规范化的作用以及为何L2正则化可以过拟合?

前面提到减轻过拟合的方式有减少参数的数量和网络的规模,但是大规模的额网络比小网络有更强的潜力。因此使用规范化的方式也可以避免过拟合。一种常见的规范化手段是权重衰减L2规范化。其中λ>0注意到这里的规范化不包含偏置b.

L2规范化
规范化可以当做⼀种寻找⼩的权重和最⼩化原始的代价函数之间的折中。这两部分之间相对的重要性就由 λ 的值来控制了:λ 越⼩,就偏向于最⼩化原始代价函数,反之,倾向于⼩的权重。
为什么减小权重可以减轻过拟合的原理不是很清楚。网上给出的解释如下:L1正则化的解具有稀疏性,可用于特征选择。L2正则化的解都比较小,抗扰动能力强。在求解过程中,L2通常倾向让权值尽可能小,最后构造一个所有参数都比较小的模型。因为一般认为参数值小的模型比较简单,能适应不同的数据集,也在一定程度上避免了过拟合现象。参数足够小,数据偏移得多一点也不会对结果造成什么影响,可以说“抗扰动能力强”。
下面给出L2正则之后的参数相对于代价函数的偏导数:
偏导数
这样修改之后权重w的前面多了一个权重衰减,而偏置b的表达式不变。
权重w的学习规则

实验证明,L2规范化不仅仅可以减轻过拟合还可以提高分类准确率。并且还可以避免代价函数陷于局部最优。

10. 为什么规范化可以避免过拟合

规范化可以避免过拟合是一个实验事实,目前还没有完备的理论基础。符合直觉的,越简单的模型越接近事实(但这个不是一定成立的,有时候复杂的模型才接近事实,比如牛顿力学和爱因斯坦的相对论)。L2规范化使得权重趋于小的值,使得模型去学习训练数据中的常见模式,而对于训练数据中个别噪声较大的数据的影响降到最小。

1. 为什么L2规范化不对偏置b约束

实际上这是一种习惯问题,,并且实验也证明了对偏置进行约束并不会对结果改变太多。而且偏置不受到输入的影响,因此大的偏置也不像大的权重那样使得神经元对输入敏感。同时,大的偏置使得神经元更加容易饱和(对啊,容易饱和有啥好的呀...... )不明白

12. L1正则化的权重学习规则?什么时候使用L1正则化什么时候使用L2正则化?

L1正则化看起来和L2正则化很像,都是添加一个惩罚项。
L1正则化

但实际上两者的效果不同。


L1代价函数的偏导数
注意到L1正则化的学习规则是以常量向0靠近,而L2正则化是按照一个不变的比率缩小。因此对于L1正则而言,某个值比较大权重和值较小的权重,其缩减的步伐一致,因此值小的更加容易变成0。所以L1规范化倾向于聚集网络的权重在相对少量的高重要度连接上,而其他不重要的则会被趋于0.
L1权重更新规则
L2权重更新规则

总结来说,L1正则化趋向于将不重要的权重学习为0,留下重要的(相当于是特征筛选);L2趋向于每个权重都比较小。

13.弃权(dropout)减小过拟合的原理是什么?

弃权的工作过程是:对于每个小批次的数据,在训练之前首先一概率p随机扔掉网络中的神经元,使用其他的神经元进行训练。对于下一批,继续以概率p随机扔掉网络中的神经元。在最后的实际运用中,依旧使用全部的神经元,但是每个神经元的权重变成原始的p倍。

一种理解是:不同的网络会因为不同的方式(数据)往不同的方向过拟合,弃权相当于对于每批数据都训练了不同的网络,就像是集成学习一样,通过多个网络来中和过拟合的效果。另一种理解弃权的方式使得每个神经元只接触到p%的数据,因此确保了模型在丢失一部分的证据的时候依旧可以保持健壮。
弃权技术在训练大规模深度网络中尤其有用。

14.如何理解算法A优于算法B?

首先对大数据的问题需要明确的是,最关键的是数据。很有可能出现这样的情况,算法A和算法 B,算法 A 在⼀个训练集合上超过算法 B,却在另⼀个训练集上弱于算法 B。因此对“算法 A是不是要⽐算法 B 好?”正确的反应应该是“你在使⽤什么训练集合?”
科研人员在写论文时,往往会说“我们的超赞的技术在标准测试集 Y 上给出了百分之 X 的性能提升。”这必须被理解为仅仅在特定的训练数据集上的应⽤效果。很可能他们由于超赞的技术的性能提升其实在更⼤的数据集合上就丧失了。因此论文标榜的提升可能就是历史的偶然所以需要记住的特别是在实际应⽤中,我们想要的是更好的算法和更好的训练数据。寻找更好的算法很好,不过需要确保你在此过程中,没有放弃对更多更好的数据的追求

15.如何对权重进行初始化

首先肯定不能将权重设为同样的初始值,因为网络是完全同构的,如果某一层的权重完全一致,那么反向传播算法就会失效了。
常见的手段是假设我们有⼀个有 nin 个输⼊权重的神经元。我们会使⽤均值为 0 标准差为 1/根号(nin) 的⾼斯随机分布初始化这些权重。这样可以保证该神经元输出不容易落入饱和区,使得训练的速度加快,在最终性能上也会有一定的提升。

16.超参数训练和选择的原则有哪些?

  1. 万事开头难,首先不应该训练一个很复杂的网络,这种网络的超参数太多,没有一个直观的切入点;也不应该选择太多的训练数据,这样每次训练获得反馈的时间太长,不适合快速的改变策略。多分类问题可以先提取两个类别先做二分类,对学习速率、规范化参数、小批量数据大小等有个大致的了解之后,再返回复杂问题本身。
  2. 学习速率首先找到 在训练数据上的代价⽴即开始下降⽽⾮震荡或者增加时作为 η 的阈值的估计。然后取一半作为学习速率。通常采⽤可变的学习速率更加有效。在学习的前期使用较大的学习速率让权重变化的更快,往后则降低学习速率做出更加精良的调整。⼀种⾃然的观点是使⽤提前终⽌的想法。就是保持学习速率为⼀个常量直到验证准确率开始变差。然后按照某个量下降学习速率,⽐如说按照 10 或者 2。我们重复此过程若⼲次,直到学习速率是初始值的 1=1024(或者 1=1000)。那时就终⽌
  3. 一般的原则是使用验证集来选择规范化超参数、minibatch大小以及层数和隐藏元个数。使用训练集的代价函数还选择学习速率。因就是其他的超参数倾向于提升最终的测试集上的分类准确率,所以将他们通过验证准确率来选择更合理⼀些。然⽽,学习速率仅仅是偶然地影响最终的分类准确率的。学习速率主要的⽬的是控制梯度下降的步⻓,监控训练代价是最好的检测步⻓过⼤的⽅法。
  4. 使用提前停止确定训练的迭代期数量:如果分类准确率在⼀段时间内不再提升的时候终⽌。这样不仅可以确保我们不会终⽌得过快,也能够使我们不要⼀直⼲等直到出现提升。
  5. 规范化参数:从尝试 λ = 1:0 开始,然后根据验证集上的性能按照因⼦ 10增加或减少其值。⼀旦我已经找到⼀个好的量级,你可以改进 λ 的值。这⾥搞定后,你就可以返回再重新优化 η

17.可以使用梯度下降法来确定学习速率和规范化参数么?

学习速率的问题在于其最优解不是一个常量,在训练的初期学习速率需要大一些加快速度,在训练的后期则需要小一点避免震荡。
规范化参数相对于代价的偏导数只和w有关,因此无法使用梯度下降法来确定规范化参数。


代价函数

18.自动搜索参数的方法有哪些?

grid search和基于贝叶斯观点的自动优化超参数。
论文:Practical Bayesian Optimization of Machine Learning Algorithms
代码Hyperopt

19.除了随机梯度下降法,还有其他的学习方法吗?

答案是肯定的。
Hessian技术:

Hessian技术
我们会发现使用Hessian技术会比使用梯度下降法更快,且通过引入代价函数的⼆阶变化信息,可以让 Hessian ⽅法避免在梯度下降中常碰到的多路径(pathologies)问题。但是hessian存在的问题是计算二阶Hessian矩阵的元素个数太多了,是参数个数的平方个。

基于momentum的梯队下降: 使用了Hessian的二阶矩阵的思想,不仅仅考虑梯度还包含梯度如何变化的信息

momentum
从上面的公式可以看到,权重不仅仅受到当前梯度的影响,还受到了历史速度的影响。当μ=0时,没有速度的概念,完全退化成梯度下降法;μ=1时,则速度由历史速度和当前梯度决定,参数更新由速度决定。一般μ在0-1之间。使用验证集来确定μ的值。

未完待续......

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,881评论 4 368
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,052评论 1 301
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 110,598评论 0 250
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,407评论 0 217
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,823评论 3 294
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,872评论 1 224
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,037评论 2 317
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,778评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,505评论 1 247
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,745评论 2 253
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,233评论 1 264
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,568评论 3 260
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,231评论 3 241
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,141评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,939评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,954评论 2 283
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,784评论 2 275

推荐阅读更多精彩内容