02.改善深层神经网络:超参数调试、正则化以及优化 W2.优化算法

文章目录

    • 1. Mini-batch 梯度下降
    • 2. 理解 mini-batch 梯度下降
    • 3. 指数加权平均数
    • 4. 理解指数加权平均数
    • 5. 指数加权平均的偏差修正
    • 6. 动量Momentum梯度下降法
    • 7. RMSprop
    • 8. Adam 优化算法
    • 9. 学习率衰减
    • 10. 局部最优的问题
    • 作业

参考:
吴恩达视频课
深度学习笔记

1. Mini-batch 梯度下降

在巨大的数据集上进行训练,速度非常慢,如何提高效率?

前面我们学过向量化可以较快的处理整个训练集的数据,如果样本非常的大,在进行下一次梯度下降之前,你必须完成前一次的梯度下降。如果我们能先处理一部分数据,算法速度会更快。

  • 把训练集分割为小一点的子集(称之 mini-batch)训练

batch 梯度下降法:指的就是前面讲的梯度下降法,可以同时处理整个 训练集
mini-batch:每次处理的是单个的 mini-batch 训练子集

2. 理解 mini-batch 梯度下降

在这里插入图片描述
mini-batch 梯度下降,每次迭代后 cost 不一定是下降的,因为每次迭代都在训练不同的样本子集,但总体趋势应该是下降的

mini-batch 的 size 大小:

  • 大小 = m,就是batch梯度下降法
  • 大小 = 1,就是随机梯度下降

mini-batch size

3. 指数加权平均数

在这里插入图片描述
假设,v0=0,vt=β∗vt−1+(1−β)∗θtv_0 = 0, v_t = \beta*v_{t-1}+(1-\beta)*\theta_tv0=0,vt=βvt1+(1β)θt
选取不同的 β\betaβ 值,得到相应的气温曲线
在这里插入图片描述

4. 理解指数加权平均数

假如 β=0.9,t=100\beta = 0.9,t=100β=0.9t=100,将上面的带进去求 v100v_{100}v100

v100=0.1θ100+0.9(0.1θ99+0.9(0.1θ98+0.9v97))0v100=0.1θ100+0.1×0.9θ99+0.1×(0.9)2θ98+0.1×(0.9)3θ97+0.1×(0.9)4θ96+…\begin{array}{l}v_{100}=0.1 \theta_{100}+0.9\left(0.1 \theta_{99}+0.9\left(0.1 \theta_{98}+0.9 v_{97}\right)\right)_{0} \\ \\ v_{100}=0.1 \theta_{100}+0.1 \times 0.9 \theta_{99}+0.1 \times(0.9)^{2} \theta_{98}+0.1 \times(0.9)^{3} \theta_{97}+0.1 \times(0.9)^{4} \theta_{96}+\ldots\end{array}v100=0.1θ100+0.9(0.1θ99+0.9(0.1θ98+0.9v97))0v100=0.1θ100+0.1×0.9θ99+0.1×(0.9)2θ98+0.1×(0.9)3θ97+0.1×(0.9)4θ96+
在这里插入图片描述
好处:代码简单,占用内存极少

vθ=0,vt:=β∗vθ+(1−β)∗θtv_\theta = 0, v_t := \beta*v_\theta+(1-\beta)*\theta_tvθ=0,vt:=βvθ+(1β)θt
当然,它并不是最好、最精准的计算平均数的方法

5. 指数加权平均的偏差修正

偏差修正

6. 动量Momentum梯度下降法

思想:计算梯度的指数加权平均数,利用该梯度更新权重

在这里插入图片描述
上图情况下,标准的梯度下降会上下波动,且要使用较小的学习率,否则会偏离更远。

如果我们使用过去梯度的加权平均,纵向的就抵消了一些,横向的叠加了一些,可以更平滑的快速找向最优点

vdW=βvdW+(1−β)dWvdb=βvdb+(1−β)dbv_{d W}=\beta v_{d W}+(1-\beta) d W\\ v_{d b}=\beta v_{d b}+(1-\beta) d bvdW=βvdW+(1β)dWvdb=βvdb+(1β)db
W:=W−α∗vdWb:=b−α∗vdbW:=W-\alpha* v_{d W} \\ b:=b-\alpha* v_{d b}W:=WαvdWb:=bαvdb

  • 超参数有 α\alphaαβ=0.9\beta = 0.9β=0.9β\betaβ 经常取 0.9)
  • 如果想偏差修正,vdW,vdbv_{d W},v_{d b}vdW,vdb 还要除以 1−βt1-\beta^t1βt,实际上人们不这么做,10次迭代之后,偏差就基本很小了

动量梯度下降法,并不是对所有情况都有效,它对碗状的优化效果较好

