首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >线性回归、代价函数和梯度下降

线性回归、代价函数和梯度下降

作者头像
用户8871522
发布2022-03-31 14:37:43
发布2022-03-31 14:37:43
1.5K0
举报
文章被收录于专栏:jzc的blogjzc的blog

线性回归、代价函数和梯度下降法

线性回归预测函数:

h_{\theta}(x)=\theta^{T}x

逻辑回归预测函数:

h_{\theta}^{(x)}=\frac{1}{1+e^{-\theta^{T}x}}

线性回归损失函数:

J(\theta)=\frac{1}{2m}\sum_{i=1}^m(h(\theta^{(i)}-y^i))^2+\frac{\lambda}{2m}\sum_{j=1}^m\theta_j^2

逻辑回归损失函数:

如果直接使用线性回归的MSE会让逻辑回归的代价函数变成非凸函数,这样就会导致有非常多的局部最优值,导致梯度下降法失效。所以引入了交叉熵损失函数来替代线性回归的MSE(均方误差)

J(\theta)=-\frac{1}{2m}\sum_{i=1}^m(y^ilog{h_\theta(x^i)}+(1-y^i)log(1-h_\theta x^{(i)})^2+\frac{\lambda}{2m}\sum_{j=1}^m\theta_j^2

两者损失函数求导后,除了假设函数不一样,表示形式是一样的

损失函数中参数倍数变化并不会影响最优值的最终结果

1.线性回归

两个变量:y=wx+b

多个变量:假设函数(hypothesis):h_\theta(x)=\theta^Tx=\theta_0x_0+\theta_1x_1+\theta_2x_2+…+\theta_nx_n

1.1 代价函数(cost function)
  1. 求(预测值-真实值)差的平方的和,也就是SSE的最小值min\displaystyle\sum^{m}{i=1}(\hat{y}_i-y{i})^2
  2. 均方差MSE:J{(w,b)}=\frac{1}{2m}\displaystyle\sum^{m}{i=1}(\hat{y}i-y{i})^2,为了方便计算,系数\frac{1}{m}换成\frac{1}{2m}

根据x的不同系数w得损失曲线,根据最小的loss值得到对应系数w

1.2 梯度下降(迭代求最优值)

步长(学习率\alpha)决定了梯度下降的速度,梯度会下降到直至收敛convergence(也就是到局部最小值才停止),所以太大的步长会导致在坡底(局部最小值)震荡

初始化起点也能影响梯度下降的速度和得到的局部最小值(局部最小值可能有很多个,初始化下降起点(也就是w和b)会影响局部最小值)。一般情况下,设置初始化w, b = 0, 0

梯度下降公式:\theta_j=\theta_j-\alpha\frac{\partial{J(\theta_0,\theta_1)}}{\partial_{\theta_j}}\space\space\space(for j = 0 \space and \space j = 1)

1.2.1 参数梯度下降实现步骤/方法

正确的梯度更新应该是多个参数同步更新(先获取下降梯度再更新参数),否则会影响在其他参数的更新,最终影响结果

如果刚好初始化值为局部最小值,则代价函数J_\theta的值为0

梯度下降时,学习率\alpha不需要变更,因为在梯度下降的过程中,代价函数的梯度\partial_{J}会随着慢慢下降而减小,所以梯度下降的速度也会减缓

线性回归的代价函数求导后得到(二元梯度下降):

其中\theta_{0}为常数

MSE梯度下降公式:

多元梯度下降:

1.2.2 凸函数(convex function)与线性回归

凸函数没有局部最优,只有一个全局最优,像这种函数,只要使用线性回归总是能收敛到全局最优

1.2.3 批梯度下降法(Batch Gradient Descent)

考虑全局的一种方法,在线性回归中使用的MSE即均方差即是考虑了所有数据的一种BGD

1.2.4 特征缩放/归一化

==归一化可以加快梯度下降的速度,也就是更快地收敛==

1.2.4.1 均值归一化Mean Normalization

x=\frac{x-\mu}{x_{max}-x_{min}}

1.2.5 小技巧

如何能够快速判断梯度下降是否正在有效工作/收敛呢?

正确的学习率:

错误的学习率:

方法1:(推荐)运行过程中,根据迭代次数代价函数的值/导数(下降速度)来判断梯度是否有效下降/收敛,也就是上述绘制曲线,通过看曲线的方式

方法2:设定一个阈值,当代价函数变化值小于该阈值则停止训练。但是该方式的缺点是通常这个阈值不好选择

1.2.5.1 总结
  • \alpha学习率太小会导致梯度下降速度很慢
  • \alpha太大会导致梯度反向增长,震荡,甚至是收敛速度慢等

设置较小的学习率总能收敛,但是速度会偏慢,通过观察运行时的曲线选择合适的学习率

1.3 多项式回归和线性回归

在选择特征时,可能有多个角度:如在房价预测时,你可以通过房子的纵深和宽度来计算影响因子,也可以通过面积来直接计算;根据模型/数据实际的效果来选择最合适的即可。

多项式拟合:

有时候我们能使用线性拟合的方式来得到多项式拟合的效果,如

1.4 正规方程(直接求解最优值)Norm Equation

\theta=(X^{T}X)^{-1}X^{T}y该公式计算结果可以直接求得代价函数最小化的\theta,也就是算得其中一个参数系数的最优解

在使用了Norm Equation正规方程后,数据可以不用归一化处理,直接计算即可

1.4.1 正规方程在不可逆情况下的解决方法

在Octave/Matlab中使用pinv(伪逆)/inv可以计算得到矩阵的逆,矩阵在一定条件下是不可逆的(矩阵的值为0,也就是某些特征之间存在线性关系,说明部分特征是多余的;样本太少,特征太多,适当减少特征或者使用正则化),但是使用pinv仍然可以得到该矩阵的逆

1.5 梯度下降法VS正规方程

\

梯度下降法Gradient Desent

正规方程Norm Equation

缺点

1.需要设置学习率$\alpha$ 2.需要迭代升级

当参数比较大时,计算$\theta=(X^{T}X)^{-1}X^{T}y$的时间成本为$O(n^{3})$,但参数个数较小(10k以下?)时,速度会较梯度下降法快;对于一些复杂的学习算法,我们不得不使用梯度下降法来替代正规方程

优点

当参数非常大时依然能非常好地工作;在一些复杂算法中仍然适用,而正规方程只使用于特定的一些算法中,如线性回归等

不需要设置学习率$\alpha$;不需要迭代

自适应优化算法(如momentum-SGD、NAG、Adagrad、Adadelta、RMSprop)训练出来的结果通常都不如SGD,尽管这些自适应优化算法在训练时表现的看起来更好。 使用者应当慎重使用自适应优化算法。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-05-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.线性回归
    • 1.1 代价函数(cost function)
    • 1.2 梯度下降(迭代求最优值)
      • 1.2.1 参数梯度下降实现步骤/方法
      • 1.2.2 凸函数(convex function)与线性回归
      • 1.2.3 批梯度下降法(Batch Gradient Descent)
      • 1.2.4 特征缩放/归一化
      • 1.2.5 小技巧
    • 1.3 多项式回归和线性回归
    • 1.4 正规方程(直接求解最优值)Norm Equation
      • 1.4.1 正规方程在不可逆情况下的解决方法
    • 1.5 梯度下降法VS正规方程
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档