| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> 李宏毅 Machine Learning 2020 Spring - Regression -> 正文阅读 |
|
[Java知识库]李宏毅 Machine Learning 2020 Spring - Regression |
李宏毅 Machine Learning 2020 Spring - Regression李宏毅 Machine Learning 2020 Spring - Introduction \qquad 我们今天要讲的是 R e g r e s s i o n Regression Regression,等一下我会举一个例子来讲 R e g r e s s i o n Regression Regression 是怎么做的。顺便引出一些 M a c h i n e ? L e a r n i n g Machine\ Learning Machine?Learning 里面常见的重要概念。 1. Regression 可以做什么?
\qquad
除了我们作业里面要大家做的预测 PM2.5 这个任务以外,还有很多其他非常有用的
t
a
s
k
task
task。 2. 引入问题:预测宝可梦的 CP 值
3. 解决问题:预测宝可梦的 CP 值\qquad 我们第一堂课就讲过说,做 m a c h i n e ? l e a r n i n g machine\ learning machine?learning 就是三个步骤:第一个步骤是找一个 m o d e l model model,也就是 f u n c t i o n ? s e t function\ set function?set;第二个步骤是定义 f u n c t i o n ? s e t function\ set function?set 里面某一个 f u n c t i o n function function,然后 e v a l u a t e evaluate evaluate 它的好坏;第三个步骤就是找一个最好的 f u n c t i o n function function。 3.1 第一步:model
\qquad
首先,我们从第一个步骤开始,我们要找一个
f
u
n
c
t
i
o
n
?
s
e
t
function\ set
function?set,这个
f
u
n
c
t
i
o
n
?
s
e
t
function\ set
function?set 就是所谓的
m
o
d
e
l
model
model。在这个
t
a
s
k
task
task 里面,我们的
f
u
n
c
t
i
o
n
?
s
e
t
function\ set
function?set 应该长什么样子呢? 3.2 第二步:Goodness of Function1. 收集 training data
\qquad
接下来我们要收集
t
r
a
i
n
i
n
g
?
d
a
t
a
training\ data
training?data,才能够找这个
f
u
n
c
t
i
o
n
function
function。这是一个
s
u
p
e
r
v
i
s
e
d
?
l
e
a
r
n
i
n
g
supervised\ learning
supervised?learning 的
t
a
s
k
task
task,所以我们收集的是
f
u
n
c
t
i
o
n
function
function 的
i
n
p
u
t
input
input 和
f
u
n
c
t
i
o
n
function
function 的
o
u
t
p
u
t
output
output。因为是
r
e
g
r
e
s
s
i
o
n
regression
regression 的
t
a
s
k
task
task,所以
f
u
n
c
t
i
o
n
function
function 的
o
u
t
p
u
t
output
output 是一个数值。 2. 评估 function(1)Loss function 损失函数
\qquad
有了这些
t
r
a
i
n
i
n
g
?
d
a
t
a
training\ data
training?data 以后,我们就可以定义一个
f
u
n
c
t
i
o
n
function
function 的好坏。如何定义一个
f
u
n
c
t
i
o
n
function
function 的好坏呢?我们需要定义另外一个
f
u
n
c
t
i
o
n
function
function,叫做
L
o
s
s
?
f
u
n
c
t
i
o
n
Loss\ function
Loss?function,写成
L
L
L。
L
o
s
s
?
f
u
n
c
t
i
o
n
Loss\ function
Loss?function 的
i
n
p
u
t
input
input 是一个很特别的
f
u
n
c
t
i
o
n
function
function,
L
o
s
s
?
f
u
n
c
t
i
o
n
Loss\ function
Loss?function 是一个
f
u
n
c
t
i
o
n
function
function 的
f
u
n
c
t
i
o
n
function
function。
L
o
s
s
?
f
u
n
c
t
i
o
n
Loss\ function
Loss?function 的
o
u
t
p
u
t
output
output 是一个数值告诉我们说现在
i
n
p
u
t
input
input 的这个
f
u
n
c
t
i
o
n
function
function他有多不好。可以写成:
L
(
f
)
=
L
(
w
,
b
)
L(f)=L(w,b)
L(f)=L(w,b),可以说
L
o
s
s
?
f
u
n
c
t
i
o
n
Loss\ function
Loss?function 是在衡量一组参数的好坏。 (2)可视化损失函数
\qquad
再来我们有了这个
L
o
s
s
?
f
u
n
c
t
i
o
n
Loss\ function
Loss?function 以后,我们可以将
L
o
s
s
?
f
u
n
c
t
i
o
n
Loss\ function
Loss?function 的形状画出来,使用
L
(
w
,
b
)
L(w,b)
L(w,b) 对
w
w
w 和
b
b
b 作图,在图上的每一个点就代表一组
w
w
w 和
b
b
b,也就是某一个
f
u
n
c
t
i
o
n
function
function。颜色代表了
f
u
n
c
t
i
o
n
function
function 有多不好,颜色越红代表
l
o
s
s
loss
loss 越大,
f
u
n
c
t
i
o
n
function
function 越不好;颜色越蓝代表
l
o
s
s
loss
loss 越小,
f
u
n
c
t
i
o
n
function
function 越好。比如:图中用红色箭头标注的点就代表了
b
=
?
180
,
w
=
?
2
b=-180, w=-2
b=?180,w=?2 对应的
f
u
n
c
t
i
o
n
function
function,即
y
=
?
180
?
2
?
x
c
p
y=?180 ? 2\cdot x_{cp}
y=?180?2?xcp?,该点所在的颜色偏向于红色区域,因此这个
f
u
n
c
t
i
o
n
function
function 的
l
o
s
s
loss
loss 比较大,表现并不好。 3.3 第三步:最优 function
\qquad
我们已经定好了我们的
L
o
s
s
?
f
u
n
c
t
i
o
n
Loss\ function
Loss?function,可以衡量我们的
m
o
d
e
l
model
model 里面每一个
f
u
n
c
t
i
o
n
function
function 的好坏。接下来我们要做的事情就是从这个
f
u
n
c
t
i
o
n
?
s
e
t
function\ set
function?set 里面挑选一个最好的
f
u
n
c
t
i
o
n
function
function。写成
f
o
r
m
u
l
a
t
i
o
n
/
e
q
u
a
t
i
o
n
formulation/equation
formulation/equation:
f
?
=
a
r
g
m
i
n
f
L
(
f
)
\displaystyle f^*=arg\underset {f}{min}L(f)
f?=argfmin?L(f) 或
w
?
,
b
?
=
a
r
g
m
i
n
w
,
b
L
(
w
,
b
)
=
a
r
g
m
i
n
w
,
b
∑
n
=
1
10
(
y
^
n
?
(
b
+
w
?
x
c
p
n
)
)
2
\displaystyle w^*,b^*=arg\underset {w,b}{min}L(w,b)=arg\underset {w,b}{min}\sum^{10}_{n=1}{(\hat{y}^n-(b+w\cdot x_{cp}^n))^2}
w?,b?=argw,bmin?L(w,b)=argw,bmin?n=1∑10?(y^?n?(b+w?xcpn?))2。利用线性代数可以解得这个
f
o
r
m
u
l
a
t
i
o
n
/
e
q
u
a
t
i
o
n
formulation/equation
formulation/equation 的
c
l
o
s
e
d
?
f
o
r
m
?
s
o
l
u
t
i
o
n
closed-form\ solution
closed?form?solution,但我们要教你另外一个做法,这个做法叫做
g
r
a
d
i
e
n
t
?
d
e
s
c
e
n
t
gradient\ descent
gradient?descent。 3.3.1 gradient descent(梯度下降法)\qquad 这边要强调一下 g r a d i e n t ? d e s c e n t gradient\ descent gradient?descent 不是只适用于解这一个 f u n c t i o n function function,只要 L L L 是可微分的,不管是什么 f u n c t i o n function function, g r a d i e n t ? d e s c e n t gradient\ descent gradient?descent 都可以拿来处理这个 f u n c t i o n function function,都可以帮你找到表现比较好的 f u n c t i o n function function 或者是参数。我们来看一下 g r a d i e n t ? d e s c e n t gradient\ descent gradient?descent 是怎么做的? 1. 简单 task(单参数问题)\qquad 我们先假设一个比较简单的 t a s k task task, L o s s ? f u n c t i o n Loss\ function Loss?function 只有一个参数 w w w,求解: w ? = a r g m i n w L ( w ) \displaystyle w^*=arg\underset {w}{min}L(w) w?=argwmin?L(w)。
2. 两个参数 w,b 问题\qquad 我们今天真正要处理的事情,是有两个参数的问题,也就是 w w w 和 b b b。从一个参数推广到两个参数,其实是没有任何不同的。
\qquad 这边要补充说明的是,所谓 g r a d i e n t ? d e s c e n t gradient\ descent gradient?descent 的 g r a d i e n t gradient gradient 指的是什么呢?其实 g r a d i e n t gradient gradient 就是 ? L = [ ? L ? w ? L ? w ] \nabla L=\left[\begin{matrix}\displaystyle \frac{\partial L}{\partial w} \\ \displaystyle \frac{\partial L}{\partial w} \end{matrix}\right] ?L=?????w?L??w?L?????? 这个向量。 3. 可视化
\qquad
刚才做的事情可视化如下,是一个等高线图,有两个参数
w
w
w 和
b
b
b,这两个参数决定了一个
f
u
n
c
t
i
o
n
function
function 长什么样。在这个图上的颜色代表了
l
o
s
s
?
f
u
n
c
t
i
o
n
loss\ function
loss?function 的数值,越偏蓝色代表数值越小。那我们就随机选取一个初始值是在左下角红色的的点,接下来计算在红色这个点的偏微分
?
L
?
w
\displaystyle \frac{\partial L}{\partial w}
?w?L? 和
?
L
?
b
\displaystyle \frac{\partial L}{\partial b}
?b?L?,然后把参数更新:
w
?
η
?
L
?
w
\displaystyle w- \eta\frac{\partial L}{\partial w}
w?η?w?L?,
b
?
η
?
L
?
b
\displaystyle b- \eta\frac{\partial L}{\partial b}
b?η?b?L?,点移动的方向即
g
r
a
d
i
e
n
t
gradient
gradient 的方向其实就是等高线的法线方向。接下来再计算一次偏微分,这个偏微分告诉你说现在应该往哪个方向更新你的参数。 4. How’s the results?
l
i
n
e
a
r
?
r
e
g
r
e
s
s
i
o
n
\qquad linear\ regression
linear?regression 的函式
y
=
b
+
w
?
x
y=b+w\cdot x
y=b+w?x 根据
t
r
a
i
n
i
n
g
?
d
a
t
a
training\ data
training?data 找出来最好的
b
b
b 和
w
w
w 分别是
b
=
?
188.4
b=-188.4
b=?188.4 和
w
=
2.7
w=2.7
w=2.7。将
b
b
b 和
w
w
w 的值分别画在图上如下所示,你会发现图中红色的直线没有办法完全正确的评定所有的宝可梦进化后的 CP 值。如果你想知道这个最优
f
u
n
c
t
i
o
n
function
function 做的有多好或者多不好的话,你可以计算一下你的
e
r
r
o
r
error
error,也就是计算一下每一个蓝色的点跟这个红色的线之间的距离。通过计算得到这 10 只宝可梦
t
r
a
i
n
i
n
g
?
d
a
t
a
training\ data
training?data 的平均
e
r
r
o
r
error
error 为 31.9。 5. How can we do better?
\qquad
如果你想要做的更好的话,接下来你要做的事情就是重新设计一下你的
m
o
d
e
l
model
model。如果你观察过你的
m
o
d
e
l
model
model,你就会发现说,在原进化前的 CP 值特别大的地方,还有进化前 CP 值特别小的地方,预测是比较不准的。从结果看来,能够正确预测的
f
u
n
c
t
i
o
n
function
function 可能不是这样子一条直线,它可能是稍微更复杂一点,所以我们需要有一个更复杂的
m
o
d
e
l
model
model。
\qquad
所以今天如果你有一个越复杂的
m
o
d
e
l
model
model,它包含了越多的
f
u
n
c
t
i
o
n
function
function 的话,那理论上你就可以找出一个
f
u
n
c
t
i
o
n
function
function,它可以让你的
e
r
r
o
r
?
r
a
t
e
error\ rate
error?rate 在
t
r
a
i
n
i
n
g
?
d
a
t
a
training\ data
training?data 上越来越低,前提是
g
r
a
d
i
e
n
t
?
d
e
s
c
e
n
t
gradient\ descent
gradient?descent 要能够真正帮你找出
b
e
s
t
?
f
u
n
c
t
i
o
n
best\ function
best?function。但是在
t
e
s
t
i
n
g
?
d
a
t
a
testing\ data
testing?data 上面看起来的结果是不一样的,在
t
r
a
i
n
i
n
g
?
d
a
t
a
training\ data
training?data 上你会发现说
m
o
d
e
l
model
model 越复杂你的
e
r
r
o
r
error
error 越低,但是在
t
e
s
t
i
n
g
?
d
a
t
a
testing\ data
testing?data 上,在到第三个式子为止,你的
e
r
r
o
r
error
error 是有下降的,但是到第四个和第五个
f
u
n
c
t
i
o
n
function
function 的时候
e
r
r
o
r
error
error 就暴增。所以今天我们得到一个观察,虽然说越复杂的
m
o
d
e
l
model
model 可以在
t
r
a
i
n
i
n
g
?
d
a
t
a
training\ data
training?data 上面给我们越好的结果,但是越复杂的
m
o
d
e
l
model
model 并不一定能够在
t
e
s
t
i
n
g
?
d
a
t
a
testing\ data
testing?data 上给我们越好的结果,这件事情就叫做 Overfitting(过拟合),比如说在第四个和第五个式子的时候就发生了
O
v
e
r
f
i
t
t
i
n
g
Overfitting
Overfitting 的情形。那为什么会有
O
v
e
r
f
i
t
t
i
n
g
Overfitting
Overfitting 这个情形呢?这个我们日后再解释。所以
m
o
d
e
l
model
model 不是越复杂越好,我们必须选一个最合适的
m
o
d
e
l
model
model。比如说在这个
c
a
s
e
case
case 里面,当我们选一个三次式的时候,可以给我们最低的
e
r
r
o
r
error
error,所以我们就应该选择三次的式子来作为我们的
m
o
d
e
l
model
model,来作为我们的
f
u
n
c
t
i
o
n
?
s
e
t
function\ set
function?set。 6. 物种对 linear function 的影响
\qquad
你以为这样就结束了吗?其实还没有。刚才只收集了 10 只宝可梦,其实太少了,当我们收集到 60 只宝可梦的时候,你会发现说刚才都是白忙一场。将这 60 只宝可梦原来的 CP 值和进化后的 CP 值画出来,如下图所示。
\qquad
你可能问一个问题说,你把
i
f
if
if 放到整个
f
u
n
c
t
i
o
n
function
function 里面,这样你不就不是一个
l
i
n
e
a
r
?
m
o
d
e
l
linear\ model
linear?model了吗?
f
u
n
c
t
i
o
n
function
function 里面有
i
f
if
if 你搞得定吗?你可以用微分来做吗?你可以用刚才的
g
r
a
d
i
e
n
t
?
d
e
s
c
e
n
t
gradient\ descent
gradient?descent 来算参数对
l
o
s
s
?
f
u
n
c
t
i
o
n
loss\ function
loss?function 微分吗?其实是可以的,这个式子你可以把它改写成一个
l
i
n
e
a
r
?
f
u
n
c
t
i
o
n
linear\ function
linear?function: 7. 其他参数对 linear function 的影响
\qquad
但是你再观察上面这个图的话,感觉应该是还有一些东西是没有做好的,还有一些没有
f
i
t
fit
fit 很好的地方,有一些值还是略高或略低于这条直线。或许还存在一些其他的东西在影响着宝可梦进化后的 CP 值,有什么其他可能的参数呢?比如说:会不会进化后的 CP 值是跟
w
e
i
g
h
t
weight
weight 有关系的?会不会进化后的 CP 值是跟它的高度有关系的?会不会进化后的 CP 值是跟它的 HP 有关系的?其实我们不知道,如果你拥有
d
o
m
a
i
n
?
k
n
o
w
l
e
d
g
e
domain\ knowledge
domain?knowledge 的话,你就可能可以知道你应该把什么样的东西加到你的
m
o
d
e
l
model
model 里面去。但是我又没有
d
o
m
a
i
n
?
k
n
o
w
l
e
d
g
e
domain\ knowledge
domain?knowledge,那怎么办呢?没关系,有一招就是把你所有想到的东西,通通塞进去,我们来弄一个最复杂的
f
u
n
c
t
i
o
n
function
function,然后看看会怎样? 8. Regularization
\qquad
我们现在有一个办法来处理这个问题,这招叫做
r
e
g
u
l
a
r
i
z
a
t
i
o
n
regularization
regularization。
r
e
g
u
l
a
r
i
z
a
t
i
o
n
regularization
regularization 要做的事情是,我们重新定义了
s
t
e
p
?
2
step\ 2
step?2 的时候,我们对一个
f
u
n
c
t
i
o
n
function
function 是好还是坏的定义。 9. Conclusion |
|
|
上一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 5:02:32- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |