機器學習、轉換與猜測

邱羿櫳
Jun 19, 2021

--

我已經將網誌轉移到Word Press 囉!Medium這裡將不再更新

陽光灑在大地上,植物將它轉換成生命所需的能量,其他的動物則將它轉換成了溫暖,或是惱人的酷暑。轉換在生活中隨處可見,也是機器學習的本質之一。更精確的說,機器學習是一種非線性轉換的方程式。我們先從最簡單的情況開始吧!假設A和B兩組資料集可以透過某個算法,從A集某一個元素,找到B集裡的一個或多個對應的元素,那麼該算法可以稱為轉換方程式,通常在代數數學裡的代號是T,方程式如下式一。機器學習所做的事情,就是找出這個T。

人類會發展代數數學的原因,有一部分是物理學上的需求。如果我們可以幫世上萬物找到互相轉換的方式,那麼某種程度上,我們就可以透過部分資訊來預測未來。舉例來說,人們發現了彈簧壓縮量與受力的關係(虎克定律),所以可以透過磅秤量體重;飛機也是人們利用流速與壓力的關係(可壓縮流體版本的白努利定律)設計出來的傑作。不同物理量之間的轉換,其結果是可重複且可預測的。所以在短時間內量很多次體重,體重計顯示的數字會是差不多的數字。也不會有飛機今天能飛,明天突然飛不起來的情形。人類的文明也因此蓬勃發展。

假使任何相關的兩件事,都可以用某個轉換來表達,那為什麼人類還沒有變得全知全能呢?理由是…轉換其實並不容易找出來。現實生活有個很討厭但很常見的性質叫做不確定性,這也是為什麼至今人類還沒有辦法成為超越神的存在的原因。這類的例子也很多,假使現在烏雲密佈,請問三十分鐘後會下雨嗎?這其實不容易回答,下雨的因素太多了,我們無法一一分析。這導致我們知道烏雲與下雨有曖昧關係,但卻沒辦法鐵口直斷的說會不會下雨。

如何用方程式描述機率?

我們剛剛知道方程式可以用於描述A資料集與B資料集之間的某種關係。但如果今天這個關係不是必然發生的呢?人類是不是就束手無策了?例如當A(烏雲密佈)發生了,跟B(下雨)的關係為何呢?有的人可能會覺得:「這個AB關係目前看起來好像不是必然的,可能是因為除了烏雲密佈,還有其他必要因素需要被考慮進去。多多測量其他物理量即可解決。」但由於成本有限,所以人類不可能測量全部可能的物理量來推測明天會不會下雨。於是偷懶成性的人類導入了機率這個概念。既然AB之間不必然會接連發生,那麼就多觀測幾次,看看A(烏雲密佈)之後,有幾次B(下雨)也發生了。如下表一:

由於烏雲密佈是我們的假設,所以A集合的元素固定為烏雲密佈(儘管晴天也是有可能下雨的)。而B集合含有兩個元素:「下雨」和「沒下雨」。我們可以分別計算他們機率,令P為機率、a為資料集A裡的元素、b為資料集B裡的元素,如下式二、三:

如果B集合中的元素多於兩個,那怎麼辦呢?例如今天你的遠房親戚到你家拜訪,炫耀地拿出他們家去東非肯亞與稀有動物的合照。他知道你學識淵博,問你那隻動物叫什麼名字。此時腦海中快速閃過的所有曾經看過的動物,但是沒有任何一隻看起來像是這張照片裡,受到嚴重驚嚇而一臉呆滯的陌生野獸。

此時A資料集就是世界上眾多動物照片的其中一張。因為你那親切的遠房親戚已經指定好了希望你回答的照片,所以在這個命題裡,我們不用考慮A資料集的其他元素作為前提的情況。B資料集就是動物的種類,有見過的也有許多沒見過的。我們缺了太多資訊,它摸不到,也沒有辦法查閱大英百科全書,身邊也沒有生物學專家可以諮詢,只有面前一臉期待的看著你的遠方親戚。所以你決定孤注一擲,猜一個看起來差不多的動物,於是我們的大腦成了轉換T,如下式四。

