精华内容
下载资源
问答
  • 今天学习回归算法的过程中,对于常见到的名词:极大似然、最小二乘以及梯度下降做一个总结 机器学习的基本框架大都是模型、目标和算法! 如何让模型尽可能好的拟合或者分类数据呢?那么就需要有目标函数,所以要...

    今天学习回归算法的过程中,对于常见到的名词:极大似然、最小二乘以及梯度下降做一个总结

    机器学习的基本框架大都是模型、目标和算法!

    如何让模型尽可能好的拟合或者分类数据呢?那么就需要有目标函数,所以要定下模型的cost function,其中的获取损失函数的方法。

    对于线性回归,可以采用他的似然函数、或根据最小二乘,写出他的损失函数。

    对于逻辑回归,采用似然函数求他的损失函数。

     而采用何种优化算法,则可以使用最小二乘法、梯度下降法等。

    问题1:最小二乘和最小均方误差的区别?

    最小二乘:预测值和真实值差的平方和

    均方误差:预测值和真实值差的期望,是一种加权最小二乘,权值为概率!

    加权最小二乘:根据实际问题考虑每个求和项的重要程度,即加权值w,

     

    均方误差估计是针对概率模型,二乘估计是针对确定性模型

     

     问题2:为什么逻辑回归不用最小二乘?

    主要是逻辑回归采用最小二乘获得损失函数的话,比较复杂,容易陷入局部最优

     

    转载于:https://www.cnblogs.com/pinking/p/8722342.html

    展开全文
  • 最小二乘梯度下降的关联与区别

    千次阅读 2016-06-18 12:08:57
    共同点两者都是下图等式的极值: 最小二乘最小二乘直接对其中每个θ偏导数,如下图: 如上图可以看出,其不需要迭代计算。梯度下降经变换后算法: α为步长。以上为迭代算法,缺点是在接近最小点时,收敛变慢。...

    不同点

    最小二乘是指的列出最佳拟合的函数,梯度下降是一种求极值的一种方法。两者有本质区别。

    最小二乘

    最小二乘直接对其中每个θ求偏导数,如下图:

    图片

    如上图可以看出,其不需要迭代计算。

    梯度下降

    经变换后算法:

    图片
    α为步长。以上为迭代算法,缺点是在接近最小点时,收敛变慢。
    附矩阵形式的算法,为非迭代:

    图片
    X向量是训练集的特征向量,Y向量是训练集的真实值向量

    展开全文
  • 非线性最小二层我们先考虑一个最小二乘问题: , 是一个任意的非线性函数。如果 是个数学形式上很简单的函数,那问题也许可以用解析形式来。令目标函数导数为0,求解 的最优值,就和一个二元函数的极值一样: 解...

    前言

    主要摘取高博士 视觉SLAM14讲里内容,结合知乎里一些优秀回答总结而成。

    非线性最小二层

    我们先考虑一个最小二乘问题:

    是一个任意的非线性函数。如果
    是个数学形式上很简单的函数,那问题也许可以用解析形式来求。令目标函数导数为0,求解
    的最优值,就和求一个二元函数的极值一样:

    9aaed2d808e143f9e677fd99ab20167a.png

    解此方程,就得到了导数为0的极值。它们可能是极大,极小或者鞍点值,只要挨个比较它们的函数值即可。但是,这个方程是否容易解取决于

    导函数的形式。
    有可能是一个非常复杂的非线性方程。通常对于不方便求解的最小二层问题,我们可以用
    迭代的方式,从一个初始值出发,不断更新当前的优化变量,使目标函数下降。具体的步骤可列写如下:

    a8c5dfbe4080cd3b3266fd258de76efc.png
    迭代求解非线性最小二层问题

    这让求解导函数为零的问题,变成了一个不断寻找梯度并下降的过程。直到某个时刻的增量非常小,无法再使函数下降。此时算法收敛,目标达到了一个极小,我们完成了寻找极小值的过程。在这个过程中,我们只要找到迭代点的梯度方向即可,而无需寻找全局导数为0的情况。

    接下来的问题是,增量

    如何确定? 实际上研究者们已经花费了大量精力探寻增量的求解方式(每年够一大堆博士毕业的)。
    我们将介绍两类方法,他们用不同的手段来寻找这个增量。

    一阶和二阶梯度法

    求解增量最直观的方式是将目标函数在

    附近进行泰勒展开:

    其中

    关于
    的导数(雅克比矩阵),而
    则是二阶导数(海森(Hessian))矩阵。我们可以选择保留泰勒展开的一阶或二阶项,对应的求解方法则为一阶梯度或者二阶梯度法。如果保留一阶梯度,那么增量方向为:

    他的直观意义很明显,只要按照反响梯度的方向前进即可。当然,我们还需要该方向上取一个步长

    ,求得最快的下降方式,这种方法被称作
    最速下降法。(当然,由下图可以看出,如果不是梯度的反方向,只要是在梯度反方向附近(±90°范围内),都可以达到函数值下降的效果,怎么选就有学问了,这就超出本文范围了,不再展开。)

    5f36736a022c7646dfc0c8ce6ef2c895.png
    用等高线描述的二维梯度下降法

    另一方面,如果保留二阶梯度信息,那么增量方程为:

    求右侧等式关于

    的导数并令他为零,就得到了增量的解:

    eb4319c31d502263523b89c7bdfaa6e1.gif
    牛顿法求根的逼近过程

    该方法称之为牛顿法。我们看到,一阶和二阶梯度法都非常直观,只要把函数在迭代点进行泰勒展开,并针对更新量作最小化即可。由于泰勒展开之后变成了多项式,所以求解增量时只需解线性方程即可,避免了直接求导函数为零这样的非线性方程的困难。不过,这两种方法也存在它们自身的问题。最速下降法过于贪心,容易走出锯齿路线,反而增加了迭代次数。而牛顿法则需要计算目标函数的H 矩阵,这在问题规模较大时非常困难,我们通常倾向于避免H 的计算。所以,接下来我们详细地介绍两类更加实用的方法:高斯牛顿法和列文伯格——马夸尔特方法。

    总结

    • 一阶梯度法,也叫最速下降法:
    • 二阶梯度法:也叫牛顿法:

    高斯牛顿法(GN)

    GN(Gauss-Newton)是优化算法力最简单的方法之一。它的思想是将

    进行一阶的泰勒展开(注意不是目标函数
    ):

    其中

    的导数,是一个雅克比矩阵。根据前面的框架,当前的目标是为了寻找下降矢量
    ,使得
    达到最小。为了求
    ,我们需要求解一个线性最小二乘问题:

    这个方程与之间的有什么不一样呢? 根据极值条件,我们将上述目标函数对

    求导,并令其导数为零。由于这里考虑的是
    的导数而不是
    ,我们最后将得到一个线性方程。为此,先展开目标函数的平方项:

    c028de69756ff4be17b2bea5ea6ff2ca.png

    注意,我们要求解的变量是

    ,因此这是一个
    线性方程组,我们称为增量方程,也叫高斯牛顿方程,也叫正规方程。我们把左边系数定义为
    ,右边定义为
    ,则上式变为:

    这里把左侧记做

    是有意义的,对比牛顿法。 GN用
    作为牛顿法中的二阶Hession. 从而省略H的过程。
    求解增量方程式整个优化问题的核心所在。如果能顺利求解次方程,那么GN算法步骤如下:

    7a956d3e3f60fd87f4d6d0cf18a97665.png

    高斯牛顿法性质讨论

    从算法步骤可以看到,增量方程的求解占据着主要地位。原则上,它要求我们所用的近似H矩阵是可逆的,但实际数据中计算得到的

    却只有半正定性。也就是说,在使用GN时,可能出现
    为奇异矩阵的情况,此时增量稳定性较差,导致算法不收敛。更严重的是,计算我们假定H非奇异,如果求出来步长
    太大,也会导致我们采用的局部近似不够准确。

    尽管GN有这些缺点,但是它依然值得我们去学习,因为在非线性优化里,相当多的算法都可以归结为GN的变种。这些算法都借助了GN的思想并修正GN的缺点。例如一些线搜索方法(line search method),这类改进就加入了标量

    ,在确定了
    进一步找到
    使得
    达到最小,而不像GN那样简单的令

    Levenberg-Marquadt

    LM方法在一定程度上修正了这些问题,一般认为它比GN更为鲁棒。尽管它的收敛速度可能比GN慢,被称之为阻尼牛顿法.由于GN中采用近似的二阶泰勒展开只能在展开点附近有较好的近似效果,所以我们很自然的想到应该给

    添加一个信赖区域(Trust Region),不能让它太大使得近似不准确。非线性优化有一系列这类方法,这类方法也被称之为
    信赖区域方法(Trust Region Method)。在信赖区域里面,我们认为近似是有效的,出了这个区域,近似可能会出问题。

    那么如何确认这个信赖区域的范围?一个比较好的方法是根据我们的近似模型跟实际函数之间的差异来确定。如果差异够小,我们让范围尽可能大。如果差异大,我们就缩小这个近似范围。因此,可以考虑使用

    31abdd3aec9675a73eb67dbf8b723e7c.png

    来判断泰勒近似是否够好,

    的分子式实际函数下降的值,分母是近似模型下降的值。如果
    接近于1,则近似是好的。如果
    太小,说明实际减小的值远少于近似减少的值,这认为近似比较差。反之,如果
    比较大,则说明实际下降的比预计的更大,我们可以放大近似范围。

    于是,我们构建一个改良版的非线性优化框架,该框架比GN有更好的效果:

    28e2defb1136741074a05c382dcc5192.png
    LM算法

    这里近似范围扩大的倍数和阈值都是经验值,可以替换成别的数值。在6.24里,我们把增量限定于一个半径为

    的球中,认为只在这个球内才是有效的。带上
    之后,这个球可以看成一个椭球。在Levenberg提出的优化方法中,把
    取成单位阵
    ,相当于直接把
    约束在一个球内。随后Margaurdt提出将
    取成非负对角阵,实际中通常用
    对角线元素的平方根,使得在梯度小的维度上约束范围更大一些。

    不论如何,在LM中,我们都需要解6.24那样的一个子问题来获得梯度。这个子问题是带不等式约束的优化问题,我们用Largrange乘子将它转化为一个无约束优化问题:

    bb191e0a0be50d190604dc848e94083b.png

    这里

    为Lagrange乘子。类似于GN的做法,把它展开后,我们发现该问题的核心仍是计算增量的线性方程:

    140926aaccd19af58db25f54aa481624.png

    可以看到,增量方程相比于GN, 多了一项

    。如果考虑它的简化形式,既
    ,那么相当于求解:

    我们看到,当参数

    比较小时,
    占主要地位,这说明二次近似模型在该范围内是比较好的,LM方法更接近于GN法。另一方面,当
    比较大时,
    占主要地位,LM更接近于一阶梯度下降法,这说明附近二次近似不够好。LM的求解方法可以一定程度避免线性方程组的系数矩阵非奇异和病态问题,提供更稳定更准确的增量
    .

    在实际中,还存在许多其他方式来求解函数增量,例如Dog-Leg等。我们在这里所介绍的,只是最常见而且最基本的方式,也是视觉SLAM 中用的最多的方式。总而言之,非线性优化问题的框架,分为Line Search 和Trust Region 两类。Line Search 先固定搜索方向,然后在该方向寻找步长,以最速下降法和Gauss-Newton 法为代表。而TrustRegion 则先固定搜索区域,再考虑找该区域内的最优点。此类方法以L-M 为代表。实际问题中,我们通常选择G-N 或L-M 之一作为梯度下降策略。

    参考

    1. 高翔, 视觉SLAM十四讲
    2. METHODS FOR NON-LINEAR LEAST SQUARES PROBLEMS 2004
    3. https://zhuanlan.zhihu.com/p/33162840
    4. https://zhuanlan.zhihu.com/p/113946848
    展开全文
  • title: 梯度下降求解最小二乘 date: 2018-05-11 01:31:10 ...梯度下降求解算法是一种迭代算法,即在求最小二乘的时候 朝向梯形负方向(梯形正方向定义为增长速度最快)按照一定步长迭代下降 直到符合我...

    title: 梯度下降求解最小二乘 date: 2018-05-11 01:31:10 tags: [机器学习,梯度下降法]

    最近烫金学长正在学习机器学习,我也抽闲时间上了车~ github (以下都是自己根据末尾文章不理解的地方瞎记录.

    梯度下降法

    求解一元线性

    梯度下降求解算法是一种迭代算法,即在求最小二乘的时候 朝向梯形负方向(梯形正方向定义为增长速度最快)按照一定步长迭代下降 直到符合我们的预期要求 (步长也就是定义的学习率

    我们使用机器学习就是拟合我们所需要的方程,使它尽可能的符合预期的"模仿方程式" 即对于一个一元线性方程,我们代入训练数据,使它每个数据点与预期点的差异越小就好啦~ 即对于y=ax+b,我们可以求ax+b-y作为代价函数(我们评判学习结果的依据模型) 根据一系列的转换,我们可以得到下面关于一元方程偏导

    然后就是使用代码翻译公式

    # encoding: utf-8
    from sklearn import linear_model
    
    alpha = 0.01
    # 精度设定
    epsilon = 1e-8
    # 目标函数y=2x+1
    x = [1., 2., 3., 4., 5., 6., 7., 8., 9.]
    y = [3., 5., 7., 9., 11., 13., 15., 17., 19.]
    
    # scikit-learn的求解方法
    def solve_by_scikit():
        # 使用scikit-learn求解
        # reg = linear_model.SGDClassifier(loss="hinge", penalty="l2")
        # reg.fit(x, y)
        print("暂无")
    
    
    # 采用梯度下降法求解一元线性回归
        def solve_by_gradient():
        # 获取循环的长度
        m = len(x)
        a, b, sse2 = 0, 0, 0
        while True:
            grad_a, grad_b = 0, 0
            for i in range(m):
                # 求(a*x(i)+b-y[i])的a,b偏导
                # 这里使用common感觉更好,公式相同处
                common = a * x[i] + b - y[i]
                grad_a += x[i] * common
                grad_b += common
    
                grad_a = grad_a / m
                grad_b = grad_b / m
    
                # 梯形下降(梯形负方向,速度下降最快)迭代求符合最小值的a,b
                # alpha设置迭代步长,即学习率
                a -= alpha * grad_a
                b -= alpha * grad_b
    
                sse = 0
                for j in range(m):
                    sse += (a * x[j] + b - y[j]) ** 2 / (2 * m)
                # 拟合结果判断相差绝对值
                if abs(sse2 - sse) < epsilon:
                    break
                else:
                    sse2 = sse
            print('{0} * x + {1}'.format(a, b))
    
    def main():
        try:
            print("scikit模拟结果:")
            solve_by_scikit()
            print("梯形下降模拟结果:")
            solve_by_gradient()
        except BaseException as e:
            print("\n=>错误: ", e)
    
    if __name__ == "__main__":
        main()
    复制代码

    求解多元

    待研究

    PS:机器学习方便还是很要求数学基础的,可以说都是数学问题~

    参考文章:梯度下降从放弃到入门 梯度下降小结

    展开全文
  • 梯度下降算法 以下内容参考 微信公众号 AI学习与实践平台 SIGAI 导度和梯度的问题 因为我们做的是多元函数的极值求解问题,所以我们直接讨论多元函数。多元函数的梯度定义为: 其中称为梯度算子,它作用于一个多元...
  • 最小二乘

    千次阅读 2016-09-26 13:20:12
    最小二乘策略是误差的最小平方和,对应两种情况:线性和非线性。线性情况下的解是closed-form solution(通过最小二乘法求得,这种情况下可以找到全局最优解)。而非线性的情况没有closed-form solution,通常用...
  • 一般所讲最小二乘是一大类问题,而不是方法。 Ng所讲的最小二乘法,是一种切结线性最小二乘问题的方法。...最小二乘的目标:误差的最小平方和,对应线性和非线性 对于线性最小二乘的解释closed-form,即x=; 对于非
  • 非线性最小二乘问题

    2013-09-16 13:53:33
    非线性最小二乘问题原理方法: 由于的fi(x)非线性性,此时按梯度等于 0 得到的是一个非线性方程组,求解困难。常用的 基本思想是用一系列线性最小二乘问题求解该 非线性最小二乘问题:设x(k) 是解的第k次近似, 在x...
  • 最小二乘矩阵求解与正则化 最小二乘是最常用的线性参数估计方法,早在高斯的年代,就用开对平面上的点拟合线 对高维空间的点拟合超平面。 作为最小二乘代价函数的改进 式中 ℷ >0  则称为正则化参数 ...
  • 再论最小二乘

    2016-09-19 17:06:00
    标签(空格分隔): ...本篇博客将从目标函数驻点及梯度下降的角度比较二者的不同。 最小二乘 目标函数 目标函数实际是从拟合中残差服从高斯分布推导出来的,但实际我们可以直接使用: \(J(\theta) = \frac{1}{2...
  • 极大似然、交叉熵、最小二乘是用来计算损失(loss)的 梯度下降、牛顿法是用来优化的 深度学习训练的时候每一轮都会计算输出loss然后根据梯度下降法进行优化 公式 最小二乘法 交叉熵 牛顿法 极大似然 区别 最小...
  • 第1部分介绍最小二乘的基础流程; 第2部分介绍牛顿法; 第3部分介绍梯度下降法; 第4部分介绍高斯牛顿法; 第5部分介绍列文伯格-马夸特法; 第6部分介绍几种方法的联系。 1、最小二乘 我们想要求解的问题是...
  • 1、最小二乘也可以拟合二次函数 我们都知道用最小二乘拟合线性函数没有问题,那么能不能拟合二次函数甚至更高次的函数呢?答案当然是可以的。下面我们就来试试用最小二乘来拟合抛物线形状的的图像。 对于二次函数来...
  • SLAM中二维视觉的定位问题被最终归为一个最小二乘问题,那么紧随其后的就是对最小二乘的最优化求解,对其解析解显然是不太合适的,所以就需要一些数值的最优化方法对最小二乘问题进行求解,在SLAM中,常用的算法有...
  • 在SLAM的过程中,我们可以构建机器人状态过程。...那么如何求解最小二乘呢?本文将详细的介绍SLAM过程中求解最小二乘的方法。阅读指引:第1部分介绍最小二乘的基础流程;第2部分介绍牛顿法;第3部分介绍梯度下降法...
  • 对于多元线性回归要拟合最好的直线,要使得误差平方和最小,课本上的方法都是偏导,并使其为0,然后求解线性方程组。 但是还有很多其他方法可以达到上述效果,Andrew在大样本和小样本的情况下给出了两种梯度下降...
  • 通常我们所说的狭义的最小二乘,是指在线性回归下采用最下二乘准则,进行线性拟合参数求解。 由于是基于线性回归,所以可以很容器出全局最优解,而不是像梯度下降那样一点点的迭代优化最后达到极值点。 而广义的...
  • 在SLAM的过程中,我们可以构建机器人状态过程。...那么如何求解最小二乘呢?本文将详细的介绍SLAM过程中求解最小二乘的方法。阅读指引:第1部分介绍最小二乘的基础流程;第2部分介绍牛顿法;第3部分介绍梯度下降法...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 137
精华内容 54
关键字:

最小二乘求梯度