吴恩达机器学习公开课学习笔记(一)章节23
公开课链接: https://study.163.com/course/courseLearn.htm?courseId=1004570029#/learn/video?lessonId=1049101127&courseId=1004570029
一些规范表达形式
训练集中样本数目:
m
m
m
变量:
X
X
X,自变量的第i个样本:
X
(
i
)
X^{(i)}
X(i)
目标:
Y
Y
Y,目标的第i个样本:
Y
(
i
)
Y^{(i)}
Y(i)
映射函数:
h
h
h,hypothesis,把
x
→
y
x\rightarrow y
x→y,表达形式:
h
θ
(
x
)
=
θ
0
+
θ
1
x
h_\theta(x)=\theta_0+\theta_1x
hθ(x)=θ0+θ1x(线性函数)
声明符号:
:
=
:=
:=
线性回归/单变量线性回归
映射函数:
h
θ
(
x
)
=
θ
0
+
θ
1
x
h_\theta(x)=\theta_0+\theta_1x
hθ(x)=θ0+θ1x
θ
0
和
θ
1
\theta_0和\theta_1
θ0和θ1为模型参数(parameters of model)
优化过程就是最小化函数:
min
θ
0
,
θ
1
1
2
m
∑
i
=
1
m
∣
h
θ
(
x
(
i
)
)
−
y
(
i
)
∣
2
\min_{\theta_0,\theta_1} \frac{1}{2m}\sum_{i=1}^m|h_\theta(x^{(i)})-y^{(i)}|^2
θ0,θ1min2m1i=1∑m∣hθ(x(i))−y(i)∣2 最小化误差平方和
系数
1
2
m
\frac{1}{2m}
2m1是为了让数值不那么大
为了让这个概念更明晰,所以定义了代价函数(cost function)
代价函数
J
(
θ
0
,
θ
1
)
J(\theta_0,\theta_1)
J(θ0,θ1):
J
(
θ
0
,
θ
1
)
=
1
2
m
∑
i
=
1
m
∣
h
θ
(
x
(
i
)
)
−
y
(
i
)
∣
2
J(\theta_0,\theta_1)=\frac{1}{2m}\sum_{i=1}^m|h_\theta(x^{(i)})-y^{(i)}|^2
J(θ0,θ1)=2m1i=1∑m∣hθ(x(i))−y(i)∣2
目标就是minimize cost function,代价函数也被称作平方误差函数(squared error function)
代价函数
Hypothesis:
h
θ
(
x
)
=
θ
0
+
θ
1
x
h_\theta(x)=\theta_0+\theta_1x
hθ(x)=θ0+θ1x
Parameters:
θ
0
和
θ
1
\theta_0和\theta_1
θ0和θ1
Cost function:
J
(
θ
0
,
θ
1
)
=
1
2
m
∑
i
=
1
m
∣
h
θ
(
x
(
i
)
)
−
y
(
i
)
∣
2
J(\theta_0,\theta_1)=\frac{1}{2m}\sum_{i=1}^m|h_\theta(x^{(i)})-y^{(i)}|^2
J(θ0,θ1)=2m1i=1∑m∣hθ(x(i))−y(i)∣2
Goal:
min
θ
0
,
θ
1
J
(
θ
0
,
θ
1
)
\min_{\theta_0,\theta_1}J(\theta_0,\theta_1)
θ0,θ1minJ(θ0,θ1)
每一个不同的参数对应着不同的Hypothesis function, 我们就可以算出对应的cost function
J
(
θ
0
,
θ
1
)
J(\theta_0,\theta_1)
J(θ0,θ1),
当只有一个参数时,画代价函数的图像可以直接画函数图像,
有两个参数时,可以画等曲面图。
或者等高线图
梯度下降算法
问题综述:
have some function
J
(
θ
0
,
θ
1
)
J(\theta_0,\theta_1)
J(θ0,θ1),want to
min
θ
0
,
θ
1
J
(
θ
0
,
θ
1
)
\min_{\theta_0,\theta_1}J(\theta_0,\theta_1)
minθ0,θ1J(θ0,θ1)
梯度下降得到的是局部最优点
梯度下降的数学表达方式
Gradient descent algorithm
repeat until convergence{
θ
j
:
=
θ
j
−
α
∂
∂
θ
j
J
(
θ
0
,
θ
1
)
\theta_j :=\theta_j-\alpha\frac{\partial}{\partial \theta_j}J(\theta_0,\theta_1)
θj:=θj−α∂θj∂J(θ0,θ1)(for j = 0和1)
}
correct(正确的思路):simultaneous update(需要同时更新)
t
e
m
p
0
:
=
θ
0
−
α
∂
∂
θ
j
J
(
θ
0
,
θ
1
)
temp0 :=\theta_0-\alpha\frac{\partial}{\partial \theta_j}J(\theta_0,\theta_1)
temp0:=θ0−α∂θj∂J(θ0,θ1)
t
e
m
p
1
:
=
θ
1
−
α
∂
∂
θ
j
J
(
θ
0
,
θ
1
)
temp1 :=\theta_1-\alpha\frac{\partial}{\partial \theta_j}J(\theta_0,\theta_1)
temp1:=θ1−α∂θj∂J(θ0,θ1)
θ
0
:
=
t
e
m
p
0
\theta_0 := temp0
θ0:=temp0
θ
1
:
=
t
e
m
p
1
\theta_1 := temp1
θ1:=temp1
α
\alpha
α叫做learning rate:学习速率,控制以多大的幅度更新J
incorrect(不正确的思路)
这种算法可能也能算出正确的结果,但是不是人们常说的梯度下降法。
t
e
m
p
0
:
=
θ
0
−
α
∂
∂
θ
j
J
(
θ
0
,
θ
1
)
temp0 :=\theta_0-\alpha\frac{\partial}{\partial \theta_j}J(\theta_0,\theta_1)
temp0:=θ0−α∂θj∂J(θ0,θ1)
θ
0
:
=
t
e
m
p
0
\theta_0 := temp0
θ0:=temp0
t
e
m
p
1
:
=
θ
1
−
α
∂
∂
θ
j
J
(
θ
0
,
θ
1
)
temp1 :=\theta_1-\alpha\frac{\partial}{\partial \theta_j}J(\theta_0,\theta_1)
temp1:=θ1−α∂θj∂J(θ0,θ1)
θ
1
:
=
t
e
m
p
1
\theta_1 := temp1
θ1:=temp1
求偏导数
α \alpha α的意义和大小:如果 α \alpha α太小,梯度下降的过程就会很慢,如果 α \alpha α太大,梯度可能可能不会收敛,因为会跳过最小值。
局部最优点
因为局部最优点的导数(derivative term)等于0,
α
\alpha
α不变也能收敛到局部最优点的原因,因为倒数越来越趋近于0,所以挪动会越来越小
线性回归的梯度下降
梯度下降算法:
repeat until convergence{
θ
j
:
=
θ
j
−
α
∂
∂
θ
j
J
(
θ
0
,
θ
1
)
\theta_j :=\theta_j-\alpha\frac{\partial}{\partial \theta_j}J(\theta_0,\theta_1)
θj:=θj−α∂θj∂J(θ0,θ1)(for j = 0和1)
}
线性回归模型:
h
θ
(
x
)
=
θ
0
+
θ
1
x
h_\theta(x)=\theta_0+\theta_1x
hθ(x)=θ0+θ1x
J
(
θ
0
,
θ
1
)
=
1
2
m
∑
i
=
1
m
∣
h
θ
(
x
(
i
)
)
−
y
(
i
)
∣
2
J(\theta_0,\theta_1)=\frac{1}{2m}\sum_{i=1}^m|h_\theta(x^{(i)})-y^{(i)}|^2
J(θ0,θ1)=2m1i=1∑m∣hθ(x(i))−y(i)∣2
求导:
∂
∂
θ
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
\frac{\partial}{\partial \theta_j}J(\theta_0,\theta_1) = \frac{\partial}{\partial \theta_j}\frac{1}{2m}\sum_{i=1}^m|h_\theta(x^{(i)})-y^{(i)}|^2\\=\frac{\partial}{\partial \theta_j}\frac{1}{2m}\sum_{i=1}^m(\theta_0+\theta_1x^{(i)}-y^{(i)})^2
∂θj∂J(θ0,θ1)=∂θj∂2m1i=1∑m∣hθ(x(i))−y(i)∣2=∂θj∂2m1i=1∑m(θ0+θ1x(i)−y(i))2
求出来的导数:
θ
0
,
j
=
0
:
∂
∂
θ
j
J
(
θ
0
,
θ
1
)
=
1
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
\theta_0,j=0:\frac{\partial}{\partial \theta_j}J(\theta_0,\theta_1)= \frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})
θ0,j=0:∂θj∂J(θ0,θ1)=m1i=1∑m(hθ(x(i))−y(i))
θ
1
,
j
=
1
:
∂
∂
θ
j
J
(
θ
0
,
θ
1
)
=
1
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
x
(
i
)
\theta_1,j=1:\frac{\partial}{\partial \theta_j}J(\theta_0,\theta_1)= \frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x^{(i)}
θ1,j=1:∂θj∂J(θ0,θ1)=m1i=1∑m(hθ(x(i))−y(i))x(i)
线性回归中的梯度下降算法
repeat until convergence{
θ
0
:
=
θ
0
−
α
1
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
\theta_0 :=\theta_0-\alpha \frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})
θ0:=θ0−αm1i=1∑m(hθ(x(i))−y(i))
θ
1
:
=
θ
1
−
α
1
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
x
(
i
)
\theta_1 :=\theta_1-\alpha \frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x^{(i)}
θ1:=θ1−αm1i=1∑m(hθ(x(i))−y(i))x(i)
}
凸函数
不太正规地解释凸函数是一个弓形函数,没有局部最优解,只有一个全局最优解。
Batch Gradient Descent
“Batch”:each step of gradient descent uses all training examples
矩阵与向量
矩阵向量定义
Matrix:rectangular array of numbers
Dimension of matrix: number of rows*number of columns,比如矩阵
A
∈
ℜ
4
×
2
A\in\Re^{4\times2}
A∈ℜ4×2
表示矩阵指定元素
A
i
j
:
i
t
h
r
o
w
,
j
t
h
c
o
l
u
m
n
A_{ij}:i^{th}row,j^{th}column
Aij:ithrow,jthcolumn
Vector: an nx1 matrix
用
y
i
=
i
t
h
y_i=i^{th}
yi=ith element
通常用小写字母 表示向量,大写字母表示矩阵。
加法和标量乘法
矩阵向量乘法
使用矩阵计算方程
矩阵乘法的应用
矩阵乘法性质
(1)不满足交换律
(2)满足结合律
Identity Matrix:用
I
(
或
者
)
I
n
×
n
I(或者)I_{n\times n}
I(或者)In×n表示。
逆和转置
怎么得到逆矩阵(inverse matrix)呢?
用工具
矩阵的转置