版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_24133491/article/details/84434010
- 我们假定
X为数据集,其中每一行
x(i)为一个样本,列数代表其特征数量;
-
Y为其真实值,每行
y(i)与每个输入样本对应;
-
Θ为每个特征的权重;
X=⎣⎢⎢⎢⎢⎡x0(0)x0(1)⋮x0(m)x1(0)x1(1)⋮x0(m)⋯⋯⋱⋯xn(0)xn(1)⋮x0(m)⎦⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎡x(0)x(1)⋮x(m)⎦⎥⎥⎥⎤
Y=⎣⎢⎢⎢⎡y(0)y(1)⋮y(m)⎦⎥⎥⎥⎤
Θ=⎣⎢⎢⎢⎡θ0θ1⋮θn⎦⎥⎥⎥⎤
如图所示为一个简单的神经网络,仅包含一个输入层和一个输出层,没有任何的隐藏层;对于其中的某一个样本
x(i)来说,其输出的预测值
y^(i)为:
y^(i)=θ0x0(i)+θ1x1(i)+...+θnxn(i)=x(i)θ(1)
则所有样本的预测值
Y^为:
Y^=⎣⎢⎢⎢⎡y^(0)y^(1)⋮y^(m)⎦⎥⎥⎥⎤
我们以预测值与真实值的平方误差为损失函数
L:
L=m1i=1∑m21(y^(i)−y(i))2=2m1i=1∑m(x(i)θ−y(i))2(2)
假设我们现在要计算
θj经梯度下降后的更新值,其中
α为学习率:
θj=θj−α∂θj∂L(3)
我们对损失函数,即公式(2)求
θj的微分:
∂θj∂L=m1i=1∑m(x(i)θ−y(i))∂θj∂(x(i)θ)=m1i=1∑m(x(i)θ−y(i))xj(i)(4)
我们记
e(i)=x(i)θ−y(i),用
E表示所有的
e(i)有:
E=⎣⎢⎢⎢⎡e(0)e(1)⋮e(m)⎦⎥⎥⎥⎤=⎣⎢⎢⎢⎡x(0)θ−y(0)x(1)θ−y(1)⋮x(m)θ−y(m)⎦⎥⎥⎥⎤=XΘ−Y
则公式(4)可表示为:
∂θj∂L=m1i=1∑me(i)xj(i)=m1(xj(0),xj(1),...,xj(m))E(5)
将公式(5)代入公式(3)中可以得到:
θj=θj−αm1(xj(0),xj(1),...,xj(m))E(6)
因此,我们可以得到所有权重的梯度更新为:
Θ=⎣⎢⎢⎢⎡θ0θ1⋮θn⎦⎥⎥⎥⎤=⎣⎢⎢⎢⎡θ0θ1⋮θn⎦⎥⎥⎥⎤−mα⎣⎢⎢⎢⎢⎡x0(0)x1(0)⋮xn(0)x0(1)x1(1)⋮xn(1)⋯⋯⋱⋯x0(m)x1(m)⋮xn(m)⎦⎥⎥⎥⎥⎤E=Θ−mαXTE=Θ−mαXT(XΘ−Y)