由於這個場合發生在平行時空(你不會想要有這樣的親戚的,請相信我),所以我們可以假設一些令我們方便計算的東西:那裡的地球上只有四種動物Alpha、Beta、Gamma及Human(人類)。跟據學校教的知識,你猜這張圖為這四種其中一種動物的機率為0.60、0.25、0.10及0.05。上述說法可以寫成下面的式五:

值得注意的是,遠房親戚拍的這張動物照片,實際上只對應到一隻動物。但由於我們並沒有足夠的知識回答這個問題,所以我們只能用「猜」的,我們的大腦形成了一個機率分佈P 來描述AB之間的關係,但這未必是AB之間真正的關係。

我們猜錯了多少?

「Alpha!」你用堅定的口氣說,即使其實心裡還不太確定。其實你有一點想猜「Beta」或是「Gamma」,甚至還有「工作人員假扮的」這樣滑稽的選項,因為我們長這麼大,還不曾看過哪一隻動物被嚇到之後,還會留在原地不逃跑的。幸好這位不常見面的遠房親戚並不博學,也沒有要賣弄他的知識。只是點點頭,心滿意足的走了。後來你還是厚著臉皮要了一張拷貝,然後在小學課本上查到了這隻動物應該就是Alpha。可是好學的你並不滿足於這樣的成就。

但最重要的是要在下一次猜得更準,因為你是一位正面的人。從照片上我們可以看到一些改進的可能性:「可能頭上的獨角是重要的特徵吧」「沒有多少動物像它一樣有三隻眼睛」「我敢說這是唯一一種被嚇到但不會逃走的物種」。有許多想法同時湧入腦海,看來以後有這些特徵時,猜「Alpha」就對了。但也許沒那麼絕對。聽說在大洋的另一端,有人已經發現了頭上長角的Beta。發現自己的解答其實並不可行,你感到有些沮喪,但我們還是有方法的。

猜得更準是一個大問題,我們要拆解它,變成兩個主要的小問題。第一、我的預測與真正的答案差多少?第二、要如何讓預測更接近真實。我們把第二個提問留給下個章節。面對第一個小問題,我們可以機率化我們的預測,然後直接跟真實解答做比較。你回憶了剛才的預測P(x| photo):Alpha為0.6、Beta為0.2、Gamma為0.15、還有Human(工作人員假扮)的機率為0.05。由於事實上圖中的動物就是Alpha,所以Alpha實際上是1,其他物種的可能性為零。我們把預測與真實的機率P_real(photo| x)相減,如下表二:

太好了!我們的預測與真實之間的差距算出來了,這是一個好的開始。但此時內心有點不太踏實,因為如果能用一個純量表達的話,就更容易衡量不同預測之間的差距了。此時剛好國中的數學老師過來拜訪你,他覺得可以用「平均而言,這個轉換有多令人驚訝」來表達,因為猜錯的話我們多少會感到驚訝。假設驚訝的程度可以被數值化,我們希望機率越低的選項擁有越高的驚訝值,因為它很少出現,一出現就會導致我們手足無措。令平均驚訝值(surprise)為預測與現實之間的差距,你隨筆寫下算法如下式六:

然而這樣的算法有一個致命的缺點,那就是驚訝值的最大值會發生在p_i=0.5,跟我們的假設不合。我們希望越少發生的事件對驚訝值有越大的貢獻。你的數學老師認為用-log(p)表達有多驚訝事件p會發生會更好。令驚訝值為-log(p)、平均驚訝值為surprise。老師借你的筆寫下式七:

這個算法使得平均驚訝值成為嚴格遞減函數,用來表達那些極少出現的事件的驚訝值剛剛好。其實各位用什麼算式來表達平均驚訝值都是可以,因為它只是一種概念,不限制一定要使用某種物理量。只要能夠表達出:第一、越少發生的事越令人驚訝;第二、驚訝的程度會隨這機率的降低而加速成長(不只是成長,而是加速成長)。滿足這兩個條件就是好的定義。

咦,為什麼式七左邊的p是用p_real 而不是p_pred 呢?請讓我凸顯一個事實:「我們認為它是什麼動物」跟「事實上它是什麼動物」的機率分佈並不相同。我們認爲他是多種動物的其中一種,但實際上從他打出生開始就是Alpha了。所以「平均驚訝值」應該以真實的機率p_real作為權重,以自己的預測為驚訝值,才是合理的估算。拿出為了大學微積分課而買的工程計算機,你算出了動物猜謎的平均驚訝值是-log(0.65)。這讓你覺得很滿意,因為這是一個很公正的方式用來評量自己有多驚訝。

