損失函式:交叉熵
損失函式:交叉熵
交叉熵用於比較兩個不同概率模型之間的距離。
資訊量
資訊量用來衡量事件的不確定性,即該事件從不確定轉為確定時的難度有多大。
定義資訊量的函式為:
\[f(x):=\text{資訊量} \]假設對於某8只球隊進行比賽,對於其中任意一直球隊,假設奪冠的概率為\(\frac{1}{8}\)。對於一條訊息“A球隊奪冠了”其資訊量應該等於“A球隊進入決賽”加上“A球隊贏了決賽”之和。即:
\[\begin{align} f(\text{A球隊奪冠了})&=f(\text{A球隊進入決賽})+f(\text{A球隊贏了決賽})\\ f(\frac{1}{8})&=f(\frac{1}{4})+f(\frac{1}{2}) \end{align} \]而:
因此可以推出(其中\(x_i\)表示事件\(i\)在系統\(X\)中發生的概率,下同):
\[f(x_1\cdot x_2) = f(x_1)+f(x_2) \]因此可以定義資訊量函式(負號是因為事件發生的概率越小,所包含的資訊量越大):
\[f(x) = -log_2(x) \]熵
熵用來衡量一個系統所包含的資訊量有多少。它衡量一個系統的不確定程度,或者混亂程度。
對於一個系統\(P\)來說,要求整個系統的資訊量,也就是求系統中每個事件\(i\)
相對熵與交叉熵
相對熵表示使用理論分佈擬合真實分佈時產生的資訊損耗。
對於兩個系統\(P,Q\),通過相對熵可以衡量\(Q\)相對於\(P\)有多大的差距,即系統\(Q\)
可以發現上述公式中紅色部分為系統\(P\)的熵,當系統P沒有變化時,這部分是一個恆值。而藍色部分也就是交叉熵,定義為\(H(P,Q)\)。
又根據吉布斯不等式:
\[\text{若}\sum_{i=1}^np_i=\sum_{i=1}^nq_i=1,\text{且}p_i,q_i\in[0,1]\text{,則有:}\\ -\sum_{i=1}^np_i\cdot log(p_i)\le -\sum_{i=1}^np_i\cdot log(q_i) \]可知相對熵恆大於\(0\)。因此若想要\(Q\)系統的概率模型與\(P\)系統的概率模型儘可能相似,只要最小化交叉熵即可。
深度學習中的交叉熵
神經網路的目標:
\[\begin{align} min\;H(P,Q) &= -\sum_{i=1}^m p_i\cdot log_2(q_i) \end{align} \]在深度學習中,系統\(P\)可以用資料集所表示。系統\(Q\)可以用神經網路模型表示。同樣只考慮判斷輸入是真是假的神經網路,對於\(n\)個數據中的第\(i\)個數據,它在系統\(P\)裡發生的概率,也就是為真的概率為\(y_1\),為假的概率為\(1-y_i\),同時他在系統\(Q\)裡為真的概率,也就是經過神經網路後的輸出為\(\hat y_i\),為假的概率為\(1-\hat y_i\)。因此交叉熵又可表示為:
\[\begin{align} H(P,Q)&=-\sum_{i=1}^n p_i\cdot log_2(q_i)\\ &=-\sum_{i=1}^ny_i\cdot log_2(\hat y_i)+(1-y_i)\cdot log_2(1-\hat y_i) \end{align} \]是不是跟極大似然估計法的形式一模一樣?
到這裡可以把\(p_i,q_i\)的意義具體化,其實\(p_i\)應該理解為資料\(i\)在系統\(P\)中的概率分佈。同理\(q_i\)應該理解為資料\(i\)在系統\(Q\)中的概率分佈。對於判斷輸入是真是假的神經網路相當於資料\(i\)的輸出只有兩種可能,為真或者為假,對於多分類\(m\)神經網路,資料\(i\)的輸出有\(m\)種可能,交叉熵又可表示為:
\[\begin{align} H(P,Q)&=-\sum_{i=1}^np_i\cdot log_2(q_i)\\ &=-\sum_{i=1}^n\sum_{j=1}^mp_{ij}\cdot log_2(q_{ij}) \end{align} \]是不是跟極大似然估計法的形式一模一樣?