深度学习之网络优化与正则化

视频链接:7.1 神经网络优化的特点_哔哩哔哩_bilibili

神经网络优化的特点

网络优化的难点

(1)网络结构差异大:不同模型之间的结构差异大——没有通用的优化算法、超参数多

(2)非凸优化问题:导致得到的最优解可能是全局最优解——参数如何初始化、如何逃离局部最优或鞍点

(3)梯度消失和爆炸问题:当网络非常深时,靠下的层的参数的梯度要么接近0,要么非常大,十分难优化

高维空间中的非凸优化问题

鞍点

低维空间中的非凸优化问题要解决的核心问题是如何逃离f'(x)=0的局部最优解

而在高维空间中的非凸优化问题要解决的核心问题是如何逃离鞍点

鞍点:梯度为0的点

鞍点在某些维度上是局部最小点,而在某些维度上是局部最大点

假设在D维空间中有一点为鞍点,在每一维上,如果它是一个非凸优化问题,基本上一个局部最低点与局部最高点的比例是1:1。因此在每个维度上一个梯度为0的点是局部最优点的概率为1/2,因此在D维空间的鞍点为全局最优点的概率为(1/2)^D

平坦最小值

在高维空间中,大部分的最小值都是平坦最小值,当参数冗余的时候,改变一个参数一般不会引起损失的大幅变化

由于局部最小解往往十分接近全局最优解,所以很多时候没必要去找全局最优解,反而是过于追求全局最优解可能会带来过拟合

优化地形的可视化

加入了残差连接的网络还可以使优化地形变得平滑

优化方法

优化算法改进

随机梯度下降(SGD)

对训练集中的样本进行随机排序,然后按照顺序每次取一个样本计算梯度,再反向传播更新参数至错误率不再下降

小批量随机梯度下降(MiniBatch)

每次取K个样本,更新是按步长更新,可以理解为把K个当成整体

批量大小(Batch Size)

与学习率的关系

当每次取K个样本、更新m次时,得到的Δ梯度如图左下角所示,可以看到这个式子是每次取batchsize为m的K个样本时的Δ梯度的m倍。为了使它们的步长差不多,学习率也要变成m倍。但是在实际应用中不需要过于追求线性关系,超参调整趋势大致一致就行

对收敛的影响

Iteration是更新一次,Epoch是整个数据集更新一次

如何改进

动态学习率

学习率衰减

周期性学习率调整

学习率不是一味的衰减,整体趋势是下降的,可以使模型更好地跳出sharp的局部最优点,得到更加平坦的局部最优点,增强模型的鲁棒性

左图是普通学习率调整,右图是周期性学习率调整(经过多个局部最优,方便找到更好地局部最优点)

其他学习率调整方法

(1)固定学习率调整批量大小,相当于减小了学习率

(2)先设置一个小的时间间隔,让学习率逐渐上升到预设点再开始衰减。因为参数初始化时的选点一般是未知的,梯度很不稳定,如果一开始就给一个大的学习率,是不利于稳定的优化的

自适应学习率

Adagrad:Gt是所有t的每一维度上的学习率的平方和,Gt随着训练次数增加而增加,学习率随之减小

RMSprop:把Gt从绝对的累计改成移动平均,β是超参数。移动平均的好处是:它不是历史上所有梯度的平方和,不会像Adagrad的Gt一样一直递增导致学习率过小

Adadelta:把分子也变成动态调整的,由上上次的ΔX的平方+上次参数更新方向的平方构成。好处是:例如某点梯度比较大,那么你可以试着学习率变大一点,多走一下,可以帮助更好的收敛

梯度方向优化

Momentum动量

图1是每次更新的轨迹,图2是加了动量后的轨迹,可以看到像图1这样在垂直方向上无意义的抖动,加上动量后上下抵消,有利于梯度的下降

Nesterov加速梯度

动量法的缺陷:动量法可以看作是两步走,第一步走历史的一小段,第二步走θt-1的梯度。把连接点看作θ’,那么第二步直接求θ‘处的梯度而不是θt-1的梯度,有利于梯度估计

