机器学习(二)代价函数和梯度下降


Log

2021.12.31弄完监督学习和无监督学习就过来了
2022.01.01早上起来接着弄。感觉一些专有词汇加上英文会比较好,顺便混个眼熟背一背,咱总不能在需要用的时候一个一个现翻译吧。[中英字幕]吴恩达机器学习系列课程


一、线性回归(Linear regression)

  • 训练集: 在监督学习里的数据集
  • 课程中将会用到的符号:
    • m = 训练样本的数量(Number of training examples)
    • x’s = 输入变量/输入特征(“input” variable / features)
    • y’s = 输出变量/目标变量(“output” variable / “target” variable)
    • (x, y) = 一个训练样本(one training example)
    • (x^(i), y^(i)) = 第i个训练样本(i-th training example)【注:i表示索引,表示第i行,不代表x或y的指数】
  • 监督学习是如何工作的:
    1. 首先向学习算法提供训练集
    2. 学习算法输出一个函数h
    3. h是引导x得到y的函数(a function that maps from x’s to y’s)
      h θ ( x ) = θ 0 + θ 1 ∗ x h_θ(x) = θ_0 + θ_1*x hθ(x)=θ0+θ1x
h_θ(x)
Estimated value
y
h
(hypothesis)
input variable
x
Training Set
Training Set
  • 线性回归(Linear regression): 预测y是关于x的线性函数。
  • 单变量线性回归(Univariate linear regression): 线性回归只有一个变量。
    在这里插入图片描述

二、代价函数(Cost function)

1.代价函数由来

  • 目标: 把最有可能的直线与数据相拟合(得到最适合的θ_0和θ_1的数值,使h(x)接近训练样例 (x,y)中的y,进一步可以用下面的公式来表示)
  • 目标函数(objective function): 找到最适合的θ_0和θ_1,使对于每一个样本的h(x)-y之和乘以1/2m达到最小,即找到使训练集中预测值和真实值的差的平方和的1/2m最小的θ_0和θ_1的值。
    m i n ( θ 0 , θ 1 ) [ 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 ] min_{(θ_0,θ_1)}[\frac{1}{2m}\sum_{i=1}^m (h_θ(x^{(i)}) - y^{(i)} ) ^2] min(θ0,θ1)[2m1i=1m(hθ(x(i))y(i))2]
    进一步改写成:
    J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 m i n ( θ 0 , θ 1 ) J ( θ 0 , θ 1 ) J(θ_0,θ_1)=\frac{1}{2m}\sum_{i=1}^m (h_θ(x^{(i)}) - y^{(i)} )^2 \\ \quad\\ min_{(θ_0,θ_1)}J(θ_0,θ_1) J(θ0,θ1)=2m1i=1m(hθ(x(i))y(i))2min(θ0,θ1)J(θ0,θ1)

式中:
J(θ 0 , θ 1 ) : 代 价 函 数 ( c o s t   f u n c t i o n ) m : 样 本 容 量 ( s i z e   o f   t r a i n i n g   s e t ) h θ (x) = θ 0 + θ 1 ∗ x \begin{aligned} \textbf{J(θ}_\textbf{0}\textbf{,}\textbf{θ}_\textbf{1}\textbf{)}:&代价函数(cost\ function) \\ \quad \\ \textbf{m}:&样本容量(size \ of\ training\ set) \\\quad\\\textbf{h}_\textbf{θ}\textbf{(x)} &= θ_0 + θ_1*x \end{aligned} J(θ0,θ1)mhθ(x)cost functionsize of training set=θ0+θ1x

  • 相关术语(technical term):
    θ i : 模 型 参 数 ( P a r a m e t e r s ) \textbf{θ}_\textbf{i}:模型参数(Parameters) θi:Parameters
  • 此处代价函数(Cost function) 也叫作平方误差函数(squared error function)平方误差代价函数(squared error cost function)。 除此之外还有不同的代价函数,但是平方误差代价函数是解决会回归问题最常用的手段,对于大多数线性回归问题是非常合理的。

