学习笔记2-浅谈在线形回归算法下的梯度算法

1. 假设模型和损失函数

本文章是基于多元线形回归函数,最终目的是求出各个变量 x i x_i xi对目标值的影响,得到权重矩阵 Θ \varTheta Θ

1.1假设模型

设一线形回归函数为:
h θ = Θ ⋅ X T = ∑ j = 0 n θ j x j h_{\theta}=\varTheta \cdot X^T=\sum_{j=0}^n{\theta _jx_j} hθ=ΘXT=j=0nθjxj
其中 X X X, Θ \varTheta Θ都是 1 × n 1\times n 1×n的向量, n n n表示变量空间 X X X的维度。

1.2思路

在训练集 D = { ( X ( i ) , y θ ( i ) ) } i = 1 m D=\left\{ \left( X^{\left( i \right)},y_{\theta}^{\left( i \right)} \right) \right\} _{i=1}^{m} D={(X(i),yθ(i))}i=1m中,随机选取(或者指定从某组训练集开始)一组训练值 ( X ( i ) , y θ ( i ) ) \left( X^{\left( i \right)},y_{\theta}^{\left( i \right)} \right) (X(i),yθ(i)),并初始化 Θ \varTheta Θ。之后通过不同的思想,带入相应的迭代关系更新 Θ \varTheta Θ,最终输出在损失函数取最小值时的 Θ \varTheta Θ

2.各类梯度下降法

2.1批量梯度下降法BGD

2.1.1损失函数

为使得整体的经验风险最小,在这我把该方程带入平方损失函数得能量函数:
J ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J\left( \theta \right) =\frac{1}{2m}\sum_{i=1}^m{\left( h_{\theta}\left( x^{\left( i \right)} \right) -y^{\left( i \right)} \right) ^2} J(θ)=2m1i=1m(hθ(x(i))y(i))2
这儿的 m m m表示样本集的大小,注意与1.1的方程n的区别,并且损失函数是只与 Θ \varTheta Θ有关的函数,( x ( i ) x^{\left( i \right)} x(i), y ( i ) y^{\left( i \right)} y(i))是已知数据。

2.1.2求梯度以及迭代关系

对损失函数求导,有:
∂ J ( θ ) ∂ θ j = 1 m ∑ i = 0 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) , j = 1 , 2 , . . . , n \frac{\partial J\left( \theta \right)}{\partial \theta _j}=\frac{1}{m}\sum_{i=0}^m{\left( h_{\theta}\left( x^{\left( i \right)} \right) -y^{\left( i \right)} \right) x_{j}^{\left( i \right)}},j=1,2,...,n θjJ(θ)=m1i=0m(hθ(x(i))y(i))xj(i),j=1,2,...,n

由此,得到不同的 θ j \theta _j θj迭代公式:
θ j : = θ j − α ∂ J ( θ ) ∂ θ j , j = 1 , 2 , . . . , n \theta _j:=\theta _j-\alpha \frac{\partial J\left( \theta \right)}{\partial \theta _j},j=1,2,...,n θj:=θjαθjJ(θ),j=1,2,...,n

' : = := :='在这表示赋值过程。
对于权重矩阵 Θ \varTheta Θ,有:
Θ : = Θ − ∇ J ( θ ) \varTheta :=\varTheta -\nabla J\left( \theta \right) Θ:=ΘJ(θ)
之后反复计算上面的过程,直至 ∇ J ( θ ) \nabla J\left( \theta \right) J(θ)无限接近0,在这可以设置一个阈值,当两次迭代结果只差小于这个阈值可认为达到精度要求,输出 Θ \varTheta Θ

优缺点分析:

  • 全局最优解,代码容易实现。
  • 当样本 m m m比较大时,计算量会变得非常大。

2.2随机梯度下降法SGD

2.2.1损失函数

对于本问题,损失函数不考虑使得每次迭代在整体都取得最满意的下降路径(即实际梯度),而是考虑得到在所选数据上的梯度。其关系如下
J ( θ ) = 1 2 ( h θ ( x ( i ) ) − y ( i ) ) 2 J(\theta)=\frac{1}{2}\left( h_{\theta}\left( x^{\left( i \right)} \right) -y^{\left( i \right)} \right) ^2 J(θ)=21(hθ(x(i))y(i))2

