第7章 网络优化与正则化

news2025/1/23 22:26:13

系列文章目录

第1章 绪论
第2章 机器学习概述
第3章 线性模型
第4章 前馈神经网络
第5章 卷积神经网络
第6章 循环神经网络
第7章 网络优化与正则化
第8章 注意力机制与外部记忆
第9章 无监督学习
第10章 模型独立的学习方式
第11章 概率图模型
第12章 深度信念网络
第13章 深度生成模型
第14章 深度强化学习
第15章 序列生成模型


文章目录

  • 系列文章目录
  • 前言
  • 7.1 网格优化
    • 7.1.1 网格优化所面临的难点
    • 7.1.2 高维空间的非凸优化问题
    • 7.1.3 神经网络优化的改善方法
  • 7.2 优化算法
    • 7.2.1 小批量梯度下降
    • 7.2.2 批量大小的选择
    • 7.2.3 学习率调整
      • 7.2.3.1 学习率的影响效果
      • 7.2.3.2 学习率的衰减方式
    • 7.2.4 梯度估计修整
      • 7.2.4.1 梯度方向优化
      • 7.2.4.2 梯度方向优化+自适应学习率
      • 7.2.4.3 梯度截断
    • 7.2.5 优化算法改进小结
  • 7.3 参数初始化
    • 7.3.1 随机初始化
    • 7.3.2 数据预处理
  • 7.4 逐层归一化
    • 7.4.1 批量归一化
    • 7.4.2 层归一化
    • 7.4.3 归一化比较
  • 7.5 超参数优化
    • 7.5.1 网格搜索
    • 7.5.2 随机搜索
  • 7.6 网络正则化
  • 总结


前言


7.1 网格优化

7.1.1 网格优化所面临的难点

  • 结构差异大,没有通用的优化算法,超参数多
  • 对于非凸优化问题,要解决参数初始化,以及结果逃离局部最优或鞍点的问题
  • 解决梯度爆炸或梯度消失问题

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

  1. 鞍点问题:
    在二维空间中容易出现驻点问题,而在多维空间中更容易出现鞍点(梯度为0的点)问题。
    在这里插入图片描述
  2. 平坦最小值
    一个平坦最小值的邻域内,所有点对应的训练损失都比较接近;大部分的局部最小解是等价的;
    局部最小解对应的训练损失都可能非常接近于全局最小解对应的训练损失。
    在这里插入图片描述
  3. 优化地形的的可视化
    通过添加残差网络,解决非凸优化问题的问题
    在这里插入图片描述
    在这里插入图片描述

7.1.3 神经网络优化的改善方法

  1. 更有效的优化算法来提高优化方法的效率和稳定性,如动态学习率调整,梯度估计修正;
  2. 更好的参数初始化方法、数据预处理方法来提高优化效率;
  3. 修改网络结构来得到更好的优化地形,如优化地形( Optimization Landscape )指在高维空间中损失函数的曲面形状,好的优化地形通常比较平滑,使用 ReLU 激活函数、残差连接、逐层归一化等。
  4. 使用更好的超参数优化方法

7.2 优化算法

7.2.1 小批量梯度下降

  1. 随机梯度下降法
    在这里插入图片描述

    在这里插入图片描述


  1. 小批量梯度下降法MiniBatch
    (1). 选取K个训练样本 { x ( K ) , y ( K ) } k = 1 K \{x^{(K)},y^{(K)}\}^K_{k=1} {x(K),y(K)}k=1K,计算偏导数
    在这里插入图片描述
    (2). 定义梯度
    在这里插入图片描述
    (3). 更新参数
    在这里插入图片描述

7.2.2 批量大小的选择

影响方式

  • 批量大小不影响随机梯度的期望,但是会影响随机梯度的方差;
  • 批量越大,随机梯度的方差越小,引入的噪声也越小,训练也越稳定,因此可以设置较大的学习率。
  • 而批量较小时,需要设置较小的学习率,否则模型会不收敛。

改进训练参数的方法
在这里插入图片描述

7.2.3 学习率调整

7.2.3.1 学习率的影响效果

  • 学习率过小,权重参数更新慢;
  • 学习率过大,无法获得最优解。
    在这里插入图片描述

7.2.3.2 学习率的衰减方式