Adam算法

移动平均和真正的平均是有差异的,所以需要偏差修正

例如在t=1时的移动平均如图所示,M0=0,则

但实际上M1是=g1的,所以需要偏差修正

梯度截断

当梯度过大时,就算是小的学习率也会走出很远,极可能错过最优解

参数初始化

对称权重问题

因为权重都为0,那么计算出来的两个激活值a1和a2也相等,所以误差也相等。进而导致,代价函数对两个参数的偏导数也相等,所以用梯度下降更新后的参数值也会相等,只是可能不为0,但还是一直保持相等,后续也都会这样,一直相等。所以这样的话,两条蓝色的线的权重会相等,红色的会相等,绿色的也会相等,所以这个神经网络计算不出什么有趣的函数,每一层的神经元都在进行着相同的计算,这是一种高度冗余的情况

预训练初始化

在大量数据上训练骨干网络(backbone),再到固定的数据集上做微调

固定值初始化

bias通常初始化为0;在forget gate中的bias需要设大一点,让门一直打开,这样梯度比较好计算

随机初始化

Gaussian分布与均匀分布

如何确定均值、方差、r取多少合适:

例如上图中,x∈(0, 1),将wx+b经过sigmoid后我们希望它落在左图蓝色的梯度较大的部分,通过这种方式取反推均值、方差、r应该取多少

范数保持性

因为 δ(l-1) = W(l).T * δ(l),而我们希望 δ(l-1) = δ(l),所以希望W * W.T为单位矩阵,从而引出两种方法:基于方差缩放的参数初始化与正交初始化

基于方差缩放的参数初始化

将参数优化到一个区间后,使整个网络的神经元的活性值的方差保持一致,可以使梯度在计算中不出现爆炸或消失

为了方便,我们将这一层网络的非线性去掉

假设a是从tanh激活函数得出来的,tanh函数是0中心化的,因此a(l-1)的期望为0。若随机取的w的期望也为0,那么a(l)的期望也为0(a与w独立)。此时a(l)的方差就等于l-1层的神经元个数×w(l)的方差×a(l-1)的方差。因为希望a(l)的方差与a(l-1)的方差相等,所以初始化w(l)的方差为1/M(l-1)。此时计算出的是前向传播的,如果加上反向传播,则w(l)的方差应初始化为2/M(l)+M(l-1),对应着表中Xavier初始化用tanh作为激活函数使的初始化结果

正交初始化

通常用于RNN的hidden state到hidden state的地方,因为很容易梯度爆炸或消失

数据预处理

尺度不变性

但是例如KNN这种模型就不具有尺度不变性

Q:不同输入特征的尺度差异较大时会有哪些问题?

A:例如y = w1x1 + w2x2 +b,当x1∈(0,1),x2∈(0,1000)时,由于x2的尺度较大,导致w2初始化时较小,导致w1与w2无法服从同一个分布

数据规范化对梯度的影响

数据规范化

从图中可以看到,标准归一化后不同的特征之间还是有相关性的,如果需要更加标准的规范化,可以用PCA做一个whitening(白化),把不同维度之间的相关性也给去掉

但是因为PCA的计算复杂度比较高,所以在实际应用中使用标准化就够了

Q:为什么不考虑标准化时某一维方差为0的情况?

A:若某一维方差为0,则代表这一维上的数据都相等,没有区分度,直接删去这个特征即可

逐层规范化

在两层神经网络之间,前一层可以作为feature输入给后一层,如果这个时候可以对前一层的输出做一个规范化,则可以改善参数的优化过程

内部协变量偏移

由于经过反向传播后的参数变了,从而导致两个层之间,前一层的输出数据分布改变了,也就是后一层的输入数据分布改变了,对于机器学习来说,不满足输入独立同分布,是一个无法解决的问题。这个数据分布变化就叫内部协变量偏移

解决外部协变量偏移则是迁移学习的目标

批量规范化(BatchNorm)

