关于 模型梯度下降过程中的 参数变化情况 的个人理解

对于模型,梯度下降计算的思考

一个batch_size的数据进入到模型中,模型计算出结果,获取整个batch_size的损失函数求和
\[ 损失函数为:J(θ_0,θ_1...,θ_n)=\frac{1}{2m}\sum^{m}_{j=0}(h_θ(x^{(j)}_0,x^{(j)}_1,...x^{(j)}_n−y_j)^2 \]
可以看作,损失函数其实是 函数J,这个函数的参数都是由 模型中训练的参数所决定的。

问题是,已经对参数做了初始化,返回的模型预测结果已经是个具体的数了,而不是个由参数构成的表达式了,该如何计算每个参数的梯度

自己的想法:

因为函数的模型的输出结果(函数表达式)可以写成:
\[ h_{θ}(x_1,x_2,...x_n)=θ_0+θ_1x_1+...+θ_nx_n \]
又因为上面写道的损失函数的计算公式\(J(θ_0,θ_1...,θ_n)=\frac{1}{2m}\sum^{m}_{j=0}(h_θ(x^{(j)}_0,x^{(j)}_1,...x^{(j)}_n−y_j)^2\)

可以知道损失函数其实由三部分不确定的部分构成:

  1. 具体传入的数据值 \(x_1,x_2...\)
  2. 模型表达之中的参数 \(θ_1,θ_2,...\)
  3. 数据的实际label \(y_j\)(总是知道的,相当于是常数)

由于我们初始化了参数值,也传入了数据,就能得到模型的输出结果 \(h_θ()\) 的具体的数),进而可以得到__具体的loss值__

当要对每个参数进行求导求梯度时:在一个batch_size中,把模型函数中的θ值保留下来,把参数x用每次带入的具体值替换掉,并使用求和操作,这样,上面的三个值也就只剩下参数θ是未知的,这样就构成了损失函数 \(J(θ_0,θ_1...,θ_n)\) ,此时损失函数相当于就是参数θ的表达式,这样对于每个参数θ求偏导就能够进行了,进而将初始化的参数θ值进行梯度下降

小结:

  1. 具体得到的 损失值是根据初始化参数θ + 训练数据x + 数据label 得到的,是个具体的值,能够反映当前的模型训练程度
  2. 在对参数进行梯度下降时:则是产生一个\(loss = J(θ_0,θ_1...,θ_n)\),能够对其中的每个参数求偏导,计算梯度。再结合其初始化的值,进行梯度下降工作

猜你喜欢

转载自www.cnblogs.com/jianga/p/12372708.html