小批量梯度下降算法步骤_TensorFlow从0到1 - 6 - 解锁梯度下降算法
上一篇5 TF輕松搞定線性回歸,我們知道了模型參數訓練的方向是由梯度下降算法指導的,并使用TF的封裝tf.train.GradientDescentOptimizer(0.01)(學習率為0.01)完成了機器自學習的過程。本篇開啟梯度下降算法的黑盒一探究竟,并解鎖幾個TF API常用參數的真正含義:
- learning rate;
- steps;
- epoch;
- batch。
一般函數的最小值問題
4 第一個機器學習問題引入了損失函數的定義,即待訓模型參數為自變量,計算模型輸出的均方差。函數C(a,b)的最小值處的(a, b)值即我們要找的模型參數的最優解。
損失函數本節將之前損失函數自變量a和b一般化表示為v1,v2,把求解損失函數的最小化問題,轉換為更一般的函數C(v1,v2)最小化問題,C(v1,v2)具有任意的函數形式。如果找到一般的函數最小值求解方法,那么具有特殊形式的損失函數最小值求解自不在話下。
對于C是一個或者少數幾個變量的函數,可以通過函數極值點處的導數特性來獲得多元方程組,直接求解極值點。但是我們準備放棄這種嘗試,因為對于一個真實世界的機器學習問題,其模型的復雜程度通常會遠遠的高于線性模型,參數的個數遠不止兩個,損失函數的形式會變成:C(v1, v2 ... vn),如果n數以億計,用微積分的方法簡直就是噩夢。
雪山速降的啟發
把損失函數想象成前面圖中的雪山,直覺上速降的最佳路徑就是沿著雪山最陡峭的方向下山。
如果我們不能直接看出函數的最小值,或者通過直接求解的方式得到函數最小值,那么利用雪山速降的啟發,總是沿著最陡峭的下降方向移動,就會最快到達最小值點。
回到數學的角度,考慮有兩個自變量的二次函數C(v1, v2),它是一個曲面。假設有個小球靠自身重力滾落到曲面的底部,可以想象其路徑也是沿著“最陡峭”的方向的。
那么“最陡峭”在數學上的表達是什么呢?
梯度下降梯度的定義
微積分告訴我們,當把v1,v2,..., vn各個自變量移動一個很小的值,C將有如下變化:
微積分梯度定義有:
梯度v的變化量為?v ≡ (?v1, ?v2, ..., ?vn)T,則C的變化量可重寫為梯度向量▽C與v的變化向量?v的點乘:
C的增量梯度下降算法
直覺上,如果v朝某個方向上移動,導致C的增量是個負數,那么就說明C在“下降”。
開下腦洞,直接令?v = -η▽C,其中η是一個正數,代入公式B-C-F-3有:
?C ≈ -η▽C·▽C = -η‖▽C‖2 ≤ 0,此時?C一定小于等于0,C在下降。
幸運的是,數學上可以證明對于一個非常小的固定步長,?v = -η▽C可以使C的減小最大化。這就是說,-η▽C是我們期望v移動的正確方向!其中η是學習率learning rate。
“最陡峭的一小步”的數學解釋就是沿著梯度的負方向上走一小步。“梯度下降”,名副其實。
只要一小步一小步朝著正確的方向移動,遲早可以走到C(v1, v2, ..., vn)的最小值處。
梯度下降的具體操作方法如下:
v移動的次數,即訓練的步數steps。
v是各個自變量(v1, v2, ..., vn)的向量表示,那具體到每個自變量該如何移動呢?以v1,v2為例:
分量的增量隨機梯度下降算法
到此,梯度下降算法解決了如何尋求一般函數C(v1, v2, ..., vn)的最小值問題(這個算法在有些情況下會失效,會在后面討論),那么馬上應用到機器學習吧。可是別急,還差一小步。
損失函數回到損失函數,再仔細看看其形式,發現它有個特別之處,即函數表達式與訓練樣本集密切相關。原因是它是每個樣本方差的累加,最后再求均值。訓練樣本集通常成千上萬,為了求取▽C難道真的需要先代入所有訓練樣本嗎?
實踐中,其實不是這樣的,而是有更加巧妙的方法:
樣本梯度均值損失函數的梯度▽C,可以通過單個樣本梯度值▽Cx的均值得到。計算單個樣本的梯度值▽Cx是相對容易的。如果你對這個公式持懷疑態度,這不奇怪,一個簡單的消除疑慮的做法就是用之前的線性模型和損失函數,用兩個樣本值分別計算一下等式兩邊,看是否相等即可。
可即便如此,對于樣本集成千上萬個樣本,對每個樣本x都求其▽Cx,計算量還是太大了。假如故意減少樣本數量會怎么樣呢?也就是說,用一個小批量樣本,通過其中每個樣本▽Cx的均值,來近似計算▽C:
樣本梯度均值的近似這就是實踐中采用的方法,被稱為隨機梯度下降法。那個小批量樣本就是一個batch。
把全部樣本集分成一批批的小樣本集,每全部遍歷使用過1次,就稱為1次迭代,即epoch。
據此,每個自變量更新的公式如下:
分量的增量總結
以上是生活随笔為你收集整理的小批量梯度下降算法步骤_TensorFlow从0到1 - 6 - 解锁梯度下降算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 特斯拉法律部门亮剑:正打造全方位内部诉讼
- 下一篇: coverity代码检测工具介绍_兴业证