最后一个式子中的γ和β都是可学习的参数,表面规范化后还要经历一个缩放与平移

层规范化(LayerNorm)

看整层的神经元的均值与方差

BatchNorm VS LayerNorm

在CNN中BatchNorm用的多一些,在RNN中LayerNorm用的多一些

更多的规范化

 以图像为例

Q:BatchNorm在训练时可以计算出均值和方差,但是在推理时的均值和方差如何得到呢?

A:由于在优化网络的时候,我们一般采用的是batch梯度下降。所以在训练过程中,只能计算当前batch样本上的mean和var。但是我们做的normalization是对于整个输入样本空间,因此需要对每个batch的mean, var做指数加权平均来将batch上的mean和var近似成整个样本空间上的mean和var.

而在测试Inference过程中,一般不必要也不合适去计算测试时的batch的mean和var,比如测试仅对单样本输入进行测试时,这时去计算单样本输入的mean和var是完全没有意义的。因此会直接拿训练过程中对整个样本空间估算的mean和var直接来用。此时对于inference来说,BN就是一个线性变换。

(29 封私信 / 81 条消息) 为什么batch normalization在训练和测试时使用的均值和方差的计算方式不同? - 知乎 (zhihu.com)

超参数优化

网格搜索

找一些根据经验判断,效果可能会比较好的参数进行一个个的组合试错

随机搜索

左边黄色的曲线与上边绿色的曲线可以代表超参数的取值对损失的影响

网格搜索在这里很容易错过效果比较好的超参取值,就像绿色的最高点对应的一列没有被点取到

而同样是取九个点,随机搜索在超参数的取值对损失影响较大的情况下往往会得到更好的结果

网络正则化

重新思考泛化性

神经网络往往是过度参数化的,也就是参数量大于数据量,在机器学习中,这种情况往往对应着你的模型泛化性极差,但是在神经网络中的泛化性却还算可以,这是为什么呢?

在传统机器学习中,泛化性与模型复杂度相关,但是这一套理论并不能直接照搬到神经网络上

实验证明,神经网络的泛化性可能不止来源于它本身,也有可能与优化方法(SGD等)有关;神经网络的能力非常强,可以记住足量的任何的单样本。但是它通常还是先去记一些更具一般性的规则或者模式,然后再去记一些更难的样本。也就是先总结规律而不是先记住数据

正则化

早停法

权重衰减

暂退法(Dropout)

当神经元数量足够多的时候会产生协同效应:两个神经元的行为可能是一致的,一起增大一起减小。这样会降低模型的能力,模型也会更脆弱

但是会出现一个问题:训练和测试时网络的输出不一致

解决办法:在测试时把x变成px,把每个神经元的活性降为p倍,相当于训练时的减少神经元数量

在RNN上

你在某一时刻丢掉这个,那么每个时刻都得要丢掉这个

l1和l2正则化

红框圈出的是经验风险:所有训练集上样本的损失的平均

若把式子写成下面这样,把范数函数看作约束条件,则可以通过拉格朗日法把约束写进优化函数中,就得到了上面的式子

l1与l2范数的意义如图

对优化产生的影响

F是经验风险

右图是l2正则化,图中画出的红色圈圈代表原始优化目标点周围的等高线,我们希望F也在虚线的约束范围之内,所以θ*一定是在它们相切的地方,这个点在F上的梯度与圆上的梯度正好相反

左图是l1正则化,很难找到一个点使在F上的梯度与边界线上的梯度正好相反,所以对于l1范数的θ*一般是落在坐标轴上

对网络产生的影响

正则化项系数越来越大,对模型的约束越强,模型泛化能力越强

与权重衰减的关系

数据增强

回译:英文先翻成中文再翻回英文

标签平滑

除了对x进行增强外,我们还可以对y进行增强

我们不需要正确的类别为1,我们只需要正确的类别比错误的类别大就行了,因此可以把正确类别扣去一个ε分给错误类别,让模型的预测结果逼近平滑后的y

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

