李宏毅《机器学习》第3讲——回归

为什么要学习机器学习?

为什么需要AI训练师:
正如宝可梦训练师在战斗时需要合适的宝可梦,AI训练师也需要选择合适的model和loss function。因此要训练出厉害的AI,AI训练师功不可没。

回归

举例

股票预测:output=Dow Jones Industrial Average at tomorrow
自动驾驶:output=方向盘角度
推荐系统:output=使用者A购买B商品的可能性

应用案例

预测宝可梦的CP值,也就是战斗力。
Input是某一只宝可梦,output是进化后的CP值。
X:Xs宝可梦种类,Xhp生命值,Xw重量,Xh高度,进化前Xcp
Y:进化后Xcp

模型:y=b + W*Xcp
b和W不同的组合组成无穷个function。
b是bias,W是weight。

步骤1: 模型训练

也就是收集和查看训练数据。


训练模型

收集10组宝可梦进化前和后的真实数据。


收集新数据

步骤2: 定义模型的好坏

从数学的角度来讲,我们使用距离。求【进化后的CP值】与【模型预测的CP值】差,来判定模型的好坏。也就是使用损失函数(Loss function) 来衡量模型的好坏。损失函数的output是输入的function有多不好。


损失函数

在坐标图中展示loss function:
Input是w和b,图上每个点代表一个function。越红loss越大,越蓝loss越少。


w和b坐标图

步骤3: 选择最好的function

最简单的是穷举w和b以选出loss最小的function。
除了穷举法可以用Gradient Descent法:

首先在这里引入一个概念,学习率:移动的步长,如下图中 η

  • 步骤1:随机选取一个 w0
  • 步骤2:计算微分,也就是当前的斜率,根据斜率来判定移动的方向
    -- 大于0向右移动(增加w)
    --小于0向左移动(减少w)
  • 步骤3:根据微分值(斜率对应的横坐标长度)和学习率移动
  • 重复步骤2和步骤3,直到找到最低点


    梯度下降曲线

    local minima,参数为0的点
    global minima,学习曲线最低点

解释完单个模型参数w,引入2个模型参数 w 和b ,过程是类似的,需要做的是偏微分,过程如图所示:


两个模型参数演算

梯度下降推演最优模型过程的图形展示:
每一条线围成的圈就是等高线,代表损失函数的值,颜色约深的区域代表的损失函数越小。
红色的箭头代表等高线的法线方向。

梯度下降推演图形展示

梯度下降gradient descent存在的挑战:

  • 问题1:当前最优(Stuck at local minima)
  • 问题2:等于0(Stuck at saddle point)
  • 问题3:趋近于0(Very slow at the plateau)


    梯度下降gradient descent存在的挑战

注意:其实在线性模型里面都是一个碗的形状(山谷形状),Loss function L is convex, no local optimal,梯度下降基本上都能找到最优点,但是再其他更复杂的模型里面,就会遇到 问题2和问题3了。

步骤4: 验证模型的好坏

需要查看模型在新数据的表现,新抓10只宝可梦。

有没有办法做得更好?
重新设计model,从原始数据看可能比直线复杂,所以需要更复杂的model,

举例:引入二次项。
重新训练复杂化的模型并在测试集上算average error。
再举例:引入三次项。
模型表现又稍微好了一点。
再再举例:引入四次项。
训练集的average error突然变大,结果变糟。

过拟合问题:
逐步引入更高阶的模型,但误差后期变大,过拟合就是在训练集得到好的结果,但在测试集得到差的结果。

  • 训练集平均误差【15.4】【15.3】【14.9】【12.8】
  • 测试集平均误差【18.4】【18.1】【28.8】【232.1】

将错误率结果图形化展示,发现3次方以上的模型,已经出现了过拟合的现象:


模型升阶与过拟合

所以model不是越复杂越好,而是需要选择合适的model。

收集更多的测试数据:
发现有隐藏的因素影响进化后的CP值,也就是宝可梦的物种。

隐藏因素

优化模型:

Step1优化:2个input的四个线性模型是合并到一个线性模型中
通过对 Pokemons种类 判断,将 4个线性模型 合并到一个线性模型中。

合并4个线性模型

四个model合并后还是线性模型?是的,下图蓝色框里都是公式中Xi的参数。


合并后仍是线性模型

Step2优化:如果希望模型更强大表现更好(更多参数,更多input)
在最开始我们有很多特征,图形化分析特征,将血量(HP)、重量(Weight)、高度(Height)也加入到模型中。

加入更多特征

更多特征,更多input,数据量没有明显增加,仍旧导致overfitting,怎么办?

Step3优化:加入正则化

更多特征,但是权重w 可能会使某些特征权值过高,仍旧导致overfitting,所以加入正则化。
正则化也就是redesign loss function,除了loss越小,再加一项来评价更好的模型,也就是使参数越小,曲线越平滑,所以function越好。


正则化
  • w 越小,表示 function较平滑的, function输出值与输入值相差不大
  • 在很多应用场景中,并不是 w越小模型越平滑越好,但是经验值告诉我们 w越小大部分情况下都是好的。
  • b的值接近于0 ,对曲线平滑是没有影响。也就是在做回归的时候不需要考虑bias。
Lamda值不是越大越好
  • Lamda越大,training error越小,不喜欢太平滑的function(因为最平滑的是一条直线),所以lamda也不能太大。

你可能感兴趣的:(李宏毅《机器学习》第3讲——回归)