損失函式和梯度下降解釋

2022-06-14 11:57:06 字數 1549 閱讀 9986

損失函式(loss function)是用來估量模型的**值(我們例子中的output)與真實值(例子中的y_train)的不一致程度,它是乙個非負實值函式,損失函式越小,模型的魯棒性就越好。 我們訓練模型的過程,就是通過不斷的迭代計算,使用梯度下降的優化演算法,使得損失函式越來越小。損失函式越小就表示演算法達到意義上的最優。

多分類用的交叉熵損失函式,logsoftmax和nllloss整合到乙個類中,會呼叫nn.nllloss函式,我們可以理解為crossentropyloss()=log_softmax() + nllloss()

因為使用了nllloss,所以也可以傳入weight引數,這時loss的計算公式變為:

所以一般多分類的情況會使用這個損失函式

在介紹損失函式的時候我們已經說了,梯度下降是乙個使損失函式越來越小的優化演算法,在無求解機器學習演算法的模型引數,即約束優化問題時,梯度下降(gradient descent)是最常採用的方法之一。所以梯度下降是我們目前所說的機器學習的核心,了解了它的含義,也就了解了機器學習演算法的含義。

在微積分裡面,對多元函式的引數求∂偏導數,把求得的各個引數的偏導數以向量的形式寫出來,就是梯度。 例如函式f(x,y), 分別對x,y求偏導數,求得的梯度向量就是(∂f/∂x, ∂f/∂y)t,簡稱grad f(x,y)或者▽f(x,y)。

幾何上講,梯度就是函式變化增加最快的地方,沿著梯度向量的方向,更加容易找到函式的最大值。反過來說,沿著梯度向量相反的方向梯度減少最快,也就是更加容易找到函式的最小值。

我們需要最小化損失函式,可以通過梯度下降法來一步步的迭代求解,得到最小化的損失函式,和模型引數值。

隨機梯度下降演算法,帶有動量(momentum)的演算法作為乙個可選引數可以進行設定,樣例如下:

#

lr引數為學習率,對於sgd來說一般選擇0.1 0.01.0.001,如何設定會在後面實戰的章節中詳細說明

##如果設定了momentum,就是帶有動量的sgd,可以不設定

optimizer = torch.optim.sgd(model.parameters(), lr=0.1, momentum=0.9)

除了以上的帶有動量momentum梯度下降法外,rmsprop(root mean square prop)也是一種可以加快梯度下降的演算法,利用rmsprop演算法,可以減小某些維度梯度更新波動較大的情況,使其梯度下降的速度變得更快

#

我們的課程基本不會使用到rmsprop所以這裡只給乙個例項

optimizer = torch.optim.rmsprop(model.parameters(), lr=0.01, alpha=0.99)

adam 優化演算法的基本思想就是將 momentum 和 rmsprop 結合起來形成的一種適用於不同深度學習結構的優化演算法

#

這裡的lr,betas,還有eps都是用預設值即可,所以adam是乙個使用起來最簡單的優化方法

optimizer = torch.optim.adam(model.parameters(), lr=0.001, betas=(0.9, 0.999), eps=1e-08)

損失函式和梯度下降

前提 前向傳播經過若干個神經元,再經過啟用函式,最終得到結果,然後輸出損失函式,根據損失函式再進行反向傳播,及傳遞梯度,調整權重。並不是根據啟用偶函式輸出直接返回梯度值,而是在計算損失函式的基礎上進行反向傳播梯度。更多的是按照小批量的處理,累計梯度求平均值,最後進行梯度下降。損失函式與分類函式 sv...

損失函式與梯度下降

梯度下降演算法會依賴於導數和偏導數 導數定義 所謂導數,就是用來分析函式 變化率 的一種度量。導數越大變化率越大,導數越小變化率越小,其公式為 偏導 的英文本意是 partial derivatives 表示區域性導數 對於多維變數函式而言,當球某個變數的導數時,就是把其他變數視為常量,然後對整個函...

梯度下降解決線性回歸

今天主要是想和大家分享一下使用梯度下降解決線性回歸問題,使用的框架是tensorflow,開發環境在linux ubuntu 首先我們使用numpy的正態分佈函式隨機生成100個點,這些 x,y 對應的線性方程為y 0.1 x 0.2,weigth 0.1,bias 0.2 然後我們使用py去生成1...