• LMS Algorithm 最小均方算法


    承接上一篇博文中的线性回归中的的cost function。我们想要找出能使得 J(θ)最小的θ(也叫weights)。

     其中J(θ)如下所示:

    为了做到使其值最小,让我们使用一个search algorithm,起先对θ做初始猜测,并且不断的改变θ来使得J(θ)最小,直到我们有希望地收敛于θ值最小化J(θ)。具体来说,我们考虑一下梯度下降算法(gradient desent algorithm)。

    一、梯度下降算法(gradient desent algorithm)、batch gradient descent(批梯度下降)stochastic gradient descent (also incremental gradient descent)随机梯度下降(递增梯度下降)

    它开始于某个初始化的θ,并且不断地执行update(更新):

    这个更新同时执行了j从0到n。

    参数: α是learning rate(学习率)。

    这是一个很自然的算法,它就是不断重复执行一个朝J的最大减速方向(最陡下降方向)的步骤。

    为了执行这个算法,我们必须弄清楚等式右边的偏导数项是什么。让我们首先解决这个问题,如果我们只有一个训练样例(x,y)(training sample),那么我们就可以忽略J的定义公式中的求和sum。

    针对一个单一的训练样例,给定update rule:

    (这个rule就叫做LMS update rule,也叫做Widrow-Hoff learning rule)

    当只有一个训练样例的时候,我们得出了LMS rule。对于多个示例的训练集,有两种方法可以修改此方法。

    第一种方法就是用以下的算法替代它,

    此算法查看每个步骤中整个训练集中的每个示例,并且也叫做batch gradient descent(批梯度下降)

    第二种方法可以代替批梯度下降算法,同样也很好:

    在这个算法中,我们反复运行训练集,并且每次遇到训练样例时,我们仅根据与单个训练样例相关的误差梯度来更新参数。这个算法叫做 stochastic gradient descent (also incremental gradient descent)随机梯度下降(递增梯度下降)。 batch gradient descent在执行一个step之前都要浏览一下整个训练集,但是这在m非常大的情况下是一个costly 的操作,同时,stochastic gradient descent 就可以make progress,并且持续对它所look at的每个样例make progress.因此,通常情况下,stochastic gradient descent 得到接近使得J最小值的θ要比batch gradient descent要更加快。但是要注意,它可能永远不会“收敛”到最低限度,和参数θ将振荡最小的J(θ);但在实践中,大部分接近最小值的值都是合理的接近最小值的近似。由于这些原因,特别是当训练集很大时,随机梯度下降通常比批量梯度下降更受欢迎。

    一生有所追!
  • 相关阅读:
    Netty实现Unity登录验证(三)
    Netty实现Unity登录验证(二)
    Netty实现Unity登录验证(一)
    Unity RPC 链接
    摄像机跟随物体,修复物体遮挡
    Character Shader 含半透明及受击效果
    空Shader重新指认工具
    Box波浪运动的一种实现
    查找所有有多个 Texture 的 Matrial
    数据生成XML导入Excel
  • 原文地址:https://www.cnblogs.com/BlueBlue-Sky/p/9316514.html
Copyright © 2020-2023  润新知