• 候选企业:中远海运能源运输股份有限公司 2019-05-17
  • 人民网家居频道互动合作联系方式 2019-05-10
  • 【我是援藏教师】这一次,带上女儿去支教 2019-05-07
  • 第四届中华健康节启幕:引领全社会正确的健康养生理念 2019-05-07
  • 定陶战役:示弱于敌重点围歼的范例 2019-05-01
  • 大国担当!中国引领全球气候治理(在习近平新时代中国特色社会主义思想指引下——新时代新作为新篇章) 2019-04-29
  • 合肥市人大常委会副主任吴利林到皖维集团调研 2019-04-21
  • 党的十九大最重大的理论成就 2019-04-16
  • 大数据杀熟,别急着甩锅 2019-04-16
  • 沁园春 春色—野夫.blog的博客—强国博客—人民网 2019-04-10
  • 河北经济日报官方微信 2019-04-10
  • “日照”河山汉字摩崖石刻 2019-03-27
  • 不动产登记全国联网 房价会下跌吗? 2019-03-27
  • 外交部举行中外媒体吹风会:王毅介绍上合组织青岛峰会情况 2019-03-17
  • 对中国人民而言,腐败就是从天上掉下来的,不是从人民群众中滋生出来的。 2019-03-17
  • 楼主: 东方祥
    2183 17

    安徽11选五开奖走势图: 深度学习和神经网络入门指南(二)神经网络超参数调整,正则化 [推广有奖]

    管理员

    学科带头人

    3%

    还不是VIP/贵宾

    -

    威望
    2
    论坛币
    990100 个
    学术水平
    188 点
    热心指数
    231 点
    信用等级
    186 点
    经验
    44073 点
    帖子
    386
    精华
    6
    在线时间
    1272 小时
    注册时间
    2015-3-25
    最后登录
    2019-5-27

    楼主
    东方祥 发表于 2018-11-15 10:48:10 |只看作者 |倒序

    本文的主题是有关超参数调整,正则化,批量归一化等。主要参考了Andrew Ng教授的deeplearning.ai(深度学习项目)的第2部分。上篇帖子:深度学习和神经网络入门指南(一)


    这次我们将探讨这些神经网络的内部工作原理,包括了解如何改善其性能并缩短整体培训时间。这些技术帮助数据科学家攀登机器学习竞赛排行榜(以及其他内容)并获得最高荣誉。是的,这些概念非常宝贵!


    目录
    • 内容结构
    • 改进深度神经网络:超参数调整,正则化和优化
      • 第1单元:深度学习的实践方面
        • 设置机器学习应用程序
        • 规范您的神经网络
        • 设置优化问题
      • 第2单元:优化算法
      • 第3单元:超参数调整,批量标准化和编程框架
        • 超参数调整
        • 批量标准化
        • 多级分类
        • 编程框架简介



    1.内容结构

    本系列的第1部分介绍了浅层和深层神经网络如何工作,如何在单个以及多个训练示例中实现前向和后向传播等概念。现在出现的问题是如何调整这些神经网络以便从中提取最大精度。

    内容2,我们将在本文中看到,跨越三个??椋?/font>

    • 在第1单元中,我们将介绍深度学习的实践方面。我们将看到如何从给定数据中分离训练,验证和测试集。我们还将讨论正则化,退出,规范化等主题,这些主题可以帮助我们提高模型的效率。
    • 在???中,我们将讨论小批量梯度下降的概念以及Momentum,RMSprop和ADAM等更多优化器。
    • 在最后一个??橹?,我们将看到如何调整不同的超参数以提高模型的效率。我们还将介绍批量标准化的概念以及如何解决多类分类挑战。

    内容2:改进深度神经网络:超参数调整,正则化和优化

    现在我们已经知道在这篇全面的文章中我们将要涵盖的内容,让我们开始吧!


    第1单元:深度学习的实践方面

    以下指针总结了我们对此??榈钠谕?/font>

    • 回顾不同类型的初始化会导致不同的结果
    • 认识到初始化在复杂神经网络中的重要性
    • 认识到训练/验证/测试集之间的区别
    • 诊断模型中的偏差和方差问题
    • 学习何时以及如何使用正规化方法,如丢失或L2正则化
    • 了解深度学习中的实验问题,例如消失或爆炸渐变以及如何处理它们
    • 使用梯度检查来验证反向传播实现的正确性

    该??橄嗟比?,因此进一步分为三个部分:

    • 第一部分:设置机器学习应用程序
    • 第二部分:规范您的神经网络
    • 第三部分:设置优化问题

    让我们详细介绍每个部分。


    第一部分:设置机器学习应用程序训练/开发/测试集

    在训练深度神经网络时,我们需要就以下超参数做出很多决定:

    • 网络中隐藏层的数量
    • 每个隐藏层的隐藏单元数
    • 学习率
    • 不同层的激活功能等

    没有指定或预定义的方式来选择这些超参数。以下是我们通常遵循的内容:

    • 从一个想法开始,即从一定数量的隐藏层开始,具有一定的学习率等。
    • 通过编码来尝试这个想法
    • 试验这个想法是如何运作的
    • 优化这个想法并重复这个过程

    现在我们如何确定这个想法是否有效?这是火车/开发/测试装置发挥作用的地方。假设我们有一个完整的数据集我们可以将这个数据集分成三个不同的集合,如:

    Screenshot-from-2018-10-31-13-22-53.png

    • 训练集:我们在训练数据上训练模型。
    • 开发集:训练模型后,我们检查它在开发集上的表现。
    • 测试集:当我们有一个最终模型(即,在训练和开发设置上都表现良好的模型)时,我们在测试集上对其进行评估,以便对算法的效果进行无偏估计。

    在此之后还有一个问题 -  这些训练,开发和测试集的长度应该是多少? 它实际上是任何机器学习项目的一个非常重要的方面,并且最终将在决定模型执行情况方面发挥重要作用。让我们看一下专家们遵循的一些传统指南,以确定每组的长度:

    • 在前一个时代,当我们有小数据集时,不同集合的分布是:

      或者只是:
    • 随着近年来数据的可用性增加,我们可以使用它的大部分来训练模型:
      Screenshot-from-2018-10-31-13-38-52.png

    这当然是决定这些不同组长度的一种方法。这在大多数情况下工作正常,但放纵我并考虑以下场景:

    假设我们从不同的站点抓取了多张猫的图像,并使用我们自己的相机点击了一些图像。这两种图像的分布会有所不同,对吧?现在,我们以这样一种方式分割数据:训练集包含所有被刮擦的图像,而开发和测试集包含所有摄像机图像。在这种情况下,训练集的分布将与开发和测试集不同,因此,我们很可能无法获得良好的结果。

    在这些情况(不同的发行版)中,我们可以遵循以下准则:

    • 将训练,开发和测试集分开,使其分布相似
    • 跳过测试集并仅使用dev set验证模型

    我们还可以使用这些集来查看模型的偏差和方差。这些可以帮助我们确定模型的拟合和执行情况。


    偏差/方差

    考虑一个数据集,它给出了下面的图:

    Screenshot-from-2018-10-31-14-01-47.png

    如果我们拟合直线将点分类到不同的类别会发生什么?该模型将不适合并具有高偏差。另一方面,如果我们完美地拟合数据,即所有点都被分类到它们各自的类中,我们将具有高方差(和过度拟合)。通常在这两个极端之间找到正确的模型拟合:

    Screenshot-from-2018-10-31-14-05-37 (1).png

    我们希望我们的模型恰到好处,这意味着具有低偏差和低方差。我们可以通过检查列车组和设置错误来确定模型是否应该具有高偏差或高差异。通常,我们可以将其定义为:

    • 如果设定误差远大于列车设定误差,则模型过度拟合并且具有高方差
    • 当列车和发动机设定误差都很高时,模型不合适且具有高偏差
    • 如果列车设置误差较大且设置误差更差,则该模型具有高偏差和高偏差
    • 当列车和开发设置误差都很小时,模型合理地拟合数据并具有低偏差和低方差

    机器学习的基本配方

    我有一个非常简单的方法来处理我在机器学习中遇到的某些问题。提出一系列问题,然后逐个找出答案。事实证明,它对我的​​旅程非常有帮助,而且往往导致模型性能的提高。这些问题如下:

    问题1:模型是否有偏差?

    解决方案:我们可以通过查看训练集错误来确定模型是否具有高偏差。高训练误差导致高偏差。在这种情况下,我们可以尝试更大的网络,更长时间的训练模型,或尝试不同的神经网络架构。

    问题2:模型的方差是否很大?

    解决方案:如果开发设置错误很高,我们可以说模型的方差很大。为了减少方差,我们可以获得更多数据,使用正则化尝试不同的神经网络架构。

    减少方差的最流行的技术之一称为正则化。让我们来看看这个概念以及它在第二部分中如何应用于神经网络。


    第二部分:规范您的神经网络

    我们可以通过增加数据量来减少差异。但每次这真的是一个可行的选择吗?也许没有其他可用数据,如果有,可能对您的项目来说太昂贵了。这是一个非常普遍的问题。这就是正规化概念在防止过度拟合方面发挥重要作用的原因。


    正则

    我们以逻辑回归为例。我们尽量减少损失函数:

    Screenshot-from-2018-10-31-15-21-53.png


    现在,如果我们将正则化添加到此成本函数中,它将如下所

    示:

    Screenshot-from-2018-10-31-15-24-36.png

    这称为L2正则化。ƛ是我们在训练模型时可以调整的正则化参数。现在,让我们看看如何将正则化用于神经网络。神经网络的成本函数可以写成:

    Screenshot-from-2018-10-31-15-34-20 (1).png

    我们可以在此成本函数中添加正则化项(就像我们在逻辑回归方程中所做的那样):

    Screenshot-from-2018-10-31-15-39-09.png

    最后,让我们看看正则化如何适用于梯度下降算法:

    正如你可以从上面的方程式推测的那样,在正则化的情况下权重的减少会更多(因为我们从权重中增加了更多的数量)。这就是L2正则化也被称为权重衰减的原因。

    你必须想知道在这一点  上,正规化如何防止模型中的过度拟合?让我们试着在下一节中理解它。


    正规化如何减少过度拟合?

    过度拟合的主要原因是因为模型甚至可以学习数据中最微小的细节。因此,在了解了它可以找到的所有可能的模式之后,模型往往在训练集上表现得非常好,但是无法在开发和测试集上产生良好的结果。面对以前看不见的数据时,它就会崩溃。

    防止过度拟合的一种方法是降低模型的复杂性。这正是正规化所做的!如果我们将正则化参数(ƛ)设置为较大的值,则梯度下降更新期间权重的衰减将更多。因此,大多数隐藏单位的权重将接近于零。

    由于权重可以忽略不计,因此模型不会从这些单元中学到很多东西。这最终会使网络更简单,从而减少过度拟合:

    Screenshot-from-2018-10-31-18-18-30 (1).png


    让我们通过另一个例子来理解这个概念。假设我们使用tanh激活函数:

    Screenshot-from-2018-10-31-18-21-17.png

    现在,如果我们将ƛ设置为一个较大的值,单位w [l]的权重将会减少。要计算z [l]值,我们将使用以下公式:

    z [l] = w [l] a [l-1] + b [l]

    因此,z值会更小。如果我们使用tanh激活函数,z [l]的这些低值将位于原点附近:

    Screenshot-from-2018-10-31-18-27-37.png

    这里我们只使用tanh函数的线性区域。这将使网络中的每个层大致呈线性,即,我们将获得分离数据的线性边界,从而防止过度拟合。


    辍学正规化

    我们可以使用另一种技术来执行正则化??悸悄诠菇ㄒ桓錾窬?,如下所示:

    Screenshot-from-2018-10-31-18-40-05.png

    该神经网络过度拟合训练数据。假设我们在所有这些图像中添加0.5的丢失。该模型将从每一层中随机删除50%的单位,最后我们最终得到一个更简单的网络:

    Screenshot-from-2018-10-31-18-44-01.png

    Screenshot-from-2018-10-31-18-44-18.png


    事实证明这是一种非常有效的正则化技术。我们如何自己实施?让我们来看看!

    我们将研究这个我们有三个隐藏层的例子。现在,我们将考虑第三层,l = 3。第三个隐藏层的丢失矢量d可写为:

    d 3 = np.random.rand(3 .shape [0],3 .shape [1])<keep_prob

    这里,keep_prob是保持单位的概率。现在,我们将计算所选单位的激活:

    a 3 = np.multiply(a 3,d 3

    这个3值将减少一个因子(1-keep_probs)。因此,要获得的预期值3,我们把价值:

    a 3 / = keep_dims

    让我们通过一个例子来理解dropout的概念:

    图层中的单位数= 50keep_prob = 0.8

    因此,20%的总单位(即10个)将被随机关闭。

    在每次训练迭代中随机丢弃不同组的隐藏层。请注意,丢失仅在训练模型时完成(而不是在测试阶段)。这样做的原因是:

    • 我们不希望我们的输出是随机的
    • 辍学为预测增加了噪音

    其他正规化方法

    除了L2正则化和丢失之外,还有一些其他技术可用于减少过度拟合。

    • 数据增强:假设我们正在构建图像分类模型,并且由于各种原因缺少必要的数据。在这种情况下,我们可以使用数据增强,即应用一些变化,如翻转图像,随机拍摄图像,随机旋转图像等。这些可能有助于我们获得更多的训练数据,从而减少过度拟合。
    • 提前停止:要理解这一点,请考虑以下示例:
      Screenshot-from-2018-10-31-19-25-56.png
      此处,训练错误随时间不断减少。另一方面,开始设置误差在几次迭代之后最初在增加之前减小。我们可以在开发设置错误开始增加的点停止训练。简而言之,这被称为提前停止。

    就正规化技术而言,这是一个包装!


    第三部分:设置优化问题

    在本单元中,我们将讨论可用于加速培训过程的不同技术。


    规范化输入

    假设我们有2个输入要素,它们的散点图如下所示:

    Screenshot-from-2018-11-02-16-03-57.png

    这就是我们如何将输入表示为向量:

    Screenshot-from-2018-11-02-16-05-14.png

    我们将按照以下步骤规范化输入:

    需要注意的一点是,我们使用相同的均值和方差来规范化测试集。我们应该这样做是因为我们希望在列车和测试数据上都能进行相同的转换。

    但  为什么规范化数据会使算法更快?

    在非标准化数据的情况下,特征的比例将变化,因此对于每个特征所学习的参数将存在变化。这将使成本函数不对称:

    Screenshot-from-2018-11-02-16-23-14 (1).png

    然而,在标准化数据的情况下,比例将是相同的,并且成本函数也将是对称的:

    Screenshot-from-2018-11-02-16-25-51 (1).png

    归一化输入使成本函数对称。这使得梯度下降算法更容易更快地找到全局最小值。而这反过来又使算法运行得更快。


    消失/爆炸渐变

    在训练深度神经网络时,有时衍生物(斜率)可能变得非常大或非常小。它可以使训练阶段变得非常困难。这是消失/爆炸梯度的问题。假设我们使用带有两个输入特征的'l'层的神经网络,我们初始化了大的权重: Screenshot-from-2018-11-02-16-39-41.png

    第l层的最终输出将是(考虑我们使用线性激活函数):

    Screenshot-from-2018-11-02-16-41-03 (1).png

    对于更深的网络,L将变大,使得渐变非常大并且学习过程缓慢。同样,使用小权重会使渐变非常小,因此学习速度会很慢。我们必须处理这个问题,以减少培训时间。那么  如何初始化权重呢?


    深度网络的权重初始化

    这个问题的一个潜在解决方案可以是随机初始化??悸且桓錾窬?,如下所示: Screenshot-from-2018-11-02-16-56-54.png

    对于此示例,我们可以将权重初始化为: Screenshot-from-2018-11-02-16-58-39.png

    随机初始化权重背后的主要原因是打破对称性。我们希望确保不同的隐藏单元学习不同的模式?;褂幸恢旨际蹩梢园镏繁N颐堑氖迪质钦返牟⑶铱梢钥焖僭诵?。


    渐变检查

    梯度检查用于在反向传播的实现中查找错误(如果有的话)。请考虑以下图表: Screenshot-from-2018-11-02-17-06-55.png

    函数wrtoΘ的导数可以最好地表示为: Screenshot-from-2018-11-02-17-08-00.png

    其中ε是我们朝Θ的左侧和右侧迈出的小步。确保上面计算的导数几乎等于函数的实际导数。以下是我们遵循梯度检查的步骤:

    • 取W [1],b [1],...,w [L],b [L]并将其重塑为大矢量Θ:
      Screenshot-from-2018-11-02-17-17-43.png
    • 我们还计算dW [1],db [1],...,dw [L],db [L]并将其重新整形为大矢量dΘ
    • 最后,我们检查dΘ是否是J(Θ)的梯度

    对于每个i,我们计算: Screenshot-from-2018-11-02-17-23-35.png

    我们使用欧氏距离(ε)来衡量这两个术语是否相等: Screenshot-from-2018-11-02-17-27-41.png

    我们希望这个值尽可能小。所以,如果ε是10-7,我们说它是一个很好的近似值,如果ε是10-5,那是可以接受的,如果ε在10-3范围内,我们必须改变近似值并重新计算权重。

    这是???的包装!


    第2单元:优化算法

    该??楸澈蟮哪勘晔牵?/font>

    • 学习不同的优化方法,如(Stochastic)Gradient Descent,Momentum,RMSProp和Adam
    • 使用随机小批量加速收敛并改进优化
    • 了解学习率衰减的好处并将其应用于您的优化

    小批量梯度下降

    我们在内容1中看到矢量化如何帮助我们有效地使用'm'训练样例。我们可以摆脱明确的for循环并使训练阶段更快。因此,我们将培训示例视为:

    Screenshot-from-2018-11-02-17-48-24.png

    其中X是矢量化输入,Y是它们的相应输出。但是如果我们有一个大的训练集,比如m = 5,000,000,会发生什么?如果我们在每次训练迭代中处理所有这些训练示例,则梯度下降更新将花费大量时间。相反,我们可以使用一小批训练样例并根据它们更新权重。

    假设我们制作一个包含1000个例子的小批量。这意味着我们有5000批次,训练集将如下所示: Screenshot-from-2018-11-02-17-52-16.png

    这里,X {t},Y {t}表示第t小批量输入和输出。现在,我们来看看如何实现小批量梯度下降:

    对于t = 1:No_of_batches#这称为epoch    A [L],Z [L] = forward_prop(X {t},Y {t})    cost = compute_cost(A [L],Y {t})    grads = backward_prop(A [L],缓存)    update_parameters(毕业生)

    这相当于1个纪元(1个纪元=单次通过训练集)。请注意,迷你批次的成本函数如下:

    Screenshot-from-2018-11-02-18-02-13.png

    其中1000是我们在上面的例子中看到的迷你批次的数量。让我们深入了解并详细了解小批量梯度下降。


    了解Mini-Batch Gradient Descent

    在批量梯度下降中,我们的成本函数应该在每次迭代时减少: Screenshot-from-2018-11-02-18-07-58.png

    在小批量梯度下降的情况下,我们仅使用一组指定的训练样例。因此,对于某些迭代,成本函数可能会减少:

    Screenshot-from-2018-11-02-18-10-08.png

    我们如何选择小批量?让我们看看各种情况:

    • 如果小批量大小= m:
      这是批量梯度下降,其中在每次迭代中使用所有训练样例。每次迭代需要花费太多时间。
    • 如果小批量大小= 1:
      它被称为随机梯度下降,其中每个训练示例是其自己的小批量。因为在每次迭代中我们只采用一个例子,它可能变得非常嘈杂并且花费更多的时间来达到全局最小值。
    • 如果小批量大小在1到m之间:
      它是小批量梯度下降。小批量的尺寸不应太大或太小。

    以下是在确定小批量大小时要记住的一些一般准则:

    • 如果训练集很小,我们可以选择m <2000的小批量
    • 对于较大的训练集,典型的小批量大小为:64,128,256,512
    • 确保小批量大小适合您的CPU / GPU内存

    指数加权平均值

    以下是整年收集的假设温度数据样本:

    Θ1= 40 F.Θ2= 49 F.Θ3= 45 F.。。Θ180= 60 F.Θ181= 56 F.。。

    下面的图表为我们整齐地总结了这个温度数据: Screenshot-from-2018-11-03-12-48-47.png

    指数加权平均值或指数加权移动平均值计算趋势。我们首先将一个术语初始化为0:

    V 0 = 0

    现在,所有其他条款将计算为V0和当天温度的加权和:

    V 1 = 0.9 * V 0 + 0.1 *Θ 1

    V 2 = 0.9 * V 1 + 0.1 *Θ 2

    等等。指数加权平均值的更通用形式可写为:

    V =β* V (T-1) +(1 - β)*Θ

    将此等式用于趋势,数据将概括为: Screenshot-from-2018-11-03-12-56-06.png

    该实施例中的β值为0.9,这意味着Vt是1 /(1-β)天平均值的近似值,即1 /(1-0.9)= 10天温度。增加β的值将导致接近更多天,即采用更多天的平均温度。如果β值很小,即我们仅使用1天的数据进行近似,则预测变得更加嘈杂: Screenshot-from-2018-11-03-13-04-01.png

    这里,绿线是β= 0.98(使用50天)时的近似值,黄线是β= 0.5时(使用2天)??梢钥闯?,使用小β会导致噪声预测。

    指数加权平均数的方程式由下式给出:

    V =β* V (T-1) +(1 - β)*Θ

    让我们看看我们如何实现这个:

    初始化 = 0重复{得到下一个Θ V Θ =β* V Θ +(1 - β)*Θ }

    当我们覆盖先前的值时,此步骤会占用更少的内存。因此,它是一种计算,也是一种内存有效的过程。


    指数加权平均值中的偏差校正

    我们初始化V 0 = 0,所以在计算在V 1个值也只会是等于(1 - β)*Θ 1。它不会很好地概括为实际值。我们需要使用偏差校正来克服这一挑战。

    而不是使用前面的等式,即

    V =β* V (T-1) +(1 - β)*Θ

    我们包括偏差修正术语:

    V = [β* V (T-1) +(1 - β)*Θ 吨 ] /(1 - β 吨)

    当t小时,βt将变大,导致(1- βt)的值更小。这将使V t值更大,从而确保我们的预测准确。


    具有动量的梯度下降

    具有动量的梯度下降的基本思想是计算梯度的指数加权平均值并使用它们来更新权重。假设我们有一个成本函数,其轮廓如下所示:

    Screenshot-from-2018-11-03-13-36-15.png

    红点是全局最小值,我们希望达到这一点。使用渐变下降,更新将如下所示:

    Screenshot-from-2018-11-03-13-37-30.png

    另一种方法是使用更大的学习率。但这可能导致大量升级步骤,我们可能无法达到全局最低标准。另外,学习率太小会使梯度下降变慢。我们希望在垂直方向上学习更慢,在水平方向上学习更快,这将有助于我们更快地达到全局最小值。

    让我们看看我们如何使用动力来实现它:

    在迭代t: 使用动量 V dW =β* V 计算当前小批量的dW,dB dW +(1  - β)* dWV db =β* V db +(1  - β)* db 更新权重 W = W  - α* V dW b = b  - α* V db

    这里,我们有两个超参数,即α和β。dW和db在上面的等式中的作用是提供动量,V dW和V db提供速度,并且β充当摩擦并且防止超过极限的超速??悸墙蛳蛳鹿龆?- V dW和V db为该球提供速度并使其移动得更快。我们不希望我们的球加速太多,以至于它错过了全局最小值,因此β起摩擦作用。

    我将向您介绍一些优化算法。


    RMSprop

    考虑一个简单的梯度下降的例子: Screenshot-from-2018-11-03-14-36-25.png

    假设我们有两个参数w和b,如下所示: Screenshot-from-2018-11-03-14-37-47.png

    查看上面显示的轮廓和参数图。我们希望减慢b方向上的学习,即垂直方向,并加快w方向的学习,即水平方向。RMSprop中遵循的步骤可以概括为:

    上迭代吨: 计算一页,分贝电流小批量 小号一页2 * S 一页 +(1 - β 2)* DW 2 V 分贝2 * S 分贝 +(1 - β 2)*分贝2更新权重 W = W  - α*(dW / S dW)b = b  - α*(db / S db

    垂直方向上的斜率(在我们的例子中是db)更陡峭,导致S db的值很大。由于我们希望在垂直方向上慢速学习,因此将db与Sdbin更新步骤分开将导致b的变化较小。因此,垂直方向的学习将会更少。类似地,S dW的小值将导致在水平方向上更快的学习,从而使算法更快。


    亚当优化算法

    Adam本质上是动量和RMSprop的结合。让我们看看我们如何实现它:

    V dW = 0,S dW = 0,V db = 0,S db = 0在迭代t:计算一页,分贝电流小批量使用动量和RMSprop V 一页1 * V 一页 +(1 - β 1)* DWV 分贝1 * V 分贝 +(1 - β 1)*分贝小号一页2 * S 一页 +(1 - β 2)* DW 2 小号分贝2 * S 分贝 +(1 - β 2)*分贝2施加偏压校正 V 一页校正 = V 一页 /(1 - β 1 )V 分贝校正 = V 分贝 /(1 - β 1 )小号一页校正 = S 一页 /(1 - β 2 )小号分贝校正 = S 分贝 /(1 - β 2 更新权重 W = W  - α*(V dW 校正 / S dW 校正 +ε)b = b  - α*(V db 校正 / S db 校正 +ε)

    Adam中使用了一系列超参数,其中一些常见的是:

    • 学习率α:需要调整
    • 动量项β 1常见的选择是0.9
    • RMSprop项β 2常见的选择是0.999
    • ε: 10 -8

    Adam比我们之前看到的技术更快地训练神经网络模型。


    学习率衰减

    如果我们慢慢降低学习率,我们可能会加快学习过程。这个过程称为学习率衰减。

    最初,当学习率不是很小时,培训会更快。如果我们慢慢降低学习率,接近全球最小值的可能性就会更高。

    学习率衰减可以如下:

    α= [1 /(1 + decay_rate * epoch_number)] * α0

    让我们用一个例子来理解它??悸牵?/font>

    • α 0 = 0.2
    • decay_rate = 1
    epoch_numberα
    1[1 /(1 + 1)] * 0.2 = 0.1
    2[1 /(1 + 2)] * 0.2 = 0.067
    30.05
    40.04

    这就是在每个时代之后,学习率有所下降,这有助于我们更快地达到全球最低点?;褂幸恍┭奥仕ゼ醴椒ǎ?/font>

    • 指数衰减: α=(0.95)epoch_number * α0
    • α= k / epochnumber 1/2 * α0
    • α= k / t 1/2 * α0

    这里,t是小批号。

    这都是关于优化算法和???的!深吸一口气,我们即将进入本文的最后一个???。


    第3单元:超参数调整,批量标准化和编程框架

    ???的主要目标是:

    • 掌握超参数调整的过程
    • 熟悉批量标准化的概念

    与第一个??榉浅O嗨?,这又分为三个部分:

    • 第一部分:超参数调整
    • 第二部分:批量标准化
    • 第三部分:多级分类

    第一部分:超参数调整调整过程

    超参数。我们认为这个术语在数据科学竞赛和黑客马拉松中很受欢迎。但是在整体方案中它有多重要?

    有效地调整这些超参数可以大大改善您在排行榜上的位置。以下是我们经常在深度神经网络中使用的一些常见超参数:

    • 学习率 - α
    • 动量 - β
    • 亚当的超参数- β 1,β 2,ε
    • 隐藏层数
    • 不同图层的隐藏单位数
    • 学习率下降
    • 小批量大小

    学习率通常被证明是上述中最重要的。接下来是隐藏单位的数量,动量,小批量大小,隐藏层数,然后是学习率衰减。

    现在,假设我们有两个超参数。我们在网格中对点进行采样,然后系统地探索这些值??悸且桓鑫宄宋宓耐瘢?/font> Screenshot-from-2018-11-05-12-55-19.png

    我们检查所有25个值并选择最适合的超参数。我们也可以尝试随机值,而不是使用这些网格。为什么?因为我们不知道哪个超参数值可能变得重要,而在网格中我们只定义特定值。

    本小节的主要内容是使用随机抽样和充分搜索。


    使用适当的比例来选择超参数

    要理解这一点,请考虑隐藏单位超参数的数量。我们感兴趣的范围是50到100.我们可以使用包含50到100之间值的网格,并使用它来找到最佳值:

    Screenshot-from-2018-11-05-13-12-51.png

    现在考虑范围在0.0001和1之间的学习率。如果我们用这些极值绘制数字线并随机均匀地采样值,大约90%的值将落在0.1到1之间?;痪浠八?,我们是使用90%的资源在0.1到1之间搜索,只有10%在0.0001到0.1之间搜索。这看起来不正确!相反,我们可以使用对数比例来选择值: Screenshot-from-2018-11-05-13-29-21.png

    接下来,我们将学习一种技术,使我们的神经网络对超参数的选择更加稳健,并且使训练阶段更加快速。


    第二部分:批量标准化规范化网络中的激活

    让我们回想一下逻辑回归的样子: Screenshot-from-2018-11-05-14-25-36.png

    我们已经看到在这种情况下如何规范化输入可以加快学习过程。在深度神经网络的情况下,我们有很多隐藏层,这导致了很多激活: Screenshot-from-2018-11-05-14-27-39.png

    如果我们能够使这些激活的均值和方差正?;╝ [2])以使w [3],b [3]的训练更有效,那不是很好吗?这是批量标准化的工作原理。我们规范化隐藏层的激活,以便更快地更新下一层的权重。从技术上讲,我们将z [2]的值标准化,然后使用标准化值的激活函数。以下是我们如何实现批量标准化:

    给定NN Z(1),......,Z(m)中的一些中间值: Screenshot-from-2018-11-05-14-42-23.png

    这里,Ɣ和β是可学习的参数。


    将批量范数拟合成神经网络

    考虑下面显示的神经网络: Screenshot-from-2018-11-05-14-59-07.png

    神经网络的每个单元计算两件事。它首先计算Z,然后在其上应用激活函数来计算A.如果我们在每一层应用批处理规范,计算将如下所示: Screenshot-from-2018-11-05-15-03-08.png

    在计算Z值之后,我们应用批量规范,然后应用激活函数。这种情况下的参数是: Screenshot-from-2018-11-05-15-07-11.png

    最后,让我们看看如何使用批量规范应用梯度下降:

    对于t = 1,...... ..,批次数:    计算X {t}上的前向传播    在每个隐藏层中,使用批量标准化    使用反向传播来计算dW [1],db [1],dβ [1]和dƔ [l]    更新参数:    W [1] = W [1] - α* dW [1]     β [1][1] - α*dβ [1]

    请注意,这也适用于动量,RMSprop和Adam。


    Batch Norm如何工作?

    在逻辑回归的情况下,我们现在知道输入的标准化有助于加速学习。批量规范的工作方式大致相同。让我们再考虑一个用例来更好地理解它??悸嵌品掷辔侍獾难盗芳?/font> Screenshot-from-2018-11-05-15-28-47.png

    但是当我们尝试将其推广到具有不同分布的数据集时,请说: Screenshot-from-2018-11-05-15-29-36.png

    两种情况下的决策边界可能相同: Screenshot-from-2018-11-05-15-30-13.png

    但该模型无法发现这个绿色决策边界。因此,随着输入分布的变化,我们可能需要再次训练模型??悸且桓錾疃壬窬纾?/font> Screenshot-from-2018-11-05-15-33-41.png

    让我们只考虑第3层的学习​​。它将从第二层激活它作为输入: Screenshot-from-2018-11-05-15-34-30.png

    第三个隐藏层的目的是获取这些激活并将其与输出映射。随着先前层的参数改变,这些激活每次都改变。因此,我们看到激活值发生了很大变化。批量标准减少了这些隐藏单位值的分布转移的量。

    此外,事实证明批量规范也具有正则化效果:

    • 使用仅在该迷你批次上计算的均值/方差对每个小批量进行标准化
    • 这会给该迷你批次中的z [l]值增加一些噪音,这类似于辍学的影响
    • 因此,这也具有正规化的轻微影响

    需要注意的一点是,在进行预测时,我们使用批量标准化的方式略有不同。


    批量标准在测试时间

    我们需要在对测试数据进行预测时一次处理一个示例。在培训期间,批量规范的步骤可以写成: Screenshot-from-2018-11-05-15-53-31.png

    我们首先计算该小批量的均值和方差,并使用它来标准化z值。我们将使用整个小批量计算平均值和标准偏差。我们分别处理每个图像,因此获取单个图像的平均值和标准偏差是没有意义的。

    我们使用指数加权平均值来计算不同小批量的均值和方差。最后,我们使用这些值来缩放测试数据。


    第三部分:多级分类Softmax回归

    二进制分类意味着处理两个类。但是当我们在一个问题中有两个以上的类时,就称为多类分类。假设我们必须在一组图像中识别猫,狗和老虎。有多少种类?4 - 猫,狗,老虎,没有一个。如果你说三个那么再想一想!

    为了解决这些问题,我们使用softmax回归。在输出层,我们有单位等于类的总数(在我们的例子中是4),而不是单个单元。每个单元告诉我们图像落入不同类别的概率。由于它告诉概率,每个单位的值之和总是等于1。 Screenshot-from-2018-11-05-17-11-11.png

    这就是多类分类的神经网络的样子。因此,对于层L,输出将是:

    Z [L] = W [L] * a [L-1] + b [L]

    激活功能将是: Screenshot-from-2018-11-05-17-16-25.png

    让我们通过一个例子来理解这一点??悸亲詈笠桓鲆夭愕氖涑觯?/font> Screenshot-from-2018-11-05-17-18-42 (1).png

    然后我们使用上面给出的公式计算t: Screenshot-from-2018-11-05-17-20-58.png

    最后计算激活: Screenshot-from-2018-11-05-17-23-38.png

    这就是我们如何使用softmax激活函数解决多类分类问题。

    结束笔记

    恭喜!我们完成了深度学习专业的第二部分。写这篇文章是一个非常激烈的练习,它确实有助于在这个过程中巩固我自己的概念。总结一下我们在这里介绍的内容:

    • 我们现在知道如何使用各种技术来改善神经网络的性能
    • 我们首先看到了如何决定火车/开发/测试分割如何帮助我们确定哪种模型的性能最佳
    • 然后我们看到正规化如何帮助我们处理过度拟合
    • 我们介绍了如何设置优化问题
    • 我们还研究了各种优化算法,如动量,RMSprop,Adam,它们帮助我们更快地达到成本函数的全局最小值,从而缩短学习时间
    • 我们学习了如何在神经网络模型中调整各种超参数,以及缩放如何帮助我们实现这一目标
    • 最后,我们介绍了Batch规范化技术,我们可以使用它来进一步加快训练时间

    关键词:神经网络

    Screenshot-from-2018-11-05-17-18-42.png (7.02 KB)

    Screenshot-from-2018-11-05-17-18-42.png

    Screenshot-from-2018-11-02-16-41-03.png (9.97 KB)

    Screenshot-from-2018-11-02-16-41-03.png

    Screenshot-from-2018-11-02-16-25-51.png (55.98 KB)

    Screenshot-from-2018-11-02-16-25-51.png

    Screenshot-from-2018-11-02-16-23-14.png (46.62 KB)

    Screenshot-from-2018-11-02-16-23-14.png

    Screenshot-from-2018-10-31-18-18-30.png (38.24 KB)

    Screenshot-from-2018-10-31-18-18-30.png

    Screenshot-from-2018-10-31-15-34-20.png (17.86 KB)

    Screenshot-from-2018-10-31-15-34-20.png

    Screenshot-from-2018-10-31-14-05-37.png (104.64 KB)

    Screenshot-from-2018-10-31-14-05-37.png

    Screenshot-from-2018-10-31-13-18-04.png (6.45 KB)

    Screenshot-from-2018-10-31-13-18-04.png


    CDA数据分析师社区//www.oai8.com/cda.php)是国内领先的数据科学技术交流社区。
    社区主要面向数据分析、机器学习、深度学习、人工智能等前沿技术话题,包括但不限于R、Python、julia等数据科学语言,Caffe, TensorFlow, MXNet, Torch, Theano等深度学习框架。涵盖行业资讯、技术干货、大数据应用及CDA原创等
    沙发
    东方祥 发表于 2018-11-15 10:57:32 |只看作者
    跟着大佬Andrew Ng教授一起学习deeplearning
    藤椅
    东方祥 发表于 2018-11-15 10:59:14 |只看作者
    深度学习和神经网络入门指南(一)
    //www.oai8.com/forum.php?mod=viewthread&tid=6734706&from^^uid=6113910
    板凳
    东方祥 发表于 2018-11-15 10:59:30 |只看作者
    掌握深度学习技巧的感觉就像现在领导着超级大国一样。从分类图像和翻译语言到构建自动驾驶汽车,所有这些任务都是由计算机驱动而不是人工操作。深度学习已经渗透到多个多样化的行业中,并且几乎每周都会继续开辟新的领域。
    报纸
    东方祥 发表于 2018-11-15 11:00:45 |只看作者
    问题1:模型是否有偏差?
    解决方案:我们可以通过查看训练集错误来确定模型是否具有高偏差。高训练误差导致高偏差。在这种情况下,我们可以尝试更大的网络,更长时间的训练模型,或尝试不同的神经网络架构。

    地板
    东方祥 发表于 2018-11-15 11:01:12 |只看作者
    问题2:模型的方差是否很大?
    解决方案:如果开发设置错误很高,我们可以说模型的方差很大。为了减少方差,我们可以获得更多数据,使用正则化或尝试不同的神经网络架构。
    减少方差的最流行的技术之一称为正则化。让我们来看看这个概念以及它在第二部分中如何应用于神经网络。
    7
    amtw14 发表于 2018-11-15 11:18:25 |只看作者
    多谢分享
    8
    jeffyangsir 发表于 2018-11-15 13:47:46 |只看作者
    9
    小瓶九阳丹 发表于 2018-11-15 14:24:15 |只看作者
    10
    Crsky7 发表于 2018-11-15 16:20:02 |只看作者
    神经网络没有贝叶斯网络好用
    您需要登录后才可以回帖 登录 | 我要注册

    京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权?;ど?/a>   免责及隐私声明

    GMT+8, 2019-5-27 21:03
    江苏省十一选五走势
  • 候选企业:中远海运能源运输股份有限公司 2019-05-17
  • 人民网家居频道互动合作联系方式 2019-05-10
  • 【我是援藏教师】这一次,带上女儿去支教 2019-05-07
  • 第四届中华健康节启幕:引领全社会正确的健康养生理念 2019-05-07
  • 定陶战役:示弱于敌重点围歼的范例 2019-05-01
  • 大国担当!中国引领全球气候治理(在习近平新时代中国特色社会主义思想指引下——新时代新作为新篇章) 2019-04-29
  • 合肥市人大常委会副主任吴利林到皖维集团调研 2019-04-21
  • 党的十九大最重大的理论成就 2019-04-16
  • 大数据杀熟,别急着甩锅 2019-04-16
  • 沁园春 春色—野夫.blog的博客—强国博客—人民网 2019-04-10
  • 河北经济日报官方微信 2019-04-10
  • “日照”河山汉字摩崖石刻 2019-03-27
  • 不动产登记全国联网 房价会下跌吗? 2019-03-27
  • 外交部举行中外媒体吹风会:王毅介绍上合组织青岛峰会情况 2019-03-17
  • 对中国人民而言,腐败就是从天上掉下来的,不是从人民群众中滋生出来的。 2019-03-17
  • 重庆幸运农场技巧规律 中彩网3d字谜 二八杠技巧 体彩20选5每天开奖时间 双色球图表走势预测 时时彩缩水工具网页版 快乐时时彩计划软件手机版下载 七乐彩走势图表 大快乐时时彩全能王 重庆时时彩乐娱网址 快乐8稳赚技巧 福彩3d选号八卦图 3d开机号查询近10 德州扑克游戏 福彩网 开奖结果查询