学习率衰减的含义:随着训练发的进行,学习率的总趋势在不断减小。

  1. 常见的衰减方式为梯级衰减与线性衰减。
    在这里插入图片描述
  2. 假设初始化学习率为 α 0 α_0 α0,在第t次迭代时的学习率 α t α_t αt。可以设置衰减方式为按迭代次数进行衰减,如:
  • 逆时衰减(inverse time decay)
    α t = α 0 1 1 + β × t α_t=α_0\frac{1}{1+\beta \times t} αt=α01+β×t1
  • 指数衰减(exponential decay)
    α t = α 0 β t α_t=α_0\beta^t αt=α0βt
  • 自然指数衰减(exponential decay)
    α t = α 0 e − β t α_t=α_0e^{-\beta t} αt=α0eβt
  1. 采用周期性学习率调整 Cyclical Learning Rates,在训练过程中遵循学习率减小的趋势,跳出局部最优,从而获得最优解。
    在这里插入图片描述
    下面左图为一次性到达全局最优,右图为先到达局部最优,之后经过几次热重启到达全局最优。
    在这里插入图片描述
  2. 学习率的自适应调整
    根据梯度以及前一次的训练结果自动地调整学习率。
    在这里插入图片描述

7.2.4 梯度估计修整

7.2.4.1 梯度方向优化

  1. 动量法
    用之前积累动量来替代真正的梯度。每次迭代的梯度可以看作是加速度。在第t次迭代时,计算负梯度的“加权移动平均”作为参数的更新方向:
    Δ θ t = ρ Δ θ t − 1 − α g t = − α ∑ τ = 1 t β t − τ g τ \Delta\theta_t=ρ\Delta\theta_{t-1}-\alpha g_t\\ =-\alpha \sum_{\tau=1}^t\beta^{t-\tau}g_{\tau} Δθt=ρΔθt1αgt=ατ=1tβtτgτ
    其中 ρ \rho ρ为动量因子,通常设为0.9, α \alpha α为学习率。
    在这里插入图片描述
  2. Nesterov加速梯度
    Δ θ t = ρ Δ θ t − 1 − α g t ( θ t − 1 + ρ Δ θ t − 1 ) \Delta\theta_t=ρ\Delta\theta_{t-1}-\alpha g_t(\theta_{t-1}+ρ\Delta\theta_{t-1}) Δθt=ρΔθt1αgt(θt1+ρΔθt1)在这里插入图片描述

7.2.4.2 梯度方向优化+自适应学习率

Adam算法≈动量法+RMSprop
先计算两个移动平均:
在这里插入图片描述
偏差修整:
在这里插入图片描述
更新:
在这里插入图片描述

7.2.4.3 梯度截断

梯度截断是一种比较简单的启发式方法,把梯度的模限定在一个区间,当梯度的模小于或大于这个区间时就进行截断。

  • 按值截断:
    在这里插入图片描述
  • 按模截断:
    在这里插入图片描述
    在这里插入图片描述

7.2.5 优化算法改进小结

  1. 大部分优化算法可以使用下面公式来统一描述概括:
    在这里插入图片描述

    g_t 为第t步的梯度,α_t 为第t步的学习率。

  2. 各算法列表比较
    在这里插入图片描述

  3. 在鞍部各算法比较
    在这里插入图片描述

  4. 求解最小各函数比较

在这里插入图片描述

7.3 参数初始化

参数初始化的方法有预训练初始化、随机初始化、固定值初始化(偏置( Bias )通常用 0 来初始化)。

7.3.1 随机初始化

Gaussian分布初始化
Gaussian初始化方法是最简单的初始化方法,参数从一个固定均值(比如0)和固定方差(比如0.01)的Gaussian分布进行随机初始化。

均匀分布初始化
参数可以在区间[−r,r]内采用均匀分布进行初始化。
范数保持性( Norm-Preserving )
一个 𝑀 层的等宽线性网络
在这里插入图片描述
为了避免梯度消失或梯度爆炸问题,我们希望误差项:
在这里插入图片描述
基于方差缩放的参数初始化
Xavier 初始化和 He 初始化

在这里插入图片描述
正交初始化

  • 用均值为 0 、方差为 1 的高斯分布初始化一个矩阵;
  • 将这个矩阵用奇异值分解得到两个正交矩阵,并使用其中之一作为权重矩阵。

7.3.2 数据预处理

  1. 尺度不变性:机器学习算法在缩放全部或部分特征后不影响学习和预测。
  2. 归一化(Normalization):将数据转换到规定范围。
  3. 数据归一化常用方法
    • 最小最大规范化
      x ^ ( n ) = x ( n ) − m i n n ( x ( n ) ) m a x n ( x ( n ) ) − m i n n ( x ( n ) ) \hat x^{(n)}=\frac {x_{(n)}-min_n(x^{(n)})} {max_n(x^{(n)})-min_n(x^{(n)})} x^(n)=maxn(x(n))minn(x(n))x(n)minn(x(n))
    • 标准化
      x ^ ( n ) = x ( n ) − μ σ , μ = 1 N ∑ n = 1 N x ( n ) , σ 2 = 1 N ∑ n = 1 N ( x ( n ) − μ ) 2 \hat x^{(n)}=\frac{x^{(n)}-\mu}{\sigma},\\ \\ \mu=\frac{1}{N}\sum^N_{n=1}x_{(n)},\\ \sigma^2=\frac{1}{N}\sum_{n=1}^N(x^{(n)}-\mu)^2 x^(n)=σx(n)μ,μ=N1n=1Nx(n),σ2=N1n=1N(x(n)μ)2
    • PCA
      在这里插入图片描述
  4. 数据归一化对梯度的影响
    在这里插入图片描述

