DeepLearning.ai学习笔记(二)改善深层神经网络:超参数调试、正则化以及优化--Week2优化算法

简介: 1. Mini-batch梯度下降法介绍假设我们的数据量非常多,达到了500万以上,那么此时如果按照传统的梯度下降算法,那么训练模型所花费的时间将非常巨大,所以我们对数据做如下处理:如图所示,我们以1000为单位,将数据进行划分,令\(x^{\{1\}}=\{x^{(1)},x^{(2)}……x^{(5000)}\}\), 一般地用\(x^{\{t\}},y^{\{t\}}\)来表示划分后的mini-batch。

1. Mini-batch梯度下降法

介绍

假设我们的数据量非常多,达到了500万以上,那么此时如果按照传统的梯度下降算法,那么训练模型所花费的时间将非常巨大,所以我们对数据做如下处理:

img_75f87953ebdf1f3675f5f5184b42e227.png

如图所示,我们以1000为单位,将数据进行划分,令\(x^{\{1\}}=\{x^{(1)},x^{(2)}……x^{(5000)}\}\), 一般地用\(x^{\{t\}},y^{\{t\}}\)来表示划分后的mini-batch。

注意区分该系列教学视频的符号标记:

  • 小括号() 表示具体的某一个元素,指一个具体的值,例如\(x^{(i)}\)

  • 中括号[] 表示神经网络中的某一层,例如\(Z^{[l]}\)

  • 大括号{} 表示将数据细分后的一个集合,例如\(x^{\{1\}}=\{x^{(1)},x^{(2)}……x^{(5000)}\}\)

算法步骤

img_e925d96c3eee7cf699c48eaf009682aa.png
假设我们有5,000,000个数据,每1000作为一个集合,计入上面所提到的\(x^{\{1\}}=\{x^{(1)},x^{(2)}……x^{(5000)}\},……\)

  • 1)所以需要迭代运行5000次神经网络运算。
for i in range(5000):
  • 2)每一次迭代其实与之前笔记中所提到的计算过程一样,首先是前向传播,但是每次计算的数量是1000

  • 3)计算损失函数,如果有正则化,则记得加上正则项
  • 4)反向传播

注意,mini-batch相比于之前一次性计算所有数据不仅速度快,而且反向传播需要计算5000次,所以效果也更好。

2. 理解mini-batch梯度下降法

如上面所提到的,我们以1000位单位对数据进行划分,但是这只是为了更方便说明问题才这样划分的,那么我们在实际操作中应该如何划分呢?

首先考虑两个极端情况:

  • mini-batch size = m
    此时即为Batch gradient descent\((x^{\{t\}},y^{\{t\}})=(X,Y)\)

  • mini-batch size = 1
    此时即为Stochastic gradient descent, \((x^{\{t\}},y^{\{t\}})=(x^{(i)},y^{(i)})\)

img_79669fddb95833e47cb565652200d348.png

如图示,蓝色收敛曲线表示mini-batch size=m,比较耗时,但是最后能够收敛到最小值;而紫色收敛曲线表示mini-batch size=1,虽然速度可能较快,但是收敛曲线十分曲折,并且最终不会收敛到最小点,而是在其附近来回波动。

说了这么多,那么mini-batch size该如何选择呢?以下是选择的原则:

  • 如果数据量比较小(m<2000),可以使用batch gradient descent。一般来说mini-batch size取2的次方比较好,例如64,128,256,512等,因为这样与计算机内存设置相似,运算起来会更快一些。

3. 指数加权平均

为了理解后面会提到的各种优化算法,我们需要用到指数加权平均,在统计学中也叫做指数加权移动平均(Exponentially Weighted Moving Averages)

首先我们假设有一年的温度数据,如下图所示

img_330ff4a3a5e879ca2992f32053c78e21.png
我们现在需要计算出一个温度趋势曲线,计算方法如下:

\(V_0=0\)

\(V_1=β*V_0+(1-β)θ_1\)

\(……\)

\(V_t=β*V_{t-1}+(1-β)θ_t\)