maui sqlite开发一个商城加购物车的演示(3)

购物车界面及代码 <?xml version"1.0" encoding"utf-8" ?> <ContentPage xmlns"http://schemas.microsoft.com/dotnet/2021/maui"xmlns:x"http://schemas.microsoft.com/winfx/2009/xaml"xmlns:syncfusion"clr-namesp…

基于ssm vue的风景文化管理平台源码和论文

摘 要 随着信息化时代的到来&#xff0c;管理系统都趋向于智能化、系统化&#xff0c;基于vue的木里风景文化管理平台也不例外&#xff0c;但目前国内的市场仍都使用人工管理&#xff0c;市场规模越来越大&#xff0c;同时信息量也越来越庞大&#xff0c;人工管理显然已无法应对…

【二分查找】【区间合并】LeetCode2589:完成所有任务的最少时间

作者推荐 【动态规划】【广度优先】LeetCode2258:逃离火灾 本文涉及的基础知识点 二分查找算法合集 有序向量的二分查找&#xff0c;向量只会在尾部增加删除。 题目 你有一台电脑&#xff0c;它可以 同时 运行无数个任务。给你一个二维整数数组 tasks &#xff0c;其中 ta…

SpringCloud微服务 【实用篇】| Docker启示录

目录 一&#xff1a;Docker启示录 1. Docker启示录 2. Docker和虚拟机的区别 3. Docker架构 4. Centos7安装Docker 4.1. 卸载 4.2. 安装docker 4.3. 启动docker 4.4. 配置镜像加速 前些天突然发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽…

yaml 文件格式

yaml文件&#xff1a;是一种标记语言&#xff0c;以竖列形式展示序列化的时间格式&#xff0c;可读性高 类似于json格式。语法简单。 yaml通过缩进来表示数据结构&#xff0c;连续的项目用-减号来表示。 yaml文件使用的注意事项&#xff1a; 1&#xff0c;大小写敏感 2&am…

HT4125 低压CMOS 缓冲门器件 单电源电压转换

​​亿胜盈科HT4125 是一款低压CMOS 缓冲门器件&#xff0c;可运行在针对便携式和电池设备的更宽电压范围内。 其采用了较低阀值电路来设计此输入&#xff0c;以便匹配Vcc 3.3V 时的1.8V 输入逻辑&#xff0c;并且可被用 在1.8V 至3.3V 电平上行转换器功能中。此外&#xff0c;…

数据爬虫:获取申万一级行业数据

目录 1. 获取访问接口 2. 链接网址 3. 链接名单 免责声明&#xff1a;本文由作者参考相关资料&#xff0c;并结合自身实践和思考独立完成&#xff0c;对全文内容的准确性、完整性或可靠性不作任何保证。同时&#xff0c;文中提及的数据仅作为举例使用&#xff0c;不构成推荐…

如何应对网站的Canvas等高级指纹和MAC地址检测?

随着互联网技术的发展&#xff0c;网站和应用程序采用了越来越多的高级指纹和MAC地址检测技术来追踪用户和识别其身份。其中&#xff0c;Canvas指纹是一种常见的高级指纹检测技术&#xff0c;而MAC地址是设备的唯一标识符。在本文中&#xff0c;我们将了解Canvas指纹和MAC地址的…

联通宽带+老毛子Padavan固件 开启IP v6

联通宽带开启IP v6 参考&#xff1a; 联通宽带开启 IPV6 的方法_联通ipv6怎么开通-CSDN博客 个人宽带如何开启IPv6网络访问 - 知乎 (zhihu.com) 首先&#xff0c;你要确定当前你所在的地区运营商已经开通了IPV6&#xff0c;可以使用手机流量 IP查询(ipw.cn) | IPv6测试 | IPv…

电商早报 | 12月13日| 2023胡润男企业家榜发布:黄铮位于第三

