一、Where does the error come from?[error due to bias and variance]


我们将寻找function看作是在打靶,靶的正中心为 f ^ \hat{f} f^​,每次collect data训练出来的 f ∗ f^{*} f∗为打在靶上面的点
Variance取决于model的复杂程度和data的数量,而bias只取决于model的复杂成度
一个较为简单的model,都是有比较小的Variance和比较大的bias,相当于 f ∗ f^{*} f∗相对集中,但是他们平均起来距离 f ^ \hat{f} f^​较远。
一个复杂的model,都有着比较大的Variance和比较小的bias,相当于 f ∗ f^{*} f∗相对分布的比较分散,但是他们平均起来距离 f ^ \hat{f} f^​较近

若实际中error主要来源于variance很大,此时为overfitting
若实际中error主要来源于bias很大,此时为underfitting

Notes:如何判断bias大和variance大呢?

1、如果model无法fit training data的examples(training data上面的error较大),此时bais较大,为underfitting。
2、如果model可以fit training data,但是在testing data上面得到很大的error,此时variance较大,为overfitting。

二、How to solve?

1、当我们遇到bias比较大时:

如果bias较大,则代表现在的model中根本就没有包含target, f ^ \hat{f} f^​根本就不存在我们的function set中(model不好),所以此时我们就算再collect more data都毫无意义
解决方案:redsign,重新对model进行设计(增加更多的feature作为model的input或者让model变得更加复杂)

2、当我们遇到Variance较大时:

解决的方案:
1、collect more datas(这是一个非常有效的手段,因为这个不会伤害我们的bias)
但是在很多情况下,我们是无法收集更多的数据,此时可以使用一些手段,generate更多“假“datas
2、Regularization(正则化)


1、蓝色区域为刚开始的情况,model较复杂function set的空间较大(包括了target)因为data不多,variance较大, f ∗ f^{*} f∗较分散。
2、红色的区域为regularization之后,此时function set 的space减小,variance减小,但是在这一缩小的过程中,space也未必能包括target,因此这时候bias还是有可能增大的
通过可视化regularization的过程我们可以发现,我们需要在减小variance的同时,让它包括target,要做到bias和variance相平衡。

三、Model Selection(public set上的error才能真正反映在private set 上的error)


我们可以将training data分成training set和validation set(验证集),先在training set上找出每个model最好的function f ∗ f^{*} f∗,然后用validation set上的data去choose model。得到public set上的error时(可能会很大),不建议回过头去重新调整model的参数。(如果这么做就会把public set的bias也一起考虑进去了)
若少去根据public training set上的error去调整model这个过程的话,在private testing set上得到的error往往是很接近public testing set 的error。

四、conclusion

1、⼀般来说,error是bias和variance共同作用的结果

2、model比较简单和比较复杂的情况:

当model比较简单的时候,variance比较小,bias比较大,此时会比较集中,但是function set可能并没有包含真实值 ;此时model受bias影响较大当model比较复杂的时候,bias比较小,variance比较大,此时function set会包含真实值 ,但是会比较分散;此时model受variance影响较大

3、区分bias大 or variance大的情况:

如果连采样的样本点都没有大部分在model训练出来的上,说明这个model太简单,bias比较大,是欠拟合。如果样本点基本都在model训练出来的上,但是testing data上测试得到的error很大,说明这个model太复杂,variance比较大,是过拟合

4、bias大 or variance大的情况下该如何处理:

当bias比较大时,需要做的是重新设计model,包括考虑添加新的input变量,考虑给model添加高次项;然后对每⼀个model对应的 计算出error,选择error值最小的model(随model变复杂,bias会减小,variance会增加,因此这里分别计算error,取两者平衡点) 当variance比较大时,⼀个很好的办法是增加data(可以凭借经验自己generate data),当data数量足够时,得到的实际上是比较集中的;如果现实中没有办法collect更多的data,那么就采用regularization正规化的方法,以曲线的平滑度为条件控制function set的范围,用weight控制平滑度阈值,使得最终的model既包含 f ^ \hat{f} f^​ ,variance又不会太大

5、如何选择model

选择model的时候呢,我们手头上的testing data与真实的testing data之间是存在偏差的,因此我 们要将training data分成training set和validation set两部分,经过validation挑选出来的model再用全部的training data训练⼀遍参数,最后⽤testing data去测试error,这样得到的error是模拟 过testing bias的error,与实际情况下的error会⽐较符合

★ Gradient Desent算法:

一、概念

在Gradient Desent中:梯度不一定是递减的,但总沿着梯度下降的方向,LOSS一定在减小,当gradient=0时,LOSS下降到局部最小值。

