機器學習是什麼?電腦從資料中找出規則的原理
機器學習不是由人寫好規則讓電腦遵守,而是讓電腦從大量範例中自己找出規則。它的內容是一種帶有可調整數字(參數)的計算,會一點一點修正這些數字,讓範例上的錯誤變小。學得好不好,要用沒有拿來學習的新資料確認。
這篇文章可以了解
- 由人寫規則的程式,和從資料找出規則的機器學習有什麼不同
- 「學習」就是修正數字:用一條直線配合3個點的計算來確認
- 監督式學習、非監督式學習、強化學習的差異
- 過擬合,以及把資料分成練習用和測試用的理由
- 只看準確率不夠的原因,以及精確率與召回率
- 神經網路、應用的場合,以及極限與風險
預備知識:不需要。計算的例子只用到乘法和減法。也適合想先對資訊類考試的用語建立印象的讀者。
生活中的例子
電子郵件軟體會自動把垃圾郵件分到另一個資料夾。影音和購物網站會列出「為你推薦」的內容。在手機的相簿App搜尋「狗」,就會找出狗的照片。
這些功能很多都用到機器學習。它也是資訊類考試的出題範圍(例如日本的IT Passport),裡面列有監督式學習、過擬合等用語。
由人寫規則,還是從資料找出規則?
假設要做一個分辨垃圾郵件的程式。一般的做法,是由人寫規則。例如「主旨有『中獎』就是垃圾郵件」、「陌生寄件者寄來、只有連結的郵件是垃圾郵件」。
可是,這個方法很快就會碰壁。因為寄件的一方會改變用字,想辦法繞過規則。只要寫成「中.獎」,規則就失效了。
所以要把想法反過來。先準備大量標好正確答案的範例:「這是垃圾郵件」、「這是一般郵件」。再讓電腦從範例中找出,有哪些特徵就像垃圾郵件。這就是機器學習。2002年,程式設計師保羅·葛拉罕(Paul Graham)介紹了從範例學習單字出現情形來分辨的方法,廣為流傳。
②得到的「規則」不是人看得懂的文字,而是一組數字,表示許多特徵各要看得多重。因為不只依賴一個詞,就算用字稍微改變,也能從其他特徵判斷像不像垃圾郵件。加入新手法的範例重新學習,規則也會跟著更新。
模型:帶有可調整數字的計算
在機器學習中,從輸入算出答案的計算機制稱為「模型」。模型裡有可以改變數值的數字,這些數字稱為「參數」。參數的值不同,同樣的輸入也會得到不同的答案。
用最簡單的例子來想。假設要從包裹的數量,預測搬運包裹需要的時間。把模型定為「時間 = a × 包裹數」。這裡的 a,就是唯一可以調整的參數。a 是2的話,3個包裹就預測為6分鐘。
哪個 a 比較好,不是由人決定,而是由實際的紀錄決定。假設紀錄有3筆:1個包裹3分鐘、2個包裹5分鐘、3個包裹5分鐘。找出盡量符合這3個點的 a,就是這個模型的「學習」。
學習:修正數字,讓誤差變小
首先,要用數字表示預測偏差了多少。預測和實際的差,稱為「誤差」。差可能是正的,也可能是負的,直接相加會互相抵消。所以先把差平方(2就是2×2=4),再全部加起來,當作偏差的總和。
a = 1 時,預測是1分鐘、2分鐘、3分鐘。和實際的3分鐘、5分鐘、5分鐘相差2、3、2,平方後相加是4+9+4=17。a = 2 時,預測是2分鐘、4分鐘、6分鐘,差是1、1、−1。平方後相加是1+1+1=3,小了很多。
那麼,a 該怎麼修正呢?常用的方法是梯度下降法。梯度就是「坡的斜度」。先查出 a 稍微改變時,誤差的總和往哪個方向變、變多少。再把 a 往誤差減少的方向移動,坡越陡,移動得越多。
在這個例子裡,從 a = 1 開始試試看。斜度要用稱為微分的數學求出。計算過程省略,a = 1 的斜度是−28。負號表示「增加 a,誤差就會減少」。28乘上人決定的小數字(這裡是0.02),得到0.56。把 a 增加這麼多,a 變成1.56,誤差的總和約為5.7。重複同樣的步驟,a 會變成1.81、1.91,逐漸接近2。誤差則變成3.5、3.1,逐漸接近3。
在這個例子中,最好的 a 是2,這時誤差的總和是3。這個模型的直線,一定會通過「0個包裹就是0分鐘」的點。3個點沒辦法剛好排在這樣的一條直線上,所以誤差不會變成0。
三種學習方式
機器學習依照學習時以什麼為線索,大致分成三種。
從附有答案的範例學習:監督式學習
像垃圾郵件和包裹的例子那樣,從輸入和正確答案的組合學習的方法,稱為監督式學習。意思是有一位「監督者」告訴它正確答案。像是不是垃圾郵件這樣,從固定幾種類別中猜出一種的,稱為「分類」。像包裹的時間這樣,猜數字大小的,稱為「迴歸」。
沒有答案也能找出群組:非監督式學習
也有方法只從沒有標上答案的資料,找出彼此相似的群組。這稱為非監督式學習。例如從購物紀錄中,找出購買方式相似的顧客群組。把相似的東西歸成一群稱為「分群」,代表性的方法是k-平均演算法。找到的群組代表什麼意思,要由人來解讀。
從行動結果的分數學習:強化學習
第三種是嘗試行動,以結果得到的分數為線索來學習。這個分數稱為「獎勵」,這種學習方式稱為強化學習。它不會被告知每一步的正確答案,而是從輸贏之類的結果,反覆試誤找出選擇好行動的方法。圍棋AI「AlphaGo」先從人類棋譜學習,再透過自我對弈的強化學習變強。2016年3月,它以四勝一敗贏了頂尖棋士李世乭九段。
把資料分成練習用和測試用
就算學習時把誤差變小了,也還不能說是「好模型」。真正想知道的,是它在沒有拿來學習的新資料(例如明天的郵件)上準不準。
所以要事先把收集到的資料分成3份。修正參數用的是「訓練資料」,比較並選擇模型設定用的是「驗證資料」。最後只測一次成績的,是「測試資料」。設定指的是模型的複雜程度、什麼時候停止學習等。如果一邊看測試資料一邊反覆調整設定,測試成績就會比實力還高。
要分開的理由之一,是過擬合(也稱過度擬合)。這是模型過度配合訓練資料,連偶然的變動都記住的狀態。在訓練資料上誤差非常小,在新資料上卻偏差很大。用很少的資料訓練參數很多的複雜模型時,就容易發生。
成績的測量方式:只看準確率不夠
分類模型的成績,要用一張表來檢查,表中依預測和實際的每種組合計算筆數。這張表稱為混淆矩陣。來看判定垃圾郵件的例子,用1,000封測試郵件來試。1,000封中,實際的垃圾郵件有100封(數字是為了說明而編的)。
| 預測為垃圾郵件 | 預測為一般郵件 | |
|---|---|---|
| 實際是垃圾郵件(100封) | 90(正確找出) | 10(漏掉) |
| 實際是一般郵件(900封) | 30(誤判為垃圾郵件) | 870(正確判為一般郵件) |
全部之中判對的比例,稱為「準確率」。判對的是90+870=960封,960÷1,000就是96%。不過,從這個數字看不出錯在哪裡。
所以要把錯誤分成兩種來看。預測為垃圾郵件的120封中,真的是垃圾郵件的比例是90÷120,也就是75%。這稱為精確率。剩下的25%,是把一般郵件放進垃圾郵件資料夾的錯誤。
另一種,是實際的100封垃圾郵件中,被找出來的比例。90÷100是90%,這稱為召回率。把判定為垃圾郵件的標準訂得更嚴,精確率容易上升,召回率容易下降。要重視哪一個,由目的決定。垃圾郵件為了不弄丟重要郵件,重視精確率;疾病檢查為了不漏掉,重視召回率。
神經網路與深度學習
包裹例子的模型,是只有1個參數的直線。要處理圖片或文章這類複雜的東西,需要表達能力更強的模型。現在常用的是「神經網路」。名稱來自大腦的神經細胞,但內容是數字的計算。
神經網路的基本零件,是把每個輸入乘上權重(參數)再相加的計算。不過,只是乘了再加,疊再多層,合起來也只能做到一層乘加的事。所以每一層之後,要夾入像「負值變成0」這樣不是直線的處理。做這種處理的函數稱為啟動函數。
把「乘了再加,再做非直線處理」的層疊上許多層,稱為深度學習。「深」指的是層數多。疊上多層後,以圖片來說,就能分階段抓住線條和角、它們的組合、物體的局部等特徵。學習方式和包裹的例子一樣,把所有權重往誤差減少的方向一點一點修正。從輸出端依序一次求出大量權重斜度的方法,稱為反向傳播(誤差反向傳播法)。
這種乘加計算,可以整理成數字表格(矩陣)的計算一起進行。快速進行這種計算的零件,在「AI為什麼要用GPU?」和「NPU是什麼?」中說明。
用在哪裡?
- 推薦:從看過的影片、買過的商品紀錄,預測那個人可能喜歡的東西。
- 影像辨識:分辨照片中的物體或臉孔。也用在工廠找出產品刮痕的檢查。
- 翻譯:Google翻譯在2016年9月,把中文翻英文改為神經網路的方式。11月也擴大到日文等語言。
- 詐欺偵測:從信用卡的使用紀錄,找出和平常不同的可疑交易。
極限與風險
第一,資料的偏差會直接進入模型。2018年的研究「Gender Shades」,調查了3套從臉部影像判定性別的商用系統。錯誤率在膚色較淺的男性最高0.8%,在膚色較深的女性卻最高34.7%。對於學習資料中較少的族群,模型有時無法處理得好。
第二,需要大量資料。例如影像辨識競賽「ILSVRC」(2012~2017年),訓練用了約128萬張影像。每一張都由人標上1,000類中的某一類作為答案。收集附有答案的資料,要花費的工夫和成本,是機器學習的一大門檻。
第三,很難說明為什麼會得到那個答案。深度學習模型的「規則」是數百萬個以上的數字,人很難讀懂並追出理由。美國國家標準與技術研究院(NIST)在2023年1月的指引中,也把可解釋列為可信賴AI的特性。在融資、徵才這類和人有關的判斷上,特別需要注意。
和大型語言模型的關係
會寫文章的生成式AI,核心的大型語言模型也是機器學習的模型。內部是非常大的神經網路,有些參數多達數千億個。它是反覆進行「預測文章的後續,猜錯就修正參數」的學習而做出來的。
「修正數字,讓誤差變小」的基本原理,和包裹的例子一樣。詳細內容在「生成式AI怎麼運作?」中說明。
常見的誤解
誤解:AI和機器學習是同一件事
實際上,AI(人工智慧)是很廣的詞,指用電腦執行人類智慧活動的整體技術。機器學習是其中一種做法,深度學習又是機器學習中的一種方法。例如由人把專家知識寫成規則的「專家系統」,是AI,但不是機器學習。這是1980年代流行的方式。最近的AI大多用機器學習做成,所以常被當成同一件事。
誤解:只要增加資料,什麼都能解決
實際上,增加資料能讓過擬合比較不容易發生,但不能解決一切。偏差的資料再怎麼增加,偏差還是在。答案標錯的很多,模型也會學到那些錯誤。而且增加和使用情境不同的資料(例如只有白天的照片),也不會讓夜間照片判得準。重要的不只是量,還有品質和內容。
誤解:準確率99%,就是很棒的模型
實際上,資料的內容有偏差時,準確率並不可靠。假設1萬筆信用卡交易中,詐欺有100筆(1%)。就算是什麼都不想、全部回答「正常」的模型,也有9,900筆答對,準確率是99%。但它一筆詐欺也找不到,召回率是0%。如果目的是找出數量少的那一方,就必須確認精確率和召回率。
從數字來看
| 項目 | 數字 | 補充 |
|---|---|---|
| 垃圾郵件例子的準確率 | 96% | 精確率75%、召回率90%。本文編的例子 |
| 全部回答「正常」的詐欺偵測準確率 | 99% | 詐欺占1%時。召回率是0% |
| ILSVRC分類項目的訓練影像 | 約128萬張(1,000類) | 2012~2017年的競賽 |
| 用臉部影像判定性別的錯誤率 | 最高34.7%與最高0.8% | 膚色較深的女性與膚色較淺的男性。2018年的研究 |
上面2列是為了說明而編的例子,下面2列是能在研究或紀錄中確認的數字。
進一步學習
- 用表格看差異:監督式學習、非監督式學習與強化學習的差異、AI訓練與推論的差異
- 用數字試試看:混淆矩陣計算工具(也能計算F1分數等其他指標)
- 評估與過擬合的用語:交叉驗證(輪流替換資料來測量成績)、正規化(抑制過擬合的方法)
- 模型與使用方式的用語:CNN(常用於影像)、遷移學習、AI 推論(用訓練好的模型算出答案的計算)