2023胡润男企业家榜发布&#xff1a;拼多多创始人跻身前三 12月12日消息&#xff0c;胡润研究院发布《2023胡润男企业家榜》&#xff0c;列出了胡润百富榜中前50名中国男性企业家&#xff0c;总财富6.37万亿元&#xff0c;上榜门槛640亿元。 这是胡润研究院首次发布“男企业家…

概率的乘法公式

两个事件的情况 假设A、B为随机事件&#xff0c;并且事件A的概率&#xff0c;那么 三个事件的情况 假设A、B、C为随机事件&#xff0c;并且&#xff0c;那么 多个事件的情况 假设为随机事件&#xff0c;其中&#xff0c;并且&#xff0c;那么

【Linux系统编程二十一】:(进程通信3)--消息队列/信号量(system v标准的内核数据结构的设计模式)

【Linux系统编程二十】&#xff1a;消息队列/信号量(system v标准的内核数据结构的设计模式&#xff09; 一.消息队列二.system v标准的内核数据结构的设计三.四个概念(互斥/临界)四.信号量1.多线程并发访问2.计数器3.原子的4.总结 一.消息队列 一个叫做a进程啊&#xff0c;一个…

如何使用CFImagehost结合内网穿透搭建简洁易用的私人图床并远程访问

文章目录 1.前言2. CFImagehost网站搭建2.1 CFImagehost下载和安装2.2 CFImagehost网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1 Cpolar临时数据隧道3.2 Cpolar稳定隧道&#xff08;云端设置&#xff09;3.3.Cpolar稳定隧道&#xff08;本地设置&#xff09; 4.公网访问测…

Python 递归及目录遍历

递归调用&#xff1a;一个函数&#xff0c;调用了自身&#xff0c;称为递归调用 递归函数&#xff1a;一个会调用自身的函数 凡是循环能做的事&#xff0c;递归都能做。 目录 递归示例 普通方法实现 递归方式实现 计算分析&#xff1a; 递归遍历目录 引入os 遍历目录 执…

许战海战略文库|美国品牌实践:从品类品牌向产业品牌转变

引言&#xff1a;《品类战略》是上世纪70年代特劳特和里斯所推崇的定位理论,强调“品类聚焦是唯一正确的战略“新品类要使用新品牌”等战略思想,并对品牌延伸等多元化品牌进行批判,并由中国代理人传入中国&#xff0c;从2002年至今滋生了众多品类品牌,阻碍中国经济发展。 在今天…

招不到人?用C语言采集系统批量采集简历

虽说现在大环境不太好&#xff0c;很多人面临着失业再就业风险&#xff0c;包括企业则面临着招人人&#xff0c;找对口专业难得问题。想要找到适合自己公司的人员&#xff0c;还要得通过爬虫获取筛选简历才能从茫茫人海中找到公司得力干将。废话不多说&#xff0c;直接开整。 1…

python+appium自动化常见操作

1、点击、输入操作 #点击 driver.find_element(id,com.lemon.lemonban:id/navigation_my).click() #输入 driver.find_element(id,com.lemon.lemonban:id/et_password).send_keys(abc)2、隐形等待 driver.implicitly_wait(10)3、显性等待 #显性等待 locator (xpath,xpath) wai…

如雨后春笋般层出不穷的人工智能,究竟可以为我们的生活带来些什么?

似乎是从chatgpt爆火以后&#xff0c;各种各样的和AI、人工智能有关的产品层出不穷&#xff0c;似乎只有带有人工智能&#xff0c;才能体现一个产品的功能之强大&#xff0c;才能在众多产品中具有一定的竞争力&#xff0c;那么这样的现象会给我们的生活带来什么影响呢&#xff…

如何利用Axure制作移动端产品原型

Axure是一款专业的快速原型设计工具&#xff0c;作为专业的原型设计工具&#xff0c;Axure 能够快速、高效地创建原型&#xff0c;同时支持多人协作设计和版本控制管理。它已经得到了许多大公司的采用&#xff0c;如IBM、微软、思科、eBay等&#xff0c;这些公司都利用Axure 进…

案例041:基于微信小程序的私家车位共享系统

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…