7.4 逐层归一化

逐层归一化的目的:通过内部协变量偏移获得更好的尺寸不变性,可以更平滑地优化地形。

7.4.1 批量归一化

对于一个深层神经网络,令第l层的净输入为 Z ( l ) Z^{(l)} Z(l),神经元的输出为 a ( l ) a^{(l)} a(l),即:
a ( l ) = f ( z ( l ) ) = f ( W a ( l − 1 ) + b ) a^{(l)}=f(z^{(l)})=f(Wa^{(l-1)}+b) a(l)=f(z(l))=f(Wa(l1)+b)

其中f(.)是激活函数,W和b是可学习的参数。

给定一个包含K 个样本的小批量样本集合,计算均值和方差
在这里插入图片描述
批量归一化
在这里插入图片描述

7.4.2 层归一化

第l层神经元的净输入为 z ( l ) z^{(l)} z(l):
在这里插入图片描述层归一化定义为:
在这里插入图片描述

7.4.3 归一化比较

批量归一化与层归一化比较
在这里插入图片描述
各种归一化的比较
在这里插入图片描述

7.5 超参数优化

常见的超参数
层数、每层神经元个数、激活函数、学习率(以及动态调整算法)、正则化系数、mini-batch 大小。
优化方法
网格搜索、随机搜索、贝叶斯优化、动态资源分配、神经架构搜索。

7.5.1 网格搜索

假设总共有K 个超参数,第k个超参数的可以取m_k 个值。如果参数是连续的,可以将参数离散化,选择几个“经验”值。比如学习率α,我们可以设置:
α ∈ 0.01 , 0.1 , 0.5 , 1.0 α ∈ {0.01,0.1,0.5,1.0} α0.01,0.1,0.5,1.0
这些超参数可以有 m 1 × m 2 × ⋅ ⋅ ⋅ × m K m_1 × m_2 ×···× m_K m1×m2××mK 个取值组合。

7.5.2 随机搜索

假设总共有K 个超参数,第k个超参数的可以取m_k 个值。如果参数是连续的,可以将参数离散化,然后采用随机函数产生参数范围中的参数:

随机搜搜索与网格搜索的比较

在这里插入图片描述

7.6 网络正则化

去去去


总结

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

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

相关文章

[Flask]Pycharm+Flask零基础项目搭建入门

Flask在Python web开发中虽然热度低于Django但是也存在不小的市场空间,能作为一个主流web开发框架之一也不是浪得虚名,还是有不少干货在里面的,Flask也具备了不少的自身优势,在后面的认识中我们再逐步深入了解 今天我们就来带大家…

池式结构:对象池(Object Pool)

本文是对 http://gameprogrammingpatterns.com/object-pool.html 的原创翻译。部分地方使用意译,不准确的地方请各位指证。 一、对象池的意义 通过重新使用固定的池式结构中的对象,来代替单独分配和释放对象,可以提高程序的性能和内存使用。…

裸 VSCode 必备插件

VSCode 轻量、开源,新鲜下载的 VSCode 可谓是身无长物、一穷二白,连个项目管理的功能都没有。 身轻如燕的 VSCode 对于后端开发说可能有点幼稚,但对于前端来说刚刚好,毕竟不需要搞什么 Docker、数据库等等,装俩 VSCod…

02 本机搭建kubernetes学习环境kubemini

文章目录1. 什么是容器编排?2. 什么是 Kubernetes?2.1 Kubernetes 到底能够为我们做什么呢?3. 什么是 minikube4. 如何搭建 minikube 环境4.1 minikube 安装4.2 kubectl 安装5. 验证实验节点5.1 kubectl 使用5.2 在kubernetes 运行第一个应用…

第148篇 笔记-DeFi

定义:去中心化金融(Decentralized finance),简称“DeFi”,是指基于区块链的无许可和透明金融服务生态系统。 DeFi是区块链、智能合约和预言机带来的最重大进步之一。DeFi一开始是在去中心化基础设施上重新创建通用金融工具的运动&#xff0c…

循环玩具游戏

一 问题描述 有个名为 Looploop 的玩具,这个玩具有 N 个元素,以循环方式排列。有一个箭头指向其中一个元素,还有两个预设参数 k1 和 k 2。 上图显示了一个由 6 个元素组成的循环。假设预设参数 k13,k2 4,对这个玩具做…

