CNN学习笔记:正则化缓解过拟合
CNN学习笔记:正则化缓解过拟合
过拟合现象
在下图中,虽然绿线完美的匹配训练数据,但太过依赖,并且与黑线相比,对于新的测试数据上会具有更高的错误率。虽然这个模型在训练数据集上的正确率很高,但这个模型却很难对从未见过的数据做出正确响应,认为该模型存在过拟合现象。

绿线代表过拟合模型,黑线代表正则化模型。故我们使用正则化来解决过拟合问题。
正则化模型
正则化是机器学习中通过显示控制模型复杂度来避免模型过拟合、确保泛化能力的一种有效方式。正则化在损失函数中引入模型复杂度指标,利用给W加权值,弱化了训练数据中的噪声。
L2正则化
L2 正则化公式非常简单,直接在原来的损失函数基础上加上权重参数的平方和。假设待正则的网络层参数为w,l2正则化形式为:

其中,Ein 是未包含正则化项的训练样本误差,λ控制正则项大小,较大的λ取值将较大程度约束模型复杂度;反之亦然。实际使用时,一般将正则项加入目标函数(损失函数),通过整体目标函数的误差反向传播,从而达到正则项影响和指导网络训练的目的。
L2正则化在深度学习中有一个常用的叫法是“权重衰减”,另外L2正则化在机器学习中还被称为“岭回归”或Tikhonov正则化。
L1正则化
L1 正则化公式也很简单,直接在原来的损失函数基础上加上权重参数的绝对值。假设待正则的网络层参数为w,L1正则化为:

L1正则化除了同L2正则化一样能约束参数量级外,L1正则化还可以使得参数更稀疏,使得优化后的参数的一部分为0,另一部分为非0实值。
Tensorflow实现
tf.contrib.layers.l1_regularizer()
tf.contrib.layers.l2_regularizer()
Keras实现
from keras.regularizers import l2
model.add(Dense(units=200,input_dim=784,activation='tanh',kernel_regularizer=l2(0.01)))
Dropout随机失活
随机失活是目前几乎所有配备全连接层的深度卷积神经网络都在使用的网络正则化方法。随机失活在约束网络复杂度的同时,还是一种针对深度模型的高效集成学习方法。
传统神经网络中,由于神经元件的互联,对于某单个神经元来说,其反向传导来的梯度信息同时也受到其他神经元的影响,可谓“牵一发而动全身”。这就是所谓的“复杂协同适应”效应。随机失活的提出正是一定程度上缓解了神经元之间复杂的协同适应,降低了神经元间依赖,避免了网络过拟合的发生。
原理非常简单,对于某层的每个神经元,在训练阶段以概率P随机将该神经元权重重置为0,测试阶段所有神经元均呈激活状态,但其权重需乘(1-p)以保证训练和测试阶段各种权重拥有相同的期望,输入层和隐藏层都能应用dropout。