7. RMSprop

全称是 root mean square prop 算法,它也可以加速梯度下降

微分平方的加权平均数:
SdW=βSdW+(1−β)(dW)2Sdb=βSdb+(1−β)(db)2S_{d W}=\beta S_{d W}+(1-\beta) (d W)^{2}\\ S_{d b}=\beta S_{d b}+(1-\beta) (d b)^{2}SdW=βSdW+(1β)(dW)2Sdb=βSdb+(1β)(db)2

W:=W−α∗dWSdW+Eb:=b−α∗dbSdb+EW:=W-\alpha* \frac{d W}{\sqrt{S_{d W}}+\mathcal{E}}\\ \\ \text{ }\\ \quad b:=b-\alpha* \frac{d b}{\sqrt{S_{d b}}+\mathcal{E}}W:=WαSdW+EdW b:=bαSdb+Edb
E=1e−8\mathcal{E} = 1e^{-8}E=1e8 保证分母不为 0

RMSpropMomentum 有很相似的一点,可以消除梯度下降和mini-batch梯度下降中的摆动,并允许你使用一个更大的学习率,从而加快你的算法学习速度。

8. Adam 优化算法

Adam (Adaptive Moment Estimation) 优化算法基本上就是将 Momentum 和 RMSprop 结合在一起

  • 初始化:vdW=0,SdW=0,vdb=0,Sdb=0v_{d W}=0, S_{d W}=0, v_{d b}=0, S_{d b}=0vdW=0,SdW=0,vdb=0,Sdb=0
  • t 次迭代
    Momentum
    vdW=β1vdW+(1−β1)dWv_{d W}=\beta_{1} v_{d W}+\left(1-\beta_{1}\right) d WvdW=β1vdW+(1β1)dW
    vdb=β1vdb+(1−β1)dbv_{d b}=\beta_{1} v_{d b}+\left(1-\beta_{1}\right) d bvdb=β1vdb+(1β1)db
    RMSprop
    SdW=β2SdW+(1−β2)(dW)2S_{d W}=\beta_{2} S_{d W}+\left(1-\beta_{2}\right)(d W)^{2}SdW=β2SdW+(1β2)(dW)2
    Sdb=β2Sdb+(1−β2)(db)2S_{d b}=\beta_{2} S_{d b}+\left(1-\beta_{2}\right)(d b)^{2}Sdb=β2Sdb+(1β2)(db)2
    偏差修正
    vdWcorrected =vdW1−β1tv_{d W}^{\text {corrected }}=\frac{v_{d W}}{1-\beta_{1}^{t}}vdWcorrected =1β1tvdW
    vdbcorrected =vdb1−β1tv_{d b}^{\text {corrected }}=\frac{v_{d b}}{1-\beta_{1}^{t}}vdbcorrected =1β1tvdb
    SdWcorrected =SdW1−β2tS_{d W}^{\text {corrected }}=\frac{S_{d W}}{1-\beta_{2}^{t}}SdWcorrected =1β2tSdW
    Sdbcorrected =Sdb1−β2tS_{d b}^{\text {corrected }}=\frac{S_{d b}}{1-\beta_{2}^{t}}Sdbcorrected =1β2tSdb
    更新权重
    W:=W−α∗vdWcorrected SdWcorrected +εW:=W- \alpha*\frac{ v_{d W}^{\text {corrected }}}{\sqrt{S_{d W}^{\text {corrected }}}+\varepsilon}W:=WαSdWcorrected +εvdWcorrected 
    \quad
    b:=b−α∗vdbcorreted Sdbcorrected +εb:=b- \alpha*\frac{v_{\mathrm{db}}^{\text {correted }}}{\sqrt{S_{\mathrm{db}}^{\text {corrected }}}+\varepsilon}b:=bαSdbcorrected +εvdbcorreted 

Adam算法结合了 Momentum 和 RMSprop 梯度下降法,并且是一种极其常用的学习算法
其被证明能有效适用于不同神经网络,适用于广泛的结构

超参数:

  • 学习率 α\alphaα
  • β1=0.9\beta_1 = 0.9β1=0.9,常用
  • β2=0.999\beta_2 = 0.999β2=0.999,作者推荐
  • ε=1e−8\varepsilon = 1e^{-8}ε=1e8

9. 学习率衰减


慢慢减少 学习率 的本质在于,在学习初期,使用较大的步伐,开始收敛的时候,用小一些的学习率能让步伐小一些

  • 对不同的 mini-batch 进行训练,一次称之为 epoch
    α=11+decayRate∗epochNum∗α0\alpha = \frac{1}{1+decayRate*epochNum}*\alpha_0α=1+decayRateepochNum1α0

