李宏毅2020机器学习深度学习笔记(一)

回归Regression

什么是regression

存在一个函数function,当我们输入一个特征值时,输出一个预测的结果。
举几个简单的例子:

  • 房价预测:输入房子的大小,我们可以得到它的房价预测值。
  • 无人驾驶:输入此时的道路情况,车辆可以实时调整方向盘与油门达到平稳行驶。

当然买房买车离身为学生的我们或许还很远,但如果是游戏,每个人都或多或少接触过。在一些游戏中,我们常常会遇见千变万化的一些武器、宠物之类的,如果能提前知道它的潜力值,就能更好的避免一些资源的浪费。

 
提出需求

在任天堂的宝可梦中,我们希望预测宝可梦进化后的CP值来筛选优先培养的宝可梦。
李宏毅2020机器学习深度学习笔记(一)_第1张图片
 
解决方案

  • 先设定一些参数:设宝可梦的种类为xs、CP值为xcp、HP值为xhp、重量为xw、高度为xh
     
    定义一个简单的mdoel:
    使用线性模型,且此时仅考虑宝可梦进化前的CP值,有:
    y = b + ∑ wi * xi
    wi:权重weight,b:偏差bias
     
    收集宝可梦数据对model进行训练
    李宏毅2020机器学习深度学习笔记(一)_第2张图片
    李宏毅2020机器学习深度学习笔记(一)_第3张图片
     
    当我们收集足够多的数据对model进行训练时,还需要定义一个 Loss function(损失函数),通过求进化后的真实值进化后的预测值之间的差,我们可以评判model的好坏:
     
    L(ƒ) = L(w, b)
              10
           = ∑ ( yn - ( b + w * xcpn))2
              n=1
     
    L(ƒ)越大,表明model越不好,反之越小则表明能很好的进行预测。

  • 挑选出最好的model——梯度下降
    为了找出一个最好的model,我们需要先求出最佳的参数——w,b的值,即求L(w, b)的最小值。
     
    梯度下降是什么?
    举个例子,我们被随机放在了一座山上的某一个位置,此时我们要下山,顺着最陡峭的地方往下走,直到我们下山。当然,也存在我们无法到达山脚的情况,此时的最低点我们称作局部最优解。
     
    单个参数的情况:
    首先我们随机选取一个点w0,然后进行微分求出斜率。
    当斜率大于0时,像左边移动即减小w值;
    当斜率小于0时,像右边移动即增加w值。
    直到找到斜率为0的点,即最低点。
    此时,我们引入一个新的概念——学习率η。表示w值移动的距离,当学习率越大时,移动的距离会越远,学习率越小则移动距离也小。
     
    李宏毅2020机器学习深度学习笔记(一)_第4张图片
     
    多个参数的情况:
    w*, b* = arg min L(w, b)
    与解决单变量情况相似,同样先随机取值w0、b0,然后进行偏微分。
    在取下一个点w1
    在这里插入图片描述
    依此不断的取下一个值,直到取得L(w, b)最小的点。
    李宏毅2020机器学习深度学习笔记(一)_第5张图片
     
    梯度下降可视化:
    李宏毅2020机器学习深度学习笔记(一)_第6张图片
    越偏蓝色表示loss越小,越偏红色表示loss越大。
    原先的(wn, bn)会沿着在这里插入图片描述
    移动,直到到达最小值。
     
    梯度下降的缺点:
    李宏毅2020机器学习深度学习笔记(一)_第7张图片
    因为每次最初的取值时随机的,若多试几次会发现,求出的最小值(或称极小值会更加合理)会是不同的。
    并且若梯度较缓,下降的速率也会受到影响,需要花更多的时间达到极小值。
     

  • 运用于宝可梦实例中
    通过对L中(w, b)进行偏微分
    李宏毅2020机器学习深度学习笔记(一)_第8张图片
    我们得到y = b + w * xcp的最佳参数是 b = -188.4, w = 2.7 。
    此时在training data中我们预测出来的值和实际的值存在一个差值,我们取绝对值并设为en,这些值的和Average Error on Training Data = 31.9.
    李宏毅2020机器学习深度学习笔记(一)_第9张图片
     
    泛化Generalization
    泛化是指model很好地拟合以前未见过的新数据(从用于创建该模型的同一分布中抽取)的能力。总的来说便是我们在抓到一直新宝可梦时,仍能很好的预测出进化后的CP值。
    model在Testing Data中的测试结果
    李宏毅2020机器学习深度学习笔记(一)_第10张图片
    Average Error on Testing Data = 35.0,大于只在Training Data中的结果。

  • 一个更好的模型
    上图model并不能很好的预测出全部的结果,仅在初始CP值在130—320之间表现优良,所以我们需要选择其他更好的model。
     
    二次函数的model
    李宏毅2020机器学习深度学习笔记(一)_第11张图片
     
    三次函数的model
    李宏毅2020机器学习深度学习笔记(一)_第12张图片
     
    四次函数的model
    李宏毅2020机器学习深度学习笔记(一)_第13张图片
    五次函数的model
    李宏毅2020机器学习深度学习笔记(一)_第14张图片
    我们可以发现,随着model越复杂,Average Error on Training Data越小。但在三次函数的model之后,Average Error on Testing Data激增,出现了过拟合现象。
    李宏毅2020机器学习深度学习笔记(一)_第15张图片
    李宏毅2020机器学习深度学习笔记(一)_第16张图片
    因此我们可以知道,model并不是越复杂便越好。我们挑选三次函数作为最优模型。

  • 考虑其他参数的影响
    李宏毅2020机器学习深度学习笔记(一)_第17张图片
    不同物种的宝可梦进化后CP值存在着很大的差异,所以我们可以重新设计model。
     
    模型设计
    设宝可梦的种类为xs
     
    if xs = Pidgey:    y = b1 + w1 * xcp
    if xs = Weedle:   y = b2 + w2 * xcp
    if xs = Caterpie:  y = b3 + w3 * xcp
    if xs = Eevee:     y = b4 + w4 * xcp
     
    最终可统合为一个线性函数:
    李宏毅2020机器学习深度学习笔记(一)_第18张图片
    在Training Data和Testing Data中测试model
    李宏毅2020机器学习深度学习笔记(一)_第19张图片
    现在的模型优于之前任意的一个模型,那么我们可继续猜测,
    是否宝可梦进化后的CP值与重量、高度甚至时HP值有关呢?
    设HP值为xhp、重量为xw、高度为xh
     
    if xs = Pidgey:    yP = b1 + w1 * xcp + w5 * (xcp)2
    if xs = Weedle:   yW = b2 + w2 * xcp + w6 * (xcp)2
    if xs = Caterpie:  yC = b3 + w3 * xcp + w7 * (xcp)2
    if xs = Eevee:     yE = b4 + w4 * xcp + w8 * (xcp)2
    y = y’ + w9 * xhp + w10 * (xhp)2 + w11 * xh + w12 * (xh)2 + w13 * xw + w14 * (xw)2
     
    可以得到训练数据的平均误差为1.9,测试数据的平均误差为102.3,出现过拟合现象。又出现了过拟合,过拟合究竟是什么呢?
    过拟合是指在Training Data中可以表现得很好,但一换到Testing Data中表现就不能看了。为了解决过拟合,我们使用正则化。
    李宏毅2020机器学习深度学习笔记(一)_第20张图片
    我们在Loss Function的后面加上了 λΣ(wi)2
    一般的,我们希望wi可以是一个很小的值,这样子函数就会比较平滑。平滑指当输入发生变化时,输出对输入的变化时不敏感的。
    正如从1到1.5与从10到15,一个增加了0.5,一个增加了5,所产生的影响是不同的。
     
    对于λ:
    李宏毅2020机器学习深度学习笔记(一)_第21张图片
    当λ越大时,愈加倾向于考虑w值,而越少考虑Training error。
    当λ从0到100变大的时候,Training error不断变大,Testing error反而不断变小;
    但是当λ太大的时候(>100),在Testing error就会越来越大。
    所以我们会选择100作为最佳λ。

  • 总结

  • 宝可梦进化后的CP值与进化前的CP值有关系,当然还有其他因素,比如加上物种也会有很好的效果。

  • 梯度下降求得得是局部最优解,或许可通过多次取最初点得到loss值,求取平均值,更好的评判一个model。

  • 过拟合时使用正则化解决
    求解时λ的值时需要我们手动去求并不断求解取得最佳值。

你可能感兴趣的:(李宏毅2020机器学习深度学习笔记(一))