天天看點

梯度下降梯度下降

梯度下降

引入:當我們得到了一個目标函數後,如何進行求解?

直接求解?(并不一定可解,線性回歸可以當做一個特例)

正常套路:機器學習的套路就是我交給機器一堆資料,然後告訴它什麼樣的學習方式是對的(目标函數),然後讓它朝着這個方向去做

如何優化:一口吃不成胖子,我們要靜悄悄的一步步的完成疊代(每次優化一點點,積累起來就是個大成績)

目标函數: J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m ( h θ ( x i ) − y ( i ) ) 2 J(\theta_{0},\theta_{1})=\frac{1}{2m}\sum_{i=1}^{m}(h_{\theta}(x^{i})-y^{(i)})^{2} J(θ0​,θ1​)=2m1​∑i=1m​(hθ​(xi)−y(i))2

梯度下降梯度下降

尋找山谷的最低點,也就是我們的目标函數終點(什麼樣的參數能使目标函數達到極值點)

下山分幾步走?(更新參數)

(1)找到目前最合适的方向

(2)走那麼一小步,走快了該“跌倒”了

(3)按照方向與步伐去更新我們的參數

梯度下降,目标函數: J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m ( h θ ( x i ) − y ( i ) ) 2 J(\theta_{0},\theta_{1})=\frac{1}{2m}\sum_{i=1}^{m}(h_{\theta}(x^{i})-y^{(i)})^{2} J(θ0​,θ1​)=2m1​∑i=1m​(hθ​(xi)−y(i))2

一般有三種梯度下降的方式:

批量梯度下降: ∂ J ( θ ) ∂ θ j = − 1 m ∑ i = 1 m ( y i − h 0 ( x i ) ) x j i \frac{\partial J(\theta)}{\partial \theta_{j}}=-\frac{1}{m}\sum_{i=1}^{m}(y^{i}-h_{0}(x^{i}))x_{j}^{i} ∂θj​∂J(θ)​=−m1​∑i=1m​(yi−h0​(xi))xji​

(容易得到最優解,但是由于每次考慮所有的樣本,速度很慢)

随機梯度下降: θ j ′ = θ j + ( y i − h θ ( x i ) ) x j i \theta_{j}^{'}=\theta_{j}+(y^{i}-h_{\theta}(x^{i}))x_{j}^{i} θj′​=θj​+(yi−hθ​(xi))xji​

(每次找一個樣本,疊代速度快,但是不一定每一次都朝着收斂的方向)

小批量梯度下降法: θ j : = θ j − α 1 10 ∑ k = i i + 9 ( h θ ( x ( k ) ) − y ( k ) ) x j ( k ) \theta_{j}:=\theta_{j}-\alpha \frac{1}{10}\sum_{k=i}^{i+9}(h_{\theta}(x^{(k)})-y^{(k)})x_{j}^{(k)} θj​:=θj​−α101​∑k=ii+9​(hθ​(x(k))−y(k))xj(k)​

(每次更新選擇一小部分資料進行計算,實用!!!)

梯度下降學習率

學習率(步長):對結果會産生巨大的影響,一般取值小點

如何選擇:從小的時候選擇,不行再小

批處理數量:32,64,128一般都可以,很多時候還得考慮記憶體和效率

梯度下降梯度下降

繼續閱讀