机器学习模型训练中,模型和梯度是什么?

做AI相关的工作,最离不开的就模型训练。本文主要简单介绍一下训练过程当中涉及的几种术语的本质,了解了这些,能更清晰地理解整个训练过程。

一、模型

        我们都知道,一个模型的训练过程包括:输入->模型->输出。其实模型的本质就是一个映射关系,得到特定的输入,模型能够准确地得到与该输入正确对应的结果。例如将一张猫的图片输入分类模型中,机器可以自行将该图片分类为猫。

        而模型训练过程就是找到这样一个模型的过程。如何找到呢?

        这就涉及到模型的本质,模型其实是又层层节点组合而成,输入数据则是已经被量化的特征值。以下用两层网络举例。

        层1为输入层,不作任何处理,图中输入数据为1.0和0.2,图中节点1.1 -> 节点2.1的权重为0.9,1.2 -> 2.1的权重为0.3,聚合结果为1*0.9 + 0.5*0.3 = 1.05。同理可算得节点2.2的值。实际使用中会在最后引入激活函数引入非线性因素来提高模型泛化性,这里暂时不讨论。

        图中就是一个训练中最简单的前向传播过程了,其中各链路上的权重实际上就是模型了,我们要做的就是不断更新找到最合适的链路权重,也就是模型参数。

        而更加巧妙的是,矩阵乘法正好可以模拟这个过程。

        等式左端左阵表示权重矩阵,右阵是输入矩阵,等式右端则表示输出数据。因此,模型实际上就可以表示为tensor类型,即张量类型,实质矩阵,表现为多维数组。这样一来,就能大大简化运算过程。

        以此类推,后一层将前一层的输出作为输入,即可推广到多层多节点的情况。

二、梯度

        前向传播过后,我们要做的就是利用输出数据来调整模型参数。这个过程就叫反向传播。首先我们需要计算得到本次前向传播的损失值:即模型输出与实际结果(训练数据的标签)之间的差距。这个差距的计算方法多种多样,不同方法有不同优势和劣势,这里不展开,但得到的结果跟输入数据同样都是一个矢量,计算损失值的表达式即为损失函数。

        在反向传播的过程中,利用各链路的权重分配损失值。这里很容易理解:因为权重大的链路在前向传播时对输出影响更大,那就意味着需要调整时分配到的权重应该更大。更巧妙的是,这个过程同样可以用矩阵乘法完成,而且只需要将之前的权重矩阵做转置即可参与运算。

 

         将(反向传播中方向上的)前一层的损失值输出作为后一层的损失值输入,以此类推即可得到各层各节点上的损失值。梯度就是在此基础上计算得到。

        更新模型的过程就是:找到损失函数下降最快的方向,即梯度;乘以设置的学习步长α,用旧模型加上(或减去)这个值,得到更新之后的模型。 梯度下降的方向通过求偏导计算得出,用损失函数相对于权重(模型参数)的偏导数表示。所以,梯度实际上是一个表示方向的向量。其形状与损失函数相同,梯度中每个位置的元素表示损失函数对应位置元素相对于权重的变化率。

  • 当梯度是正的时候,说明在当前参数值下,沿着该参数的正方向移动(增加)会增加损失函数的值。
  • 当梯度是负的时候,说明在当前参数值下,沿着该参数的负方向移动(减少)会增加损失函数的值。

因此,若模型更新方向取梯度的反方向,就是损失函数相对于权重下降最快的方向,从而使得模型的损失函数更快地下降,即模型的性能更快地提升。

 

 

 

 

  • 18
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值