1.定义:
找到一个函数function,通过输入特征X,输出一个数值Scaler。
2.应用举例:
- 股市预测
输入:过去十年股票的变动、新闻资讯等
输出:预测股市明天的平均值 - Pokemon(宝可梦)精灵攻击力预测
输入:进化前的CP值、物种、血量(HP)、重量(weight)、高度(height)
输出:进化后的CP值
3.模型步骤
- Step1:模型假设,选择模型框架(线性模型)
- Step2:模型评估,如何判断众多模型的好坏(损失函数)
- Step3:模型优化,如何筛选最优的模型(梯度下降)
实例:预测宝可梦进化后的Combat Power(CP)值
Step1:Model
假设线性模型:
y
=
b
+
∑
w
i
x
i
y=b+\sum_{}w_ix_i
y=b+∑wixi
Step2:Goodness of function
收集训练数据,如下图所示:
有了这些真实的数据,如何衡量模型的好坏呢?可以通过损失函数(Loss Function)来衡量模型的好坏。
方法:定义一个Loss Function L,它的Input:a function,它的output:how bad it is
则
L
(
f
)
=
∑
n
=
1
10
(
y
^
n
−
f
(
x
c
p
n
)
)
2
L(f)=\displaystyle\sum_{n=1}^{10}(\hat{y}^n-f(x_{cp}^n))^2
L(f)=n=1∑10(y^n−f(xcpn))2,将
f
(
x
)
=
y
=
b
+
w
⋅
x
f(x)=y=b+w \cdot x
f(x)=y=b+w⋅x代入
L
(
f
)
L(f)
L(f),得到
L
(
f
)
=
L
(
w
,
b
)
=
∑
n
=
1
10
(
y
^
n
−
(
b
+
w
⋅
x
c
p
n
)
)
2
L(f)=L(w,b)=\displaystyle\sum_{n=1}^{10}(\hat{y}^n-(b+w\cdot x_{cp}^n))^2
L(f)=L(w,b)=n=1∑10(y^n−(b+w⋅xcpn))2,代表真实值与预测值之间的估测误差。
Step3:Best Function
如何筛选最优的模型(即最优的参数w和b)?已知损失函数为L,需要找到一个最优的
f
∗
f^*
f∗,使得L最小。
可以采用梯度下降(Gradient Descent):
先假设一个简单的情况:
L
(
w
)
L(w)
L(w)只有一个参数w,即求解的问题:找到一个
w
∗
w^*
w∗使
L
(
w
)
L(w)
L(w)最小。即
w
∗
=
a
r
g
m
i
n
w
L
(
w
)
w^*=\displaystyle argmin_{w}L(w)
w∗=argminwL(w)
方法:1.随机选取一个初始点
w
0
w^0
w0
2.计算
d
L
d
w
∣
w
=
w
0
\frac{dL}{dw}|_{w=w^0}
dwdL∣w=w0,即当前的斜率
- 当>0时,减少
w
w
w,即左移
- 当<0时,增加
w
w
w,即右移
3.根据学习率
η
\eta
η移动
w
w
w,
w
1
=
w
0
−
η
d
L
d
w
∣
w
=
w
0
w^1=w^0 -{\eta}\frac{dL}{dw}|_{w=w^0}
w1=w0−ηdwdL∣w=w0
4.重复步骤2和3,直到找到最低点…
对于Linear Regression,无Local minima,梯度下降基本上都能找到最优点。
对于两个参数
w
w
w和
b
b
b,过程是类似的,需要做的是偏微分。求解的问题:
w
∗
,
b
∗
=
a
r
g
m
i
n
w
,
b
L
(
w
,
b
)
w^*,b^*=argmin_{w,b}L(w,b)
w∗,b∗=argminw,bL(w,b)
方法:1.随机选取初始点
w
0
,
b
0
w^0,b^0
w0,b0
2.计算
∂
L
∂
w
∣
w
=
w
0
,
b
=
b
0
\frac{\partial L}{\partial w}|_{w=w^0,b=b^0}
∂w∂L∣w=w0,b=b0,
∂
L
∂
b
∣
w
=
w
0
,
b
=
b
0
\frac{\partial L}{\partial b}|_{w=w^0,b=b^0}
∂b∂L∣w=w0,b=b0,则
w
1
=
w
0
−
η
∂
L
∂
w
∣
w
=
w
0
,
b
=
b
0
w^1=w^0 -{\eta}\frac{\partial L}{\partial w}|_{w=w^0,b=b^0}
w1=w0−η∂w∂L∣w=w0,b=b0,
b
1
=
b
0
−
η
∂
L
∂
b
∣
w
=
w
0
,
b
=
b
0
b^1=b^0-{\eta}\frac{\partial L}{\partial b}|_{w=w^0,b=b^0}
b1=b0−η∂b∂L∣w=w0,b=b0
3.计算
∂
L
∂
w
∣
w
=
w
1
,
b
=
b
1
\frac{\partial L}{\partial w}|_{w=w^1,b=b^1}
∂w∂L∣w=w1,b=b1,
∂
L
∂
b
∣
w
=
w
1
,
b
=
b
1
\frac{\partial L}{\partial b}|_{w=w^1,b=b^1}
∂b∂L∣w=w1,b=b1,则
w
2
=
w
1
−
η
∂
L
∂
w
∣
w
=
w
1
,
b
=
b
1
w^2=w^1 -{\eta}\frac{\partial L}{\partial w}|_{w=w^1,b=b^1}
w2=w1−η∂w∂L∣w=w1,b=b1,
b
2
=
b
1
−
η
∂
L
∂
b
∣
w
=
w
1
,
b
=
b
1
b^2=b^1-{\eta}\frac{\partial L}{\partial b}|_{w=w^1,b=b^1}
b2=b1−η∂b∂L∣w=w1,b=b1
4.反复迭代后得到最优解
整理成一个更简洁的公式
问题:当用Gradient Descent解决
L
(
θ
)
=
a
r
g
m
i
n
θ
L
(
θ
)
L(\theta)=argmin_{\theta}L(\theta)
L(θ)=argminθL(θ)时,通过不断更新参数使得
L
(
θ
0
)
>
L
(
θ
1
)
>
L
(
θ
2
)
>
.
.
.
.
.
.
L(\theta^0)>L(\theta^1)>L(\theta^2)>......
L(θ0)>L(θ1)>L(θ2)>......求得最优解,一定正确吗?
不一定,原因是Gradient Descent存在的问题:1.Local Minima(当前最优点)2.Saddle Poient(微分为0但不是极值的点)3.very slow at plateau(很平的地方趋近与0)
w w w和 b b b偏微分的求法:由公式 L ( w , b ) = ∑ n = 1 10 ( y ^ n − ( b + w ⋅ x c p n ) ) 2 L(w,b)=\displaystyle\sum_{n=1}^{10}(\hat{y}^n-(b+w\cdot x_{cp}^n))^2 L(w,b)=n=1∑10(y^n−(b+w⋅xcpn))2求得 ∂ L ∂ w = ∑ n = 1 10 2 ( y ^ n − ( b + w ⋅ x c p n ) ) ( − x c p n ) \frac{\partial L}{\partial w}=\displaystyle\sum_{n=1}^{10}2(\hat{y}^n-(b+w\cdot x_{cp}^n))(-x_{cp}^n) ∂w∂L=n=1∑102(y^n−(b+w⋅xcpn))(−xcpn), ∂ L ∂ b = ∑ n = 1 10 2 ( y ^ n − ( b + w ⋅ x c p n ) ) ( − 1 ) \frac{\partial L}{\partial b}=\displaystyle\sum_{n=1}^{10}2(\hat{y}^n-(b+w\cdot x_{cp}^n))(-1) ∂b∂L=n=1∑102(y^n−(b+w⋅xcpn))(−1)
4.实例结果如下:
使用训练集(10组数据上图)和测试集(另外10组数据)的平均误差来验证训练好的模型的好坏。
1.最简单的线性模型
Model:
y
=
b
+
w
⋅
x
c
p
y=b+w\cdot x_{cp}
y=b+w⋅xcp
Best Function:
b
=
−
188.4
,
w
=
2.7
b=-188.4,w=2.7
b=−188.4,w=2.7
Average error:Training=
1
10
∑
n
=
1
10
e
n
\frac{1}{10}\displaystyle\sum_{n=1}^{10}e^n
101n=1∑10en=31.9 Testing=35.0
2.进一步优化模型
Model:
y
=
b
+
w
1
⋅
x
c
p
+
w
2
⋅
x
c
p
2
y=b+w_1\cdot x_{cp}+w_2\cdot x_{cp}^2
y=b+w1⋅xcp+w2⋅xcp2
Best Function:
b
=
−
10.3
,
w
1
=
1.0
,
w
2
=
2.7
∗
1
0
−
3
b=-10.3,w^1=1.0,w^2=2.7*10^{-3}
b=−10.3,w1=1.0,w2=2.7∗10−3
Average error:Training=
1
10
∑
n
=
1
10
e
n
\frac{1}{10}\displaystyle\sum_{n=1}^{10}e^n
101n=1∑10en=15.4 Testing=18.4 (better)
3.进一步优化模型
Model:
y
=
b
+
w
1
⋅
x
c
p
+
w
2
⋅
x
c
p
2
+
w
3
⋅
x
c
p
3
y=b+w_1\cdot x_{cp}+w_2\cdot x_{cp}^2+w_3\cdot x_{cp}^3
y=b+w1⋅xcp+w2⋅xcp2+w3⋅xcp3
Best Function:
b
=
6.4
,
w
1
=
0.66
,
w
2
=
4.3
∗
1
0
−
3
,
w
3
=
−
1.8
∗
1
0
−
6
b=6.4,w^1=0.66,w^2=4.3*10^{-3},w^3=-1.8*10^{-6}
b=6.4,w1=0.66,w2=4.3∗10−3,w3=−1.8∗10−6
Average error:Training=
1
10
∑
n
=
1
10
e
n
\frac{1}{10}\displaystyle\sum_{n=1}^{10}e^n
101n=1∑10en=15.4 Testing=18.1(even better)
4.更复杂的模型
Model:
y
=
b
+
w
1
⋅
x
c
p
+
w
2
⋅
x
c
p
2
+
w
3
⋅
x
c
p
3
+
w
4
⋅
x
c
p
4
y=b+w_1\cdot x_{cp}+w_2\cdot x_{cp}^2+w_3\cdot x_{cp}^3+w_4\cdot x_{cp}^4
y=b+w1⋅xcp+w2⋅xcp2+w3⋅xcp3+w4⋅xcp4
Average error:Training=
1
10
∑
n
=
1
10
e
n
\frac{1}{10}\displaystyle\sum_{n=1}^{10}e^n
101n=1∑10en=14.9 Testing=28.8 在测试集上的结果更差了(worse)
5.更复杂的模型
Model:
y
=
b
+
w
1
⋅
x
c
p
+
w
2
⋅
x
c
p
2
+
w
3
⋅
x
c
p
3
+
w
4
⋅
x
c
p
4
+
w
5
⋅
x
c
p
5
y=b+w_1\cdot x_{cp}+w_2\cdot x_{cp}^2+w_3\cdot x_{cp}^3+w_4\cdot x_{cp}^4+w_5\cdot x_{cp}^5
y=b+w1⋅xcp+w2⋅xcp2+w3⋅xcp3+w4⋅xcp4+w5⋅xcp5
Average error:Training=
1
10
∑
n
=
1
10
e
n
\frac{1}{10}\displaystyle\sum_{n=1}^{10}e^n
101n=1∑10en=12.8 Testing=232.1 (so bad)
在训练集上表现更为优秀的模型,为什么在测试集上反而变差了?原因是模型在训练集上过拟合。
越复杂的模型,训练集上error越来越低,但不一定在测试集上有better performance。因此要选择合适的模型。
5.步骤优化:
Step1优化:2个input的四个线性模型合并到一个线性模型中
x
s
x_s
xs代表物种:
改成Linear Function:
y
=
b
1
⋅
δ
(
x
s
=
P
)
+
w
1
⋅
δ
(
x
s
=
P
)
x
c
p
+
b
2
⋅
δ
(
x
s
=
W
)
+
w
2
⋅
δ
(
x
s
=
W
)
x
c
p
+
b
3
c
d
o
t
δ
(
x
s
=
C
)
+
w
3
⋅
δ
(
x
s
=
C
)
x
c
p
+
b
4
⋅
δ
(
x
s
=
E
)
+
w
4
⋅
δ
(
x
s
=
E
)
x
c
p
y=b_1\cdot {\delta}(x_s=P)+w_1\cdot {\delta}(x_s=P)x_{cp} +b_2\cdot {\delta}(x_s=W)+w_2\cdot {\delta}(x_s=W)x_{cp} +b_3cdot {\delta}(x_s=C)+w_3\cdot {\delta}(x_s=C)x_{cp} +b_4\cdot {\delta}(x_s=E)+w_4\cdot {\delta}(x_s=E)x_{cp}
y=b1⋅δ(xs=P)+w1⋅δ(xs=P)xcp+b2⋅δ(xs=W)+w2⋅δ(xs=W)xcp+b3cdotδ(xs=C)+w3⋅δ(xs=C)xcp+b4⋅δ(xs=E)+w4⋅δ(xs=E)xcp
其中
δ
(
x
s
=
P
)
=
{
1
x
s
=
P
0
其
它
\delta(x_s=P)= \begin{cases} 1 & x_s= P\\ 0& 其它 \end{cases}
δ(xs=P)={10xs=P其它
结果:Training=3.8,Testing=14.3
Step2优化:如果希望模型更强大表现更好(更多参数,更多input)
重新设计模型,加入血量,重量,高度等特征。
更多特征,更多input,数据量没有明显增加,仍旧导致过拟合。
Step3优化:加入正则化(Regularization)
更多特征,但是权重
w
w
w 可能会使某些特征权值过高,仍旧导致overfitting,所以加入正则化。
y
=
b
+
∑
w
i
x
i
y=b+\sum w_ix_i
y=b+∑wixi
损失函数:
L
=
∑
1
n
(
y
^
n
−
(
b
+
∑
w
i
x
i
)
)
2
+
λ
∑
(
w
i
)
2
L=\displaystyle\sum_{1}^n(\hat y^n-(b+\sum w_ix_i))^2+\lambda\sum(w_i)^2
L=1∑n(y^n−(b+∑wixi))2+λ∑(wi)2,后面一项即为正则化项。
w
w
w越小,表示function较平滑,喜欢平滑的function,但不能太平滑。
b
b
b的值接近于0,对曲线平滑没有影响。