IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [原]线性回归的最小化函数

    caimouse发表于 2017-03-03 14:55:28
    love 0

    在这个世界里,你知道得越多,就发现有更多的不知道,就在知道与不知道之间来回寻找,这个世界就是这样神奇。当你正在看NG的公开课时,就像这样在知与不知中寻找,或者在其中迷茫,或紧张,或张望,希望有人拉你一把。当看到下面这个公式时:


    这个就是一个变量的线性回归最优化函数,NG当时没有解释为什么这样定义的,只是让这个J函数最小化,就可以达到最优化的线性方程回归了。同时,你如果看过我前面的文章,也会发现TensorFlow的例子里是这样来定义损失函数的:

    loss = tf.reduce_mean(tf.square(y - y_data))

    可以看到这里,tf.square(y - y_data)就是计算y - y_data的平方, tf.reduce_mean是计算所有平方的平均值,但没有除以2,因为除与不除都是一样的收敛性,所以省略了这个不必要的除法,还可以加快计算速度。

    但是我很好奇这个一元变量的损失函数是怎么得来的呢?在原来的视频里没有解释,也许是我还没有看到。后来仔细翻看讲义,后面有推导整个过程,详细如下:




    整个过程是通过《概率论》来推导的,然后通过似然函数(这里又引出了不知的概念?)变换,再对公式两边取对数,因为要l函数最大化,就是要后面负数项最小化,也就是推导出来最前面的公式了。

    有了这个公式和理论支持,当遇到线性回归的问题时,就可以使用这个公式来构造损失函数,最后判断损失函数最小化,就达到判断训练是否达标了。因此,就可以把这个损失函数放入代码中:

    # Minimize the mean squared errors.
    loss = tf.reduce_mean(tf.square(y - y_data))
    optimizer = tf.train.GradientDescentOptimizer(0.5)
    train = optimizer.minimize(loss)

    给定了判断标准,就可以给大量的数据来训练这个神经元,让你的机器学会预测房价,或者预测股市的波动。

    不过,这里只是一元的线性回归,比较单一的,如果想模拟复杂的情况,比如达到100个变量的模型,那么就得寻找更多不知道的东西了,这个世界就是这么神奇,当你知道了,又发现很多的不知道。


    1. C++标准模板库从入门到精通 

    http://edu.csdn.net/course/detail/3324

    2.跟老菜鸟学C++

    http://edu.csdn.net/course/detail/2901

    3. 跟老菜鸟学python

    http://edu.csdn.net/course/detail/2592

    4. 在VC2015里学会使用tinyxml库

    http://edu.csdn.net/course/detail/2590

    5. 在Windows下SVN的版本管理与实战 

     http://edu.csdn.net/course/detail/2579

    6.Visual Studio 2015开发C++程序的基本使用 

    http://edu.csdn.net/course/detail/2570

    7.在VC2015里使用protobuf协议

    http://edu.csdn.net/course/detail/2582

    8.在VC2015里学会使用MySQL数据库

    http://edu.csdn.net/course/detail/2672







沪ICP备19023445号-2号
友情链接