第二章、Regression (回归)---(上)
下述所记录的学习笔记内容来源为李宏毅老师的教学视频以及相关的学习资料,仅供个人学习使用。
回归定义
Regression 就是找到一个函数function ,通过输入特征x,输出一个数值Scalar。
应用举例
股市预测(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:模型优化,如何筛选最优的模型(梯度下降)
一元线性模型(单个特征)
以一个特征 xcp为例,线性模型假设 y = b + w·xcp,所以 w 和 b 可以猜测很多模型:
虽然可以做出很多假设,但在这个例子中,显然 的假设是不合理的,不能进化后CP值是个负值多元线性模型(多个特征)
在实际应用中,输入特征肯定不止 xcp这一个。例如,进化前的CP值、物种(Bulbasaur)、血量(HP)、重量(Weight)、高度(Height)等,特征会有很多。
所以我们假设 线性模型 Linear model:
Step 2:模型评估 - 损失函数
【单个特征】:
将10组原始数据在二维图中展示,图中的每一个点对应着 进化前的CP值 和 进化后的CP值。
有了这些真实的数据,那我们怎么衡量模型的好坏呢?从数学的角度来讲,我们使用距离。求【进化后的CP值】与【模型预测的CP值】差,来判定模型的好坏。也就是使用损失函数(Loss function) 来衡量模型的好坏,统计10组原始数据 的和,和越小模型越好。
最终定义 损失函数 Loss function:,我们将w, b在二维坐标图中展示,
Step 3:最佳模型 - 梯度下降
【单个特征】:
如何筛选最优的模型(参数w,b)
已知损失函数是,需要找到一个令结果最小的,在实际的场景中,我们遇到的参数肯定不止w, b。
我们使用斜率下降的方法进行寻找,如图中
步骤1:随机选取一个
步骤2:计算微分,也就是当前的斜率,根据斜率来判定移动的方向
大于0向右移动(增加w)
小于0向左移动(减少w)
步骤3:根据斜率移动
重复步骤2和步骤3,直到找到最低点
步骤1中,我们随机选取一个 ,如图所示,使用该方法我们有可能会找到当前的最小值(局部最优),并不是全局的最小值(全局最优),这是一个看人品的方法,这里我们保留这个疑问,后面解决。
如果有2个模型参数 w和 b, 其实过程是类似的,需要做的是偏微分,过程如下图所示,
如果把 w和 b在图形中展示:
每一条线围成的圈就是等高线,代表损失函数的值,颜色约深的区域代表的损失函数越小
红色的箭头代表等高线的法线方向
梯度下降算法在现实世界中面临的问题
我们通过梯度下降gradient descent不断更新损失函数的结果,这个结果>会越来越小,那这种方法找到的结果是否都是正确的呢?前面提到的当前最优问题外,还有没有其他存在的问题呢?
问题1:当前最优(Stuck at local minima)
问题2:导数等于0,但是却不是极值(Stuck at saddle point)
问题3:趋近于0(Very slow at the plateau)