#机器学习--深度学习中的正则化

news2024/9/21 0:38:15

#机器学习--深度学习中的正则化

引言

        本系列博客旨在为机器学习(深度学习)提供数学理论基础。因此内容更为精简,适合二次学习的读者快速学习或查阅。


1、参数范数惩罚

        通过对目标函数 J J J 添加一个参数范数惩罚 Ω ( θ ) \Omega(\theta) Ω(θ) ,限制模型的学习能力。将正则化后的目标函数记为 J ~ ( θ ; X , y ) = J ( θ ; X , y ) + α Ω ( θ ) \tilde{J}(\theta;X,y)=J(\theta;X,y)+\alpha\Omega(\theta) J~(θ;X,y)=J(θ;X,y)+αΩ(θ)
        其中 α ∈ [ 0 , ∞ ) \alpha\in[0,\infty) α[0,) 是权衡范数惩罚项 Ω \Omega Ω 和标准目标函数 J ( X ; θ ) J(X;\theta) J(X;θ) 相对贡献的超参数。 α \alpha α 越大,对应的正则化惩罚越大。

2、 L 2 L^{2} L2 正则化

        定义: Ω ( θ ) = 1 2 ∣ ∣ w ∣ ∣ 2 2 \Omega(\theta)=\frac{1}{2}||w||^{2}_{2} Ω(θ)=21∣∣w22
        性质:
        (1) L 2 L^{2} L2 正则化可以使权重更加接近原点,降低模型复杂度,从而防止过拟合。
        (2) L 2 L^{2} L2 正则化能让学习算法“感知”到具有较高方差的输入 x x x ,因此与输出目标的协方差较小(相对增加方差)的特征的权重将会收缩。

3、 L 1 L^{1} L1 正则化

        定义: Ω ( θ ) = ∣ ∣ w ∣ ∣ 1 = ∑ i ∣ w i ∣ \Omega(\theta)=||w||_{1}=\sum_{i}|w_{i}| Ω(θ)=∣∣w1=iwi
        性质:
        (1)相比 L 2 L^{2} L2 正则化, L 1 L^{1} L1 正则化会产生更稀疏的解,即,最优值中的一些参数为0。
        (2)由于 L 1 L^{1} L1 正则化具有稀疏性质,所以广泛应用于特征选择。

4、显式约束和重投影

        通过上述正则化策略,我们可以将网络权重 θ \theta θ 限制到某个区域内,如, L 2 L^{2} L2 正则化中会将网络权重限制到一个 L 2 L^{2} L2 球中。虽然我们可以通过控制参数 α \alpha α 来调整限制区域的大小,但通常我们难以知道这个限制区域的确切大小。因此需要进行显式约束:我们希望约束 Ω ( θ ) \Omega(\theta) Ω(θ) 小于某个常数 k k k
        为了实现显式约束,我们需要修改反向传播中的梯度下降算法,实现重投影
        (1)正常按照无任何约束情况,计算得到 J ( θ ) J(\theta) J(θ) 的梯度。
        (2)对参数 θ \theta θ 进行更新。
        (3)将更新后的参数 θ \theta θ 投影到满足 Ω ( θ ) < k \Omega(\theta)<k Ω(θ)<k 的最近点。
        相比使用惩罚强加约束,使用显式约束和重投影的优点如下:
        (1)惩罚可能会导致目标函数非凸而使算法陷入局部极小。而重投影实现的显式约束则没有直接改变优化目标,只是限制权重变得异常大甚至离开限制区域。
        (2)重投影实现的显式约束对优化过程增加了一定的稳定性:当使用较高的学习率时,很可能进入正反馈,即大的权重诱导大梯度,然后使得权重获得较大更新,从而让网络更快地探索参数空间,而且同时还不会让权重脱离限制区域。

5、参数绑定和参数共享

        另一种对网络权重 θ \theta θ 进行限制的思路是参数绑定和参数共享,这样做的显著优点是,只有参数的子集需要被存储在内存中,可以显著减少模型的内存占用。
        目前为止,最流行和广泛使用的参数共享出现在应用于计算机视觉的卷积神经网络(CNN)。参数共享显著降低了CNN模型的参数数量,从而显著提高了网络的规模(深度)。
        循环神经网络也是参数共享的最佳实践。

6、Bagging

        Bagging 是通过结合几个模型降低泛化误差的技术。主要想法是分别训练几个不同的模型,然后让所有模型表决测试样例的输出。这是机器学习中常规策略的一个例子,被称为模型平均。采用这种策略的技术被称为集成方法
        模型平均奏效的原因是不同的模型通常不会在测试集上产生完全相同的误差。

