李宏毅_Machine Learning_1


引入

问题的导入:预测宝可梦的CP值
Estimating the Combat Power(CP) of a pokemon after evolution
我们期望根据已有的宝可梦进化前后的信息,来预测某只宝可梦进化后的cp值的大小

一、部分符号说明

1.确定Senario、Task和Model

· Senario 首先根据已有的data来确定Senario,我们拥有宝可梦进化前后cp值的这样一笔数据,input是进化前的宝可梦(包括它的各种属性),output是进化后的宝可梦的cp值;因此我们的data是labeled,使用的Senario是Supervised Learning
· Task 然后根据我们想要function的输出类型来确定Task,我们预期得到的是宝可梦进化后的cp值,是一个scalar,因此使用的Task是Regression
· Model 关于Model,选择很多,这里采用的是Non-linear Model

2.设定具体参数

在这里插入图片描述
在这里插入图片描述

二、Regression的具体过程

1.function set

如何选择一个function的模型呢?毕竟只有确定了模型才能调参。这里没有明确的思路,只能凭经验去一种种地试Linear Model 线性模型
在这里插入图片描述
y代表进化后的cp值,代表进化前的cp值,w和b代表未知参数,可以是任何数值根据不同的w和b,可以确定不同的无穷无尽的function,而这个抽象出来的式子就叫做model,是以上这些具体化的function的集合,即function set实际上这是一种Linear Model,但只考虑了宝可梦进化前的cp值,因而我们可以将其扩展为:
在这里插入图片描述
在这里插入图片描述

2.Goodness of Function

1.参数说明

在这里插入图片描述
在这里插入图片描述

2.Loss function 损失函数

为了衡量function set中的某个function的好坏,我们需要一个评估函数,即Loss function,损失函数,简称L;loss function是一个function的function
input:a function:
在这里插入图片描述

output:how bad/good it is
由于,即f是由b和w决定的,因此input f就等价于input这个f里的b和w,因此Loss function实际上是在衡量一组参数的好坏
之前提到的model是由我们自主选择的,这里的loss function也是,最常用的方法就是采用类似于方差和的形式来衡量参数的好坏,即预测值与真值差的平方和;这里真正的数值减估测数值的平方,叫做估测误差,Estimation error,将10个估测误差合起来就是loss function
在这里插入图片描述
如果越大,说明该function表现得越不好;越小,说明该function表现得越好

3.Loss function可视化

下图中是loss function的可视化,该图中的每一个点都代表一组(w,b),也就是对应着一个function;而该点的颜色对应着的loss function的结果L(w,b),它表示该点对应function的表现有多糟糕,颜色越偏红色代表Loss的数值越大,这个function的表现越不好,越偏蓝色代表Loss的数值越小,这个function的表现越好比如图中用红色箭头标注的点就代表了b=-180 , w=-2对应的function,即,该点所在的颜色偏向于红色区域,因此这个function的loss比较大,表现并不好
在这里插入图片描述

三、Pick the Best Function

我们已经确定了loss function,他可以衡量我们的model里面每一个function的好坏,接下来我们要做的事情就是,从这个function set里面,挑选一个最好的function挑选最好的function这一件事情,写成formulation/equation的样子如下:
在这里插入图片描述
在这里插入图片描述

梯度下降法

1.单个参数的问题

以只带单个参数w的Loss Function L(w)为例
在这里插入图片描述
首先保证是可微的 我们的目标就是找到这个使Loss最小的,实际上就是寻找切线L斜率为0的global minima最小值点(注意,存在一些local minima极小值点,其斜率也是0)
—————————————————————————————————
有一个暴力的方法是,穷举所有的w值,去找到使loss最小的,但是这样做是没有效率的;而gradient descent就是用来解决这个效率问题的
1.首先随机选取一个初始的点 (当然也不一定要随机选取,如果有办法可以得到比较接近的表现得比较好的当初始点,可以有效地提高查找的效率)
2.计算在w = w0的位置的微分,几何意义就是切线的斜率
3.如果切线斜率是negative负的,那么就应该使w变大,即往右踏一步;如果切线斜率是positive正的,那么就应该使w变小,即往左踏一步,每一步的步长step size就是w的改变量w的改变量step size的大小取决于两件事

一是现在的微分值有多大,微分值越大代表现在在一个越陡峭的地方,那它要移动的距离就越大,反之就越小;
二是一个常数项,被称为learning rate,即学习率,它决定了每次踏出的step size不只取决于现在的斜率,还取决于一个事先就定好的数值,如果learning rate比较大,那每踏出一步的时候,参数w更新的幅度就比较大,反之参数更新的幅度就比较小

在这里插入图片描述

2.两个参数的问题

在这里插入图片描述

四、如何做的更好

我们有没有办法做得更好呢?这时就需要我们重新去设计model;如果仔细观察一下上图的data,就会发现在原先的cp值比较大和比较小的地方,预测值是相当不准的实际上,从结果来看,最终的function可能不是一条直线,可能是稍微更复杂一点的曲线考虑的model
在这里插入图片描述
在这里插入图片描述
这几个model的training data的表现:随着的高次项的增加,对应的average error会不断地减小;实际上这件事情非常容易解释,实际上低次的式子是高次的式子的特殊情况(令高次项对应的为0,高次式就转化成低次式)也就是说,在gradient descent可以找到best function的前提下(多次式为Non-linear model,存在local optimal局部最优解,gradient descent不一定能找到global minima),function所包含的项的次数越高,越复杂,error在training data上的表现就会越来越小;但是,我们关心的不是model在training data上的error表现,而是model在testing data上的error表现。

在training data上,model越复杂,error就会越低;但是在testing data上,model复杂到一定程度之后,error非但不会减小,反而会暴增,在该例中,从含有项的model开始往后的model,testing data上的error出现了大幅增长的现象,通常被称为overfitting过拟合
在这里插入图片描述

因此model不是越复杂越好,而是选择一个最适合的model,在本例中,包含的式子是最适合的model

进一步讨论其他参数

物种的影响
之前我们的model只考虑了宝可梦进化前的cp值,这显然是不对的,除了cp值外,还受到物种的影响
在这里插入图片描述
因此我们重新设计model:
在这里插入图片描述
也就是根据不同的物种,设计不同的linear model(这里),那如何将上面的四个if语句合并成一个linear model呢?
这里引入条件表达式的概念,当条件表达式为true,则δ为1;当条件表达式为false,则δ为0,因此可以通过下图的方式,将4个if语句转化成同一个linear model
在这里插入图片描述

总结

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值