Data Scientist 工作日常 | 人工智能是如何訓練出來的?
這篇科普文章,旨在介紹如何使用大數據訓練機器解決不同問題:由辦識圖片、挑選廣告受眾、以至文本理解,都可以「特徵 -> 標籤」的套路解決。
不知道有多少文友看過日劇《輪到你了》 — — 在《反擊篇》中,研究生二階堂(橫濱流星)見翔太(田中圭)苦苦思念愛妻菜奈(原田知世),為他做了一個 AI 菜奈手機 APP,與翔太的對話彷如菜奈真人宛在。🥺
到底當今的人工智能(AI)技術能否做到劇中的 AI 菜奈 APP 呢(文末會討論)?我想藉此文跟大家談談當下的 AI 技術可以做到的事。在進入詳情之前,先給大家分享一個以前沿深度學習技術訓練出來的閱讀理解 AI bot。大家不妨出些題目考考它,看它的能力去到什麼程度。
AI 這個名詞涵蓋的範圍很廣。行內,我們稱科幻電影裡像人一般、可以應付生活上各種問題的機械人為 General AI;只精於解決一個特定問題的,我們稱之為 Narrow AI。
當下 Data scientists 擁有的技術,實際上僅屬 Narrow AI 而已 — — 機器能夠做什麼,依然取決於背後操作的人為它定的訓練目標。 不過,只要運用得宜,Narrow AI 可以解決許多問題,而且在準確度方面可以做得比人好。
訓練機器的流程是怎樣的呢?機器不懂得自行思考和判斷自己做得好不好,得先由人定義其學習目標,以及提供足夠的例子,讓它「學習」數據和你想預測的結果(標籤)之間的關係。*
*註:這種需要「特徵」和「標籤」的機械學習方法叫監督式學習(supervised learning),是在商業應用之中最常用的技巧。此外,還有強化式學習(reinforcement learning)與非監督式學習(unsupervised learning),本文範圍尚未觸及。有機會會再寫文章介紹。
舉個簡單的例子:如果我想教機器辨別有癌細胞和沒有癌細胞的肺部 X-ray 片,我得輸入大量肺部 X-ray 片的圖像作為特徵(features),還有每一張 X-ray 片的標籤(labels. 1 = 有癌細胞;0 = 沒有癌細胞),讓機器「學習」圖像色彩分佈和標籤之間的關係。訓練完後,給它一張新的 X-ray 片,它就能基於過往所學,估算這張 X-ray 片裡有癌細胞的機率。
訓練過程: 特徵(X-ray片圖像)+ 標籤(1 = 有癌細胞;0 = 沒有癌細胞) --> 機器/數學模型 判別過程: 特徵(X-ray片圖像) --> 機器/數學模型 --> 標籤(有癌細胞的機率,介乎 0 至 1)
Data scientist 日常的工作,就是把一些商業問題轉化成這種「特徵 + 標籤」的格式,並蒐集適用的數據去訓練機器解決問題。例如,假設現在有兩名陣營對立的總統候選人 B 和 T,若 B 委託我為他發放選舉廣告,而我手上有大部份選民(e.g. 2億人)的 Facebook 活動記錄,並知道其中 100 萬人有捐款支持 B 或 T,那我就可以用那 100 萬人的資料去建立一個估算選民支持 B 機率的模型:
訓練過程: 特徵:100萬捐款者 Facebook 上的活動(如 like/share/status/comment/check-in 等) 標籤:1 = 支持 B(有捐款給 B);0 = 不支持 B(有捐款給 T) 判別過程: 特徵:2億選民 Facebook 上的活動 標籤:支持 B 的機率,介乎 0 至 1
機器生成的不是非黑即白的標籤,而是一個機率,愈大的機率代表支持 B 的可能性愈高。得到這些機率之後,我可能會給機率界乎 0.3–0.7 的選民發放 B 的選舉廣告,因為支持機率少於 0.3 的肯定是 T 的鐵粉,而支持機率大於 0.7 的大概不看廣告也會投票給 B。當然,這只是一個虛構的例子 — — 以什麼機率作為界線,取決於機率在選民之間如何分佈,以及你有多少廣告經費。
以上我舉了兩個標籤均為二元的例子(1/0),但標籤可以是多元的,例如你可以訓練機器識別照片裡的是貓、狗、抑或兩者皆非。
訓練過程: 特徵:彩色圖像 標籤:(1, 0, 0) = 貓;(0, 1, 0) = 狗;(0, 0, 1) = 兩者皆非
這訓練流程並非只能解決分類(classification)問題——創意無限的 computer scientists 透過這個流程,還能訓練機器去處理需要理解文字的問題!
機器不能像嬰兒般牙牙學語,但我們能否訓練它「量化」字詞的意思呢?若把巨量的文章輸入機器之中,機器能否透過觀察文章裡字詞的舖排(語境),從而得把字詞區分成相近、相類或有類比關係呢?
Google 團隊在 2013 年發表了一篇論文,分享了訓練機器去量化字詞意思的方法,為文本裡每一個字都找到一支在高維度空間的對應向量(i.e. Vector,以下我以 V(…) 代表向量),稱為詞向量 (Word Vector/Word Embedding)。相近/相類的字詞,在這高維度空間的距離會較接近。
生成這些詞向量的訓練流程是怎樣的呢?
訓練過程: 數據:Google News 數據庫 (有大約 1000 億英文字) 特徵:文本裡每一個字前面的兩個字和後面的兩個字(這方法叫 skip-gram) 標籤:中間的是什麼字
咦?慢著。這個訓練過程,跟上面所舉的兩例有點不同。詞向量是我們想要的結果,但它在訓練過程中並不是標籤——若我們早已知道每一個字可以如何用數字表述,在以文字作特徵的訓練中,我們直接使用就可以。(現在的問題是:我們並沒有這樣的數字表述。)
🤔 那,詞向量是如何從中產生的呢?
當要執行上述任務「猜中間的是什麼字」,機器內部得產生代表每個字的向量,才能預測到中間的是哪個字——這過程中的產物才是我們想要的詞向量。Google把這產品命名為word2vec。
經過如此大型的讀本訓練(1000 億英文字的文本!),這些詞向量能夠應用於普遍的文本理解問題。除了能量化字詞的相近程度,它們還有個很有趣的特徵:有類比關係的字詞之間的詞向量差也相像(e.g. V(“China”) — V(“Beijing”) 跟 V(“Russia”) — V(“Moscow”) 相像;Beijing是 China 的首都,Moscow是Russia的首都。見下圖。)
有了這些詞向量,Data scientist 就可用機器做很多事情,例如可以量度你在 Facebook 上分享的貼文和某些政治事件多大關係、看看你和友人有否透過貼文表達相反意見、或者以詞向量作為另一個訓練過程所用的特徵。
說到這裡,你對於二階堂如何製作 AI 菜奈 APP 有沒有頭緒呢?若二階堂能夠得到翔太和菜奈對話的完整記錄,他可用以下的數據訓練 AI 菜奈:
訓練過程: 特徵:翔太所說的話的含意,以詞向量代表 標籤:菜奈會說哪句話回應
《輪到你了》值得一讚的地方是,劇情中 AI 菜奈說的所有話都是在先前的劇集出現過的,未至於天馬行空不切實際。我認為,不真實的地方在於:翔太到底如何把他與菜奈的(所有)對話轉述給二階堂?
希望之前沒有接觸過 AI/機器學習的讀者,讀畢此文後,對機器學習能夠做的事情有更深入的了解!如有問題/建議,歡迎留言告知。若大家有興趣的話,我會多寫這個範疇的文章。感謝你讀到這裡。😉