Untitled 2










机器学习

梯度下降

  • 可导函数在任一点的梯度是自变量空间中的一个向量(二元函数的梯度是 xy 平面上的向量,而不是 xyz 空间里的向量)
  • 函数图形在这一点的切平面的法向量投影在自变量空间中,就是该点梯度的反方向。
  • 某点的梯度是函数以及它的切平面在该点上升最快的方向,即方向导数最大的方向。梯度的长度(模)就是在该方向的方向导数(变化率)。
  • 梯度向任何自变量空间方向的投影的长度(模)是函数在该方向上的方向导数(变化率)。
  • 梯度可以是 0 向量。在梯度为 0 向量的点上各方向的变化率都为 0 。这是函数达到极大/极小值的一阶必要非充分条件(例如鞍点不是极大/极小值,但是梯度也为 0 )。

caffe 中gradient checker

  • 采用的差分法

//Compute derivative of top w.r.t. each bottom and parameter input using finite differencing.

  • 源码:

estimated_gradient = (positive_objective - negative_objective) / stepsize_ / 2.;

<span class="kd">public</span> <span class="kd">class</span> <span class="nc">HelloWorld</span><span class="o">{</span>
<span class="kd">public</span> <span class="kd">static</span> <span class="kt">void</span> <span class="nf">main</span><span class="o">(</span><span class="n">String</span><span class="o">[]</span> <span class="n">args</span><span class="o">){</span>
<span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">printly</span><span class="o">(</span><span class="s">"Hello World!"</span><span class="o">);</span>
<span class="o">}</span>
<span class="o">}</span>
<span class="cp">#include <stdio.h></span>
<span class="k">using</span> <span class="k">namespace</span> <span class="n">std</span><span class="p">;</span>
<span class="kt">int</span> <span class="nf">main</span><span class="p">(){</span>
<span class="n">print</span><span class="p">(</span><span class="s">"hello world!"</span><span class="p">);</span>
<span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
<span class="p">}</span>


posted @ 2017-07-02 21:26  yizhichun  阅读(209)  评论(0编辑  收藏  举报