总结-深度学习中的正则化方法(regularization)

2023-11-14

深度学习面临的非常严重的一个问题就是过拟合(overfitting)。通过一些正则化的方法,可以消除过拟合,从而使我们的模型能够得到更好的效果。

1. 什么是正则化

在这里插入图片描述
这张图,我想接触过机器学习的朋友们应该都看了很多遍了吧。

我们先从回归的角度来看待上图。假设坐标系内有一系列的点,我们希望通过一个函数来拟合出一条线,使得这条线能尽可能的贴近这些点,从而可以用这条线(也就是我们得到的模型)来表示坐标系中的点。上图中从左往右的情况依次为欠拟合,拟合的刚刚好,以及过拟合。

欠拟合:表示模型的参数过于简单(比如,你用一个一次函数的模型公式去拟合一个二次函数,出来的效果肯定是非常差的),无法很好的反应坐标系中点的分布情况。

拟合的刚刚好:这个是最理想的情况,我们所拟合出来的模型,基本上能够反应样本的分布情况,并且不会受到样本的误差的影响。

过拟合:表示我们拟合出的模型,能够非常完美的模拟样本的分布,但是,也把样本的误差等一系列因素都拟合了进去。这种情况一般会导致模型在训练集上效果很好,一旦转移到测试集,效果就会下降很多。因为模型在训练集上发生了过拟合,导致模型的泛化能力大大下降。

在这里插入图片描述
如上图所示,当发生或拟合的时候,样本在训练集上的损失error还可以持续下降,但是在测试集上的error却增加了,表示模型更差了。这就是因为模型发生了过拟合,导致其泛化能力下降,最终的结果就是虽然训练集上效果越来越好,但是在测试集上反而效果越来越差了。

为什么会有过拟合的产生,就是因为深度学习的模型中,参数实在太多,模型实在太复杂了。这么多的参数和这么庞大的模型,有的时候可以非常完美的拟合出符合训练集的模型,但是这种过分贴近训练集的模型,反而在测试集上效果太差。

这个时候,就需要用一些手段防止模型的过拟合,这个时候,正则化就派上用处了。

2. L1和L2正则化

L1正则化和L2正则化非常类似,所以就放在一起说。这两个正则化的方法,就是在损失函数中添加一项,来防止过拟合。

添加上正则化项以后,模型的参数的数值就会变小,通常来讲,模型中的参数的数值越小,模型越趋向于简单,所以,可以通过这种方式防止过拟合。

L2正则化为:
在这里插入图片描述
这里的 λ \lambda λ 是一个超参数,需要人为的指定,通过控制 λ \lambda λ 的大小,可以控制前面的损失项和正则化项所占的比例。通过加入这个L2正则化项,会使得模型中的参数的数值趋近于0.(但不是0)

L1正则化为:
在这里插入图片描述
在这个公式中,我们直接用权值的绝对值来对模型进行惩罚,使得模型不要太拟合于训练集。和L2不同的是,此时的权值很可能最终会是0。当我们想要压缩模型的时候,采用L1正则化非常的合适。否则,其他情况我们通常更多的使用L2.

3. Dropout

dropout,说白了就是让一些参数失效。具体我们举例说明。假设一个神经网络模型结构如下图所示:
在这里插入图片描述
在训练的每次循环中,我们随机的将一些参数进行隐藏,说白了就是将这些参数的值置为0。此时的网络,可能就如下图所示
在这里插入图片描述
此时的网络,相比于最初的网络,就显得没有那么复杂了,从而可以减少过拟合的发生。dropout的细节是,在训练网络的过程中(检测阶段是没有dropout这个过程中,检测阶段所有神经元都参与计算),每一次的训练,都随机的选取一部分点,将这些点的值置为0。

由于在每次的训练过程中,被隐藏的点都不一样,所以,我们也可以看成dropout使得该网络从一个网络变成了多个网络的累加。因为每一次训练,都隐藏了不同的权值,相当于都是一个新的网络。通过多次训练,相当于将不同的网络进行了叠加。

一般来讲,叠加而成的组合网络,一般优于单一网络,因为组合网络能够捕捉到更多的随机因素。同样的,采用了dropout以后,网络的性能一般也比没有使用dropout的网络要好。