上面的\(θ_t\)表示第t天的温度,β是可调节的参数,\(V_t\)表示\(\frac{1}{1-β}\)天的每日温度。

  • \(β=0.9\)时,表示平均了过去十天的温度,且温度趋势曲线如图中红线所示

img_9d57600a7a755530351008722dc1c9b9.png

  • \(β=0.98\)时,表示平均了过去50天的温度,温度趋势曲线如图中绿线所示。此时绿线相比较红线要平滑一些,是因为对过去温度的权重更大,所以当天天气温度的影响降低,在温度变化时,适应得更缓慢一些。

img_37eb4b597d48754186cea5683f91e717.png

  • \(β=0.5\)时,温度趋势曲线如图中黄线所示

img_7ba540f83fe25640ebaa5f57887843ac.png

4. 理解指数加权平均

我们将上面的公式\(V_t=β*V_{t-1}+(1-β)θ_t\)展开可以得到
(假设β=0.9)

\[V_t=0.1θ_t+0.1*0.9θ_{t-1}+0.1*0.9^2θ_{t-2}+…\]

可以看到在计算第t天的加权温度时,也将之前的温度考虑进来,但是都有一个衰减因子β,并且随着天数的增加,衰减幅度也不断增加。(有点类似于卷积计算)

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

为什么需要修正呢?我们仔细分析一下就知道了

img_2f3b82c12a9d49045f2cd684e406e3e2.png

首先我们假设的是\(β=0.98, V_0=0\),然后由\(V_t=βV_{t-1}+(1-β)θ_t\)可知

\(V_1=0.98V_0+0.02θ_1=0.02θ_1\)

\(V_2=0.98V_1+0.02θ_2=0.0196θ_1+0.02θ_2\)

假设\(θ_1=40℃\),那么\(V_1=0.02*40=0.8℃\),这显然相差太大,同理对于后面的温度的计算也只会是变差越来越大。所以我们需要进行偏差修正,具体方法如下:

\[V_t=\frac{βV_{t-1}+(1-β)θ_t}{1-β^t}\]

注意!!!上面公式中的 \(V_{t-1}\)是未修正的值

为方便说明,令\(β=0.98,θ_1=40℃,θ_2=39℃\),则

\(t=1,θ_1=40℃\)时,\(V_1=\frac{0.02*40}{1-0.98}=40\),哇哦~有没有很巧的感觉,再看
\(t=2,θ_2=39℃\)时,\(V_2=\frac{0.98*V_{t-1}+0.02*θ_2}{1-0.98^2}=\frac{0.98*(0.02*θ_1)+0.02*39}{1-0.98^2}=39.49\)

所以,记住你如果直接用修正后的\(V_{t-1}\)值代入计算就大错特错了

6. 动量梯度下降法

首先介绍一下一般的梯度算法收敛情况是这样的

img_2736b4f9b2611dd8327bc06bdd5a6bd1.png
可以看到,在前进的道路上十分曲折,走了不少弯路,在纵向我们希望走得慢一点,横向则希望走得快一点,所以才有了动量梯度下降算法

Momentum算法的第t次迭代:

  • 计算出dw,db
  • 这个计算式子与上一届提到的指数加权平均有点类似,即
    \(V_{dw}=βV_{dw}+(1-β)dw\)
    \(V_{db}=βV_{db}+(1-β)db\)
  • \(W=W-αV_{dw},b=b-αV_{db}\)

最终得到收敛的效果如下图的红色曲线所示。

img_6528efdf64b5fef42af45d0d21520108.png

该算法中涉及到的超参数有两个,分别是 \(α,β\),其中一般\(β=0.9\)是比较常取的值。

7. RMSprop

该算法全称叫Root Mean Square Prop(均方根传播)

这一节和上一节讲的都比较概括,不是很深入,所以就直接把算法记录下来吧。

在第t次迭代:

  • 计算该次mini-batch的dw,db
  • \(S_{dw}=βS_{dw}+(1-β)dw^2\)
    \(S_{db}=βS_{db}+(1-β)db^2\)
  • \(w:=w-α\frac{dw}{\sqrt{S_{dw}}}\)
    \(b:=b-α\frac{db}{\sqrt{S_{db}}}\)

收敛效果(原谅色)