7、Dropout

        在深度学习中,Bagging 似乎不太实用了。因为训练一个模型就已经很不容易了(大一点的可能要训练几天),想要训练一群模型进行 Bagging,这是不现实的。而 Dropout 提供了一种 Bagging 的廉价的近似方法。
        Dropout 训练的集成包括所有从基础网络除去非输出单元后形成的子网络。即在训练中,对于每一个训练样本随机令神经单元按照一定概率 p p p 被包括,如下图所示:
        
        Dropout 训练与 Bagging 不太一样。Bagging 中的所有模型都是独立的,但在 Dropout 的情况下,所有模型共享参数,其中每个模型继承父神经网络参数的不同子集。参数共享使得在有限可用内存下表示指数级数量的模型变得可能。
        对于上图中的基础网络,使用 Dropout 后的计算图如下所示,其中 μ \mu μ 是二项式分布,训练过程中每一次前向传播和反向传播都会随机生成一次,表示有概率 p p p 被包括:
请添加图片描述
        权重比例推断规则:到了测试阶段,就不能再使用 Dropout 了,因为这会导致模型不稳定,即每一次相同的输入会产生不同的输出。因此,为了在测试阶段得到稳定且正确的结果,需要使用权重比例推断规则。该规则有两种实现方式:
        (1)训练结束后将单元权重 θ \theta θ 乘以被包括的概率 p p p
        (2)训练期间将单元的输出 x ~ 1 \tilde{x}_{1} x~1 除以被包括的概率 p p p
        无论是哪种实现方式,其目的都是为了确保在测试阶段单元的期望输出与在训练阶段该单元的期望输出是大致相同的。
        Dropout 的性质如下:
        (1)适用于训练数据集较多的场景。
        (2)Dropout 不仅仅是训练一个 Bagging 的集成模型,而且是共享隐藏单元的集成模型。
        (3)Dropout 强大的大部分原因来自施加到隐藏单元的掩码噪声。即可以看作对输入内容的信息高度智能化、自适应破坏的一种形式,而不是对输入原始值的破坏。破坏提取的特征而不是原始值,让破坏过程充分利用模型迄今获得的关于输入分布的所有知识。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/547904.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

uniapp实现条码扫描 可开闪光灯,原生H5调用,不需要任何sdk。

主要思路 使用QuaggaJs这个库。调用摄像头使用的 navigator.mediaDevices.getUserMedia 这个H5的api。通过 video 和 canvas 把摄像头获取到的数据展现到页面上&#xff0c;同时调用监听Quagga解析。 获取设备摄像头权限,用于后续开启摄像头。创建video元素显示摄像头画面,和ca…

AcWing算法提高课-1.3.10混合背包问题

宣传一下算法提高课整理 <— CSDN个人主页&#xff1a;更好的阅读体验 <— 本题链接&#xff08;AcWing&#xff09; 点这里 题目描述 有 N N N 种物品和一个容量是 V V V 的背包。 物品一共有三类&#xff1a; 第一类物品只能用1次&#xff08;01背包&#xff0…

opencv相机标定

当你把摄像机放在一个特定的位置&#xff0c;在它的后面放一个目标图像&#xff0c;或者是把摄像机放到某个物体上&#xff0c;摄像机周围的物体是什么形状&#xff0c;你需要知道这些信息。 当你在计算机上处理图像时&#xff0c;会使用以下三个参数&#xff1a; 1.像素坐标&a…

软件测试5年了,薪资25K,我还怕00后卷吗?

前言 沅哥在这个行业爬摸滚打5年了&#xff0c;从最开始点点点的功能测试到现在到现在成为高级测试&#xff0c;工资也翻了几倍&#xff0c;到了25k。他和我说&#xff0c;最开始他是想躺平的&#xff0c;后来也是被迫卷的&#xff0c;但好在这个结果他很满意。 之所以改变的…

一文3000字从0到1使用Selenium进行自动化测试

对于很多刚入门的测试新手来说&#xff0c;大家都将自动化测试作为自己职业发展的一个主要阶段。可是&#xff0c;在成为一名合格的自动化测试工程师之前&#xff0c;我们不仅要掌握相应的理论知识&#xff0c;还要进行大量的实践&#xff0c;积累足够的经验&#xff0c;以便快…

【重新定义matlab强大系列七】利用matlab函数ischange查找数据变化点

&#x1f517; 运行环境&#xff1a;matlab &#x1f6a9; 撰写作者&#xff1a;左手の明天 &#x1f947; 精选专栏&#xff1a;《python》 &#x1f525; 推荐专栏&#xff1a;《算法研究》 #### 防伪水印——左手の明天 #### &#x1f497; 大家好&#x1f917;&#x1f91…

为了入职字节测试岗准备半年,上岸拿个30K应该不算高吧?

历时近半年的面试终于告一段落&#xff0c;终于有时间整理下自己这次的换工作心得&#xff0c;分享给大家。 面试经历 我的基本情况是这样&#xff1a;中下等 985 学校本科毕业&#xff0c;非计算机专业&#xff0c;在北京工作五年&#xff0c;之前一直在中小私企、国企工作。…

程序语言易错题

程序语言易错题 包含8个成员的开发小组的沟通路径最多有&#xff08;&#xff09;条。 A、28 B、32 C、56 D、64 解析 软件开发小组的沟通路径受到小组组织形式和规模的影响。若任意小组成员之间均可能有沟通路径&#xff0c;则可用完全连通图来对开发小组的沟通路径建模&#…

