神经网络与深度学习(4):改进神经网络的学习方法

本文总结自《Neural Networks and Deep Learning》第3章的内容。

目录

  1. 交叉熵代价函数(The cross-entropy cost function)

  2. 柔性最大值(softmax)

  3. 过度拟合(Overfitting)

  4. 规范化(regularization)

  5. 权重初始化(Weight initialization)

  6. 神经网络的其他技术

交叉熵代价函数(The cross-entropy cost function)

1. 神经网络学习很慢的含义?

学习慢 => 偏导数 ∂C/∂w 和 ∂C/∂b 值小。

2. 交叉熵的基本定义

引入交叉熵代价函数就是为了解决学习慢的问题。

交叉熵代价函数的定义如下:

将交叉熵看作代价函数,是基于它的以下两个特性:

(1)它是非负的。

(2)如果对于所有的训练输入x,神经元实际的输出接近目标值,那么交叉熵将接近0。

相比于二次代价函数,交叉熵还有一个特性可以避免学习速度下降的问题。

3. 为什么交叉熵代价函数代价函数可以解决学习慢的问题?

因为交叉熵函数关于权重和偏置的偏导数的表达式中不存在σ′(z)这样的项,从而避免了学习缓慢。具体分析如下:

二次函数关于权重和偏置的偏导数分别是:

而σ函数的图像在神经元的输出接近1的时候,曲线变得相当平,所以σ′(z) 就很小了。上述公式也告诉我们∂C/∂w 和 ∂C/∂b 值会非常小。这其实就是学习缓慢的原因所在。

交叉熵函数关于权重和偏置的偏导数分别是:

上述公式表明权重学习的速度受到σ(z)-y,也就是输出中的误差的控制。同时交叉熵函数还避免了像在二次代价函数中类似σ′(z) 导致的学习缓慢。

4. 学习率的选择

不同的代价函数应该搭配不同的学习率。

5. 在什么时候用交叉熵来替换二次代价函数?

如果在输出神经元是S 型神经元时,交叉熵一般都是更好的选择。

如果输出神经元是线性的那么二次代价函数不再会导致学习速度下降的问题。在此情形下,二次代价函数就是一种合适的选择。

柔性最大值(softmax)

另外一种解决学习缓慢问题的方法。

柔性最大值的想法其实就是为神经网络定义一种新式的输出层。

1. 基本原理

(1)首先计算带权输入

(2)不在带权输入z上使用S型函数来获得输出,而是使用softmax函数来获得输出。

公式(1)

其中,分母中的求和是在所有的输出神经元上进行的。

另外一个特性:根据定义,输出的激活值加起来正好为1。

公式(2)

由公式(1)(2),我们看到柔性最大值层的输出是一些相加为1正数的集合。换言之,柔性最大值层的输出可以被看做是一个概率分布。

在很多问题中,使用softmax是很方便的。比如在MNIST分类问题中,我们可以将输出层第j个神经元的激活值解释成网络估计正确数字分类为j的概率。

2. softmax如何解决学习缓慢的问题

先定义一个对数似然(log-likelihood)代价函数。

对数似然函数满足我们期待的代价函数的条件。

对数似然代价函数关于权重和偏置的偏导数分别是:

这些方程其实和之前的交叉熵得到的类似。只是之前的是平均值。

正如前面的分析,这些表达式确保我们不会遇到学习缓慢的问题。事实上,把一个具有对数似然代价的柔性最大值输出层,看作与一个具有交叉熵代价的S型输出层非常相似,这是很有用的。

3. 应该使用一个具有交叉熵代价的S 型输出层,还是一个具有对数似然代价的柔性最大值输出层呢?

实际上,在很多应用场景中,这两种方式的效果都不错。
柔性最大值加上对数似然的组合更加适用于那些需要将输出激活值解释为概率的场景。

过度拟合(Overfitting)

1. 看个栗子

(1)cost上的对比

先在训练集上跑,训练集上cost和epoch(截取200-400之间)的关系如下:

测试集上:

(2)分类准确率上的对比

2. 检测过度拟合

我们在每个迭代期的最后都计算在validation_data 上的分类准确率。一旦分类准确率已经饱和,就停止训练。这个策略被称为提前停止。

3. 降低过度拟合

(1)一般来说,最好的降低过度拟合的方式之一就是增加训练样本的量。有了足够的训练数据,就算是一个规模非常大的网络也不大容易过度拟合。不幸的是,训练数据其实是很难或者很昂贵的资源,所以这不是一种太切实际的选择。

(2)降低网络规模。但是更深层更大的网络潜在有更强的学习能力。

(3)规范化。即使对于固定的神经网络和固定的训练集, 仍然可以减少overfitting。

规范化(regularization)

1. 基本原理

规范化有很多技术,这里给出一种最为常用的规范化手段—— 有时候被称为权重衰减(weight decay)或者L2 规范化

