機器學習——梯度下降演算法

yucheng1998發表於2019-07-24

前言

我們有假設函式,我們有一種方法可以衡量它與資料的匹配程度。現在我們需要估計假設函式中的引數。這就是梯度下降的地方。

概念

想象一下,我們根據其欄位繪製我們的假設函式 θ0和 θ1(實際上,我們將代價函式繪製為引數估計的函式)。我們不是繪製x和y本身,而是我們的假設函式的引數範圍以及選擇一組特定引數所產生的代價。 我們把 θ0在x軸和 θ1在y軸上,在垂直z軸上具有代價函式。我們的圖上的點將是代價函式的結果,使用我們的假設和那些特定的θ引數。下圖描繪了這樣的設定。

在這裡插入圖片描述

當我們的代價函式位於圖中凹坑的最底部時,即當它的值最小時,我們就會知道我們已經成功了。紅色箭頭顯示圖表中的最小點。

我們這樣做的方法是採用我們的代價函式的導數(一個函式的切線)。切線的斜率是該點的導數,它將為我們提供朝向的方向。我們在最陡下降的方向上降低代價函式。每個步驟的大小由引數α確定,該引數稱為學習率。

上圖中每個“星”之間的距離表示由引數α確定的步長。較小的α將導致較小的步長,較大的α將導致較大的步長。採取步驟的方向由J(θ0,θ1)的偏導數確定。根據圖表的開始位置,可能會在不同的點上結束。上圖顯示了兩個不同的起點,最終出現在兩個不同的地方。

  • 把這個影像想象為一座山,想像類似這樣的景色,公園中有兩座山,想象一下你正站立在山的這一點上,站立在你想象的公園這座紅色山上,在梯度下降演算法中 我們要做的就是旋轉360度 看看我們的周圍 並問自己 我要在某個方向上 用小碎步儘快下山,如果我想要下山,如果我想盡快走下山 這些小碎步需要朝什麼方向? 如果我們站在山坡上的這一點,你看一下週圍,你會發現最佳的下山方向,大約是那個方向,現在你在山上的新起點上,你再看看周圍,然後再一次想想,我應該從什麼方向邁著小碎步下山? 然後你按照自己的判斷又邁出一步,往那個方向走了一步,然後重複上面的步驟,從這個新的點,你環顧四周,並決定從什麼方向將會最快下山,然後又邁進了一小步,又是一小步,並依此類推,直到區域性最低點的位置 。
  • α 是一個數字 被稱為學習速率 什麼是α呢? 在梯度下降演算法中 它控制了 我們下山時會邁出多大的步子 因此如果 α值很大 那麼相應的梯度下降過程中 我們會試圖用大步子下山 如果α值很小 那麼我們會邁著很小的小碎步下山。

梯度下降演算法是: 重複直到收斂:

在這裡插入圖片描述
xd j = 0,1表示特徵索引號。 在每次迭代j,應該同時更新引數θ₁,θ₂,θ₃...,θn。在計算另一個引數之前更新特定引數j 迭代將導致錯誤的實現。
在這裡插入圖片描述
一定要先計算值,最後再更新值!

相關文章