0.写在前面
研零开学前复习数学基础,偶然读到这本书感到醍醐灌顶。之前看过一些深入的课程并不能很好的理解故先将本书内容记录笔记方便随时复习基础数学知识。
这本书三四天就能读完,浅显易懂,十分推荐。博客大概会分四次把书中的第二、三、四、五章记完。本文也可以当作书中内容的提炼。
除了这本书之外也在看吴恩达的机器学习课程,或许也会加进去一些内容。至于代码会额外开帖子(本书第五章是代码内容,预计读完第五章结合吴恩达课程的openlab一起整理)(大概会更新的很慢 吧)
如果有朋友读完发现文中错误烦请评论区批评指正。
1.单变量一次函数回归
1.1 问题引入
- 问题:Web 广告和点击量的关系
- 前提:投入的广告费越多,广告的点击量就越高,进而带来访问数的增加。
- 图片描述:
- 任务:根据广告费预测点击量
1.2 模型定义
- 思想:观察图像后根据一次函数拟合图像
- 函数定义: f θ ( x ) = θ 0 + θ 1 x f_{\theta }(x)=\theta _{0}+\theta _{1}x fθ(x)=θ0+θ1x
- 机器学习目标:学习 θ 0 θ 1 \theta _{0} \theta _{1} θ0θ1的值成功构建能够拟合数据点的一次函数。
1.3 目标(成本)函数设置 最小二乘法
- θ 0 θ 1 \theta _{0} \theta _{1} θ0θ1学习思想:随机初始化,过程中带入公式和数据进行计算,目标是计算得出的 f θ ( x ) f_{\theta }(x) fθ(x)与真实值y的差距最小。
- 理想状况: y − f θ ( x ) = 0 y-f_{\theta }(x)=0 y−fθ(x)=0
- 当
θ
0
=
1
,
θ
1
=
2
\theta _{0}=1, \theta _{1}=2
θ0=1,θ1=2时的图像表示:
- 机器学习的目标函数----最小二乘法:
E ( θ ) = 1 2 ∑ i = 1 n ( y ( i ) − f θ ( x ( i ) ) ) 2 E(\theta)=\frac{1}{2} \sum_{i=1}^{n}(y^{(i)}-f_{\theta }(x^{(i)}))^{2} E(θ)=21i=1∑n(y(i)−fθ(x(i)))2
- 机器学习的目标----“最优化问题”:学习 f θ ( x ) f_{\theta }(x) fθ(x)中的 θ 0 和 θ 1 \theta _{0}和\theta _{1} θ0和θ1使得 E ( θ ) E(\theta) E(θ)最小。
- 最小二乘法定义:
原文链接:最小二乘法详解(知乎)
1.4 参数学习方法 梯度下降法
-
微分:微分用来计算变化的快慢程度。微分后的函数为导数。导数值为正原函数递增,导数值为负原函数递减。梯度方向为变化最快的方向(斜率最陡),梯度下降法也叫最速下降法。
-
举例说明:想要找到关于x的函数g(x)的最小值,初始化x的值后计算g’(x)的值确定x接下来的移动方向。
-
定义参数更新公式:
x : = x − η d d x g ( x ) x:= x-\eta \frac{d}{dx}g(x) x:=x−ηdxdg(x)
1.5 公式推导
- 1.3中定义了目标函数为
E ( θ ) = 1 2 ∑ i = 1 n ( y ( i ) − f θ ( x ( i ) ) ) 2 E(\theta)=\frac{1}{2} \sum_{i=1}^{n}(y^{(i)}-f_{\theta }(x^{(i)}))^{2} E(θ)=21i=1∑n(y(i)−fθ(x(i)))2 - 1.4中定义了参数变化方法
θ 0 : = θ 0 − η d E ( θ ) d θ 0 \theta_0:= \theta_0-\eta \frac{dE(\theta)}{d \theta_0} θ0:=θ0−ηdθ0dE(θ)
θ 1 : = θ 1 − η d E ( θ ) d θ 1 \theta_1:= \theta_1-\eta \frac{dE(\theta)}{d \theta_1} θ1:=θ1−ηdθ1dE(θ) - 下面对
θ
\theta
θ值的具体变换进行公式推导
E ( θ ) E(\theta) E(θ)是关于 θ \theta θ的复合函数,定义 u = E ( θ ) u=E(\theta) u=E(θ) v = f θ ( x ) v=f_\theta(x) v=fθ(x)
则根据复合函数求导法则
d u d θ = d u d v ⋅ d v d θ \frac{du}{d\theta} = \frac{du}{dv} \cdot \frac{dv}{d\theta} dθdu=dvdu⋅dθdv
d u d v = d d v 1 2 ∑ i = 1 n ( y ( i ) − v ( i ) ) 2 \frac{du}{dv} =\frac{d}{dv} \frac{1}{2} \sum_{i=1}^{n}(y^{(i)}-v^{(i)})^{2} dvdu=dvd21i=1∑n(y(i)−v(i))2
= 1 2 ∑ i = 1 n d d v ( y ( i ) − v ( i ) ) 2 = \frac{1}{2} \sum_{i=1}^{n}\frac{d}{dv} (y^{(i)}-v^{(i)})^{2} =21i=1∑ndvd(y(i)−v(i))2
= 1 2 ∑ i = 1 n d d v ( y ( i ) 2 − 2 y ( i ) v ( i ) + v ( i ) 2 ) = \frac{1}{2} \sum_{i=1}^{n}\frac{d}{dv} (y^{(i)^2}-2y^{(i)}v^{(i)}+v^{(i)^2}) =21i=1∑ndvd(y(i)2−2y(i)v(i)+v(i)2)
= 1 2 ∑ i = 1 n ( − 2 y ( i ) + 2 v ( i ) ) = \frac{1}{2} \sum_{i=1}^{n}(-2y^{(i)}+2v^{(i)}) =21i=1∑n(−2y(i)+2v(i))
= ∑ i = 1 n ( v ( i ) − y ( i ) ) = \sum_{i=1}^{n}(v^{(i)}-y^{(i)}) =i=1∑n(v(i)−y(i))
d v d θ 0 = d d θ 0 θ 0 + θ 1 x \frac{dv}{d\theta_0}= \frac{d}{d\theta_0}\theta_0+ \theta_1x dθ0dv=dθ0dθ0+θ1x
= 1 =1 =1
d v d θ 1 = d d θ 1 θ 1 + θ 1 x \frac{dv}{d\theta_1}= \frac{d}{d\theta_1}\theta_1+ \theta_1x dθ1dv=dθ1dθ1+θ1x
= x =x =x - 把结果组合起来并带入
θ
0
和
θ
1
\theta_0和\theta_1
θ0和θ1的更新公式中
θ 0 : = θ 0 − η d E ( θ ) d θ 0 \theta_0:= \theta_0-\eta \frac{dE(\theta)}{d \theta_0} θ0:=θ0−ηdθ0dE(θ)
= θ 0 − η d u d v ⋅ d v d θ 0 = \theta_0-\eta \frac{du}{dv} \cdot \frac{dv}{d \theta_0} =θ0−ηdvdu⋅dθ0dv
= θ 0 − η ∑ i = 1 n ( v ( i ) − y ( i ) ) ⋅ 1 = \theta_0-\eta \sum_{i=1}^{n}(v^{(i)}-y^{(i)}) \cdot 1 =θ0−ηi=1∑n(v(i)−y(i))⋅1
= θ 0 − η ∑ i = 1 n ( f θ ( x ( i ) ) − y ( i ) ) ⋅ 1 = \theta_0-\eta \sum_{i=1}^{n}(f_\theta(x^{(i)})-y^{(i)}) \cdot 1 =θ0−ηi=1∑n(fθ(x(i))−y(i))⋅1
==============================================================================================
θ
1
:
=
θ
1
−
η
d
E
(
θ
)
d
θ
1
\theta_1:= \theta_1-\eta \frac{dE(\theta)}{d \theta_1}
θ1:=θ1−ηdθ1dE(θ)
=
θ
1
−
η
d
u
d
v
⋅
d
v
d
θ
1
= \theta_1-\eta \frac{du}{dv} \cdot \frac{dv}{d \theta_1}
=θ1−ηdvdu⋅dθ1dv
=
θ
1
−
η
∑
i
=
1
n
(
v
(
i
)
−
y
(
i
)
)
⋅
x
(
i
)
= \theta_1-\eta \sum_{i=1}^{n}(v^{(i)}-y^{(i)}) \cdot x^{(i)}
=θ1−ηi=1∑n(v(i)−y(i))⋅x(i)
=
θ
1
−
η
∑
i
=
1
n
(
f
θ
(
x
(
i
)
)
−
y
(
i
)
)
⋅
x
(
i
)
= \theta_1-\eta \sum_{i=1}^{n}(f_\theta(x^{(i)})-y^{(i)}) \cdot x^{(i)}
=θ1−ηi=1∑n(fθ(x(i))−y(i))⋅x(i)
1.6 公式总结一览
- 函数定义: f θ ( x ) = θ 0 + θ 1 x f_{\theta }(x)=\theta _{0}+\theta _{1}x fθ(x)=θ0+θ1x
- 机器学习目标函数:
E ( θ ) = 1 2 ∑ i = 1 n ( y ( i ) − f θ ( x ( i ) ) ) 2 E(\theta)=\frac{1}{2} \sum_{i=1}^{n}(y^{(i)}-f_{\theta }(x^{(i)}))^{2} E(θ)=21i=1∑n(y(i)−fθ(x(i)))2 - 参数更新函数推导结果:
θ 0 = θ 0 − η ∑ i = 1 n ( f θ ( x ( i ) ) − y ( i ) ) ⋅ 1 \theta_0= \theta_0-\eta \sum_{i=1}^{n}(f_\theta(x^{(i)})-y^{(i)}) \cdot 1 θ0=θ0−ηi=1∑n(fθ(x(i))−y(i))⋅1 θ 1 = θ 1 − η ∑ i = 1 n ( f θ ( x ( i ) ) − y ( i ) ) ⋅ x ( i ) \theta_1= \theta_1-\eta \sum_{i=1}^{n}(f_\theta(x^{(i)})-y^{(i)}) \cdot x^{(i)} θ1=θ1−ηi=1∑n(fθ(x(i))−y(i))⋅x(i)
2.多项式回归
当第一步设置的用来拟合的函数为高次函数,可以将
f
θ
f_\theta
fθ表示成一般化的式子。
如果此时想定义一个二次函数
其他部分不变
参数更新函数就可以写成
3.多重回归(多变量一般化)
当影响目标值变化的变量为多个的时候,例如现在定义问题如下:
考虑广告版面的大小也对点击量会产生影响,设广告费为 x1、广告栏的宽为 x2、广告栏的高为 x3
则有
若有多个变量则可以写为
该式子可以用向量进行一般化表示:
f
(
x
)
=
θ
T
⋅
x
f(x) = \theta^{T}\cdot x
f(x)=θT⋅x
一般化对第j个
θ
\theta
θ的更新公式为
θ
j
=
θ
j
−
η
∑
i
=
1
n
(
f
θ
(
x
(
i
)
)
−
y
(
i
)
)
⋅
x
j
(
i
)
\theta_j= \theta_j-\eta \sum_{i=1}^{n}(f_\theta(x^{(i)})-y^{(i)}) \cdot x_j^{(i)}
θj=θj−ηi=1∑n(fθ(x(i))−y(i))⋅xj(i)
4.随机梯度下降(解决局部最优解问题)
4.1 随机梯度下降
一般化回归问题的参数更新公式带入了所有的训练数据进行求和,随机梯度下降的随机意为随机抽取数据。例如如果随机选择第k个训练数据对参数进行计算更新,那么公式会像这样:
θ
j
=
θ
j
−
η
(
f
θ
(
x
(
k
)
)
−
y
(
k
)
)
⋅
x
j
(
k
)
\theta_j= \theta_j-\eta(f_\theta(x^{(k)})-y^{(k)}) \cdot x_j^{(k)}
θj=θj−η(fθ(x(k))−y(k))⋅xj(k)
公式与原公式的区别在于去掉了求和的步骤,(x,y)训练数据为第k个。
通过对训练数据的随机选取可以解决局部最优解的问题。
(至于理由书中并没有细说,我暂时也解释不好,等看到了好的解释再回来补充)
4.2 小批量梯度下降 mini batch
另外也可以随机选取一个训练数据的子集K,那么单次参数更新公式就会像这样:
θ
j
=
θ
j
−
η
∑
k
ϵ
K
(
f
θ
(
x
(
k
)
)
−
y
(
k
)
)
⋅
x
j
(
k
)
\theta_j= \theta_j-\eta \sum_{k\epsilon K}(f_\theta(x^{(k)})-y^{(k)}) \cdot x_j^{(k)}
θj=θj−ηkϵK∑(fθ(x(k))−y(k))⋅xj(k)
5.思路总结
机器学习中回归问题的思想:
- 定模型,定参数
- 明确机器学习的目标函数
- 明确参数的变化方式
- 定义超参数进行学习
6. 其他(从吴恩达机器学习课程补充几点)
6.1 学习率调整
-
经验谈:从0.0001开始设置每次提高三倍观察损失函数曲线/设置阈值自动停止训练
(0.0001 0.0003 0.001 0.003 0.01 0.03…) -
关于损失函数曲线:
① 若学习率很小,损失曲线仍上升:代码bug,且极有可能参数更新的减号写成了加;
② 损失曲线时高时低,整体呈下降趋势: 学习率偏大,可适当调小;
③ 损失函数单调下降,但速度很慢:学习率偏小,可适当放大。
6.2 特征缩放
训练数据的不同变量的定义域可能相差很多,如果不做处理直接训练:
会导致的后果:
loss会反复横跳,且找导全局最低点的时间会变长。
解决方法(特征缩放方法):
① 除以最大值(方便快捷简单暴力)
② 均值归一化(μ是平均值)
处理完的数据在坐标中是分散在0上下左右的。
③Z-score 归一化(σ是标准差)
-1. 链接
- 本文应用的数学公式在线编辑网站: latex(需要梯子)
- pdf电子书是从: 一个b站ai方向学习路线视频 视频下方评论区获取的。
- 文中最小二乘法引用了知乎文章:最小二乘法详解(知乎)
- 参考的吴恩达老师机器学习视频课程:吴恩达机器学习2022练英文听力yyds