2.代价函数小结

  • 平方误差函数:
    • 假设函数(Hypothesis):
      h θ ( x ) = θ 0 + θ 1 ∗ x h_θ(x) = θ_0 + θ_1*x hθ(x)=θ0+θ1x
    • 模型参数(Parameters):
      θ 0 , θ 1 θ_0 , θ_1 θ0,θ1
    • 代价函数(Cost function):
      J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(θ_0,θ_1)=\frac{1}{2m}\sum_{i=1}^m (h_θ(x^{(i)}) - y^{(i)} ) ^2 J(θ0,θ1)=2m1i=1m(hθ(x(i))y(i))2
    • 目标(Goal):
      m i n i m i z e ( θ 0 , θ 1 ) J ( θ 0 , θ 1 ) minimize_{(θ_0,θ_1)}J(θ_0,θ_1) minimize(θ0,θ1)J(θ0,θ1)
  • 进一步简化:
    • 假设函数(Hypothesis):
      h θ ( x ) = θ 1 ∗ x h_θ(x) = θ_1*x hθ(x)=θ1x
    • 模型参数(Parameters):
      θ 1 θ_1 θ1
    • 代价函数(Cost function):
      J ( θ 1 ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(θ_1)=\frac{1}{2m}\sum_{i=1}^m (h_θ(x^{(i)}) - y^{(i)} )^2 J(θ1)=2m1i=1m(hθ(x(i))y(i))2
    • 目标(Goal):
      m i n i m i z e ( θ 1 ) J ( θ 1 ) minimize_{(θ_1)}J( θ_1) minimize(θ1)J(θ1)

3.如何理解拟合效果

  • 对于只有一个参数的函数J,其图像为二维碗装形式,当有两个参数时则为碗装的三维曲线(也可以用二维的等高图像(contour plots/contour figures)来表示),越接近碗的底部,拟合的效果就越好。
    在这里插入图片描述
  • J函数的图像红点处对应的函数h的图像,可见该点的代价比较高,拟合的并不好。
    在这里插入图片描述
  • 第二次选择的未知相对于上一个更靠近“碗”的中心,因此拟合的曲线比上一个的效果要好得多。
    在这里插入图片描述
  • 最后一个选取的位置相当接近中心位置,因此拟合的效果是这三个中最好的。
    在这里插入图片描述

三、梯度下降(Gradient descent)

  • 不仅应用于线性回归,还应用于机器学习中的众多领域之中。
  • 随后将使用梯度下降法最小化其它函数,而不仅仅是最小化线性回归函数的代价函数J

1.目标与思路

  • 已知: J ( θ 0 , θ 1 ) J(θ_0,θ_1) J(θ0,θ1)
  • 求: m i n θ 0 , θ 1 J ( θ 0 , θ 1 ) min_{θ_0,θ_1}J(θ_0,θ_1) minθ0,θ1J(θ0,θ1)
  • 思路:
    1. 以给定的θ_0,θ_1为初始值(通常将二者初始化为0)
    2. 逐渐改变θ_0,θ_1的值,使J(θ_0,θ_1)变小,直到找到最小值(或局部最小)

2.工作实例

①举例理解梯度下降算法

在这里插入图片描述

  • 将上图比作一座山,你正站在一个位置(即θ_0,θ_1的初始值,一般为零,也可以是其他的),假设你正站在红色区域的山顶,梯度下降的思想就是,当你每走一步时,环顾四周,找到下山最快的方向并在这个方向上走出一步,不断重复以上步骤找到最佳位置再移动直到达到局部最优解(local optimum)
  • 除此之外,梯度算法还存在这样一个特点:不同的起始点可能会得到不同的局部最优解,如下图所示:
    在这里插入图片描述
  • 梯度下降算法(Gradient descent algorithm):
    r e p e a t   u n t i l   c o n v e r g e n c { θ j : = θ j − α ∂ ∂ θ j J ( θ 0 , θ 1 ) ( f o r   j = 0   a n d   j = 1 ) } \begin{aligned}repeat\ until\ convergenc\{\end{aligned}\qquad\qquad\qquad\qquad\qquad\qquad\qquad \\ θ_j:=θ_j-α\frac{\partial}{\partial θ_j}J(θ_0,θ_1)\qquad (for\ j=0\ and\ j=1) \\ \}\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad repeat until convergenc{θj:=θjαθjJ(θ0,θ1)(for j=0 and j=1)}
    C o r r e c t : S i m u l t a n e o u s   u p d a t e ( 同 时 更 新 ) t e m p 0 : = θ 0 − α ∂ ∂ θ 0 J ( θ 0 , θ 1 ) t e m p 0 : = θ 1 − α ∂ ∂ θ 1 J ( θ 0 , θ 1 ) θ 0 : = t e m p 0 θ 1 : = t e m p 1 Correct:Simultaneous \ update(同时更新)\qquad\qquad\qquad \\\quad\\ temp0:=θ_0-α\frac{\partial}{\partialθ_0}J(θ_0,θ_1) \\\quad \\temp0:=θ_1-α\frac{\partial}{\partialθ_1}J(θ_0,θ_1) \\\quad \\θ_0:=temp0\qquad\qquad\qquad\quad \\\quad \\θ_1:=temp1\qquad\qquad\qquad\quad Correct:Simultaneous update()temp0:=θ0αθ0J(θ0,θ1)temp0:=θ1αθ1J(θ0,θ1)θ0:=temp0θ1:=temp1
    I n c o r r e c t : ( 未 实 现 同 步 更 新 ) t e m p 0 : = θ 0 − α ∂ ∂ θ 0 J ( θ 0 , θ 1 ) θ 0 : = t e m p 0 t e m p 0 : = θ 1 − α ∂ ∂ θ 1 J ( θ 0 , θ 1 ) θ 1 : = t e m p 1 Incorrect:(未实现同步更新)\qquad\qquad\qquad\qquad\qquad\qquad \\ temp0:=θ_0-α\frac{\partial}{\partialθ_0}J(θ_0,θ_1) \\ θ_0:=temp0\qquad\qquad\qquad\quad \\ temp0:=θ_1-α\frac{\partial}{\partialθ_1}J(θ_0,θ_1) \\ θ_1:=temp1\qquad\qquad\qquad\quad Incorrect:()temp0:=θ0αθ0J(θ0,θ1)θ0:=temp0temp0:=θ1αθ1J(θ0,θ1)θ1:=temp1
    其中:
    : = 赋 值 ( a s s i g n m e n t ) = 真 假 判 定 ( t r u t h   a s s e r t i o n ) α 学 习 率 ( l e a r n i n g   r a t e ) 即 下 降 的 步 子 大 小 ∂ ∂ θ j J ( θ 0 , θ 1 ) 导 数 项 ( d e r i v a t i v e   t e r m ) \begin{aligned} :=\qquad\qquad&赋值(assignment) \\ =\qquad\qquad&真假判定(truth \ assertion) \\ α\qquad\qquad&学习率(learning \ rate)即下降的步子大小 \\ \frac{\partial}{\partialθ_j}J(θ_0,θ_1)\qquad\qquad&导数项(derivative \ term) \end{aligned} :==αθjJ(θ0,θ1)assignmenttruth assertionlearning ratederivative term

②进一步理解算法表达式

  • 进一步理解该算法表达式:
    使用简化后的公式(只有θ_1一个变量),从两个方面来讨论,无论初始关于θ_1的斜率为正或为负都会不断向最优解靠近。
    简化后更新公式如下:
    θ 1 : = θ 1 − α ∂ ∂ θ 1 J ( θ 1 ) θ_1:=θ_1-α\frac{\partial}{\partialθ_1}J(θ_1) θ1:=θ1αθ1J(θ1)在这里插入图片描述

③关于公式中α(学习效率)的取值说明

  1. 如果α过小,则需要很多步才能到达全局最优解,会导致梯度下降算法的速度减慢
  2. 如果α过大,则有可能越过全局最优解,导致无法收敛甚至发散(fail to converge or even diverge)
    在这里插入图片描述

④当θ_1已经位于局部最优解时会发生什么

  • 当θ_1已经位于极小值点时,该点的斜率为零,即函数J关于变量θ_1的导数为零,此时θ_1每次更新时都减去0,并不会改变参数的值,即停留在了局部最优解(local optima) 的位置上,而这也正是我们想要的。
    在这里插入图片描述
  • 同时这也解释了为什么即使学习速率α保持不变,梯度下降算法也可以收敛到局部最低点。当θ_1为正时,随着梯度下降的进行,导数项会逐渐变小,也就是说,θ_1更新的幅度会逐渐变小,因此就没有必要在θ_1更新的同时也减小学习速率α。
    在这里插入图片描述

四、线性回归的梯度下降算法

1.公式及算法推导

  • 将梯度下降和代价函数结合得到线性回归的算法,可以用于直线模型来拟合数据
  • 将梯度下降算法应用于代价函数中,关键在于导数项:
    ∂ ∂ θ j J ( θ 0 , θ 1 ) = ∂ ∂ θ j 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 = ∂ ∂ θ j 1 2 m ∑ i = 1 m ( θ 0 + θ 1 x ( i ) − y ( i ) ) 2 \begin{aligned}\frac{\partial}{\partial θ_j}J(θ_0,θ_1)&=\frac{\partial}{\partial θ_j}\frac{1}{2m}\sum_{i=1}^m (h_θ(x^{(i)}) - y^{(i)} )^2 \\&=\frac{\partial}{\partial θ_j}\frac{1}{2m}\sum_{i=1}^m (θ_0 + θ_1x^{(i)} - y^{(i)} )^2\end{aligned} θjJ(θ0,θ1)=θj2m1i=1m(hθ(x(i))y(i))2=θj2m1i=1m(θ0+θ1x(i)y(i))2
  • 随后我们需要知道当J为0和J为1时导数的情况(分别对应θ_0和θ_1)
    j = 0 : ∂ ∂ θ 0 J ( θ 0 , θ 1 ) = 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) j = 1 : ∂ ∂ θ 1 J ( θ 0 , θ 1 ) = 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) )   ⋅ x ( i ) \begin{aligned} j&=0:\frac{\partial}{\partial θ_0}J(θ_0,θ_1)=\frac{1}{m}\sum_{i=1}^m (h_θ(x^{(i)}) - y^{(i)} ) \\ j&=1:\frac{\partial}{\partial θ_1}J(θ_0,θ_1)=\frac{1}{m}\sum_{i=1}^m (h_θ(x^{(i)}) - y^{(i)} )\ ·x^{(i)} \end{aligned} jj=0:θ0J(θ0,θ1)=m1i=1m(hθ(x(i))y(i))=1:θ1J(θ0,θ1)=m1i=1m(hθ(x(i))y(i)) x(i)
  • 这里用到了微积分里的一些简单的知识,其实很好理解,简单说明一下,求偏导后平方和分母2m的2约掉了,关于θ_0求偏导后[除了去掉平方再乘2]后面实际上是乘了1,也就是说两种情况下得到的结果形式上是近似的。
  • 得到对应的梯度下降算法
    r e p e a t   u n t i l   c o n v e r g e n c θ 0 : = θ 0 − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) θ 1 : = θ 1 − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) )   ⋅ x ( i ) } repeat\ until\ convergenc\qquad\qquad\qquad\qquad\qquad\qquad\qquad \\ \quad\\ \begin{aligned} θ_0:&=θ_0-α\frac{1}{m}\sum_{i=1}^m (h_θ(x^{(i)}) - y^{(i)} ) \\ θ_1:&=θ_1-α\frac{1}{m}\sum_{i=1}^m (h_θ(x^{(i)}) - y^{(i)} )\ ·x^{(i)} \end{aligned} \\ \}\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad repeat until convergencθ0:θ1:=θ0αm1i=1m(hθ(x(i))y(i))=θ1αm1i=1m(hθ(x(i))y(i)) x(i)}
  • 值得注意的一点是,θ_0和θ_1要同时更新(update simultaneously)