还有些其他的方法:
α=0.95epochNumα0α=kepochNumα0α=ktα0,t为mini-batch的数字\alpha = 0.95^{epochNum}\alpha_0\\ \alpha = \frac{k}{\sqrt {epochNum}}\alpha_0\\ \alpha = \frac{k}{\sqrt t}\alpha_0,t为 \text{mini-batch}的数字α=0.95epochNumα0α=epochNumkα0α=tkα0tmini-batch
还有离散下降学习率,即 不是每步都下调学习率

10. 局部最优的问题


高维度空间中,我们不太可能遇见(概率很低)如上图所示的局部最优点,因为需要这么多的维度方向上都梯度为 0(概率很低)

所以更有可能遇到的是鞍点

基本不会遇见局部最优问题,可能遇见的是平稳段减缓了学习速度,该区域梯度接近于 0 ,要很长时间才能走出去。Momentum 或 RMSprop,Adam 能够加快速度,让你尽早 走出平稳段。
平稳段

作业

02.改善深层神经网络:超参数调试、正则化以及优化 W2.优化算法(作业:优化方法)


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

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

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

相关文章

PowerDesigner建数据库模型增加自定义扩展属性

PowerDesigner自7.x新增加一个特性,就是允许用户通过扩展模型的方式扩展模型的属性,但到底怎用一直搞不清楚.今天和同事商量准备直接在程序的Metadata信息实现上直接使用pdm时,我们需要对其进行扩展,因此又碰到这个问题&#xff0…

python初级进阶篇

python之路:进阶篇 一、作用域 在Python 2.0及之前的版本中,Python只支持3种作用域,即局部作用域,全局作用域,内置作用域;在Python 2.2中,Python正式引入了一种新的作用域 --- 嵌套作用域&#…

Educational Codeforces Round 103 (Rated for Div. 2)A~E解题报告

Educational Codeforces Round 103 (Rated for Div. 2) A. K-divisible Sum 原题信息 解题思路 AC代码 #include <bits/stdc.h> using namespace std;typedef long long LL; const int N 100010;int main() {int t; cin >> t;while (t -- ){static LL n, k;sc…

LeetCode 967. 连续差相同的数字(BFS/DFS)

文章目录1. 题目2. 解题2.1 DFS2.2 BFS1. 题目 返回所有长度为 N 且满足其每两个连续位上的数字之间的差的绝对值为 K 的非负整数。 请注意&#xff0c;除了数字 0 本身之外&#xff0c;答案中的每个数字都不能有前导零。 例如&#xff0c;01 因为有一个前导零&#xff0c;所…

android中的简单animation(三)accelerate(加速),decelerate(减速),anticipate,overshoot,bounce...

animation_3.xml: 1 <?xml version"1.0" encoding"utf-8"?>2 <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"3 android:orientation"vertical"4 android:padding"10dip"5 …

02.改善深层神经网络:超参数调试、正则化以及优化 W2.优化算法(作业:优化方法)

文章目录1. 梯度下降2. mini-Batch 梯度下降3. 动量4. Adam5. 不同优化算法下的模型5.1 Mini-batch梯度下降5.2 带动量的Mini-batch梯度下降5.3 带Adam的Mini-batch梯度下降5.4 对比总结测试题&#xff1a;参考博文 笔记&#xff1a;02.改善深层神经网络&#xff1a;超参数调试…

Codeforces Round #697 (Div. 3)A~G解题报告

Codeforces Round #697 (Div. 3)A~G解题报告 题 A Odd Divisor 题目介绍 解题思路 乍一想本题&#xff0c;感觉有点迷迷糊糊&#xff0c;但是证难则反&#xff0c;直接考虑没有奇数因子的情况&#xff0c;即 N 2i2^{i}2i,那么当N ! 2i2^i2i时&#xff0c;就有 奇数因子 注意…

LeetCode 1048. 最长字符串链(哈希+DP)

文章目录1. 题目2. 解题1. 题目 给出一个单词列表&#xff0c;其中每个单词都由小写英文字母组成。 如果我们可以在 word1 的任何地方添加一个字母使其变成 word2&#xff0c;那么我们认为 word1 是 word2 的前身。 例如&#xff0c;“abc” 是 “abac” 的前身。 词链是单词…

LeetCode第45场双周赛-解题报告

LeetCode第45场双周赛-解题报告 A. 唯一元素的和 原题链接 https://leetcode-cn.com/problems/sum-of-unique-elements/ 解题思路 因为数据范围比较小&#xff0c;可以直接模拟&#xff0c;如果出现一次就加上去。 或者是直接map打表也可以 AC代码 暴力 class Soluti…

LeetCode 1034. 边框着色(BFS/DFS)