2.1.2求梯度以及迭代关系

求其梯度为:
∂ J ( θ ) ∂ θ j = ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) , j = 1 , 2 , . . . , n \frac{\partial J\left( \theta \right)}{\partial \theta _j}=\left( h_{\theta}\left( x^{\left( i \right)} \right) -y^{\left( i \right)} \right) x_{j}^{\left( i \right)},j=1,2,...,n θjJ(θ)=(hθ(x(i))y(i))xj(i),j=1,2,...,n
因此得到 Θ \varTheta Θ迭代算法:
θ j : = θ j − α ∂ J ( θ ) ∂ θ j = θ j − α ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) , j = 1 , 2 , . . . , n \theta _j:=\theta _j-\alpha \frac{\partial J\left( \theta \right)}{\partial \theta _j}=\theta _j-\alpha \left( h_{\theta}\left( x^{\left( i \right)} \right) -y^{\left( i \right)} \right) x_{j}^{\left( i \right)},j=1,2,...,n θj:=θjαθjJ(θ)=θjα(hθ(x(i))y(i))xj(i),j=1,2,...,n
即:
Θ : = Θ − ∇ J ( θ ) \varTheta :=\varTheta -\nabla J\left( \theta \right) Θ:=ΘJ(θ)
之后反复计算上面的过程,直至 ∇ J ( θ ) \nabla J\left( \theta \right) J(θ)无限接近0,在这可以设置一个阈值,当两次迭代结果只差小于这个阈值可认为达到精度要求,输出 Θ \varTheta Θ

SGD计算的速度会远大于BGD,尤其是训练集 D D D很大是时候。但是,容易陷于局部最小值,且精度是低于BGD的。。
因此,通过多次选取不同的初值,对比结果,会在一定程度上优化陷于局部最小值问题。

2.3随机梯度下降法MBGD

该算法是介于SGD和BGD的。在样本 D D D中通过选取 K K K个数据集,

2.3.1损失函数

对于本问题,损失函数不考虑使得每次迭代在整体都取得最满意的下降路径(即实际梯度),而是考虑得到在所选数据上的梯度。其关系如下
J ( θ ) = 1 2 K ∑ i = 1 K ( h θ ( x ( i ) ) − y ( i ) ) 2 J\left( \theta \right) =\frac{1}{2K}\sum_{i=1}^K{\left( h_{\theta}\left( x^{\left( i \right)} \right) -y^{\left( i \right)} \right) ^2} J(θ)=2K1i=1K(hθ(x(i))y(i))2

2.3.2求梯度以及迭代关系

求其梯度为:
∂ J ( θ ) ∂ θ j = 1 K ∑ i = 0 K ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) , j = 1 , 2 , . . . , n \frac{\partial J\left( \theta \right)}{\partial \theta _j}=\frac{1}{K}\sum_{i=0}^K{\left( h_{\theta}\left( x^{\left( i \right)} \right) -y^{\left( i \right)} \right) x_{j}^{\left( i \right)}},j=1,2,...,n θjJ(θ)=K1i=0K(hθ(x(i))y(i))xj(i),j=1,2,...,n

由此,得到不同的 θ j \theta _j θj迭代公式:
θ j : = θ j − α ∂ J ( θ ) ∂ θ j = θ j − α 1 K ∑ i = 0 K ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) , j = 1 , 2 , . . . , n \theta _j:=\theta _j-\alpha \frac{\partial J\left( \theta \right)}{\partial \theta _j}=\theta _j-\alpha \frac{1}{K}\sum_{i=0}^K{\left( h_{\theta}\left( x^{\left( i \right)} \right) -y^{\left( i \right)} \right) x_{j}^{\left( i \right)}},j=1,2,...,n θj:=θjαθjJ(θ)=θjαK1i=0K(hθ(x(i))y(i))xj(i),j=1,2,...,n

' : = := :='在这表示赋值过程。
对于权重矩阵 Θ \varTheta Θ,有:
Θ : = Θ − ∇ J ( θ ) \varTheta :=\varTheta -\nabla J\left( \theta \right) Θ:=ΘJ(θ)
同理,不断更新 Θ \varTheta Θ,从而使损失函数最小。

参考文献:

https://www.cnblogs.com/maybe2030/p/5089753.html#_label0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值