4. data augmentation(数据增强)

之所以会发生过拟合,是因为模型的参数太多,可以用于训练的数据太少,所以除了更改模型的一些性质之外,也可以尝试增加训练数据的数量。

以计算机视觉中的图像分类举例,如下图所示
在这里插入图片描述
假设我的训练数据中,只有一张猫的图片,如上图左侧所示。但是,我们可以通过翻转,裁切,旋转,平移甚至高斯模糊等各种手段,用这一张图片生成很多张猫的图片,如上图右边所示。这些生成的图片,和原图片同属于一个类别,通过这种方法,可以大大的提高数据量,从而也可以防止过拟合。

5. early stopping(早点停止?我也不知道该怎么翻译,反正大家理解意思就好)

在这里插入图片描述

在训练的过程中,可以将训练集的一部分分出来,作为验证集,然后在训练过程中,同时观察error在训集上和验证集上的大小,如上图所示。当发现训练集上error在持续减小,但是验证集上的error不再减小反而增大的时候,就表示该模型可能对训练集发生了过拟合,这个时候,就可以停止训练了。

在验证集error最小的时候停止训练,从而可以得到一个最好的效果。

参考:
https://zhuanlan.zhihu.com/p/44363288
https://www.jiqizhixin.com/articles/2017-12-20

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

