文章目录
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的指数】
- 监督学习是如何工作的:
- 首先向学习算法提供训练集
- 学习算法输出一个函数h
- 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+θ1∗x
- 线性回归(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=1∑m(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=1∑m(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):m:hθ(x)代价函数(cost function)样本容量(size of training set)=θ0+θ1∗x
- 相关术语(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+θ1∗x - 模型参数(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=1∑m(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):
- 进一步简化:
- 假设函数(Hypothesis):
h θ ( x ) = θ 1 ∗ x h_θ(x) = θ_1*x hθ(x)=θ1∗x - 模型参数(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=1∑m(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)
- 假设函数(Hypothesis):
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)
- 思路:
- 以给定的
θ_0,θ_1
为初始值(通常将二者初始化为0) - 逐渐改变
θ_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−α∂θj∂J(θ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−α∂θ0∂J(θ0,θ1)temp0:=θ1−α∂θ1∂J(θ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−α∂θ0∂J(θ0,θ1)θ0:=temp0temp0:=θ1−α∂θ1∂J(θ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} :==α∂θj∂J(θ0,θ1)赋值(assignment)真假判定(truth assertion)学习率(learning rate)即下降的步子大小导数项(derivative term)
②进一步理解算法表达式
- 进一步理解该算法表达式:
使用简化后的公式(只有θ_1一个变量),从两个方面来讨论,无论初始关于θ_1的斜率为正或为负都会不断向最优解靠近。
简化后更新公式如下:
θ 1 : = θ 1 − α ∂ ∂ θ 1 J ( θ 1 ) θ_1:=θ_1-α\frac{\partial}{\partialθ_1}J(θ_1) θ1:=θ1−α∂θ1∂J(θ1)
③关于公式中α(学习效率)的取值说明
- 如果α过小,则需要很多步才能到达全局最优解,会导致梯度下降算法的速度减慢
- 如果α过大,则有可能越过全局最优解,导致无法收敛甚至发散(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} ∂θj∂J(θ0,θ1)=∂θj∂2m1i=1∑m(hθ(x(i))−y(i))2=∂θj∂2m1i=1∑m(θ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:∂θ0∂J(θ0,θ1)=m1i=1∑m(hθ(x(i))−y(i))=1:∂θ1∂J(θ0,θ1)=m1i=1∑m(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=1∑m(hθ(x(i))−y(i))=θ1−αm1i=1∑m(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),梯度下降适用于更大的数据集
总结
- 这次主要讲了线性回归模型、梯度下降算法以及二者相组合得到的线性回归的梯度下降算法,其中着重介绍了线性回归模型的代价函数中的平方差代价函数,用来表示线性回归模型的拟合程度,其数值越小,拟合的效果就越好。
- 梯度下降的思想是每次朝下降幅度最大的方向前进,直至找到局部最优解,其中梯度下降算法公式中的学习效率α要适中,且在梯度下降过程中不需要修改。
- 线性回归的梯度下降算法由于线性回归代价函数的特殊性,每次必然会找到且唯一的一个解,即全局最优解,该方法的每一步梯度下降需要遍历整个训练集的样本。