Anaconda-labelimg的使用

文章目录 一、创建Anaco的虚拟环境并激活二、下载labelimg以及使用1.下载2.使用 在这里我是创建了一个虚拟环境&#xff0c;虚拟环境名字为labelimg 之后将labelimg下载到该虚拟环境中 一、创建Anaco的虚拟环境并激活 conda create -n labelimg conda activate labelimg二、下…

Smoothieware_best-for-pnp 工具链的升级尝试

文章目录 Smoothieware_best-for-pnp 工具链的升级尝试概述实验工具链安装的思路更换工具链的工作备注END Smoothieware_best-for-pnp 工具链的升级尝试 概述 正在迁移Smoothieware_best-for-pnp到MCUXPresso的失败实验中徘徊. 现在已知2者的工具链版本是不一样的. 通过2进制…

MAC免密登录服务器

文章目录 1.Mac本机打开终端生成公私钥2.找打刚才生成的公钥3.上传公钥到远程 Linux 服务器4.远程登录到Linux系统服务器里面执行如下操作5.设置后在退出终端,输入如下命令即可免密登录6. 禁止 Linux 使用账号密码登录 1.Mac本机打开终端生成公私钥 输入ssh-keygen&#xff0c…

python获取某电商平台口红数据并制作词云

目录标题 前言开发环境:模块使用数据来源分析代码展示获取数据制作词云 尾语 &#x1f49d; 前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 开发环境: Python 3.8 Pycharm 模块使用 requests jieba 结巴分词 wordcloud 词云 第三方模块安装&#xff1a; win R 输…

Apache Kafka - 重识Kafka

文章目录 概述一、Kafka的概念二、Kafka的特点三、Kafka的使用场景导图 概述 Kafka是一个高性能、分布式的消息队列系统&#xff0c;它的出现为大规模的数据处理提供了一种可靠、快速的解决方案。我们先初步了解Kafka的概念、特点和使用场景。 一、Kafka的概念 Kafka是由Apac…

《设计模式》状态模式

《设计模式》状态模式 定义&#xff1a; 状态模式也称为状态机模式&#xff0c;允许对象在内部状态发生改变时改变它的行为&#xff0c;对象看起来好像修改了它的类。属于行为型模式。 状态模式的角色组成&#xff1a; State(抽象状态类)&#xff1a;定义一个接口用来封装与…

文本三剑客正则表达式3

文章目录 文本三剑客&正则表达式31 awk工作原理2 awk的基本格式及其内置变量2.1 基本格式2.2 内置变量2.3 示例2.3.1 直接打印所有内容2.3.2 取每一行的第一列2.3.3 打印行号&#xff0c;及所有内容2.3.4 打印第三行2.3.5 打印2-4行2.3.6 打印第2行和第4行2.3.7 用正则表达…

面试面麻了,别再难为测试人了····

去面试吧 面不被录用的试 面hr为了完成任务的试 面一轮二轮没有下文试 面需要通勤2小时的试 面随时加班的试 ...... 今年的“金三银四”被网友们称为“铜三铁四”&#xff0c;招聘软件上的岗位都能背下来了&#xff0c;简历却依然石沉大海。 好不容易等来个回复&#xff0c;还不…

手写西瓜书bp神经网络 mnist10 c#版本

本文根据西瓜书第五章中给出的公式编写&#xff0c;书中给出了全连接神经网络的实现逻辑&#xff0c;本文在此基础上编写了Mnist10手写10个数字的案例&#xff0c;网上也有一些其他手写的例子参考。demo使用unity进行编写&#xff0c;方便且易于查错。 该案例仅作为学习&#x…

Linux网络——shell编程之免交互

Linux网络——shell编程之shell编程之免交互 一、概述1.常用的交互程序&#xff1a;2.语法格式&#xff1a; 二、Here Document常规用法1.read 命令的读取2.wc -l 的内容行数统计3.passwd用户密码的修改4.cat 查看内容并输出到文件中5.cat 查看交互内容并输出到新的文件中6.交互…

【计算机系统基础4】程序的机器级表示

4.程序的机器级表示 4.1&#xff08;&#x1f3eb; CMU补充 &#xff09;x86-64 Linux 寄存器使用 %rax 返回值调用函数保存可以通过程序修改 rdi&#xff0c;…&#xff0c;%r9 传入参数&#xff08;arguments&#xff09;调用函数保存可通过程序进行修改 %r10&#xff0c;%…

【网络协议详解】——VLAN技术(学习笔记)

目录 &#x1f552; 1. VLAN介绍&#x1f558; 1.1 目标&#x1f558; 1.2 帧格式&#x1f558; 1.3 划分方式&#x1f558; 1.4 链路&#x1f558; 1.5 端口模式&#x1f564; 1.5.1 接入端口&#x1f564; 1.5.2 干道端口&#x1f564; 1.5.3 混合端口&#xff08;仅华为交换…