吴恩达《cs229-机器学习》:1、梯度下降法与一元线性回归

1. 泰勒级数的一阶展开

  泰勒级数(Taylor series)用级数来表示一个函数,这些相加的项由函数在某一点的导数求得。泰勒级数是以于1715年发表了泰勒公式的英国数学家布鲁克·泰勒(Sir Brook Taylor)的名字来命名的,在近似计算中有重要作用。
【定义】 如果函数 f ( x ) f(x) f(x)在点 x = x 0 x=x_0 x=x0具有任意阶导数,则可以得到 f ( x ) f(x) f(x) x 0 x_0 x0点的泰勒级数为
f ( x ) = ∑ n = 0 ∞ f ( n ) ( x 0 ) n ! ( x − x 0 ) n = f ( x 0 ) + f ′ ( x 0 ) ( x − x 0 ) + f ′ ′ ( x 0 ) 2 ( x − x 0 ) 2 + ⋯ + f ( n ) ( x 0 ) n ! ( x − x 0 ) n + ⋯ \begin{aligned} f(x)&=\sum_{n=0}^{\infty}\frac{f^{(n)}(x_0)}{n!}(x-x_0)^n\\ &=f(x_0)+f'(x_0)(x-x_0)+\frac{f''(x_0)}{2}(x-x_0)^2+\cdots+\frac{f^{(n)}(x_0)}{n!}(x-x_0)^n+\cdots \end{aligned} f(x)=n=0n!f(n)(x0)(xx0)n=f(x0)+f(x0)(xx0)+2f(x0)(xx0)2++n!f(n)(x0)(xx0)n+显然,如果 x x x非常接近 x 0 x_0 x0,即 x − x 0 x-x_0 xx0很小时,我们可以用泰勒级数的一阶展开来近似表示 f ( x ) f(x) f(x),即
f ( x ) ≈ f ( x 0 ) + f ′ ( x 0 ) ( x − x 0 ) . f(x)\approx f(x_0)+f'(x_0)(x-x_0). f(x)f(x0)+f(x0)(xx0).

2. 梯度下降法

(1)问题描述

对于某函数: J ( θ 0 , θ 1 ) J(\theta_0,\theta_1) J(θ0,θ1)
希望: min ⁡ θ 0 , θ 1 J ( θ 0 , θ 1 ) \min \limits_{\theta_0,\theta_1}J(\theta_0,\theta_1) θ0,θ1minJ(θ0,θ1)
步骤:

  • 从某个 θ 0 , θ 1 \theta_0,\theta_1 θ0,θ1的初值开始(例如 θ 0 = 0 \theta_0=0 θ0=0 θ 1 = 0 \theta_1=0 θ1=0);
  • 持续改变 θ 0 , θ 1 \theta_0,\theta_1 θ0,θ1来减小 J ( θ 0 , θ 1 ) J(\theta_0,\theta_1) J(θ0,θ1),直到得到我们希望的最小值。

(2)梯度下降算法

重复直至收敛 { \{ {
θ j : = θ j − α ∂ ∂ θ j J ( θ 0 , θ 1 ) ( f o r   j = 0   a n d   j = 1 ) \theta_j:=\theta_j-\alpha\frac{\partial}{\partial \theta_j}J(\theta_0,\theta_1)\quad ({\rm for}\ j=0\ {\rm and}\ j=1) θj:=θjαθjJ(θ0,θ1)(for j=0 and j=1)
} \} }


正确的方法:同时更新
temp0 : = θ 0 − α ∂ ∂ θ j J ( θ 0 , θ 1 ) :=\theta_0-\alpha\frac{\partial}{\partial \theta_j}J(\theta_0,\theta_1) :=θ0αθjJ(θ0,θ1)
temp1 : = θ 1 − α ∂ ∂ θ j J ( θ 0 , θ 1 ) :=\theta_1-\alpha\frac{\partial}{\partial \theta_j}J(\theta_0,\theta_1) :=θ1αθjJ(θ0,θ1)
θ 0 : = \theta_0:= θ0:=temp0
θ 1 : = \theta_1:= θ1:=temp1


不正确的方法:分别更新
temp0 : = θ 0 − α ∂ ∂ θ j J ( θ 0 , θ 1 ) :=\theta_0-\alpha\frac{\partial}{\partial \theta_j}J(\theta_0,\theta_1) :=θ0αθjJ(θ0,θ1)
θ 0 : = \theta_0:= θ0:=temp0
temp1 : = θ 1 − α ∂ ∂ θ j J ( θ 0 , θ 1 ) :=\theta_1-\alpha\frac{\partial}{\partial \theta_j}J(\theta_0,\theta_1) :=θ1αθjJ(θ0,θ1)
θ 1 : = \theta_1:= θ1:=temp1


  • α \alpha α:学习速率,更新参数的幅度大小

3. 梯度下降线性回归

  对于一元线性回归问题,有

h θ ( x ) = θ 0 + θ 1 x J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m [ h θ ( x ( i ) ) − y ( i ) ] 2 \begin{aligned} h_{\theta}(x)&=\theta_0+\theta_1x\\ J(\theta_0,\theta_1)&=\frac{1}{2m}\sum_{i=1}^m[h_{\theta}(x^{(i)})-y^{(i)}]^2 \end{aligned} hθ(x)J(θ0,θ1)=θ0+θ1x=2m1i=1m[hθ(x(i))y(i)]2


对代价函数求偏导,可以得到
∂ ∂ θ 0 J ( θ 0 , θ 1 ) = 1 m ∑ i = 1 m [ h θ ( x ( i ) ) − y ( i ) ] ∂ ∂ θ 1 J ( θ 0 , θ 1 ) = 1 m ∑ i = 1 m [ h θ ( x ( i ) ) − y ( i ) ] x ( i ) \begin{aligned} \frac{\partial}{\partial \theta_0}J(\theta_0,\theta_1)&=\frac{1}{m}\sum_{i=1}^m[h_{\theta}(x^{(i)})-y^{(i)}]\\ \frac{\partial}{\partial \theta_1}J(\theta_0,\theta_1)&=\frac{1}{m}\sum_{i=1}^m[h_{\theta}(x^{(i)})-y^{(i)}]x^{(i)}\end{aligned} θ0J(θ0,θ1)θ1J(θ0,θ1)=m1i=1m[hθ(x(i))y(i)]=m1i=1m[hθ(x(i))y(i)]x(i)

猜你喜欢

转载自blog.csdn.net/tanghonghanhaoli/article/details/113534262