chapter 3 損失函式和優化

2021-09-22 12:59:17 字數 2606 閱讀 3425

上一章我們了解了線性分類器的函式形式:f(x,w) = x * w +b。

這裡li的計算方式為:列舉每乙個錯誤分類的值與正確分類的差,再用這個值加上設定好的安全邊界值。若和小於等於0,則該錯誤分類的損失為0;否則損失即為和。計算每個錯誤分類的損失並求和,記為該分類的損失。

如下圖為例,貓的損失函式值為(設安全邊距為1):

max(5.1 + 1 - 3.2,0) + max((-1.7) + 1 - 3.2,0) = max(0 , 2.9) + max(0 , -3.9) = 2.9 。

而汽車的損失函式為0,青蛙的損失為12.9。總的損失即為(2.9 + 0 + 12.9) / 3 = 5.3。

這種損失函式由於其函式影象的樣子,也被稱為摺頁損失函式:

其橫軸為資料正確分類的值,縱軸為損失。

上述是乙個損失函式的例項,但在實際應用時,我們要根據演算法的特點、我們關心的誤差型別,來選擇恰當的誤差函式。

關於損失函式,還有乙個問題:有時候程式為了在訓練時得到最好的結果,可能會得到過於複雜的權重和偏置。然而一般來說,這樣的分類器在測試集上執行時效果會較差。

基於這一原因以及奧卡姆剃刀的思想(「如非必要,勿增實體」).,我們在損失函式中引入乙個正則項:λr(w)。

這裡的λ是乙個超引數,也就是說它需要在程式執行前被指定。

而r(w)的計算方式由很多,常見的有以下幾種:

還有乙個常用的損失函式是多項式邏輯回歸(multinomial logistic regression,也稱為softmax)。其計算方式是,對某一輸入資料,分別計算其各個分類結果的自然指數值,並對結果歸一化。然後計算其正確分類對應的值的-ln()值。例項如下:

這兩種損失函式有乙個差異在於:當你使用摺頁損失函式時,如果你對資料的分類效能達到了設定的要求,那麼後續分類效果即使進一步提公升,也不能夠體現出來。而softmax函式則不同,它會隨著分類效果的提公升,持續降低函式值,直到值降為0為止。

上節介紹了評估w的好壞程度的方法,那麼問題來了,如何得到更好的w呢?

想象你在乙個大的山谷中散步,山谷中的每個點都對應於w的乙個設定帶來的損失,而你的工作是找到這個山谷的最低點。

以下是幾種方法:

一:隨機選取w的值,並計算其對應的損失函式值,直到其為0為之。但在實踐中這種方法非常愚蠢。

二:或許你可以跟隨坡度的變化尋找最低點。只要每次都朝向當前坡度變化最大的方向前進,我們就可以逐漸抵達山谷的最低點。對應於函式,即使選擇梯度最大的方向改變w。乙個例項如下:

對w的第乙個值進行微小的改變,並計算改變後的損失值,然後計算其梯度。然後恢復原樣,計算下乙個值,直到計算完所有的值。然後我們選擇梯度最小所對應的變化,儲存這種變化。直到分類器的效能已經足夠好。

詳細的介紹可見:

梯度下降演算法雖然非常好,但當處理大型資料時,它要一次次地進行迭代和計算,所需要的算力開銷會非常大。為了改進它,我們提出了隨機梯度下降演算法。

隨機梯度演算法不需要計算整個訓練集的誤差的梯度,而是在每次迭代時,隨機選取一部分訓練樣本,稱為小批量(minibatch)。一般選取的數量是2的指數,然後我們使用這樣本來計算損失及梯度。

有時候直接將影象資料全部輸入程式,效果會很差。為了解決這個問題,我們採取了這樣的方法:首先計算影象的各種特徵,然後將不同的特徵向量聚合到一起,得到其特徵表述。將特徵表述作為輸入資料,輸入程式。

以下是乙個體現這種做法好處的例子:

我們很難設計出乙個線性分類器來分類左邊的影象,但如果對其轉換,得到轉換特徵,就可以得到較容易使用線性分類器分類的右邊的影象。

下面是乙個特徵的例子:

對一幅,我們可以得到其顏色圖譜,並計算每類圖譜的出現次數,得到對應的直方圖,也就是乙個特徵向量。

還有乙個特徵的例子是方向直方圖:

另外乙個特徵是詞袋:

如果你得到一段話,用乙個特徵向量來表示這段話的一種方法是:統計每個詞出現的次數。這也可以應用於影象。

我們可以利用k-均值這樣的演算法,首先隨機選取幾個畫素作為簇中心,最後得到數個聚類。我們可以將每個聚類視作語句種的單詞,進而對其進行計數,得到特徵向量。

Chapter 3 棧和佇列

一 棧和佇列的基本概念 棧的基本概念 只能在一端進行插入或刪除的線性表。進行插入或刪除操作的一端稱為棧頂,另一端為棧底,棧底是固定不變的。棧的特點 filo 先進後出 棧的儲存結構 順序棧和鏈式棧 和線性表類似 棧的數學性質 當n個元素以某種順序如棧,並在入棧的過程中可以隨時出棧時,最終在所有元素經...

3 損失函式和優化

為了描述之前建立的線性分類器的分類效果,我們引入的損失函式,顧名思義,損失函式越大誤差也就越大。在下圖的任務中,將測試貓 車和青蛙輸入網路,輸出了一系列的數值,如下表。很顯然我們希望對應的分類數值越高越好,例如貓的對應cat,但是數值只有3.2,還不如對應的car的數值,所以該線性分類器會將貓這張分...

Chapter 3 棧與佇列

2.佇列 3.棧與佇列的應用 通常,棧可定義為只允許在表的末端進行插入和刪除的線性表。後進先出 lifo 棧的基本操作 解答演算法題時,若題幹未做出限制,則可直接使用這些基本的操作函式。p60 p62 利用棧底位置相對不變的特性,可讓兩個順序棧共享乙個一維資料空間,將兩個棧的棧底分別設定在共享空間的...