梯度下降

本文详细解析了梯度下降法的基本原理,介绍了如何利用该方法寻找最佳参数θ以最小化损失函数J(θ),并讨论了如何使用矩阵运算提高计算效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写在前面

x : input variables/features
y : output variables

我们通过在一堆训练样本中,通过算法,找出一个函数h,使每一个输入样本能够得到我们想要的输出y.

假设一个样本中具有n个特征,则记X=(x1x2xn),对于这n个特征,假设函数关系为h(x)=θ0+θ2x1+...+θnxn,写成矩阵可以表示为:

h(x)=i=0nθixi=ΘTX

但是建立的函数和实际的输出总是有差别的,我们把用J(θ)来表示:
J(θ)=12j=1n(hθ(x(j))y(j))

其中j表示样本的数量。

我们要做的

我们要通过一种算法使J(θ)达到最小。
把J想象成我们自己,此时我们站在一个山上,要到一个山谷去。我们环顾四周,想找到可以最快去到山谷的方向——很显然,如果我们每一步都像当前最陡的地方走,那么我们很可能最快到达山谷。

what is the direction that would take me downhill as quickly as possible?

假设我们只有一个样本,因为

J(θ)θi=θi[12(hθ(X)y)2]=212(hθ(X)y)θi(hθ(X)y)=(hθ(X)y)xi

我们可以很容易的计算出θi=θiα(hθ(x)y)xi.其中α为学习速率,可以理解为一个人下山时的步长。

当样本量足够多的时候,我们发现每计算一个参数值,就要对m个样本做一次累加,为了避免运算量,我们采用对每个样本进行运算,将运算后的值,再作为初始值,进行下一次运算,在第一次时的初始值由我们自己的指定.

就像是一个人站在山上往下走,如果按照上述的方法,人站在不同的地方就会产生不同的走法。这个最初的位置就像Θ初始值,初始值的选取对结果的影响很大。


用矩阵对它的表示


线性代数

θJ=Jθ0Jθn
当A为m*n的矩阵时:

Af(A)=fA11fAm1fA1nfAmn

当A为n*n时,则A的迹为A的对角线元素之和。
trAB=trBA

trABC=trCAB=trBCA

f(A)=trAB

所以 A=trAB=BT

XΘ=(X1)T)(X(m))T)Θ=hθ(X(1))hθ(X(m))

y=y(1)y(m)

XΘy=hθ(X(1))y(1)hθ(X(m))y(m)

所以mj=1(h(X(j))y)2=(XΘy)T(XΘy)
在这个是式子里乘以1/2,然后对θ求导,可以得到XTXΘXTy将这个式子的值令为0,可以求得
Θ=(XTX)1XTy

以上
ps:求偏导的符号是\partial,求导的符号是\nabla.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值