zoukankan      html  css  js  c++  java
  • 关于牛顿法优化

    先借这个机会把两种牛顿法区分了(看到的讨论总和数值分析时记得的牛顿不一样-_-||):
    按照Wiki上的首句,切线法是用于求根的,海森矩阵是进行优化的(就此厘清一阶和二阶的困扰...)。

    有这几个问题,都是在不同地方见到的意见

    1. 牛顿法更快
    2. 牛顿法是曲面逼近,梯度法是平面

    更快

    看到有讨论说牛顿法比梯度法更快的结论(https://www.zhihu.com/question/19723347,其他地方也看到过)。想先讨论下这个。
    比如现在有个函数(f(x)=x^3),牛顿法给出的优化是(frac{3x^2}{6x}=x/2),梯度法:(3x^2),如果两者的学习率相同的话,应该是梯度法更快。这个容易理解,牛顿法是寻找极点的((Delta x)的取值要使二阶展开式的微分为0,详见Wiki上的第二式),所以牛顿法给出的是指向(x=0)的方向(对比梯度法是朝(x=-infty))。
    但如果考虑另一种情况,就会得到不同的结论。实际情况中,待优化的参数很多,并且优化面的情况也复杂。梯度法容易造成震荡。比如,上面说的函数,如果在0处是极值点,学习率为1,(x>1/3)时,梯度法出现震荡。但牛顿法步长为(x/2),可以避免。所以就整个过程来看,说快,似乎也有合理的地方。

    曲面与平面

    另外想讨论下,那张经典的维基图。原文中,每次看到,总忍不住问下,能判断出哪个是哪个么。。。
    图的注释也比较启发性。说得很在理,确切地讲,牛顿法的优势在于把函数更多的信息利用起来了(二阶),类似于逼近最优方位更细致(呃~说的是全局最优),所以能看到有用曲面平面进行对比的。
    最后回答下那个判断题(按我的理解,也只能做判断题),唯一的线索就是区分出梯度法,因为它一定是选的下降得最快的方向,然后剩下的只有牛顿法。

  • 相关阅读:
    POJ 1141 括号匹配 DP
    881. Boats to Save People
    870. Advantage Shuffle
    874. Walking Robot Simulation
    文件操作
    861. Score After Flipping Matrix
    860. Lemonade Change
    842. Split Array into Fibonacci Sequence
    765. Couples Holding Hands
    763. Partition Labels
  • 原文地址:https://www.cnblogs.com/chenyliang/p/8670843.html
Copyright © 2011-2022 走看看