L2 规范化的想法是增加一个额外的项到代价函数上,这个项叫做规范化项

其中C0是原始的代价函数,第二个现在加入的就是所有权重的平方的和。然后使用一个因子λ/2n 进行量化调整,其中λ>0 可以称为规范化参数,而n就是训练集合的大小。

需要注意的是,规范化项里面并包含偏置。

规范化的效果是让网络倾向于学习小一点的权重。

规范化可以当做一种寻找小的权重和最小化原始的代价函数之间的折中。由λ的取值决定,λ越小,就偏向于最小化原始代价函数,反之,倾向于小的权重。

2. 好处

(1)减轻过度拟合和提高分类准确率。

(2)规范化的网络能够提供更容易复制的结果。无规范化的网络会偶然被限制住,不同的运行会给出相差很大的结果。

3. 为何规范化可以帮助减轻过度拟合?

规范化的神经网络常常能够比非规范化的泛化能力更强,这只是一种实验事实(empirical fact)。目前还没有一整套具有说服力的理论解释。仅仅是一些不完备的启发式规则或者经验。

4. 规范化的其他技术

(1)L1 规范化:是在未规范化的代价函数上加上一个权重绝对值的和。

(2)弃权(Dropout):从随机(临时)地删除网络中的一半的隐藏神经元开始,同时让输入层和输出层的神经元保持不变。

(3)人为增加训练样本

权重初始化(Weight initialization)

理解这部分需要先弄明白正态分布(高斯分布)、均值、标准差、方差的意义。

结论:我们会使用均值=0,标准差= 1/sqrt(n_in)的正态随机分布初始化这些权重。

原因:若这样初始化的话,那么大部分带权输入z的取值都在1和-1之间,隐藏神经元的输出σ(z) 就不太会接近1或者0。也就是神经元没有饱和,学习过程不会被减慢。

神经网络的其他技术

1.其他的优化代价函数的技术

(1)Hessian 技术

(2)基于momentum 的梯度下降

(3)更多技术介绍参考这篇论文:http://yann.lecun.com/exdb/publis/pdf/lecun-98b.pdf

2.人工神经元的其他模型

(1)S型神经元

(2)tanh神经元

使用双曲正切(hyperbolic tangent)函数替换了S 型函数。tanh 神经元的输出的值域是(-1,1) ,而非(0,1)。

(3)ReLU

修正线性神经元(rectified linear neuron)或者修正线性单元(rectified linear unit),简记为ReLU。

输入为x,权重向量为w,偏置为b 的ReLU 神经元的输出是:max(0, w*x + b)。

像sigmoid, tanh一样, 也可以扑模拟何函数。

优势:提高ReLU 的带权输入并不会导致其饱和,所以就不存在sigmoid, tanh那样的学习速度下降。若带权输入是负数,则梯度消失为0,所以神经元就停止学习了。这两点从ReLU的图像即可看出来。

问题:如何选择神经元?要靠实验比较sigmoid, tanh和ReLU的好坏。

时间: 2024-10-25 15:12:58

神经网络与深度学习(4):改进神经网络的学习方法的相关文章

吴恩达 DeepLearning.ai课程笔记(1-3)神经网络和深度学习 --- 浅层神经网络

以下为在Coursera上吴恩达老师的DeepLearning.ai课程项目中,第一部分<神经网络和深度学习>第二周课程部分关键点的笔记.笔记并不包含全部小视频课程的记录,如需学习笔记中舍弃的内容请至 Coursera 或者 网易云课堂.同时在阅读以下笔记之前,强烈建议先学习吴恩达老师的视频课程. 1. 二分类问题 对于二分类问题,大牛给出了一个小的Notation. 样本:  ,训练样本包含  个: 其中  ,表示样本 包含 个特征:  ,目标值属于0.1分类: 训练数据:  输入神经网络时

神经网络和深度学习之——前馈神经网络吉林快三带红黑玩法

前面一章我们详细讲解了神经网络的组成吉林快三带红黑玩法 话仙源码论坛下载地址 QQ2952777280,工作原理,信号在网络中如何流动,以及如何求解每一个输入信号赋予的权重等计算过程:同时我们还构建了一个逻辑回归网模型来解决鸢尾花分类问题,很明显,这种网络很"浅",但它对于分类鸢尾花数据还是非常有效的,而且不仅仅是鸢尾花,对于有需要的其他二分类问题,该模型也能表现得很好.由于这种模型太"浅"了,我们一般称这种模型为bp网络,而不直接称为神经网络,有些人甚至觉得这种网

《神经网络和深度学习》系列文章二:感知机

