【深度学习】正则化入门

简介: 【深度学习】正则化入门

一、前言


最近在看DeepLearning这本书,看到了正则化这一章做一个知识梳理。首先用一张思维导图做个总结。


640.jpg


二、传统机器学习中的正则化及相关概念


  • 泛化
    学习方法对未知数据的预测能力。
  • 决定机器学习算法效果(泛化能力)的因素:
    1.降低训练误差——解决欠拟合问题
    2.缩小训练误差和测试误差的差距——解决过拟合问题
    3.一个好的机器学习算法是避免了过拟合同时也避免了欠拟合…
  • 机器学习和纯优化不同的地方在于也希望泛化误差(测试误差)较小。
  • 过拟合
  • 表现:对已知数据预测的很好,对未知数据预测的很差,测试误差和训练误差之间的差距太大。
  • 原因:一味追求提高对训练数据的预测能力,所选模型的复杂度往往会比真模型更高。
  • 正则化
  • ERM与SRM(经验风险最小化和结构风险最小化)
    模型关于训练集的平均损失称为经验风险-ER(EL-经验损失)。
    样本容量过小,ERM—>过拟合。
    SRM——>防止过拟合——>SRM等价于ERM+正则化。
  • 正则化是结构风险最小化策略的实现,是在经验风险上加一个正则化项(regularizer)或惩罚项(penalty term)。regularizer一般是模型复杂度的单调递增函数,模型越复杂,regularizer越大。

三、深度学习中的正则化


1.参数范数惩罚


  • L2 参数正则化
    即传统机器学习里的权重衰减(weight decay),也被称为L2 参数范数惩罚,正则项Ω(θ) =12w212∥w∥2
    主要目的是解决过拟合,具体的实现是让权值往更小的方向缩减(这样说比较笼统,后续用泰勒展开说明L1、L2背后的数学原理)。
  • L1 参数正则化
    正则项Ω(θ) =w1=||wi||=∥w∥1=∑||wi||
    L1正则化最主要的作用是模型稀疏化(即它的权值矩阵有很多0),从而可以用来做特征选择。


2.噪声作用鲁棒性


  • 作用于输入——数据集增强的策略
    有时候添加方差极小的噪声等价于对权重施加范数惩罚。
  • 作用于隐藏单元——Dropout
  • 作用于权重——主要用于RNN
  • 作用于输出目标——显示对标签上的噪声进行建模。
    其中标签平滑的优势是能够防止模型追求确切概率而不影响模型学习正确分类。


3.提前终止


  • 基本思路
    训练误差随着时间的推移会逐渐降低但验证集的误差会再次上升。从而只要返回使验证集误差最低的参数设置,可以获得验证集误差更低的模型(有希望获得更好的测试误差)。
    深度学习中最常用的正则化形式——有效性和简单性,减少计算成本(减少迭代次数,无需添加惩罚项)。
  • 提前终止需要验证集,结果是某些训练数据未被利用。
    为了利用额外的数据,进行额外的第二轮训练。两种策略:
    1.再次初始化模型,使用第一轮提前终止训练确定的最佳步数。
    2.保持第一轮训练获得的参数,使用全部的数据继续训练


4.参数共享


  • 基本概念
    参数范数惩罚是正则化参数使其彼此接近。而使用约束—强迫某些参数相等更为流行。这种正则化方法被称为参数共享。一个显著优点:降低参数数量,减少模型占用的内存。
  • CNN是参数共享的典型应用,将领域知识有效整合到网络架构。
  • RNNs中的权值共享(循环结构)也是这个策略的实现。


5.稀疏表示


  • 惩罚神经网络中的激活单元,稀疏化激活单元,这种策略间接对模型参数施加了复杂惩罚。
  • 表示的正则化可以使用参数正则化同种类型的机制实现。向损失函数添加对表示的范数惩罚。


6.模型平均


  • 主要想法-Voting
    训练几个不同的模型,让所有模型表决决策。奏效的原因是不同的模型通常不会在测试集产生完全相同的误差。
  • 采用模型平均策略的技术被称为集成方法(bagging和 boosting)。
  • 模型平均是一个减少泛化误差的非常强大可靠的方法。


7.Dropout


  • 基本概念
    Dropout训练由所有子网络组成的集成,其中子网络通过从基本网络中删除非输出单元构建。一般构建的子网络个数为2的指数级。
  • 在第一种近似下,Dropout可以被认为是集成大量深层神经网络的实用Bagging方法。与Bagging不同的是:
  • Bagging所有模型独立,而Dropout所有模型共享参数,每个模型参数是父神经网络参数的不同子集。
  • Bagging每一个模型都训练到收敛,而Dropout实际训练时,对基本网络(父神经网络)的采样基本不可能全部完成,取而代之,单步训练小部分的子网络,利用参数共享设定剩余子网络的参数。
  • 具体来说,训练中实用Dropout时,使用基于小批量产生较小步长的学习算法(SGD等)。随机抽样(独立采样)应用 于网络中所有输入和隐藏单元的不同二值(0,1)掩码。通常超参数的采样概率为 1,隐藏层的采样概率通常为 0.5,输入的采样概率通常为 0.8。
    Dropout做预测时,因为指数级子网络的原因,通常采用的方法:
    1.平均许多掩码的输出(10-20个掩码)。
    2.集成成员的几何平均代替算术平均。
  • 更近一步的观点
    Dropout不仅仅是训练一个Bagging的集成模型,并且是共享隐藏单元的集成模型。
    Dropout强大的大部分原因是作用于隐藏单元的掩码噪声。可以看做是对输入内容的信息高度智能化、自适应破坏的一种形式,而不是对输入原始值的破坏。另一方面,噪声是乘性的。