2.工作实例

①线性回归的代价函数的特点

  • 与其他类别代价函数的梯度算法不同(如下图左,从表面下降,初始位置决定了最终不同的局部最优解 ),线性回归的代价函数总是一个弓状函数(bowl-shape function也可以说是碗状,如下图右),确切地说是凸函数(convex function),只有一个全局最优。
    在这里插入图片描述

②具象化展示线性回归代价函数的梯度下降过程

  • 随着梯度的下降,θ_0和θ_1在图像中对应的位置离局部最优解越来越近,左边的拟合函数效果也逐渐变好。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

3.Batch梯度下降(“Batch” Gradient Descent)

  • 以上的算法有时也被称为Batch梯度下降(“Bath” Gradient Descent) ,每一步梯度下降都遍历了整个训练集的样本,所以在梯度下降中当计算偏导数时,计算的总和在每一个单独的梯度下降,最终计算m个训练样本的总和。也有其他的算法在计算时只关注到一个小的子集,后面的课程中会学到。
  • 相比于正规方程组解法(equations methods),梯度下降适用于更大的数据集

总结

  • 这次主要讲了线性回归模型梯度下降算法以及二者相组合得到的线性回归的梯度下降算法,其中着重介绍了线性回归模型的代价函数中的平方差代价函数,用来表示线性回归模型的拟合程度,其数值越小,拟合的效果就越好。
  • 梯度下降的思想是每次朝下降幅度最大的方向前进,直至找到局部最优解,其中梯度下降算法公式中的学习效率α要适中,且在梯度下降过程中不需要修改。
  • 线性回归的梯度下降算法由于线性回归代价函数的特殊性,每次必然会找到且唯一的一个解,即全局最优解,该方法的每一步梯度下降需要遍历整个训练集的样本
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

竹清兰香

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值