Neural Network and DeepLearning (3.2)改进神经网络的学习方法

Overfitting and regularization(过度拟合和规范化)

我们的网络在280迭代期后就不再能够推广到测试数据上。所以这不是有用的学习。我们说网络在280迭代期后就过度拟合(overfitting)或过度训练(overtraining)了。

我们的网络实际上在学习训练数据集的特例,而不是能够一般的进行识别。我们的网络几乎是在单纯记忆训练集合,而没有对数字本质进行理解并泛化到测试数据集上。

一种检测过度拟合的明显方法:

跟踪测试数据集合上的准确率随训练变化情况。如果看到测试数据上的准确率不再提升,那我们就停止训练。

具体过程就是在每个迭代期的最后都计算在validation_data上的分类准确率。一旦分类准确率已经饱和,就停止训练。这个策略被称为提前停止(early stopping)。可以将验证集看成是一种特殊的训练数据集,能帮助我们学习到好的超参数(hyper-parameters)。这种寻找好的超参数的方法有时候被称为hold out方法,因为validation_data是从training_data训练集中留出或者“拿出”的一部分。

规范化

L2规范化(也称为权重衰减)

L2规范化的想法是增加一个额外的项到代价函数上,这个项叫做规范化项。下面是规范化的交叉熵:

其中λ>0可以称为规范化参数,n就是训练集合的大小。(需要注意的是规范化项里面并不包含偏置)

当然对其他的代价函数也可以进行规范化,例如二次代价函数:

两者都可以写成这样:

其中C0是原始的代价函数。

规范化可以当作一种寻找小的权重和最小化原始代价函数之间的折中。这两部分之间相对的重要性由λ的值来控制:λ越小,就越偏向于最小化原始代价函数,反之,倾向于小的权重。

将随机梯度下降算法应用在一个规范化的神经网络上

对规范化的损失函数求偏导数:

可以看到偏执的梯度下降学习规则不会发生变化:

而权重的学习规则变成了:

这和正常的梯度下降学习规则相同,增加了一个因子重新调整了权重w。这种调整有时候被称为权重衰减

那么,随机梯度下降的权重的规范化学习规则就变成了:

偏置的规范化学习规则不变:

规范化让网络具有更好的泛化能力,显著减轻了过度拟合的影响。

备注:无规范化的网络会偶然被限制住,明显困在了代价函数的局部最优出。结果就是不同的运行会给出相差很大的结果。对比来看,规范化的网络能够提供更容易复制的结果。

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

小的权重在某种程度上,意味着更低的复杂性,也就是对数据给出了一种更简单却更强大的解释,因此应该优先选择。

时间: 2024-10-12 21:58:04

Neural Network and DeepLearning (3.2)改进神经网络的学习方法的相关文章

Neural Network and DeepLearning (5.1)深度神经网络为何很难训练

在深度网络中,不同层的学习速度差异很大.例如:在网络中后面的层学习情况很好的时候,前面的层常常会在训练时停滞不前,基本上不学习了.另一种情况恰恰相反,前面的层学习的很好,后面的层却停止学习了. 这是因为基于梯度下降的学习算法的本身存在着内在的不稳定性,这种不稳定性使得前面或者后面的层的学习停止. 消失梯度问题(The vanishing gradient problem) 在某些深度神经网络中,在隐藏层反向传播时梯度倾向于变小,也就是前面隐藏层的学习速度要慢于后面的隐藏层.这就是消失的梯度问题.

Neural Network and DeepLearning (2.1)反向传播算法

How the backpropagation algorithm works 反向传播的目标是计算代价函数C分别关于w和b的偏导数?C/?w和?C/?b. 反向传播的核心是一个对代价函数C关于任何权重w(或者偏置b)的偏导数?C/?w的表达式.这个表达式告诉我们在改变权重和偏置时,代价函数变化的快慢. 神经网络中使用矩阵快速计算输出 概念:每一层L的权重矩阵wl,偏置向量bl,激活向量al.那么Lth的激活向量和(L-1)th的激活向量就能够通过方程关联起来: 在这个方程中有一个中间量zl:

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

本文总结自<Neural Networks and Deep Learning>第3章的内容. 目录 交叉熵代价函数(The cross-entropy cost function) 柔性最大值(softmax) 过度拟合(Overfitting) 规范化(regularization) 权重初始化(Weight initialization) 神经网络的其他技术 交叉熵代价函数(The cross-entropy cost function) 1. 神经网络学习很慢的含义? 学习慢 =>

神经网络详解 Detailed neural network

神经网络之BP算法,梯度检验,参数随机初始化 neural network(BackPropagation algorithm,gradient checking,random initialization) 一.代价函数(cost function) 对于训练集,代价函数(cost function)定义为: 其中红色方框圈起的部分为正则项,k:输出单元个数即classes个数,L:神经网络总层数,:第层的单元数(不包括偏置单元),:表示第层边上的权重. 二.误差逆传播(BackPropaga

Introduction to neural network —— 该“神经网络” 下拉“祭坛”

Introduction to neural network 不能自欺欺人. 实干兴邦,空谈误国. ----------------------------------------------------------------------------------------------------------------------------------------------- 题外话: Matlab的神经网络工具箱使得神经网络得到大力的推广,得到很多其它的人关注与研究使用. 然而,非常多

Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.1

3.Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.1 http://blog.csdn.net/sunbow0 Spark MLlib Deep Learning工具箱,是根据现有深度学习教程<UFLDL教程>中的算法,在SparkMLlib中的实现.具体Spark MLlib Deep Learning(深度学习)目录结构: 第一章Neural Net(NN) 1.源码 2.源码解析 3.实例 第二章D

Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.2

3.Spark MLlib Deep Learning Convolution Neural Network(深度学习-卷积神经网络)3.2 http://blog.csdn.net/sunbow0 第三章Convolution Neural Network (卷积神经网络) 2基础及源码解析 2.1 Convolution Neural Network卷积神经网络基础知识 1)基础知识: 自行google,百度,基础方面的非常多,随便看看就可以,只是很多没有把细节说得清楚和明白: 能把细节说清

Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.3

3.Spark MLlib Deep Learning Convolution Neural Network(深度学习-卷积神经网络)3.3 http://blog.csdn.net/sunbow0 第三章Convolution Neural Network (卷积神经网络) 3实例 3.1 测试数据 按照上例数据,或者新建图片识别数据. 3.2 CNN实例 //2 测试数据 Logger.getRootLogger.setLevel(Level.WARN) valdata_path="/use

ufldl学习笔记与编程作业:Convolutional Neural Network(卷积神经网络)

ufldl出了新教程,感觉比之前的好,从基础讲起,系统清晰,又有编程实践. 在deep learning高质量群里面听一些前辈说,不必深究其他机器学习的算法,可以直接来学dl. 于是最近就开始搞这个了,教程加上matlab编程,就是完美啊. 新教程的地址是:http://ufldl.stanford.edu/tutorial/ 本节学习地址:http://ufldl.stanford.edu/tutorial/supervised/ConvolutionalNeuralNetwork/ 一直没更