出处: Michael Nielsen的<Neural Network and Deep Leraning>,点击末尾“阅读原文”即可查看英文原文. 本节译者:哈工大SCIR硕士生 徐梓翔 (https://github.com/endyul) 声明:我们将在每周一,周四,周日定期连载该书的中文翻译,如需转载请联系[email protected],未经授权不得转载. “本文转载自[哈工大SCIR]微信公众号,转载已征得同意.” 使用神经网络识别手写数字 感知机 sigmoid神经元 神经网络

神经网络与深度学习——《机器学习及应用》汪荣贵 机械工业出版社

摘录自<机器学习及应用>汪荣贵 机械工业出版社 总结了一些神经网络与深度学习中的一些网络介绍. 1.神经元与感知机 (1)关于激活函数 (2)MLP MLP模型的网络结构没有环路或回路,故是一类前馈网络模型.MLP模型中隐含层的层数可为一层也可为多层.对于MLP模型和BP神经网络这样包含多个数据处理层的前馈网络模型而言,其参数更新过程通常较为复杂.这是因为这类模型的最终输出与之前多层的连接权重相关,相当于多层嵌套的函数.若直接使用类似于梯度下降的优化方法对模型进行训练,则无法直接求得各结点所对

吴恩达深度学习课程第一课 — 神经网络与深度学习 — 第一周练习

课程一 - 神经网络和深度学习 第一周 - 深度学习简介 第 1 题 “人工智能是新电力”这个比喻指的是什么? A.人工智能为我们的家庭和办公室的个人设备供电,类似于电力. B.通过“智能电网”,人工智能正在传递新一波的电力. C.人工智能在计算机上运行,因此由电力驱动,但它让计算机做以前不可能做的事情. D.与100年前开始的电力类似,人工智能正在改变多个行业. 第 2 题 以下哪些是最近深度学习开始崛起的原因?(选2个答案) A.我们拥有了更多的计算能力 B.神经网络是一个崭新的领域. C.

(转)神经网络和深度学习简史(第一部分):从感知机到BP算法

深度|神经网络和深度学习简史(第一部分):从感知机到BP算法 2016-01-23 机器之心 来自Andrey Kurenkov 作者:Andrey Kurenkov 机器之心编译出品 参与:chenxiaoqing.范娜Fiona.杨超.微胖.汪汪.赵巍 导读:这是<神经网络和深度学习简史>第一部分.这一部分,我们会介绍1958年感知机神经网络的诞生,70年代人工智能寒冬以及1986年BP算法让神经网络再度流行起来. 深度学习掀起海啸 如今,深度学习浪潮拍打计算机语言的海岸已有好几年,但是,

从软件工程的角度写机器学习6——深度学习之卷积神经网络(CNN)实现

卷积神经网络(CNN)实现 背景 卷积神经网络广泛用于图像检测,它的实现原理与传统神经网络基本上是一样的,因此将普遍意义的神经网络和卷积神经网络的实现合成一篇. 神经网络实现思路 "扔掉神经元" 尽管所有教程在介绍神经网络时都会把一大堆神经元画出来,并且以输入节点--神经元--输出结点连线,但是,在编程实现时,基于神经元去编程是低效的.典型如这篇经典文章里面的代码: http://blog.csdn.net/zzwu/article/details/575125. 比较合适的方法是将神

神经网络和深度学习-学习总结

1. 简介 神经网络和深度学习是由Michael Nielsen所写,其特色是:兼顾理论和实战,是一本供初学者深入理解Deep Learning的好书. 2. 感知器与sigmoid神经元 2.1 感知器(Perceptrons) 感知器工作原理:接收一系列二进制输入,经过特定的规则计算之后,输出一个简单的二进制. 计算规则:通过引入权重(weights)表示每个输入对于输出的重要性,则有 记w?x=∑jwjxj,b=-threshold,则有 其w是权重,b是偏差. 2.2 Sigmoid神经

《神经网络与深度学习》(四) 受限玻尔兹曼机

转自:http://blog.csdn.net/qiao1245/article/details/50932519 谈到神经网络,就不得不提到最近非常火的深度学习.那么什么是深度学习?它与神经网络的关系是什么?深度学习的基本原理和常用算法是什么?我将在这篇中详细解答. 什么是深度学习 深度学习来源于人工神经网络,它的思想是组合低层次的特征从而构建出更加抽象的深层次特征.深度学习的概念由Hinton等人于2006年提出, 它是一个新的机器学习领域,通过更"深"层次的训练,它可以更加良好的

数据分析、数据挖掘、机器学习、神经网络、深度学习和人工智能概念区别(入门级别)

数据分析, 就是对数据进行分析, 得出一些结论性的内容, 用于决策. 分析什么哪? 根据分析现状. 分析原因. 预测未来. 分析现状和分析原因, 需要结合业务才能解释清楚. 用到的技术比较简单, 最简单的数据分析工具就是 Excel. 预测未来指的是分析未来一段时间的销售额之类的. 在预测未来方面, 一般用到数据挖掘的技术了. 数据挖掘, 从字面意思上看, 是从数据中挖掘出有价值的信息. 比如, 超市通过对一段时间的客户消费记录能发现, 哪些物品经常被顾客一起购买. 那么, 就可以把这些物品摆放