img_a7c1ebee4f8d475c79e6d6c9a29ab197.png

8. Adam优化算法

Adam其实是MomentumRMSprop两个算法的结合,具体算法如下:

  • 初始化\(V_{dw}=0,V_{db}=0,S_{dw}=0,S_{dw}=0\)
  • 在第t次迭代
    • 计算出dw,db
    • \(V_{dw}=β_1V_{dw}+(1-β_1)dw\),\(V_{db}=β_1V_{db}+(1-β_1)db\)
      \(S_{dw}=β_2S_{dw}+(1-β_2)dw^2\),\(S_{db}=β_2S_{db}+(1-β_2)db^2\)
    • \(V_{dw}^{corrected}=\frac{V_{dw}}{1-β_1^t}\),\(V_{db}^{corrected}=\frac{V_{db}}{1-β_1^t}\)
      \(S_{dw}^{corrected}=\frac{S_{dw}}{1-β_2^t}\),\(S_{db}^{corrected}=\frac{S_{db}}{1-β_2^t}\)
    • \(W=W-α\frac{V_{dw}^{corrected}}{\sqrt{S_{dw}^{corrected}}+ε}\),\(b=b-α\frac{V_{db}^{corrected}}{\sqrt{S_{db}^{corrected}}+ε}\)

该算法中的超参数有\(α,β_1,β_2,ε\),一般来说\(β_1=0.9,β_2=0.999,ε=10^{-8}\)

9. 学习率衰减

之前算法中提到的学习率α都是一个常数,这样有可能会一个问题,就是刚开始收敛速度刚刚好,可是在后面收敛过程中学习率偏大,导致不能完全收敛,而是在最低点来回波动。所以为了解决这个问题,需要让学习率能够随着迭代次数的增加进行衰减,常见的计算公式有如下几种:

  • Learning rate decay

\[α=\frac{1}{1+decay_rate*epoch_num}α_0\]

decay_rate:衰减率
epoch_num: 迭代次数

举个栗子:
假设\(α_0\)初始化为0.2,decay_rate=1,则α的衰减过程如下:

Epoch α
1 0.1
2 0.067
3 0.05
…… ……
  • 其他衰减算法
    • 指数衰减:\(α=0.9^{epoch_num}α_0\)
    • \(α=\frac{K}{\sqrt{epoch_num}}α_0\)\(α=\frac{k}{t}α_0\)(这个t表示mini-batch的第t组数据)
    • 离散衰减,每次迭代后变为上一次迭代的一半。

10. 局部最优问题

img_c796b71b97416a5aef571b56bcfcac5e.png
图左中有很多局部最优点。
图右用青色标记出来的点称为鞍点(saddle point),因为和马鞍相似,所以称为鞍点。

鞍点相比于局部最优点要更加棘手,因为从横向上看似乎是最低点,但是纵向上看却不是最低点,所以收敛过程有点缓慢,原因如下:

img_061bf55970d5a9953bbe321c7203aa62.png
横向收敛只能沿着红线方向收敛,直到鞍点,而到了鞍点后才能往两边收敛,所以收敛的比较缓慢。

但是momentumAdam等算法因为能够加速学习,所以收敛速率更快,能够更快地收敛。

