前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一文读懂深度学习训练过程

一文读懂深度学习训练过程

作者头像
PP鲁
发布2024-06-06 15:52:44
1390
发布2024-06-06 15:52:44
举报
文章被收录于专栏:皮皮鲁的AI星球皮皮鲁的AI星球

以下内容可以在我们的电子书网站上阅读:https://scale-py.godaai.org/ch-data-science/deep-learning.html 深度神经网络

深度学习是深度神经网络的简称。简单来说,神经网络是由很多个下面的公式组成,而深度神经网络是由很多个神经网络层堆叠而成的。

是输入, 是神经网络的参数,又被称为权重。神经网络的学习的过程,就是不断更新参数 的过程,这也是所谓的训练过程。训练好的模型可以用来推理,用来预测未知数据。

是激活函数(Activation Function)。 与 相乘仅是一个线性变换,就算很多个乘法叠加起来,仍然是线性变换,或者说没有激活函数的多层网络就退化成了一个单层线性模型。激活函数可以在神经网络中引入了非线性因素,使得多层神经网络理论上可以拟合任何输入数据到输出数据的模式。从模拟生物神经元的角度,激活函数是为了让有些神经元被激活,有些神经元被抑制。常见的激活函数有 Sigmoid 和 ReLU。ReLU 的公式为:。

前向传播

下图是一种最简单的神经网络:将 和 堆叠,前一层的输出 作为下一层的输入。这种网络又被称为前馈神经网络(Feedforward Neural Network),或者多层感知机(Multilayer Perceptron,MLP)。多层网络中,为了区分某一层,用方括号上标来表示,比如 是第一层的输出, 是第一层的参数。

神经网络的前向传播

上图是神经网络前向传播的过程:假设输入 是一个 3 维的向量;图中的每个圆圈为向量的一个元素(一个标量值),图中同时也演示了第一层的 的向量化计算方式,以及 的标量化计算方式,实际场景中往往需要使用现代处理器的向量化引擎完成计算。

反向传播

神经网络的训练过程就是不断更新各层的 和 。

首先以某种随机初始化方式,初始化各层的 和 。比如,初始化为正态分布的小数。

然后确定一个损失函数(Loss Function)。损失函数计算了神经网络预测值 与真实值 之间的差距,训练的目标就是让损失函数变小。比如,预测房价的案例,我们使用误差的平方(Squared Error)作为损失函数,某一个样本的损失函数为 。

然后计算损失函数对每层参数的导数。 关于第 层 和 的导数为 和 ,再按照下面的公式更新 和 。

公式中, 是学习率,即参数更新的速度,如果学习率太大则容易振荡,不容易收敛,太小则收敛速度又会过慢。

各层的导数又被称为梯度,参数沿着梯度方向下降,又被成为梯度下降法。计算各层的导数时,往往是从最后的损失函数开始,向前一层一层地求梯度,即先求最后第 层的梯度,得到第 层的梯度,结合链式法则,求第 层的梯度。下图展示了神经网络的反向传播过程。

神经网络的反向传播

超参数

神经网络训练过程中,有一些需要人为设定的参数,这些参数不能通过模型的反向传播算法来自动学习,而需要手动选择和调整。这些参数又被成为超参数(Hyperparameter),超参数的选择通常基于经验或反复试验。以下是一些超参数:

  • 学习率,即刚才提到的 ,控制着每次更新参数的步长。
  • 网络结构:模型的层数、每层的神经元数量、激活函数的选择等。不同的网络结构对于不同的任务可能有不同的性能表现。

实现细节

神经网络训练实现起来要关注以下三个步骤:

  • 一次前向传播
  • 一次反向传播
  • 一次更新模型权重

下图整理了神经网络的第 i 层进行训练时,以上三个步骤的输入和输出。

前向传播、反向传播和更新模型权重的输入和输出

前向传播

  • 输入:对于前向传播,输入有两部分:i-1 层输出 和第 i 层的模型权重 、
  • 输出:输出又被称为激活(Activation),是权重与输出相乘之后,经过激活函数的结果。

反向传播

  • 输入:对于反向传播,输入有三部分:i 层输出 ;第 i 层的模型权重 、;损失对 i 层输出的导数 。
  • 输出:根据链式法则,可以求出损失对 i 层模型权重的导数 、,也就是梯度。

更新模型权重

得到梯度后,需要沿着梯度下降的方向更新模型权重。如果是最简单的梯度下降法,优化器直接在模型原有权重基础上做减法,不需要额外保存状态,比如:

复杂一点的优化器,比如 Adam, 在梯度下降时引入了动量的概念。动量是梯度的指数移动平均,需要维护一个梯度的移动平均矩阵,这个矩阵就是优化器的状态。因此,优化器状态、原来的模型权重和梯度共同作为输入,可以得到更新后的模型权重。至此才能完成一轮模型的训练。

对于一个神经网络,其训练过程如下图所示。下图演示了 3 层神经网络,前向过程用 FWD 表示,反向过程用 BWD 表示。

前向传播(图中用 FWD 表示)、反向传播(图中用 BWD 表示)和更新模型权重

推理

模型训练是前向和反向传播,模型推理只需要前向传播,只不过输入层换成了需要预测的 。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-05-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 皮皮鲁的科技星球 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 以下内容可以在我们的电子书网站上阅读:https://scale-py.godaai.org/ch-data-science/deep-learning.html 深度神经网络
  • 前向传播
  • 反向传播
  • 超参数
  • 实现细节
    • 前向传播
      • 反向传播
        • 更新模型权重
        • 推理
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档