【谷粒商城 - k8s、devOps专栏】

一、K8s快速入门 其他项目的K8S笔记:https://blog.csdn.net/hancoder/category_11140481.html 1)简介 kubernetes简称k8s。是用于自动部署,扩展和管理容器化应用程序的开源系统。 部署方式的进化: [外链图片转存失败,源站可能…

STM32系列(HAL库) ——定时器编码器/正交解码模式

STM32定时器的正交解码模式多用于检测电机的编码器脉冲数做闭环控制,如PID。本文简单介绍一下定时器在Cubemx如何配置以及程序引用到的API函数。 一、前期准备 1、硬件: STM32C8T6最小系统板USB-TTL串口模块ST-Link下载器 2、软件: keil5…

Linux

1.入门概述 我们为什么要学习Linux linux诞生了这么多年,以前还喊着如何能取代windows系统,现在这个口号已经小多了,任何事物发展都有其局限性都有其天花板。就如同在国内再搞一个社交软件取代腾讯一样,想想而已基本不可能&#x…

斐波那契散列和hashMap实践

斐波那契散列和hashMap实践 适合的场景&#xff1a;抽奖(游戏、轮盘、活动促销等等) 如果有不对的地方&#xff0c;欢迎指正&#xff01; HashMap实现数据散列&#xff1a; 配置项目&#xff0c;引入pom.xml: <dependency><groupId>com.alibaba</groupId&g…

排序算法-冒泡排序

基本思路 遍历给定的数组&#xff0c;从左往右&#xff0c;两两比较&#xff0c;小的放在左边&#xff0c;大的放在右边&#xff0c;遍历完成&#xff0c;数组有序。 先来看一个冒泡排序的过程&#xff1a; 给定数组&#xff1a;[5,3,2,1,4] 排序结果&#xff1a;[1,2,3,4,5…

Sha1,Sha256 哈希(摘要)处理

具体参考&#xff1a;Sha1,Sha256哈希&#xff08;摘要&#xff09;在线处理工具

显示今天的年、月、日日期、时间的数据处理timetuple()

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 显示今天的年、月、日 日期、时间的数据处理 timetuple() [太阳]选择题 对下面描述错误的选项为&#xff1f; import datetime dtdatetime.date.today() print("【显示】dt",dt) p…

Redis最全详解(三)——SpringBoot整合2种方式

SpringBoot整合Redis 常用 api 介绍 有两个 redis 模板&#xff1a;RedisTemplate 和 StringRedisTemplate。我们不使用 RedisTemplate&#xff0c;RedisTemplate 提供给我们操作对象&#xff0c;操作对象的时候&#xff0c;我们通常是以 json 格式存储&#xff0c;但在存储的…

[附源码]java毕业设计作业自动评阅系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【window下配置Maxim SDK环境】

【window下配置Maxim SDK环境】1. 前言2. Maxim SDK下载3. Maxim SDK安装3.1 安装详解3.2 安装完成4. 测试环境4.1 新建Hello word demo4.2 编译调试下载4.2.1 clean4.2.2 build4.2.3 Openocd5. 实验效果6.小结1. 前言 MAX78000FTHR为快速开发平台&#xff0c;帮助工程师利用M…

第149篇 笔记-web3

定义&#xff1a;Web3是基于去中心化原则的互联网新革命。Web3将当今丰富的交互式数字体验与为用户提供所有权和加密保证的基础设施相结合。 最近在传统技术部门和区块链生态系统的行业领导者中&#xff0c;Web3已成为主流意识&#xff0c;其对互联网的过去和未来有着广泛的影…

蜂鸟E203学习笔记(三)——流水线结构

握手和反压 首先介绍握手协议 valid-ready握手协议 valid先发起请求 ready先发出请求 同时发出请求 仔细观察上述3幅时序图&#xff0c;我们了解valid-ready握手机制需要注意三件事&#xff1a; valid与ready不可过度依赖&#xff0c;比如valid不可以等待ready到达再拉高&…

设计模式之工厂模式

文章目录1.前言工厂模式的三种实现方式应用场景2.简单工厂模式核心组成实现UML类图优点与缺点3.工厂方法模式核心组成实现UML类图优点与缺点4.抽象工厂模式核心组成实现UML类图优点与缺点1.前言 在工厂模式中&#xff0c;我们在创建对象时不会对客户端暴露创建逻辑&#xff0c;…

React - Ant Design4.x版本安装使用,并按需引入和自定义主题

React - Ant Design4.x版本安装使用&#xff0c;并按需引入和自定义主题一. 安装使用 antd二&#xff0e;antd 高级配置安装 craco&#xff0c;对 create-react-app 的默认配置进行自定义自定义主题安装 babel-plugin-import &#xff0c;按需加载组件代码和样式Ant Design官网…