梯度下降法(一)入門

來源:互聯網
上載者:User

梯度下降法是一個一階最佳化演算法,通常也稱為最速下降法。我之前也沒有關注過這類演算法。最近,聽斯坦福大學的機器學習課程時,碰到了用梯度下降演算法求解線性迴歸問題,於是看了看這類演算法的思想。今天唯寫了一些入門級的知識。

我們知道,函數的曲線如下:


編程實現:c++ code

/* * @author:鄭海波 * blog.csdn.net/nuptboyzhb/ * 2012-12-11 */#include <iostream>#include <math.h>using namespace std;int main(){double e=0.00001;//定義迭代精度double alpha=0.5;//定義迭代步長double x=0;//初始化xdouble y0=x*x-3*x+2;//與初始化x對應的y值double y1=0;//定義變數,用於儲存當前值while (true){x=x-alpha*(2.0*x-3.0);y1=x*x-3*x+2;if (abs(y1-y0)<e)//如果2次迭代的結果變化很小,結束迭代{break;}y0=y1;//更新迭代的結果}cout<<"Min(f(x))="<<y0<<endl;cout<<"minx="<<x<<endl;return 0;}//運行結果//Min(f(x))=-0.25//minx=1.5//Press any key to continue

問題:

迭代步長alpha為什麼要選擇0.5??選擇其他的值可以嗎?它的取值與迭代的次數、收斂性及結果的準確性有何關係?如果選擇alpha的值?下次好好的探討。

  轉載請聲明:http://blog.csdn.net/nuptboyzhb/article/details/8281923

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.