目录
相关文章
|
12天前
|
机器学习/深度学习 人工智能
打开AI黑匣子,三段式AI用于化学研究,优化分子同时产生新化学知识,登Nature
【10月更文挑战第11天】《自然》杂志发表了一项突破性的化学研究,介绍了一种名为“Closed-loop transfer”的AI技术。该技术通过数据生成、模型训练和实验验证三个阶段,不仅优化了分子结构,提高了光稳定性等性质,还发现了新的化学现象,为化学研究提供了新思路。此技术的应用加速了新材料的开发,展示了AI在解决复杂科学问题上的巨大潜力。
18 1
|
7天前
|
存储 人工智能 自然语言处理
高级 RAG 技术:提升生成式 AI 系统输出质量与性能鲁棒性【预检索、检索、检索后、生成优化等】
高级 RAG 技术:提升生成式 AI 系统输出质量与性能鲁棒性【预检索、检索、检索后、生成优化等】
高级 RAG 技术:提升生成式 AI 系统输出质量与性能鲁棒性【预检索、检索、检索后、生成优化等】
|
3天前
|
人工智能
写歌词的技巧和方法:优化歌词结构的秘诀,妙笔生词AI智能写歌词软件
歌词是音乐的灵魂,优化其结构能让作品更加动人。掌握开头吸引人、主体结构清晰、情感递进自然及结尾余味悠长等技巧至关重要。同时,借助《妙笔生词智能写歌词软件》的多种AI功能,如智能写词、押韵优化等,可有效提升创作效率与质量,为你的歌词增添光彩。
|
1天前
|
机器学习/深度学习 人工智能 算法
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
车辆车型识别,使用Python作为主要编程语言,通过收集多种车辆车型图像数据集,然后基于TensorFlow搭建卷积网络算法模型,并对数据集进行训练,最后得到一个识别精度较高的模型文件。再基于Django搭建web网页端操作界面,实现用户上传一张车辆图片识别其类型。
8 0
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
|
4天前
|
人工智能 Cloud Native Java
云原生技术深度解析:从IO优化到AI处理
【10月更文挑战第24天】在当今数字化时代,云计算已经成为企业IT架构的核心。云原生作为云计算的最新演进形态,旨在通过一系列先进的技术和实践,帮助企业构建高效、弹性、可观测的应用系统。本文将从IO优化、key问题解决、多线程意义以及AI处理等多个维度,深入探讨云原生技术的内涵与外延,并结合Java和AI技术给出相应的示例。
20 1
|
9天前
|
机器学习/深度学习 人工智能 算法
"拥抱AI规模化浪潮:从数据到算法,解锁未来无限可能,你准备好迎接这场技术革命了吗?"
【10月更文挑战第14天】本文探讨了AI规模化的重要性和挑战,涵盖数据、算法、算力和应用场景等方面。通过使用Python和TensorFlow的示例代码,展示了如何训练并应用一个基本的AI模型进行图像分类,强调了AI规模化在各行业的广泛应用前景。
22 5
|
8天前
|
人工智能 关系型数据库 数据中心
2024 OCP全球峰会:阿里云为代表的中国企业,引领全球AI网络合作和技术创新
今年的OCP(Open Compute Project)峰会于2024年10月14日至17日在美国加州圣何塞举行,在这场全球瞩目的盛会上,以阿里云为代表的中国企业,展示了他们在AI网络架构、液冷技术、SRv6和广域网等前沿领域的强大创新能力,持续引领全球合作与技术创新。
|
14天前
|
机器学习/深度学习 人工智能 算法
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
玉米病害识别系统,本系统使用Python作为主要开发语言,通过收集了8种常见的玉米叶部病害图片数据集('矮花叶病', '健康', '灰斑病一般', '灰斑病严重', '锈病一般', '锈病严重', '叶斑病一般', '叶斑病严重'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。再使用Django搭建Web网页操作平台,实现用户上传一张玉米病害图片识别其名称。
34 0
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
|
16天前
|
机器学习/深度学习 算法 5G
基于BP神经网络的CoSaMP信道估计算法matlab性能仿真,对比LS,OMP,MOMP,CoSaMP
本文介绍了基于Matlab 2022a的几种信道估计算法仿真,包括LS、OMP、NOMP、CoSaMP及改进的BP神经网络CoSaMP算法。各算法针对毫米波MIMO信道进行了性能评估,通过对比不同信噪比下的均方误差(MSE),展示了各自的优势与局限性。其中,BP神经网络改进的CoSaMP算法在低信噪比条件下表现尤为突出,能够有效提高信道估计精度。
26 2
|
8天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于贝叶斯优化卷积神经网络(Bayes-CNN)的多因子数据分类识别算法matlab仿真
本项目展示了贝叶斯优化在CNN中的应用,包括优化过程、训练与识别效果对比,以及标准CNN的识别结果。使用Matlab2022a开发,提供完整代码及视频教程。贝叶斯优化通过构建代理模型指导超参数优化,显著提升模型性能,适用于复杂数据分类任务。

热门文章

最新文章