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学习笔记:正则化缓解过拟合的更多相关文章

  1. 卷积神经网络(CNN)学习笔记1:基础入门

    卷积神经网络(CNN)学习笔记1:基础入门 Posted on 2016-03-01   |   In Machine Learning  |   9 Comments  |   14935  Vie ...

  2. CNN学习笔记:池化层

    CNN学习笔记:池化层 池化 池化(Pooling)是卷积神经网络中另一个重要的概念,它实际上是一种形式的降采样.有多种不同形式的非线性池化函数,而其中“最大池化(Max pooling)”是最为常见 ...

  3. CNN学习笔记:线性回归

    CNN学习笔记:Logistic回归 线性回归 二分类问题 Logistic回归是一个用于二分分类的算法,比如我们有一张图片,判断其是否为一张猫图,为猫输出1,否则输出0. 基本术语 进行机器学习,首 ...

  4. CNN学习笔记:批标准化

    CNN学习笔记:批标准化 Batch Normalization Batch Normalization, 批标准化, 是将分散的数据统一的一种做法, 也是优化神经网络的一种方法. 在神经网络的训练过 ...

  5. CNN学习笔记:目标函数

    CNN学习笔记:目标函数 分类任务中的目标函数 目标函数,亦称损失函数或代价函数,是整个网络模型的指挥棒,通过样本的预测结果与真实标记产生的误差来反向传播指导网络参数学习和表示学习. 假设某分类任务共 ...

  6. CNN学习笔记:卷积神经网络

    CNN学习笔记:卷积神经网络 卷积神经网络 基本结构 卷积神经网络是一种层次模型,其输入是原始数据,如RGB图像.音频等.卷积神经网络通过卷积(convolution)操作.汇合(pooling)操作 ...

  7. CNN学习笔记:全连接层

    CNN学习笔记:全连接层 全连接层 全连接层在整个网络卷积神经网络中起到“分类器”的作用.如果说卷积层.池化层和激活函数等操作是将原始数据映射到隐层特征空间的话,全连接层则起到将学到的特征表示映射到样 ...

  8. CNN学习笔记:卷积运算

    CNN学习笔记:卷积运算 边缘检测 卷积 卷积是一种有效提取图片特征的方法.一般用一个正方形卷积核,遍历图片上的每一个像素点.图片与卷积核重合区域内相对应的每一个像素值乘卷积核 .内相对应点的权重,然 ...

  9. CNN学习笔记:激活函数

    CNN学习笔记:激活函数 激活函数 激活函数又称非线性映射,顾名思义,激活函数的引入是为了增加整个网络的表达能力(即非线性).若干线性操作层的堆叠仍然只能起到线性映射的作用,无法形成复杂的函数.常用的 ...

随机推荐

  1. hdu 3836 Equivalent Sets(强连通分量--加边)

    Equivalent Sets Time Limit: 12000/4000 MS (Java/Others)    Memory Limit: 104857/104857 K (Java/Other ...

  2. impala+hdfs+parquet格式文件

    [创建目录]hdfs dfs -mkdir -p /user/hdfs/sample_data/parquet [赋予权限]sudo -u hdfs hadoop fs -chown -R impal ...

  3. php 合并数组的方法 非array_merge

    Array ( [0] => Array ( [max] => 50 [date] => 2016-01-07 ) [1] => Array ( [max] => 100 ...

  4. bootstrap基础学习九篇

    现在学学bootstrap响应式实用工具 Bootstrap 提供了一些辅助类,以便更快地实现对移动设备友好的开发.这些可以通过媒体查询结合大型.小型和中型设备,实现内容对设备的显示和隐藏. 需要谨慎 ...

  5. Android音频文件浏览+音频播放

    该Demo执行后,会显示全部你sd卡上的音乐文件列表, 并能够点击列表选择某一首歌曲进行播放. 执行效果: 点击download出现: 然后点击歌曲调用系统播放器播放. 源码: activity_au ...

  6. css !import

    !important是CSS1就定义的语法,作用是提高指定样式规则的应用优先权,语法格式{ sRule!important },即写在定义的最后面,并且在分号之前,比如: {font-color: r ...

  7. raw_input() 与 input()对比

    转载来自http://www.cnblogs.com/way_testlife/archive/2011/03/29/1999283.html 这两个均是 python 的内建函数,通过读取控制台的输 ...

  8. 【Google Earth】pro之视频录制

    一.谷歌地球文件简介 谷歌地球能识别的文件分为:gpx.kml.kmz文件.谷歌地球的官方文件为kml和kmz,其中kmz是kml和图片.模型等数据的压缩文件,kml为数据信息文件,也可以分为航迹和字 ...

  9. MFC中CString.Format的用法

    http://www.cnblogs.com/kongtiao/archive/2012/06/13/2548033.html 在MFC程序中,使用CString来处理字符串是一个很不错的选择.CSt ...

  10. CodeFirst中DbContext动态添加DbSet

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...