人工智能学习笔记(二)

第二章、Regression (回归)---(上)

       下述所记录的学习笔记内容来源为李宏毅老师的教学视频以及相关的学习资料,仅供个人学习使用。

回归定义

Regression 就是找到一个函数function ,通过输入特征x,输出一个数值Scalar。

应用举例

image.png

image.png

股市预测(Stock market forecast)
输入:过去10年股票的变动、新闻咨询、公司并购咨询等
输出:预测股市明天的平均值
自动驾驶(Self-driving Car)
输入:无人车上的各个传感器(sensor)的数据,例如路况、测出的车距等
输出:方向盘的角度
商品推荐(Recommendation)
输入:使用者商品A的特性,商品B的特性
输出:购买商品B的可能性
Pokemon精灵攻击力预测(Combat Power of a pokemon):
输入:进化前的CP值、物种(Bulbasaur)、血量(HP)、重量(Weight)、高度(Height)
输出:进化后的CP值

模型步骤

  • step1:模型假设,选择模型框架(线性模型)
  • step2:模型评估,如何判断众多模型的好坏(损失函数)
  • step3:模型优化,如何筛选最优的模型(梯度下降)


    image.png

一元线性模型(单个特征)

以一个特征 xcp为例,线性模型假设 y = b + w·xcp​,所以 w 和 b 可以猜测很多模型:
f_{1}:y=10.0+9.0⋅x_{cp}
f_{2}:y=9.8+9.2⋅x_{cp}
f_{3}:y=-0.8-1.2⋅x_{cp}
虽然可以做出很多假设,但在这个例子中,显然​f_{3}:y=-0.8-1.2⋅x_{cp} 的假设是不合理的,不能进化后CP值是个负值

多元线性模型(多个特征)

在实际应用中,输入特征肯定不止 xcp这一个。例如,进化前的CP值、物种(Bulbasaur)、血量(HP)、重量(Weight)、高度(Height)等,特征会有很多。
所以我们假设 线性模型 Linear model:y=b+∑w_{i}​x_{i}
xi:就是各种特征(fetrure) x_{cp},x_{hp},x_w,x_h,⋅⋅⋅
wi各个特征的权重 w_{cp},w_{hp},w_w,w_h,⋅⋅⋅
b:偏移量

image.png

image.png

Step 2:模型评估 - 损失函数

【单个特征】: x_{cp}
​将10组原始数据在二维图中展示,图中的每一个点(x_{cp}^n,\hat{y}^n)对应着 进化前的CP值 和 进化后的CP值。

image.png

有了这些真实的数据,那我们怎么衡量模型的好坏呢?从数学的角度来讲,我们使用距离。求【进化后的CP值】与【模型预测的CP值】差,来判定模型的好坏。也就是使用损失函数(Loss function) 来衡量模型的好坏,统计10组原始数据 \left ( \hat{y}^n - f(x_{cp}^n) \right )^2的和,和越小模型越好。
image.png

最终定义 损失函数 Loss function:L(w,b)= \sum_{n=1}^{10}\left ( \hat{y}^n - (b + w·x_{cp}) \right )^2,我们将w, b在二维坐标图中展示,
image.png

image.png

Step 3:最佳模型 - 梯度下降

【单个特征】: x_{cp}

如何筛选最优的模型(参数w,b)

已知损失函数是L(w,b)= \sum_{n=1}^{10}\left ( \hat{y}^n - (b + w·x_{cp}) \right )^2,需要找到一个令结果最小的f^*,在实际的场景中,我们遇到的参数肯定不止w, b。


我们使用斜率下降的方法进行寻找,如图中 \eta
步骤1:随机选取一个 w^0
步骤2:计算微分,也就是当前的斜率,根据斜率来判定移动的方向
          大于0向右移动(增加w)
         小于0向左移动(减少w)
步骤3:根据斜率移动
          重复步骤2和步骤3,直到找到最低点
步骤1中,我们随机选取一个 w^0,如图所示,使用该方法我们有可能会找到当前的最小值(局部最优),并不是全局的最小值(全局最优),这是一个看人品的方法,这里我们保留这个疑问,后面解决。


如果有2个模型参数 w和 b, 其实过程是类似的,需要做的是偏微分,过程如下图所示,

image.png

如果把 w和 b在图形中展示:
每一条线围成的圈就是等高线,代表损失函数的值,颜色约深的区域代表的损失函数越小
红色的箭头代表等高线的法线方向
image.png

image.png

image.png

梯度下降算法在现实世界中面临的问题

我们通过梯度下降gradient descent不断更新损失函数的结果,这个结果>会越来越小,那这种方法找到的结果是否都是正确的呢?前面提到的当前最优问题外,还有没有其他存在的问题呢?
问题1:当前最优(Stuck at local minima)
问题2:导数等于0,但是却不是极值(Stuck at saddle point)
问题3:趋近于0(Very slow at the plateau)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 有些问题之所以很困难有可能并不是问题本身很困难,而是自己没有把问题定义清楚。有时候把一个要解决的问题定义清楚问题本...
    Hongtao洪滔阅读 1,405评论 0 1
  • 概率论与数理统计 无穷小阶数 无穷小量表述:线性逼近 相当于利用切线和斜率来理解误差和逼近。 泰勒级数:线性逼近 ...
    Babus阅读 823评论 0 1
  • 以西瓜书为主线,以其他书籍作为参考进行补充,例如《统计学习方法》,《PRML》等 第一章 绪论 1.2 基本术语 ...
    danielAck阅读 4,626评论 0 6
  • 本系列文章面向深度学习研发者,希望通过Image Caption Generation,一个有意思的具体任务,深入...
    imGeek阅读 1,858评论 0 8
  • 机器学习术语表 本术语表中列出了一般的机器学习术语和 TensorFlow 专用术语的定义。 A A/B 测试 (...
    yalesaleng阅读 2,003评论 0 11