1. 程式人生 > 其它 >損失函式:交叉熵

損失函式:交叉熵

損失函式:交叉熵

交叉熵用於比較兩個不同概率模型之間的距離。

資訊量

資訊量用來衡量事件的不確定性,即該事件從不確定轉為確定時的難度有多大。

定義資訊量的函式為:

\[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} \]

而:

\[\begin{align} P(\text{A球隊奪冠了})&=P(\text{A球隊進入決賽})\cdot P(\text{A球隊贏了決賽})\\ \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\)

,從不確定轉為確定性所包含的資訊量的平均值,也就是期望。即:

\[\begin{align} H(P):&=E(f_P)\\ &=\sum_{i=1}^mp_i\cdot f(p_i)\\ &=\sum_{i=1}^m p_i\cdot\big(-log_2(p_i)\big)\\ &=-\sum_{i=1}^m p_i\cdot log_2(p_i) \end{align} \]

相對熵與交叉熵

相對熵表示使用理論分佈擬合真實分佈時產生的資訊損耗。

對於兩個系統\(P,Q\)​,通過相對熵可以衡量\(Q\)​​相對於\(P\)​​​​有多大的差距,即系統\(Q\)

​想要和系統\(P\)​達到一樣的分佈的話,它們之間相差多少資訊量:

\[\begin{align} D_{KL}(P||Q)&=\sum_{i=1}^m p_i\cdot \big(f_Q(q_i)-f_P(p_i)\big)\\ &=\sum_{i=1}^m p_i \cdot \bigg( \big(-log_2(q_i)\big)-\big(-log_2(p_i) \big)\bigg)\\ &=\color{blue}{\sum_{i=1}^m p_i\cdot \big(-log_2(q_i) \big)} - \color{red}{\sum_{i=1}^m p_i \cdot\big(-log_2(p_i) \big)} \end{align} \]

可以發現上述公式中紅色部分為系統\(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} \]

是不是跟極大似然估計法的形式一模一樣?

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