θ ∗ = arg ⁡ min ⁡ θ L ( θ ) \theta^{*}=\arg \min _{\theta} L(\theta) θ∗=argminθ​L(θ) [L: loss function θ \theta θ: paramers] (上表为第几组,下标为这组参数的第几个)
Suppose that θ \theta θ has two variables { θ 1 , θ 2 } \left\{\theta_{1}, \theta_{2}\right\} {θ1​,θ2​}(假设 θ \theta θ是参数的集合)
Randomly start at θ 0 = [ θ 1 0 θ 2 0 ] \theta^{0}=\left[\begin{array}{l}\theta_{1}^{0} \\ \theta_{2}^{0}\end{array}\right] θ0=[θ10​θ20​​] (随机选取一组参数)

gradient: ∇ L ( θ ) = [ ∂ L ( θ 1 ) / ∂ θ 1 ∂ L ( θ 2 ) / ∂ θ 2 ] \nabla L(\theta)=\left[\begin{array}{l}\partial L\left(\theta_{1}\right) / \partial \theta_{1} \\ \partial L_{\left(\theta_{2}\right)} / \partial \theta_{2}\end{array}\right] ∇L(θ)=[∂L(θ1​)/∂θ1​∂L(θ2​)​/∂θ2​​]

[ θ 1 1 θ 2 1 ] = [ θ 1 0 θ 2 0 ] − h [ ∂ L 1 θ 1 0 ) / ∂ θ 1 ∂ L 1 θ 2 0 ) / ∂ θ 2 ] \left[\begin{array}{l}\theta_{1}^{1} \\ \theta_{2}^{1}\end{array}\right]=\left[\begin{array}{l}\theta_{1}^{0} \\ \theta_{2}^{0}\end{array}\right]-h\left[\begin{array}{l} \left.\partial L_{1} \theta_{1}^{0}\right) / \partial \theta_{1} \\ \left.\partial L_{1} \theta_{2}^{0}\right) / \partial \theta_{2}\end{array}\right] [θ11​θ21​​]=[θ10​θ20​​]−h[∂L1​θ10​)/∂θ1​∂L1​θ20​)/∂θ2​​]

[ θ 1 2 θ 2 2 ] = [ θ 1 1 θ 2 1 ] − η [ ∂ L ( θ 1 1 ) / ∂ θ 1 ∂ L ( θ 2 1 ) / ∂ θ 2 ] \left[\begin{array}{c}\theta_{1}^{2} \\ \theta_{2}^{2}\end{array}\right]=\left[\begin{array}{c}\theta_{1}^{1} \\ \theta_{2}^{1}\end{array}\right]-\eta\left[\begin{array}{l}\partial L\left(\theta_{1}^{1}\right) / \partial \theta_{1} \\ \partial L\left(\theta_{2}^{1}\right) / \partial \theta_{2}\end{array}\right] [θ12​θ22​​]=[θ11​θ21​​]−η[∂L(θ11​)/∂θ1​∂L(θ21​)/∂θ2​​]

二、Learning Rate存在的一些问题

gradient descent过程中,影响结果的一个很关键的因素就是learning rate的大小

1、如果learning rate刚刚好,就可以像上图中红色线段一样顺利地到达到loss的最小值
2、如果learning rate太小的话,像下图中的蓝色线段,虽然最后能够走到local minimal的地方,但是它可能会走的非常慢,以至于你无法接受
3、如果learning rate太大,像下图中的绿色线段,它的步伐太大了,它永远没有办法走到特别低的地方,可能永远在这个“山谷”的口上振荡而无法走下去
4、如果learning rate非常大,就会像下图中的黄色线段,一瞬间就飞出去了,结果会造成update参数以后,loss反而会越来越大。

面对这个问题,我们需要在不同learning rate下,把loss随着update的次数的变化可视化,根据可视化图像,对learning rate进行调整,找到最合适的learning rate。

三、Adagrad Learning Rates(Adagrad算法)

基本原则:Learning rate通常随着参数的update越来越小。

四、Stochastic Gradient Desent(随机梯度下降算法)

五、Feature Scaling(特征缩放)

六、Gradient Descent的限制


综上,gradient descent的限制是,它在gradient即微分值接近于0的地方就会停下来,而这个地方不一定是global minima,它可能是local minima,可能是saddle point鞍点,甚⾄可能是⼀个loss很高的plateau平缓高原

