目录
Regression的输出是一个标量,如下图
下面利用一个example来学习,神奇宝贝宝可梦的升级计划。
宝可梦升级后的的战斗力(Combat Power,下面用CP值代替)的预测。
第一步:选择模型Model
首先选择宝可梦的升级模型
其中y是宝可梦升级后的cp值,是宝可梦升级前的CP值,b,w是Model的参数。这是一个简单的线性模型。
第二步:模型优良度(Goodness)的计算方法
这里引入一个概念叫做损失函数Loss Function
计算损失函数的方法为
上面式子中为真实数据中宝可梦升级后的cp值,为预测model中宝可梦cp值的预测值。
在函数集合Model中拟合最好的function的损失函数数值最小,训练数据的目标就是找到最好的function,那么如何在函数集合Model中找到最好的function呢?如何寻找就要利用梯度下降。
上图中画X的地方就是损失函数最小的function对应的参数w,b。颜色越蓝,损失函数值越小。
第三步:Gradient Descent梯度下降
Gradient Descent是为了寻找损失函数值的最小值,如何寻找最小值,运用到积分学中求最小值的方法,计算损失函数对每一个一个参数的微分函数,还是用图解释吧
上图中“猴子”站的地方就是w的初始值的位置,可以看见初始值处的loss值不是最小值,等价于该点处的导数值也不等于0,所以w值要向loss值减小的方向移动,怎么移动呢,按照以下规则移动:
1.如果所处位置的损失函数的导数值为负(导函数的线向下,如上图蓝色虚线线),w增加
2.如果所处位置的损失函数的导数值为正(导函数的线向上),w减小
移动的数值如上图中画红色框框所示,其中为learning rate(学习速率),当损失函数越陡峭(损失函数的导函数的绝对值越大),移动的数值越大。
知道移动的方向和移动的数值之后(其实这就是梯度下降),经过多次移动将会移动到最小值处,见下图。
但是有一个问题就是可能会移动到局部最优的“坑”(这里的坑就是损失函数的最小值处,非极小值处,上图可以看见两个坑。)里去,但这不是全局最优的结果,这和w的初始值选取有关,不同的初始值会下降到不同的“坑”中,如何解决这个问题不是现在所讨论的,以后我再深入展开。
找到“坑”,坑对应的w值就是最优function的参数值,这就从Model中找出了最优的function。
如果损失函数涉及到多个参数(即Model中有多个参数),那就需要利用偏导数的方法找到每个参数对应的“坑”,见下图。
四 开始实验
首先选取的函数集Model是线性函数,利用Training data对Model进行训练,得到Model中最优function,见下图。
上图中b=-188.4,w=2.7为线性函数中的最优解,利用该函数得到的平均误差为31.9,下面用测试数据对其进行测试
那么线性模型就是最好的吗?不要急,一个个试一下,下面用一个复杂一点的Model,如下
利用这个model进行训练,得到的结果和测试的结果数据如下:
看起来结果是要比线性的要好一点,那么Model再复杂点
结果如下:
再复杂点:
结果如下:
这个结果就糟糕透了,看来并不是Model越复杂,结果越好。