总结-深度学习中的正则化方法(regularization) 的相关文章

  • 日期自然语言解析器(.NET)?

    我希望能够让用户使用自然语言 例如 下周五 每个工作日 输入日期 包括重复日期 很像以下的例子http todoist com Help timeInsert http todoist com Help timeInsert I found
  • python 中单词的动名词形式

    我想获得字符串的动名词形式 我还没有找到调用库来获取动名词的直接方法 我应用了以 ing 结尾的单词的规则 但是因为异常导致我收到了一些错误 然后 我检查 cmu 单词以确保生成的动名词单词正确 代码如下 import cmudict im
  • 如何计算两个文本文档之间的相似度?

    我正在考虑使用任何编程语言 尽管我更喜欢 Python 来从事 NLP 项目 我想获取两个文档并确定它们的相似程度 常见的方法是将文档转换为 TF IDF 向量 然后计算它们之间的余弦相似度 任何有关信息检索 IR 的教科书都涵盖了这一点
  • 比较文本文档含义的最佳方法?

    我正在尝试找到使用人工智能和机器学习方法来比较两个文本文档的最佳方法 我使用了 TF IDF Cosine 相似度和其他相似度度量 但这会在单词 或 n gram 级别上比较文档 我正在寻找一种方法来比较meaning的文件 最好的方法是什
  • 词干函数错误:词干需要一个位置参数

    这里的stem函数显示错误 指出stem需要循环中的一个位置参数 如所讨论的 from nltk stem import PorterStemmer as ps text my name is pythonly and looking fo
  • BERT - 池化输出与序列输出的第一个向量不同

    我在 Tensorflow 中使用 BERT 有一个细节我不太明白 根据文档 https tfhub dev google bert uncased L 12 H 768 A 12 1 https tfhub dev google bert
  • Blenderbot 微调

    我一直在尝试微调 HuggingFace 的对话模型 Blendebot 我已经尝试过官方拥抱脸网站上给出的传统方法 该方法要求我们使用 trainer train 方法来完成此操作 我使用 compile 方法尝试了它 我尝试过使用 Py
  • 实时跟踪每分钟/小时/天的前 100 个 Twitter 单词

    我最近遇到这样一个面试问题 Given a continuous twitter feed design an algorithm to return the 100 most frequent words used at this min
  • python中的语音识别持续时间设置问题

    我有一个 Wav 格式的音频文件 我想转录 我的代码是 import speech recognition as sr harvard sr AudioFile speech file wav with harvard as source
  • BERT 输出不确定

    BERT 输出是不确定的 当我输入相同的输入时 我希望输出值是确定性的 但我的 bert 模型的值正在变化 听起来很尴尬 同一个值返回两次 一次 也就是说 一旦出现另一个值 就会出现相同的值并重复 如何使输出具有确定性 让我展示我的代码片段
  • 快速NLTK解析成语法树

    我正在尝试将数百个句子解析为语法树 我需要快速完成 问题是如果我使用 NLTK 那么我需要定义一个语法 而我不知道我只知道它会是英语 我尝试使用this https github com emilmont pyStatParser统计解析器
  • 使用正则表达式标记化进行 NLP 词干提取和词形还原

    定义一个函数 名为performStemAndLemma 它需要一个参数 第一个参数 textcontent 是一个字符串 编辑器中给出了函数定义代码存根 执行以下指定任务 1 对给出的所有单词进行分词textcontent 该单词应包含字
  • 如何在R中使用OpenNLP获取POS标签?

    这是 R 代码 library NLP library openNLP tagPOS lt function x s lt as String x word token annotator lt Maxent Word Token Anno
  • 使用 NLP 进行地址分割

    我目前正在开发一个项目 该项目应识别地址的每个部分 例如来自 str Jack London 121 Corvallis ARAD ap 1603 973130 输出应如下所示 street name Jack London no 121
  • 除非 POS 显式,否则 WordNetLemmatizer 不会返回正确的引理 - Python NLTK

    我正在对 Ted 数据集成绩单进行词形还原 我注意到一些奇怪的事情 并非所有单词都被词形还原 要说的是 selected gt select 哪个是对的 然而 involved gt involve and horsing gt horse
  • 斯坦福 CoreNLP:使用部分现有注释

    我们正在尝试利用现有的 代币化 句子分割 和命名实体标记 同时我们希望使用斯坦福 CoreNlp 额外为我们提供 词性标注 词形还原 和解析 目前 我们正在尝试以下方式 1 为 pos lemma parse 创建一个注释器 Propert
  • Python模块可以访问英语词典,包括单词的定义[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个 python 模块 它可以帮助我从英语词典中获取单词的定义 当然有enchant 这可以帮助我检查该单词是否存在于英语中
  • 用于词性标记的优秀 Java 库是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 从 Penn Treebank 格式的文本中提取子句

    说我有一句话 After he had eaten the cheese Bill went to the grocery 在我的程序中 我得到以下输出 PARSE TREE ROOT S SBAR IN After S NP PRP he
  • Keras:嵌入/向量的附加层?

    我有 3 个词嵌入 嵌入 1 w11 w12 w13 w14 嵌入 2 w21 w22 w23 w24 嵌入 3 w31 w32 w33 w34 有没有办法通过添加所有三个向量来获得第四个嵌入 并使用所有向量的可训练权重 例如 嵌入 4 w

随机推荐

  • Webots小车与Gampping建图仿真与ORB3算法实践

    此篇博客转自本作者在古月居的博客 https www guyuehome com 34537 前言 在研一的时候 由于XXX项目的需要 其中一项就是需要测试Gmapping建图 自然也要求使用ROS系统 由于之前经常在webots中进行仿真
  • 连接远程服务器的vscode无法格式化代码/文档(已解决)

    甘受人欺 定非懦弱 自谓予智 终是糊涂 问题 vscode右键无法显示 格式化文档 字样 解决方案 在终端输入 usr bin python3 m pip install U autopep8 安装此包 然后vscode右键便显示 格式化文
  • win10 sdk各种版本下载地址

    https developer microsoft com zh cn windows downloads sdk archive
  • 关于OpenMax中sample中缺少OMX_OSAL_Interfaces.h

    最近用到OpenMax在官网下载了sample 可是下载后发现少了 include OMX OSAL Interfaces h include OMX CONF StubbedComponent h 后来仔细看了一下代码 发现这两个文件是A
  • Json插件与json类型的Result

    json插件下载 Json插件提供了一中json类型的Result 一旦为某个Action指定了一个类型为json 的Result 则该Result无序映射到任何视图资源 因为Json插件会负责将Action里的状态信息序列化为Json格式
  • Java——集合

    文章目录 1 集合概述 2 集合类体系结构 Collection集合体系 3 Collection集合常用API 3 Collection集合的遍历方式 方式一 迭代器 方式二 foreach 增强for循环 方式三 lambda表达式 4
  • 驾驶员情绪识别与应用相关笔记

    1 场景 应用 1 1 在检测到驾驶员的愤怒情绪后 便可勒紧安全带 提高制动器的反应响应性 从而减轻事故的伤害 Alaoui 此外 还可通过方向盘振动及警告声 将情绪状态告知驾驶员 并且 为了平复心情 还可考虑自动调整车内照明及音乐 如果自
  • 云原生入门到进阶,1篇就够了!

    开始阅读文章前 请角色切换 设想你作为一位中小型IT公司CTO 面对云原生技术决策 你需要回答两个问题 为什么需要上云 上云有何弊端 作为一家公司的技术决策者 必须理解上云的利与弊 并结合公司各阶段发展目标给出最适合的技术方案 云原生 概述
  • 输入pip命令时,报错Fatal error in launcher

    因为之前也有碰到过这样一个问题 当时了解到是升级pip导致的一些错误 后来通过百度找到了一个解决方案 python m pip 只要是需要用到pip的地方 全部加上python m 好了 解决了问题 这是当时的一个解决方法 问题是解决了 当
  • 用Java代码操作RabbitMQ(包括创建和绑定)

    生产者 package com sky rabbitmq all import com rabbitmq client Channel import com rabbitmq client Connection import com rab
  • AcdbTable 例子学习笔记

    Table 例子学习笔记 在这个例子中 ARX向我们展示了ACDBTABLE类的一些基本操作方法 ACDBTABLE类是ACAD2005及其以后的产品 应该是说ACDBDATATABLE的升级产品 AcDbDataCell AcDbData
  • 判断一个list里是否有其他list------集合list的contain方法

    判断一个list里是否有其他list 最近在做项目时需要判断一个list里是否有其他list 首当其冲就直接想到了contains方法 但总是出现Bug 后面找了好久才发现是这个原因 基础太不扎实 list的contains在比较包含对象时
  • 【HarmonyOS】实现从视频提取音频并保存到pcm文件功能(API6 Java)

    关键字 视频提取类Extractor 视频编解码 保存pcm文件 写在前面 在使用API6开发HarmonyOS应用时 通常会开发一些音视频媒体功能 这里介绍如何从视频中提取音频保存到pcm文件功能 生成pcm音频文件后 就可使用音频播放类
  • ES6知识点总结——学习网站及环境搭建

    1 ES6学习网站 ES6官网 https 262 ecma international org 6 0 阮一峰ES6学习电子书 https es6 ruanyifeng com docs let W3Cschool ES6中文教程 htt
  • html5导航栏文字间距,div字间距-div内文字之间间距设置方法

    本篇文章给大家带来的内容是关于div字间距 div内文字之间间距设置方法 有一定的参考价值 有需要的朋友可以参考一下 希望对你有所帮助 div内字与字间距是否可以用CSS代码实现 答案 可以使用css实现div字间距布局 CSS字间距的单词
  • nested exception is java.io.FileNotFoundException: class path resource [applicationContext.xml] cann...

    org apache ibatis exceptions PersistenceException Error building SqlSession The error may exist in pojo UserMapper xml C
  • React hooks + antd前台实现input搜索框实时搜索table表格

    阅读本文前提需掌握react hooks 中useState和useEffect基本用法 详见 可选链 语法糖 文章目录 实现效果 实现步骤 1 引入 2 初始化 3 筛选数据 4 输入和展示数据 实现效果 实现步骤 1 引入 Search
  • 基于单片机语音识别智能家居系统的设计与实现

    功能介绍 以STM32单片机作为主控系统 液晶显示当前环境温湿度 用电器开关状态 通过语音模块识别设定的语音 DHT11进行环境温湿度采集 通过语音播报模块报当前温湿度 智能回复 通过语音识别可以打开灯 窗帘 电视空调等设备 整个电路以5v
  • vue项目运行后如何自动在浏览器中打开

    方法一 配置open 在根目录webpack config js或vue config js中的module exports里面配置devServer open 将open属性值设置为true即可 devServer host localh
  • 总结-深度学习中的正则化方法(regularization)

    深度学习面临的非常严重的一个问题就是过拟合 overfitting 通过一些正则化的方法 可以消除过拟合 从而使我们的模型能够得到更好的效果 1 什么是正则化 这张图 我想接触过机器学习的朋友们应该都看了很多遍了吧 我们先从回归的角度来看待