Regression 2相关推荐

  1. Deep Learning 学习随记(三)续 Softmax regression练习

    上一篇讲的Softmax regression,当时时间不够,没把练习做完.这几天学车有点累,又特别想动动手自己写写matlab代码 所以等到了现在,这篇文章就当做上一篇的续吧. 回顾: 上一篇最后给 ...

  2. 机器学习与高维信息检索 - Note 3 - 逻辑回归(Logistic Regression)及相关实例

    逻辑回归 Logistic Regression 3. 逻辑回归 补充: 凸性 Convexity 定义3.1 定理3.2 定理3.3 成本函数的凸性 3.1逻辑回归的替代方法 3.2 线性可分性和逻 ...

  3. 【cs229-Lecture2】Linear Regression with One Variable (Week 1)(含测试数据和源码)

    从Ⅱ到Ⅳ都在讲的是线性回归,其中第Ⅱ章讲得是简单线性回归(simple linear regression, SLR)(单变量),第Ⅲ章讲的是线代基础,第Ⅳ章讲的是多元回归(大于一个自变量). 本文的 ...

  4. 逻辑回归(Logistic Regression)简介及C++实现

    逻辑回归(Logistic Regression):该模型用于分类而非回归,可以使用logistic sigmoid函数( 可参考:http://blog.csdn.net/fengbingchun/ ...

  5. OpenCV3.3中逻辑回归(Logistic Regression)使用举例

    OpenCV3.3中给出了逻辑回归(logistic regression)的实现,即cv::ml::LogisticRegression类,类的声明在include/opencv2/ml.hpp文件 ...

  6. 逻辑斯蒂回归(Logistics Regression)

    Author: 吕雪杰,xiaoran; Datawhale Logistics Regression简介 逻辑回归是在数据服从伯努利分布的假设下,通过极大似然的方法,运用梯度下降法来求解参数,从而达 ...

  7. Linear Regression(一)——

    Linear Regression(一)-- 机器学习 回归 定义 回归的定义 在平面上存在这些点我希望能用一条直线尽可能经过它们. 于是我们画了下面的一条直线 这样的过程就叫做回归. 这个过程中我们 ...

  8. Logistic Regression

    Logistic Regression 又称逻辑回归,分类算法中的二分类算法,属于监督学习的范畴,算法复杂度低. 1.模型 Logistic Regression模型是广义线性模型的一种,属于线性的分 ...

  9. 多元回归树分析Multivariate Regression Trees,MRT

    作者:陈亮 单位:中国科学院微生物研究所 多元回归树分析 多元回归树(Multivariate Regression Trees,MRT)是单元回归树的拓展,是一种对一系列连续型变量递归划分成多个类群 ...

  10. Python使用matplotlib可视化散点图、使用seaborn中的lmplot函数可视化不同分组散点图的最优线性回归拟合曲线(Scatter plot with regression line)

    Python使用matplotlib可视化散点图.使用seaborn中的lmplot函数可视化不同分组散点图的最优线性回归拟合曲线(Scatter plot with linear regressio ...

最新文章

  1. R语言ggplot2可视化:ggplot2可视化散点图并使用geom_mark_ellipse函数在数据簇或数据分组的数据点周围添加椭圆(ellipse)进行注释(对椭圆包围的区域进行着色为阴影区域)
  2. 一个创业者的自我修养2019版
  3. JAVA 设计的七大原则
  4. 本地方法(JNI)——调用 java 方法
  5. 小米usb3.0修复补丁_今日热闻 | Redmi 10X系列发布、小米手环5产品外观曝光、Win10补丁导致蓝屏、AXON 11 SE 6月发布...
  6. 贪心——今年暑假不AC(hdu2037)
  7. myeclipse中配置maven
  8. 用c#语言制作ktv点歌系统,KTV点歌系统的设计与实现的设计和实现(C#,C/S,Access)
  9. java热门框架_java今年最流行的3大框架
  10. 算法:Invert Binary Tree(翻转二叉树)
  11. GGGIS地图下载器
  12. QT常用控件——QLabel标签控件
  13. 关于A卡和N卡对opengl驱动问题
  14. Unity TextMesh Pro标记
  15. 微服务实现网关统一鉴权-接口级别
  16. 故宫官网推荐的一日游路线
  17. 常见的状态码HTTP Status Code
  18. Uboot 编译问题-“xxx aliased to external symbol xxx”
  19. PP-ShiTu 库管理工具使用教程
  20. 100部好看的校园喜剧片(可练习英文)+美国校园青春励志电影+25部口语练习电影+20部最浪漫电影

热门文章

  1. 木马编程入门_逆向入门分析实战(一)
  2. 倚天屠龙记君临天下_战斗系统
  3. js开根号_在JavaScript中使用开平方根的sqrt()方法
  4. python生成条形码 修改图片大小
  5. 形式化方法(Formal Methods)
  6. android app实现轮播的图片视频播放video,仿淘宝商品详情的视频播放(android)
  7. linux实验手册汇总,Linux实验手册汇总(226页)-原创力文档
  8. Java篇 - 最全BigInteger和BigDecimal实战
  9. 【Logback】<appender>标签详解
  10. 在Windows7和Ubuntu上编译安装MICO