損失函式:最小二乘法與極大似然估計法

__Simon發表於2021-08-02

損失函式:最小二乘法與極大似然估計法

最小二乘法

對於判斷輸入是真是假的神經網路

\[\hat y =sigmod\bigg (\sum_i (w_i\cdot x_i + b_i) \bigg) \]

為了比較單次結果與標籤\(y\)之間有多少的差距,可以直觀的得到:

\[min\ |y-\hat y| \]

當同時有\(n\)次結果時:

\[min\ \sum_{j=1}^n|y_i-\hat y_i| \]

但是絕對值在其定義域內不完全可導,因此可改為如下形式,且不改變大小關係:

\[min\ \frac{1}{2} \sum_{j=1}^n (y_i-\hat y_i)^2 \]

吳恩達老師在課上說:用最小二乘法做梯度下降法會特別麻煩,所以不建議使用,具體為什麼?

極大似然估計法

用來根據現實世界的事件發生頻率,來反推出發生這些事件最可能的概率模型是什麼樣子。

假設對於投硬幣來說,有三種硬幣,其正反面重量不同,其投的正面的概率\(\theta\)分別為\(0.1,0.7,0.8\)。某一時刻某人挑選了一種硬幣,並且投了10次硬幣\(C_i\),出現\(7\)次正,\(3\)​​次反。如何確定此人所挑選是哪種硬幣?

可以分別計算選擇不同種硬幣時發生7次正,3次反的可能性有多大,即:

\[\begin{align} L &= P(C_1,C_2,\dots, C_{10}|\theta)\\ &= \prod_{i=1}^{10}P(C_i|\theta)\\ &= \prod_{i=1}^{10}\theta ^{[C_i=1]}\cdot(1-\theta)^{[C_i=0]} \end{align} \]

\(\theta =0.1\)​​時:

\[L=(0.1)^7\cdot (0.9)^3 =7.29\times 10^{-8} \]

\(\theta =0.7\)​​​時:

\[L=(0.7)^7\cdot (0.3)^3 =2.22\times 10^{-3} \]

\(\theta =0.8\)​​​時:

\[L=(0.8)^7\cdot (0.2)^3 =1.68\times 10^{-3} \]

可以得到此人所選的硬幣最可能是\(\theta =0.7\)​的硬幣。這就是基本的似然估計。

而對於單個輸出神經網路中,給出的一張張圖片,便可以類比為丟擲的硬幣,硬幣的正反就相當於人對於圖片的標註結果(是或不是)。而神經網路要做的事,就是根據所給的圖片,求得這些圖片所表示的最可能的概率模型是什麼樣子。

對於硬幣來說每次輸入的硬幣是相同的,因此對於每一次投擲\(i\)​,其\(\theta_i=0.1\)​,而對於神經網路中的圖片來說,他們都是互不相同的,其\(\theta_i = Network_{w,b}(x_i)\)

\[\begin{align} L &= P(x_1, x_2, \dots, x_n|W,b)\\ &=\prod_{i=1}^nP(x_i|W,b)\\ &=\prod_{i=1}^nP(x_i|\theta_i)\\ &=\prod_{i=1}^{n}\theta_i ^{[x_i=1]}\cdot(1-\theta_i)^{[x_i=0]} \end{align} \]

因為\(x_i\)要麼是為真,要麼為假,因此又等於:

\[\begin{align} L &=\prod_{i=1}^n\theta_i^{x_i}\cdot (1-\theta_i)^{1-x_i}\\ log(L) &= \sum_{i=1}^n x_i\cdot log(\theta_i) +(1-x_i)\cdot log(1-\theta_i) \end{align} \]

因此我們做的就是最大化\(log(L)\),即:

\[\begin{align} max\; log(L)&=max\;\sum_{i=1}^n x_i\cdot log(\theta_i) +(1-x_i)\cdot log(1-\theta_i)\\ &=min\;-\sum_{i=1}^n x_i\cdot log(\theta_i) +(1-x_i)\cdot log(1-\theta_i)\\ \end{align} \]

其實\(\theta_i\)又可理解為神經網路的輸出即\(\hat y_i\),而\(x_i\)可理解為標籤\(y_i\),因此又可以寫成:

\[min\;-\sum_{i=1}^n y_i\cdot log(\hat y_i) +(1-y_i)\cdot log(1-\hat y_i)\\ \]

有沒有聯想到什麼?

對於多分類\(m\)神經網路模型,\(\theta_i=Network_{W,b}(x_i)\)就是一個向量,同時為了便於書寫,將\(x_i\)處理成\(one-hot\)向量,則可由公式\(6\)​往下推導:

\[\begin{align} L &=\prod_{i=1}^nP(x_i|\theta_i)\\ &=\prod_{i=1}^n\prod_{j=1}^m \theta_{ij}^{x_{ij}}\\ log(L)&=\sum_{i=1}^n\sum_{j=1}^mx_{ij}\cdot log(\theta_{ij})\\ \end{align} \]

推薦詳細講解視訊:https://www.bilibili.com/video/BV1Y64y1Q7hi

相關文章