在Keras中示例
from keras.layers.core import Dropout model = Sequential([
Dense(output_dim=hidden1_num_units, input_dim=input_num_units, activation='relu'),
Dropout(0.25), Dense(output_dim=output_num_units, input_dim=hidden5_num_units, activation='softmax'),
])
CNN学习笔记:正则化缓解过拟合的更多相关文章
- 卷积神经网络(CNN)学习笔记1:基础入门
卷积神经网络(CNN)学习笔记1:基础入门 Posted on 2016-03-01 | In Machine Learning | 9 Comments | 14935 Vie ...
- CNN学习笔记:池化层
CNN学习笔记:池化层 池化 池化(Pooling)是卷积神经网络中另一个重要的概念,它实际上是一种形式的降采样.有多种不同形式的非线性池化函数,而其中“最大池化(Max pooling)”是最为常见 ...
- CNN学习笔记:线性回归
CNN学习笔记:Logistic回归 线性回归 二分类问题 Logistic回归是一个用于二分分类的算法,比如我们有一张图片,判断其是否为一张猫图,为猫输出1,否则输出0. 基本术语 进行机器学习,首 ...
- CNN学习笔记:批标准化
CNN学习笔记:批标准化 Batch Normalization Batch Normalization, 批标准化, 是将分散的数据统一的一种做法, 也是优化神经网络的一种方法. 在神经网络的训练过 ...
- CNN学习笔记:目标函数
CNN学习笔记:目标函数 分类任务中的目标函数 目标函数,亦称损失函数或代价函数,是整个网络模型的指挥棒,通过样本的预测结果与真实标记产生的误差来反向传播指导网络参数学习和表示学习. 假设某分类任务共 ...
- CNN学习笔记:卷积神经网络
CNN学习笔记:卷积神经网络 卷积神经网络 基本结构 卷积神经网络是一种层次模型,其输入是原始数据,如RGB图像.音频等.卷积神经网络通过卷积(convolution)操作.汇合(pooling)操作 ...
- CNN学习笔记:全连接层
CNN学习笔记:全连接层 全连接层 全连接层在整个网络卷积神经网络中起到“分类器”的作用.如果说卷积层.池化层和激活函数等操作是将原始数据映射到隐层特征空间的话,全连接层则起到将学到的特征表示映射到样 ...
- CNN学习笔记:卷积运算
CNN学习笔记:卷积运算 边缘检测 卷积 卷积是一种有效提取图片特征的方法.一般用一个正方形卷积核,遍历图片上的每一个像素点.图片与卷积核重合区域内相对应的每一个像素值乘卷积核 .内相对应点的权重,然 ...
- CNN学习笔记:激活函数
CNN学习笔记:激活函数 激活函数 激活函数又称非线性映射,顾名思义,激活函数的引入是为了增加整个网络的表达能力(即非线性).若干线性操作层的堆叠仍然只能起到线性映射的作用,无法形成复杂的函数.常用的 ...
随机推荐
- 第二百二十五节,jQuery EasyUI,PropertyGird(属性表格)组件
jQuery EasyUI,PropertyGird(属性表格)组件 学习要点: 1.加载方式 2.属性列表 3.方法列表 本节课重点了解 EasyUI 中 PropertyGird(属性表格)组件的 ...
- 【vijos】1768 顺序对的值(特殊的技巧)
https://vijos.org/p/1768 之前不知道为什么,我yy了一个n^2的做法,但是没能写出来..sad 然后看了题解才发现这题好神.. 为什么一定要照着题意找两个点然后算呢?这就是问题 ...
- 【BZOJ】1026: [SCOI2009]windy数(数位dp)
http://www.lydsy.com/JudgeOnline/problem.php?id=1026 我果然很弱啊... 考虑数位dp.枚举每一位,然后限制下一位即可. 一定要注意啊!在dfs的时 ...
- 【BZOJ4723】[POI2017]Flappy Bird DP
[BZOJ4723][POI2017]Flappy Bird Description <飞扬的小鸟>是一款风靡的小游戏.在游戏中,小鸟一开始位于(0,0)处,它的目标是飞到横坐标为X的某个 ...
- python中matplotlib绘图封装类之折线图、条状图、圆饼图
DrawHelper.py封装类源码: import matplotlib import matplotlib.pyplot as plt import numpy as np class DrawH ...
- 获取当前日期和农历的js代码
来自:http://www.cnblogs.com/Gnepner/archive/2011/09/07/2169822.html 获取当前日期 getToday.js: function GetCu ...
- 创建超小的Golang docker 镜像
原文: http://colobu.com/2015/10/12/create-minimal-golang-docker-images/ 本文对于创建超小的镜像非常有用 Docker是PaaS供应商 ...
- delphi---EHlib第三方插件----TDBGridEH,TDBNumberEditEh,TDBComboBoxEh
一.TDBGridEH 1.多选 行 options->dgMultiSelect 2.列字体改变颜色,OnDrawColumnCell写下方法. if Column.FieldName='价格 ...
- Powershell Get Domain User的几种方法
一.Get-User单用户查询 $User=Get-ADUser -identity wendy -Properties * 二.Get-User多用户循环查询 $export=@() $Users= ...
- InnoDB缓存读命中率、使用率、脏块率(%) 缓冲池的读命中率(%) 缓冲池的利用率(%) 缓冲池脏块的百分率(%)
InnoDB缓存读命中率.使用率.脏块率(%) 缓冲池的读命中率(%) 缓冲池的利用率(%) 缓冲池脏块的百分率(%)