Machine Learning 學習筆記 03 最小二乘法、極大似然法、交叉熵
損失函式
神經網路裡的標準和人腦標準相比較 相差多少的定量表達。
最小二乘法
首先要搞明白兩個概率模型是怎麼比較的。有三種思路,最小二乘法、極大似然估計,交叉熵
當一張圖片人腦判斷的結果是 \(x1\),神經網路判斷的結果是 \(y1\),直接把它們相減 \(\left|x_{1}-y_{1}\right|\) 就是他們相差的範圍。我們將多張圖片都拿過來判斷加起來,當最終值最小的時候,\(\min \sum_{i=1}^{n}\left|x_{i}-y_{i}\right|\) 就可以認定兩個模型近似。
但是絕對值在定義域內不是全程可導的,所以可以求平方 \(\min \sum_{i=1}^{n}\left(x_{i}-y_{i}\right)^{2}\)
就這是最小二乘法,但是隻用它判斷兩個概率模型差別有多少,去作為損失函式會比較困難。所以引入極大似然估計
極大似然估計
似然值是真實的情況已經發生,我們假設它有很多模型,在這個概率模型下,發生這種情況的可能性就叫似然值。
挑出似然值最大的,那可能性也就越高,此時的概率模型應該是與標準模型最接近的。
\[\begin{array}{l} P\left(C_{1}, C_{2}, C_{3}, \ldots, C_{10} \mid \theta\right) \\ P\left(x_{1}, x_{2}, x_{3}, x_{4}, \ldots, x_{n} \mid W, b\right) \end{array} \]\(\theta\)
在神經網路是這樣的引數下,輸入的照片如果是貓概率是多少、如果不是貓概率是多少,所有圖片判斷後,相乘得到的值就是似然值。取到極大似然值就是最接近的值。
但在訓練的時候 \(W、b\)
\(x_{i}\) 的取值是 \(0、1\) ,符合二項伯努利分佈,概率分佈表示式為
\[f(x)=p^{x}(1-p)^{1-x}=\left\{\begin{array}{ll} p, & x=1 \\ 1-p, & x=0 \end{array}\right. \]\(x=1\) 就是圖片為貓的概率。而 \(p\) 就是 \(y_{i}\) (神經網路認定是貓的概率),將其帶入替換 $ P\left(x_{i} \mid y_{i}\right)$
\[=\prod_{i=1}^{n} y_{i}^{x_{i}}\left(1-y_{i}\right)^{1-x_{i}} \]我們更喜歡連加,在前面加 \(log\) ,並化簡
\[\begin{array}{l} \log \left(\prod_{i=1}^{n} y_{i}^{x_{i}}\left(1-y_{i}\right)^{1-x_{i}}\right) \\ =\sum_{i=1}^{n} \log \left(y_{i}^{x_{i}}\left(1-y_{i}\right)^{1-x_{i}}\right) \\ =\sum_{i=1}^{n}\left(x_{i} \cdot \log y_{i}+\left(1-x_{i}\right) \cdot \log \left(1-y_{i}\right)\right) \end{array} \]所以,求極大似然值,就是求如下公式
\[\begin{array}{l} \max \left(\sum_{i=1}^{n}\left(x_{i} \cdot \log y_{i}+\left(1-x_{i}\right) \cdot \log \left(1-y_{i}\right)\right)\right) \\ \min -\left(\sum_{i=1}^{n}\left(x_{i} \cdot \log y_{i}+\left(1-x_{i}\right) \cdot \log \left(1-y_{i}\right)\right)\right) \end{array} \]複習一下對數
- $\log _{a}(1)=0 $
- $ \log _{a}(a)=1 $
- \(負數與零無對數\)
- \(\log _{a} b * \log _{b} a=1\)
- $ \log _{a}(M N)=\log _{a} M+\log _{a} N $
- $\log _{a}(M / N)=\log _{a} M-\log _{a} N $
- $ \log _{a} M^{n}=n \log _{a} M(\mathrm{M}, \mathrm{N} \in \mathrm{R}) $
- $ \log _{a^{n}} M=\frac{1}{n} \log _{a} M $
- $a^{\log _{a} b}=b $
交叉熵
要想直接比較兩個模型,前提是兩個模型型別是同一種,否則就不能公度。概率模型如果想要被統一衡量,我們需要引入熵(一個系統裡的混亂程度)。
資訊量
我們想獲取資訊量的函式,就要進行定義。並找尋能讓體系自洽的公式。
\[{f}({x}):=\text { 資訊量 }\\ {f}( 阿根廷奪冠 )={f}( 阿根廷進決賽 )+{f}( 阿根廷贏了決賽 ) \\ f\left(\frac{1}{8}\right)=f\left(\frac{1}{4}\right)+f\left(\frac{1}{2}\right)\\ P(\text { 阿根廷奪冠 })=P(\text { 阿根廷進決賽 }) \cdot {P} \text { (阿根廷贏了決賽 })\\ \]將上面的第四條公式帶入第三條得到如下第二條。為了使資訊量定義能讓體系自洽,我們給定定義 \(log\),這樣符合相乘變相加的形式。
\[\begin{array}{c} f(x):=? \log _{?} x \\ f\left(x_{1} \cdot x_{2}\right)=f\left(x_{1}\right)+f\left(x_{2}\right) \end{array} \]為了符合我們最直觀的感覺,因為概率越小,資訊量越大。而 \(log\) 函式單調遞增,我們轉換方向。
\[\begin{array}{c} f(x):=-\log _{2} x \\ f\left(x_{1} \cdot x_{2}\right)=f\left(x_{1}\right)+f\left(x_{2}\right) \end{array} \]看計算機裡多少位資料,給計算機輸入一個16位資料,輸入之前隨便取的值是 \(1/2^16\) 的概率 ,輸入之後的概率直接變為了 \(1\) 。資訊量就是 \(16\) 位元。
資訊量可以理解為一個事件從原來不確定到確定它的難度有多大,資訊量大,難度高。
熵不是衡量某個具體事件,而是整個系統的事件,一個系統的從不確定到確定難度有多大
它們都是衡量難度,單位也可以一樣都是位元。
系統熵的定義
將上方對系統貢獻的資訊量可以看成是期望的計算。
KL散度
KL散度絕對是大於等於\(0\)的,當\(Q、P\)相等的時候等於\(0\),不相等的時候一定大於\(0\)
為了讓\(Q、P\)兩個模型接近,所以必須使交叉熵最小
交叉熵中 \(m\) 是兩個概率模型裡事件更多的那個,換成 \(n\) 是圖片數量。
對\(m\)選擇的解釋:假如\(p\)的事件數量是\(m\),\(q\)的事件數量是\(n\),\(m>n\),那麼寫成\(∑\)求和,用較大的\(m\)做上標。就可以分解為,\(∑1到n+∑n+1到m\),那麼對於\(q\)來說,因為\(q\)的數量只有\(n\),那麼對應的\(q\)的部分\(∑n+1到m\)都等於\(0\)。
\[\begin{array}{l} \boldsymbol{H}(\boldsymbol{P}, \boldsymbol{Q}) \\ =\sum_{i=1}^{m} p_{i} \cdot\left(-\log _{2} q_{i}\right) \\ =\sum_{i=1}^{n} x_{i} \cdot\left(-\log _{2} q_{i}\right) \\ =-\sum_{i=1}^{n}\left(x_{i} \cdot \log _{2} y_{i}+\left(1-x_{i}\right) \cdot \log _{2}\left(1-y_{i}\right)\right) \end{array} \]\(P\) 是基準,要被比較的概率模型,我們要比較的人腦模型,要麼完全是貓要麼不是貓。最後我們推匯出來,公式跟極大似然推匯出來的是一樣的。但是從物理角度去看兩者是有很大不同的,只是形式上的一樣。
- 極大似然法裡的 \(log\) 使我們按習慣引入的,把連乘換成相加。而交叉熵的 \(log\) 是寫在資訊量定義裡的,以 \(2\) 為底,計算出來的單位是位元,是有量綱的。
- 極大似然法求的是最大值,我們按習慣求最小值。而交叉熵負號是寫在定義裡的。