日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

小批量梯度下降算法步骤_TensorFlow从0到1 - 6 - 解锁梯度下降算法

發布時間:2023/12/19 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 小批量梯度下降算法步骤_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(以后會專門討論初始化的技巧);
  • v → v' = v - η▽Cv(v移動到v',▽Cv是v處的梯度值,η保持不變);
  • v' → v'' = v' - η▽Cv'(v'移動到v'',▽Cv'是v'處的梯度值,η保持不變);
  • ...
  • 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 - 解锁梯度下降算法的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。