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. sublime3 Package Control不能使用

    手动下载插件包:https://sublime.wbond.net/Package%20Control.sublime-package,复制到%SumlimeText_HOME%\Data\Insta ...

  2. PAT006 Tree Traversals Again

    题目: An inorder binary tree traversal can be implemented in a non-recursive way with a stack. For exa ...

  3. linux驱动开发---导出内核符号

    导出内核符号模板代码,验证小实例: /** *Copyright (c) 2013.TianYuan *All rights reserved. * *文件名称: Esdexp.c *文件标识: 导出 ...

  4. 【PyQt】算法-插入、递归、冒泡

    # coding=utf-8 import sys from PyQt4.QtGui import * from PyQt4.QtCore import * class MainWindow(QMai ...

  5. iOS开发:iPhone6、6 plus适配

    本文转载至 http://jingyan.baidu.com/article/8cdccae97a5c2b315413cda9.html 1 2 3 4 5 6 7 分步阅读 随着苹果公司持续推出新产 ...

  6. delphi 快捷键的使用

    CTRL+SPACE 代码补全,很好用的(先改了输入法热键)CTRL+SHIFT+C 编写申明或者补上函数CTRL+SHIFT+↑(↓) 在过程.函数.事件内部, 可跳跃到相应的过程.函数.事件的定义 ...

  7. CodeForces 666B World Tour(spfa+枚举)

    B. World Tour time limit per test 5 seconds memory limit per test 512 megabytes input standard input ...

  8. 在DO搭建自己的ss

    前期准备: 1.一个paypal账户 2.国外的一台VPS paypal的注册需要一个邮箱和一张信用卡即可. VPS的话经过搜索对比,决定使用DigitalOcean的.(点击此链接注册DO可获得10 ...

  9. mysql_表内容_操作

    1.增 语法:insert into 表 (列名,列名...) values (值,值...) # 插入单条数据 insert into 表 (列名,列名...) values (值,值...) # ...

  10. 你不知道的Javascript(上卷)读书笔记之三 ---- 函数作用域与块作用域

    1. 函数中的作用域 函数作用域的含义是指属于这个函数的全部变量都可以在整个函数范围内使用以及复用 2. 隐藏内部实现 函数经常使用于隐藏”内部实现”,可以把变量和函数包裹在一个函数的作用域中,然后用 ...