目标:预测宝可梦的CP值
根据已有的宝可梦进化前后的信息,预测宝可梦进化后的CP值
方案:确定 Senario、Task和Model
Senario
根据已有的数据确定Senario,有用宝可梦进化前后CP值的数据,输入是进化前的宝可梦(包括它的各种属性),输出是进化后的宝可梦的CP值,因此数据是有标记的,使用的Senario是有监督学习。
Task
根据想要的函数输出类型,确定Task,此任务中预期得到宝可梦进化之后的CP值,是一个数列,因此使用的Task是回归。
model
模型的选择多样,此处选择非线性模型。
设定具体参数
X
X
X:表示一个宝可梦,用下标表示该宝可梦的某种属性。
X
c
p
X_{cp}
Xcp:表示宝可梦进化前的CP值。
X
s
X_{s}
Xs:表示该宝可梦是属于哪一种物种。
X
h
p
X_{hp}
Xhp:表示该宝可梦的HP值即生命值是多少。
X
w
X_{w}
Xw:表示该宝可梦的重量。
X
h
X_{h}
Xh:表示该宝可梦的高度。
f
(
)
f()
f():表示要寻找的函数。
y
y
y:表示函数的输出,即宝可梦进化后的CP值,是一个数列。
回归的过程:
机器学习的三个步骤:
定义一个模型即函数集
定义一个损失函数用于评估该函数的好坏
找到最好的函数
第一步:建立Model (function set)
选择函数模型时,需要凭借经验来试模型。
如线性模型:
y
=
b
+
w
⋅
X
c
p
y = b+w\cdot X_{cp}
y=b+w⋅Xcp
y
y
y代表进化后的CP值,
X
c
p
X_{cp}
Xcp代表进化前的CP值,
w
w
w和
b
b
b代表未知参数,根据不同的
w
w
w和
b
b
b,可以确定不同的函数。
y
=
b
+
w
⋅
X
c
p
y = b+w\cdot X_{cp}
y=b+w⋅Xcp这个抽象出的式子就是模型,是以上这些具体化的函数的集合,即函数集:
第二步:损失函数 评定模型好坏
参数说明:
x
i
x^{i}
xi:用上标表示一个完整的对象的编号,
x
i
x^{i}
xi表示第
i
i
i只宝可梦(下标表示该对象中的组成部分)
y
^
i
\hat{y}^{i}
y^i:用
y
^
\hat{y}
y^表示一个实际观察到的对象的输出,上标为
i
i
i表示是第
i
i
i个对象
损失函数(Loss function)
衡量函数集中某一个函数的好坏,需要一个评估函数,即损失函数:
L
(
f
)
=
L
(
w
,
b
)
L(f) = L(w,b)
L(f)=L(w,b)
由于
f
:
y
=
b
+
w
⋅
x
c
p
f:y = b+w\cdot x_{cp}
f:y=b+w⋅xcp,即
f
f
f是由
b
b
b和
w
w
w决定的,因此输入
f
f
f,就等价于输入
b
b
b和
w
w
w,因此损失函数实际上是在衡量一组参数的好坏。
最常用的方法是采用类似于方差和的形式来衡量参数的好坏,即预测值与真值差的平方和;这里真正的数值减去估测数值的平方,叫做估测误差,Estimation error,将10个估测误差合起来就是loss function
如果
L
(
f
)
L(f)
L(f)越大,说明该function表现得越不好;
L
(
f
)
L(f)
L(f)越小,说明该function表现得越好
Loss function可视化
下图是Loss function的可视化,该图中的每一个点都代表一组
(
w
,
b
)
(w,b)
(w,b),即对应一个函数,而该点的颜色对应着的损失函数的结果
L
(
w
,
b
)
L(w,b)
L(w,b),他表示该点对应函数的表现的好坏,颜色偏红色戴白哦损失的数值越大,偏蓝色代表损失的数值越小。
第三步:找出最好的函数
确定损失函数之后,就要从函数集中选出最好的函数。
挑选最好的函数,公式如下:
即使得
L
(
f
)
=
L
(
w
,
b
)
=
L
o
s
s
L(f) = L(w,b) = Loss
L(f)=L(w,b)=Loss最小的
f
f
f或
(
w
,
b
)
(w,b)
(w,b),就是要找的
f
∗
f^{*}
f∗或
(
w
∗
,
b
∗
)
(w^{*},b^{*})
(w∗,b∗)(极大似然估计的思想)
这里可以采用梯度下降的方法。
Gradient Descent 梯度下降
只要
L
(
f
)
L(f)
L(f)是可微分的,梯度下降都可以对
f
f
f进行处理,找到表现较好的参数。
单个参数:
以只带单个参数
w
w
w的损失函数
L
(
w
)
L(w)
L(w)为例,首先保证
L
(
w
)
L(w)
L(w)是可微分的,
w
∗
=
a
r
g
m
i
n
w
L
(
w
)
w^{*} = arg \underset{w}{min}L(w)
w∗=argwminL(w),目标是找到使得该loss最小的$ w^{}
,
实
际
上
是
寻
找
切
线
L
斜
率
为
0
的
全
局
最
小
值
点
穷
举
所
有
,实际上是寻找切线L斜率为0的全局最小值点 穷举所有
,实际上是寻找切线L斜率为0的全局最小值点穷举所有w
的
值
,
去
找
使
得
l
o
s
s
最
小
的
的值,去找使得loss最小的
的值,去找使得loss最小的w^{}
也
可
以
,
但
是
效
率
极
低
,
而
梯
度
下
降
就
是
用
来
提
高
效
率
。
首
先
随
机
选
取
一
个
初
始
的
点
也可以,但是效率极低,而梯度下降就是用来提高效率。 首先随机选取一个初始的点
也可以,但是效率极低,而梯度下降就是用来提高效率。首先随机选取一个初始的点w^{0}
(
尽
可
能
的
接
近
(尽可能的接近
(尽可能的接近w^{*}
)
计
算
) 计算
)计算L
在
在
在w=w^{0}$