8.对抗训练


  • 基本概念
    通过对抗训练减少原有独立同分布的测试集的错误率—在对抗扰动的训练集样本上训练网络。实现在数据的局部区域对敏感的线性行为稳定(引入局部恒定先验)。
  • 对抗训练有助于体现积极正则化与大型函数族结合的力量。
  • 对抗样本—添加扰动的向量(针对错误实例)。
  • 过度线性。
  • 提供了一种实现半监督学习的方法。
相关文章
|
1月前
|
机器学习/深度学习 人工智能 TensorFlow
人工智能浪潮下的自我修养:从Python编程入门到深度学习实践
【10月更文挑战第39天】本文旨在为初学者提供一条清晰的道路,从Python基础语法的掌握到深度学习领域的探索。我们将通过简明扼要的语言和实际代码示例,引导读者逐步构建起对人工智能技术的理解和应用能力。文章不仅涵盖Python编程的基础,还将深入探讨深度学习的核心概念、工具和实战技巧,帮助读者在AI的浪潮中找到自己的位置。
|
3月前
|
机器学习/深度学习 人工智能 算法
深度学习入门:理解神经网络与反向传播算法
【9月更文挑战第20天】本文将深入浅出地介绍深度学习中的基石—神经网络,以及背后的魔法—反向传播算法。我们将通过直观的例子和简单的数学公式,带你领略这一技术的魅力。无论你是编程新手,还是有一定基础的开发者,这篇文章都将为你打开深度学习的大门,让你对神经网络的工作原理有一个清晰的认识。
|
13天前
|
机器学习/深度学习 人工智能 算法
深度学习入门:用Python构建你的第一个神经网络
在人工智能的海洋中,深度学习是那艘能够带你远航的船。本文将作为你的航标,引导你搭建第一个神经网络模型,让你领略深度学习的魅力。通过简单直观的语言和实例,我们将一起探索隐藏在数据背后的模式,体验从零开始创造智能系统的快感。准备好了吗?让我们启航吧!
39 3
|
28天前
|
机器学习/深度学习 人工智能 算法框架/工具
深度学习中的卷积神经网络(CNN)入门
【10月更文挑战第41天】在人工智能的璀璨星空下,卷积神经网络(CNN)如一颗耀眼的新星,照亮了图像处理和视觉识别的路径。本文将深入浅出地介绍CNN的基本概念、核心结构和工作原理,同时提供代码示例,带领初学者轻松步入这一神秘而又充满无限可能的领域。
|
2月前
|
机器学习/深度学习 PyTorch 算法框架/工具
深度学习入门案例:运用神经网络实现价格分类
深度学习入门案例:运用神经网络实现价格分类
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
软件工程师,入门下深度学习吧
软件工程师,入门下深度学习吧
62 9
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的卷积神经网络(CNN)入门与实践
【8月更文挑战第62天】本文以浅显易懂的方式介绍了深度学习领域中的核心技术之一——卷积神经网络(CNN)。文章通过生动的比喻和直观的图示,逐步揭示了CNN的工作原理和应用场景。同时,结合具体的代码示例,引导读者从零开始构建一个简单的CNN模型,实现对图像数据的分类任务。无论你是深度学习的初学者还是希望巩固理解的开发者,这篇文章都将为你打开一扇通往深度学习世界的大门。
|
3月前
|
机器学习/深度学习 人工智能 TensorFlow
深度学习入门:从理论到实践
【9月更文挑战第22天】本文将带你走进深度学习的世界,从基础的理论概念出发,逐步深入到实践应用。我们将探讨神经网络的工作原理,以及如何通过编程实现一个简单的深度学习模型。无论你是初学者还是有一定基础的学习者,都能在这篇文章中找到有价值的信息。让我们一起揭开深度学习的神秘面纱,探索这个充满无限可能的领域吧!
|
3月前
|
机器学习/深度学习 人工智能 算法
深度学习中的卷积神经网络(CNN)入门与实践
【9月更文挑战第19天】在这篇文章中,我们将探索深度学习的一个重要分支——卷积神经网络(CNN)。从基础概念出发,逐步深入到CNN的工作原理和实际应用。文章旨在为初学者提供一个清晰的学习路径,并分享一些实用的编程技巧,帮助读者快速上手实践CNN项目。
|
3月前
|
机器学习/深度学习 人工智能 TensorFlow
深度学习入门:理解卷积神经网络(CNN)
【9月更文挑战第14天】本文旨在为初学者提供一个关于卷积神经网络(CNN)的直观理解,通过简单的语言和比喻来揭示这一深度学习模型如何识别图像。我们将一起探索CNN的基本组成,包括卷积层、激活函数、池化层和全连接层,并了解它们如何协同工作以实现图像分类任务。文章末尾将给出一个简单的代码示例,帮助读者更好地理解CNN的工作原理。
57 7