目录

1.拟合

2.如何度量误差值的大小

3.均方误差最小的地方就是最优解

4.梯度下降逼近最优解

5.一次完整训练过程

6.梯度


1.拟合

前文我们聊过了,AI本质上就是一个函数,通过调整函数中的参数,使得输出尽量趋近于真实数据。这整个过程称为拟合。一个拟合过程由无数个训练过程组成。

2.如何度量误差值的大小

前面已经说了,如何调整函数中的参数,这是个猜的过程,但是猜不能漫无目的猜,也需要想办法找到一个度量来看自己离最后的“真相”还有多远?也就是误差值大小的一个度量,这个度量就是均方误差。均方误差是取坐标轴上输入和实际函数的输出在各位置上的距离的平方的平均值:

之所以平方,是为了放大“大误差”在总体中的影响力。均方误差也叫损失函数

3.均方误差最小的地方就是最优解

不要被均方误差这个公式迷惑了,简化一下来看,它其实就是一个对y的二次函数,由于系数为正数,所以函数开口一定是向上的一个先减后增的函数。这个没有什么疑惑的。先增后减的函数,导数为0的这个点就是最小值的点。所以求最好效果的均方误差的过程,无非就是个一元二次方程求导等于0然后解方程的过程。当然实际场景中的函数不会是一个一元函数,会是个多元函数,多元函数也无所谓,多元函数无非就是去求偏导数等于0的地方,然后用偏导数等于0的地方组成方程组去求解即可。

我们以二元函数简单举例,无非函数图像变成了一个高纬度的立体几何图形罢了,一定存在一个顶点,导数为0,此处为函数最小值。

这个地方可能会有疑惑,均方误差求导是多少?均方误差求导是:

找最小误差这个过程还有一个专业名称叫线性回归。因为整个过程在几何上就是想找一条最佳直线来拟合数据点,所以形象的称为“线性回归”。

4.梯度下降逼近最优解

实际上大多数函数都没办法直接通过导数来找到极值点,只能通过梯度下降来逼近最优解:

导数一定是能求出来的,无非就是个复杂函数的求导,但是函数y在实际场景中是个极其复杂的函数,求导后得到的导数函数也很复杂,想通过求解导数=0这个方程来得到直接的结果,难度很大,多数时候都求不出来。

怎么办?那只能通过带入值去猜,通过不断带入w和b去看均方误差(mse)是变小还是变大,通过让mse逼近0,去逼近最终的结果。要去逼近这个函数的最值,我们就要决定方向,到底是去增大输入,还是去减少输入?我们该怎么知道该增大输入还是减少输入喃?很简单,用导数:

导数 方向
导数>0 说明函数是递增的,这时候就该去减小输入,沿着输入减小的方向去找
导数<0 说明函数是递减的,这时候就该去增大输入,沿着输入增大的方向去找

一元函数的增减性看偏导数,多元函数的增减性看梯度,梯度的方向就是函数增速最快的方向,梯度方向的夹角只要不超过180度,函数都是增加的。(至于为什么延梯度的方向函数增长是最快的,详情可以看本文第6章节的推导)

假设函数为L(w,b),那么梯度就是:

前面在数学基础,多元函数及其导数,梯度部分已经推导过梯度是指向函数增长最快的方向,函数减小最快的方向就是沿着梯度的反方向,让输入沿着梯度的反方向下上,被形象的称为梯度下降

沿着梯度的反方向去下山,也就是让输入沿着梯度的方向减小,但是减少多少喃?不知道!是个未知数η,输入要沿着着梯度的方向减小η,表达式无非就是:

η叫做学习率,用来控制下降的步长,具体是多少,这个是真的不知道,只能去一点点尝试,这也就是为什么训练会有那么多轮,就是去试这个玩意儿。

5.一次完整训练过程

梯度下降的过程还是要去对实际中复杂到变态的一个函数求偏导,也不好求。但是其实可以想到复合函数求导,一层一层的来求。其实就是沿着输出的方向向输入的方向反向求导,因为越靠近输出的神经元节点就是函数的越外层,复合函数求导本来就是从外层求到里层。对顺着输入产生输出的过程叫前向传播,反着求导求回来叫反向传播。一次正向传播+一次反向传播就是一次完整的训练。

6.梯度

把多元函数的所有偏导数组合在一起,做成一个向量,这个向量叫做——梯度。以f(x,y,z)为例,其梯度记作 ∇f 或 ∇f

梯度的两大核心性质:

  1. 方向性:梯度的方向代表了函数值增长最快的方向。

  2. 大小:梯度的模长(长度)代表了函数在这个方向上增长的最大速率

梯度的核心应用:在机器学习中,我们几乎总是在寻找一个函数(如损失函数)的最小值。梯度下降法就是沿着梯度的反方向(即函数下降最快的方向)一步步迭代,最终找到最小值点。

为什么说梯度的方向是函数增长最快的方向:

方向导数衡量的是多元函数在某个点沿特定方向的变化率。设函数 f(x)f(x) 在点X0处可微,且 u=(u1,u2,…,un)u=(u1,u2,…,u**n) 是一个单位向量(即 ∥u∥=1∥u∥=1),该单位向量就是在X0处和函数方向相同的单位向量,则方向导数为:

为什么是hu,而不直接是h,因为必须沿着u的方向变化,求的才是u方向上的方向导数。所以一定要乘以单位方向变量才行。

梯度是函数所有偏导数组成的向量,表示函数在点X0处的最大变化方向。梯度记为:

很简单一个推导过程就能推导出方向函数=方向单位向量和梯度的点积:

推导出方向函数=方向单位向量和梯度的点积一个展开式可得:

展开后就能发现,方向导数的大小取决于 cosθ。因为 ∥∇f∥∥∇f∥ 是固定的(在给定点),所以方向导数在cosθ 最大时。余弦函数的最大值是 1,这意味着:

  • 当 θ为0度时,u∇f 的方向完全相同,,这是方向导数的最大值。

  • 当 θ 增大时,cosθ 减小,因此方向导数也减小。

  • 当 θ=180度时,cosθ=−1,方向导数取最小值 −∥∇f∥,即函数下降最快的方向。

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