如何猜得更準?

是時候來面對第二個小問題了:要如何讓預測更接近真實?假設有另一個人已經知道照片上是什麼動物了,也做出了預測,如下式八。毫不意外地,他的預測是100% 的Alpha,此時他的平均驚訝值為0。(註:對於已經知道答案的人而言,平均驚訝值不一定是零。如果該事物的本質就具有不確定性的話,那平均驚訝值就必然大於零。)從數學上可以證明,不可能有人可以得到更低的平均驚訝值,因此這是一個很好的基準點。將基準點與自己的平均驚訝值相減後,得到的純量可以代表預測與事實之間的差異。那我們應該如何利用他呢?

古靈精怪的你已經在一秒鐘內想出299792458種方法,非常接近上帝的極限。但普遍的作法是將「預測與事實差距」作為一個方程式,微分它並找到微分為零的點,若能找到,此時的方程式就是最佳的猜題策略了。我們令平均驚訝值surprise和基準點\hat{surprise}相減為Divergence(簡稱D),如下式八:

但微分要怎麼做呢?目前的科技我們依然很難幫腦袋內的神經元作微分,但電腦的話可以。所以現在決策者由電腦接手,我們更進一步的假設,剛剛的動物預測是由某個多變數的函數算出來的。就算實際上有幾個參數你並不清楚,還是可以寫成一個擁有許多參數的黑盒子的樣子。

式九的意思是,一個由參數theta調控的轉換,認為photo中的動物為x的機率為P_pred(x | photo, theta)。theta 不一定是一個參數,它通常是一組數、由多個獨立的參數組成。如此一來預測與現實的差距(D) 就可微了,為求方便,我們把P_real 簡稱為p;P_pred 則由另一個字母q 替代,並且用字母i來代表不同的預測選項:

p 對theta 微分必為零,因為p 是真實的機率,與我們的預測無關,所以可忽略不寫。dq/d theta可以從黑盒子微分求得。這個方程式告訴我們如果要讓預測與事實的差距(D) 變小,則黑盒子的參數(theta)應該要調整多少。事實上我們很難透過這個微分方程式直接找到最佳解,因為這樣的微分方程式有很多個,數量由theta的參數數量決定。為了提高方程式的能力,Theta通常有成千上萬個參數。解出「萬元聯立微分方程式」並不現實,實際上工程數學的二元一次微分方程式就已經夠嗆的了。但如果我們只從出發點走非常小的一步,那麼不同參數之間的影響就可以忽略,使得式十可以近似於式十一:

再提醒一次,式十一的微分方程式的數量跟Theta參數的數量是一樣多的。我們忽略了參數之間的影響,但沒有減少方程式的數量。至此我們將問題簡化為多個常微分方程式,計算的難度大大降低。接著使用數值法(numerical solution)就可以一步一步的更新參數,直到接近最佳解。因爲更新參數的方法並不在本篇的討論範圍內,所以我做一個簡單的比喻來描述。更新參數就像在滑雪,滑雪選手不斷的往低處(較佳解)走,根據地形(參數空間)隨時改變前進方向,最後在最低處(最佳解)停下來。

備註

我刻意地避免使用太多專有名詞,因為我認為一件事情的意義不在於他的名字,而是他能做到的事情。但如果讀者有興趣延伸閱讀的話,暸解正確的專有名詞是必要的。

我所指的「平均驚訝值」就是「交叉熵(cross entropy)」,意思是如果用一個預測來描述一個事實的話,其預測出錯的程度。 然而事實本身也有不確定性,數學上叫做熵 (entropy),意思是用事實機率取樣兩次,兩次得到的結果不同的程度。 Kullback與Leibler使用交叉熵與熵的差當作「預測與事實之間的差距」(KL Divergence),並廣泛地被應用在統計學以及資訊工程。

--

--

邱羿櫳
邱羿櫳

Written by 邱羿櫳

This is 邱羿櫳( Chiu, Yi-Lung), a data scientist on potential customers analysis using machine learning.