文章目录1. 题目2. 解题2.1 BFS2.2 DFS1. 题目 给出一个二维整数网格 grid&#xff0c;网格中的每个值表示该位置处的网格块的颜色。 只有当两个网格块的颜色相同&#xff0c;而且在四个方向中任意一个方向上相邻时&#xff0c;它们属于同一连通分量。 连通分量的边界是指连…

Codeforces Round #693 (Div. 3)A~G解题报告

Codeforces Round #693 (Div. 3)A~G解题报告 A Cards for Friends 原题信息 http://codeforces.com/contest/1472/problem/A 解题思路 本题就是一个找 x/2iold,y/2joldx/2^iold,y/2^joldx/2iold,y/2jold, 返回 2i∗2j>n2^i*2^j>n2i∗2j>n 一般这样的题目都需要注…

02.改善深层神经网络:超参数调试、正则化以及优化 W3. 超参数调试、Batch Norm和程序框架

文章目录1. 调试处理2. 为超参数选择合适的范围3. 超参数调试的实践4. 归一化网络的激活函数5. 将 Batch Norm 拟合进神经网络6. Batch Norm 为什么奏效7. 测试时的 Batch Norm8. Softmax 回归9. 训练一个 Softmax 分类器10. 深度学习框架11. TensorFlow作业参考&#xff1a; 吴…

关于整数划分的问题

&#xff08;一&#xff09;递归法 根据n和m的关系&#xff0c;考虑以下几种情况&#xff1a; &#xff08;1&#xff09;当n1时&#xff0c;不论m的值为多少&#xff08;m>0)&#xff0c;只有一种划分即{1}; (2) 当m1时&#xff0c;不论n的值为多少…

LeetCode第 227 场周赛题解

LeetCode第 227 场周赛题解 检查数组是否经排序和轮转得到 原题链接 https://leetcode-cn.com/problems/check-if-array-is-sorted-and-rotated/ 解题思路 直接进行测试就行&#xff0c;因为数组的数据范围很小&#xff0c;直接进行O(N2&#xff09;O(N^2&#xff09;O(…

LeetCode 1124. 表现良好的最长时间段(单调栈/哈希)

文章目录1. 题目2. 解题2.1 单调栈2.2 哈希1. 题目 给你一份工作时间表 hours&#xff0c;上面记录着某一位员工每天的工作小时数。 我们认为当员工一天中的工作小时数大于 8 小时的时候&#xff0c;那么这一天就是「劳累的一天」。 所谓「表现良好的时间段」&#xff0c;意…

二进制如何转十进制,十进制如何转二进制

1 转成二进制主要有以下几种&#xff1a;正整数转二进制&#xff0c;负整数转二进制&#xff0c;小数转二进制&#xff1b; 1、 正整数转成二进制。要点一定一定要记住哈&#xff1a;除二取余&#xff0c;然后倒序排列&#xff0c;高位补零。 也就是说&#x…

02.改善深层神经网络:超参数调试、正则化以及优化 W3. 超参数调试、Batch Norm和程序框架(作业:TensorFlow教程+数字手势预测)

文章目录1. 探索TensorFlow库1.1 线性函数1.2 计算 sigmoid1.3 计算损失函数1.4 One_Hot 编码1.5 用0,1初始化2. 用TensorFlow建立你的第一个神经网络2.0 数字手势识别2.1 创建 placeholder2.2 初始化参数2.3 前向传播2.4 计算损失2.5 后向传播、更新参数2.6 建立完整的TF模型2…

Codeforces Round #701 (Div. 2)赛后补题报告(A~D)

Codeforces Round #701 (Div. 2)赛后补题报告(A~D) A. Add and Divide 原题信息 http://codeforces.com/contest/1485/problem/A 解题思路 对于题目基本有两种方式&#xff0c;一种是直接暴力求解&#xff0c;第二种是使用函数求导进行严格证明 暴力求解 a1e9a1e^9a1e9不…

Codeforces Round #700 (Div. 2)A~D2解题报告

Codeforces Round #700 (Div. 2)A~D2解题报告 A Yet Another String Game 原题链接 http://codeforces.com/contest/1480/problem/A 解题思路 Alice想让更小&#xff0c;先手Bob想让其更大&#xff0c;后手解决方案当然是贪心&#xff0c;从第一个排到最后一个如果不是选择…

LeetCode 2020 力扣杯全国秋季编程大赛(656/3244,前20.2%)

文章目录1. 比赛结果2. 题目1. LeetCode LCP 17. 速算机器人 easy2. LeetCode LCP 18. 早餐组合 easy3. LeetCode LCP 19. 秋叶收藏集 medium4. LeetCode LCP 20. 快速公交 hard5. LeetCode LCP 21. 追逐游戏 hard1. 比赛结果 做出来2题&#xff0c;第三题写了好长时间无果。还…