google機器學習框架tensorflow學習筆記(三)
阿新 • • 發佈:2019-01-06
降低損失:迭代法
迭代學習其實就是一種反饋的結果,有點類似於猜數遊戲,首先你隨便猜一個數,對方告訴你大了還是小了,接著你根據對方提供的資訊進行調整,繼續往正確的方向猜測,如此往復,你通常會越來越接近要猜的數。 這個遊戲真正棘手的地方在於儘可能高效地找到最佳模型。 下圖顯示了機器學習演算法用於訓練模型的迭代試錯過程: 迭代策略在機器學習中的應用非常普遍,這主要是因為它們可以很好地擴充套件到大型資料集。 “模型”部分將一個或多個特徵作為輸入,然後返回一個預測 (y') 作為輸出。圖中的“計算損失”部分是模型將要使用的損失函式。
最後,我們來看圖的“計算引數更新”部分。機器學習系統就是在此部分檢查損失函式的值。現在,假設這個神祕的綠色框會產生新值,然後機器學習系統將根據所有標籤重新評估所有特徵,為損失函式生成一個新值,而該值又產生新的引數值。這種學習過程會持續迭代,直到該演算法發現損失可能最低的模型引數。通常,您可以不斷迭代,直到總體損失不再變化或至少變化極其緩慢為止。這時候,我們可以說該模型已降低損失:梯度下降法
假設我們有時間和計算資源來計算w1 的所有可能值的損失。對於我們一直在研究的迴歸問題,所產生的損失與w1 的圖形始終是凸形。如下所示: 凸形問題只有一個最低點;即只存在一個斜率正好為 0 的位置。這個最小值就是損失函式收斂之處。 通過計算整個資料集中w1每個可能值的損失函式來找到收斂點這種方法效率太低。我們來研究一種更好的機制,這種機制在機器學習領域非常熱門,稱為降低損失:學習速率
正如之前所述,梯度向量具有方向和大小。梯度下降法演算法用梯度乘以一個稱為降低損失:隨機梯度下降法
包含隨機抽樣樣本的大型資料集可能包含冗餘資料。實際上,批量大小越大,出現冗餘的可能性就越高。一些冗餘可能有助於消除雜亂的梯度,但超大批量所具備的預測價值往往並不比大型批量高。
通過從我們的資料集中隨機選擇樣本,我們可以通過小得多的資料集估算(儘管過程非常雜亂)出較大的平均值。 隨機梯度下降法 ( SGD ) 將這種想法運用到極致,它每次迭代只使用一個樣本(批量大小為 1)。如果進行足夠的迭代,SGD 也可以發揮作用,但過程會非常雜亂。“隨機”這一術語表示構成各個批量的一個樣本都是隨機選擇的。
小批量隨機梯度下降法 ( 小批量 SGD )是介於全批量迭代與 SGD 之間的折衷方案。小批量通常包含 10-1000 個隨機選擇的樣本。小批量 SGD 可以減少 SGD 中的雜亂樣本數量,但仍然比全批量更高效。