機器學習是什麼?電腦從資料中找出規則的原理

約 10 分鐘 · 更新:2026年10月23日

機器學習不是由人寫好規則讓電腦遵守,而是讓電腦從大量範例中自己找出規則。它的內容是一種帶有可調整數字(參數)的計算,會一點一點修正這些數字,讓範例上的錯誤變小。學得好不好,要用沒有拿來學習的新資料確認。

這篇文章可以了解

  • 由人寫規則的程式,和從資料找出規則的機器學習有什麼不同
  • 「學習」就是修正數字:用一條直線配合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=1和a=2的直線配合3個點,比較偏差 時間(分鐘) 2 4 6 1 2 3 包裹數量 a=1 a=2 偏差
圓點是實際的紀錄,實線是 a=2、虛線是 a=1 的預測。點和實線之間的短線,是 a=2 時的偏差(誤差)。省略的部分:實際的機器學習,資料點有好幾千、好幾萬個。

那麼,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 的關係。一點一點往坡下走,接近誤差最小的 a=2 誤差總和 起點 a=1(誤差17) 最小 a=2(誤差3) 1 2 3 a 的值
曲線是每個 a 值對應的誤差總和。從 a=1 往坡下走,a 會變成1.56、1.81、1.91,接近谷底的 a=2。省略的部分:大型模型的參數有數百萬個以上,這條曲線無法畫在一張圖上。

在這個例子中,最好的 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列是能在研究或紀錄中確認的數字。

進一步學習

接著閱讀

系列「資安與生活中的 IT」的文章

  1. 密碼為什麼會被破解?長度和不重複使用為何重要
  2. 雲端運算是什麼?資料和應用程式在「哪裡」運作
  3. 加密是什麼?對稱式加密與公開金鑰加密的原理
  4. 生成式AI怎麼運作?大型語言模型(LLM)的原理
  5. VPN是什麼?保護通訊的通道原理與做不到的事
  6. 機器學習是什麼?電腦從資料中找出規則的原理
  7. 資料中心是什麼?支撐雲端與AI的建築物內部
  8. 防火牆是什麼?讓通訊通過或擋下的機制
  9. QR Code是什麼?髒污也能讀取的原理
  10. 網路釣魚是什麼?假郵件、假網站的分辨方法與對策
  11. 指紋辨識、臉部辨識的原理是什麼?手機如何認出本人?
  12. 惡意程式是什麼?病毒、勒索軟體的差異與防範對策

這個領域的題目: 機器學習基礎

參考資料

入門解說一覽