機器學習模式是以迭代的方式來降低損失,這種方法有點像"hot and cold"這種兒童遊戲,在遊戲中,隱藏的物品就是最佳模型,剛開始我們會胡亂猜測,比如w=0,然後系統告訴我們損失是多少,然後我們再重新猜測乙個值,看看損失是多少,通常我們會越來越接近目標。問題是我們如何盡可能高效的找到最佳的模型。
迭代在機器學習中的應用非常普遍,這主要是因為他們可以很好的擴充套件到大型資料集。
模型將特徵(乙個或多個)作為輸入,返回乙個**值作為輸出。我們在這裡考慮乙個特徵與乙個輸出結果的模型:
y = wx + b
我們應該為w和b設定哪些初始值呢?事實證明初始值並不重要(在該模型中),我們可以隨機選擇值,在這裡我們選擇一些無關緊要的值。
w=0, b=0
假設第乙個特徵值為10,我們這裡**到的結果為 0*(10) + 0 = 0。
計算損失會要求兩個輸入值(**值和真實值),機器學習系統會檢測這些值,並生成新的w和b.新的w,b又會生成新的**值,從而生成新的loss值,如此迭代下去。
通常我們經過不斷迭代,直到該演算法發現了損失很低的模型或者總體損失不再變化或者變化緩慢為止。這時我們稱模型已經收斂。
梯度下降法:
如果我們有時間和資源去計算w所有可能值的損失,對於我們一直研究的問題,損失-weights的圖形始終是凸形的。
凸形的好處是只有乙個最低點:即只有乙個斜率為0的位置(不存在區域性最優解問題),這個最小值就是損失函式收斂的位置。
當然我們可以計算資料集中每個w可能的損失函式來找到收斂方法,但是這種方法的效率太低,我們有一種更好的機制,這個機制在學習領域中非常熱門,稱為 梯度下降法。
梯度下降法首先為 w選擇乙個初始值,起點並不重要,很多演算法直接把w設定成0或選擇乙個值。
然後,梯度下降法演算法會計算損失曲線在起點處的梯度。簡而言之,梯度是偏導數的向量;它可以讓您了解哪個方向距離目標「更近」或「更遠」。請注意,損失相對於單個權重的梯度就等於導數。
梯度在整個機器學習中使用的非常的普遍,因此理解梯度有助於理解整個模型。
梯度始終指向損失函式增長最迅猛的方向(梯度的增長與損失函式的增長是同向的),因此,我們只要沿著負梯度的方向走(梯度下降的方向走),就可以盡快的降低損失。
為了確定損失曲線上的下乙個點,梯度下降法會將梯度大小的一部分與起點相加。乙個梯度步長將我們移動到損失曲線上的下乙個點。然後,梯度下降法會重複此過程,逐漸接近最低點。
學習速率:
梯度是乙個向量(具有方向和大小),梯度下降演算法用梯度乘以乙個學習速率(有時也被稱為步長)的標量,來確定下乙個點的位置。
如果梯度大小為2.5,學習速率為0.01,則梯度下降演算法會選擇距離前乙個點0.025的位置作為下乙個點。
(通常學習速率設定不能超過1,如果你在輸出的時候發現nan值的問題,很有可能是學習速率過高而導致的.)
同樣如果學習速率選擇過小,我們將會需要很長的時間來使得模型收斂。
「每個回歸問題都存在乙個金髮姑娘學習速率。「金髮姑娘」值與損失函式的平坦程度相關。如果您知道損失函式的梯度較小,則可以放心地試著採用更大的學習速率,以補償較小的梯度並獲得更大的步長。」
原文中的金髮姑娘指最佳的學習速率。
隨機梯度下降法:
在梯度下降法中,批量是指單次迭代中計算梯度的樣本總數,目前為止,我們假定的批量都是整個資料集,然而資料集過於龐大而且具有海量特徵的時候,單次迭代就需要花費海量的時間。
包含隨機抽樣樣本的資料集可能存在冗餘的資料。實際上,批量大小越大,冗餘資料出現的可能性越高。一些冗餘可能有助於消除雜亂的梯度,但超大批量所具備的**價值往往並不比大型批量高。
如果我們通過更少的資料量得到正確的梯度,通過我們隨機選擇樣本,我們可以通過小的多的資料集來估算出較大(資料集)的平均值。
隨機梯度下降法(sgd)將這種思路發揮到了極致,它每次只迭代乙個樣本,如果進行足夠的迭代,sgd也可以發揮作用(雖然過程顯得非常雜亂)。
小批量sgd:
介於梯度下降法和隨機梯度下降法之前,單次迭代樣本通常為10-1000個隨機選擇的樣本。小批量sgd可以減少sgd的雜亂,但仍然比全批量更高效。
梯度下降法也適用與包含多個特徵的特徵集。
此章為書中的介紹內容,關於優化演算法不止以上幾種,比如常見的adam演算法。梯度下降法有其侷限性,尤其是在rnn網路中。關於學習速率,我們甚至可以設定動態的學習速率。在這裡暫不作介紹。
谷歌寫的教程中看似均是一些概念性問題,但是在實際使用中,這些概念往往可以讓我們更加深刻的了解我們所構造的模型。
機器學習 降低損失
迭代學習可能會讓您想到 hot and cold 這種尋找隱藏物品 如頂針 的兒童遊戲。在我們的遊戲中,隱藏的物品 就是最佳模型。剛開始,您會胡亂猜測 w1 的值為 0。等待系統告訴您損失是多少。然後,您再嘗試另一種猜測 w1 的值為 0.5。看看損失是多少。哎呀,這次更接近目標了。實際上,如果您以...
降低損失 學習速率
reference 正如之前所述,梯度向量具有方向和大小。梯度下降法演算法用梯度乘以乙個稱為學習速率 有時也稱為步長 的標量,以確定下乙個點的位置。例如,如果梯度大小為 2.5,學習速率為 0.01,則梯度下降法演算法會選擇距離前乙個點 0.025 的位置作為下乙個點。超引數 每個回歸問題都存在乙個...
降低損失 迭代方法
迭代學習類似與 hot and cold 這類兒童遊戲 以下為機器學習演算法用於訓練模型的迭代試錯過程 整個機器學習過程中使用相同的迭代方法詳細說明各種複雜情況,尤其處於暴風雨中的藍雲區域 模型 部分將乙個或多個特徵作為輸入,然後返回乙個 y 作為輸出 y b w1x1對於線性回歸問題,事實證明初始...