ML 可以大致諗成拉曲線：部電腦有個數學模型（用線表達）表示佢心目中兩個變數間嘅關係，ML 教部電腦點按數據建立同改變個模型。一個人工神經網絡嘅抽象圖解；人工神經網絡係 ML 上常用嘅數學模型。機械人都可以曉學習，段片顯示一班機械人慢慢噉學識一齊合作推郁物件。
**機械學習**gei1 haai6 hok6 zaap6（英文：**machine learning**，**ML**）係人工智能（AI）一個子領域，專門研究點樣設計一啲特殊嘅演算法同統計模型，嚟去教電腦喺唔使個用家開口俾明文指示嘅情況下，學識有效噉樣做一啲特定嘅作業。機械學習嘅典型做法如下：

1. 編寫一個電腦程式，教部電腦點樣由數據嗰度建立一個數學模型嚟描述佢對啲變數之間嘅關係嘅知識；
2. 搵啲樣本數據（即係所謂嘅「訓練數據」）返嚟，俾個程式處理吓啲數據入面嘅個案，等部電腦按個程式建立一個數學模型；跟住
3. 喺將來再撞到同類個案嗰時，部電腦就會曉按佢個程式，用建立咗嗰個模型，對呢啲之前未見過嘅個案作出預測－個設計者唔使明文噉教部電腦點樣應對呢啲前所未見嘅個案，部電腦都會有能力一定程度上應對。

機械學習演算法做嘅嘢係令部電腦曉「用手上資訊，自動噉預測某啲特定嘅變數嘅數值」，所以機械學習嘅技術可以將「做預測」呢家嘢自動化，而因為「做預測」呢家嘢喺好多領域都會用到，機械學習可以有好多實用價值，例如係：

* 醫療：機械學習可以用嚟教電腦由手上嘅醫療數據，學識邊啲病徵同邊啲病症有關，所以可以攞嚟幫手診斷病人（用「手上病人嘅病徵」預測「佢有乜嘢病」）。
* 金融：機械學習上有技術可以教電腦由手上嘅金融（例如係之前嗰幾個月嘅股價）嚟預測打後股價會點變化，呢點喺金融業上可以幫手做預測。
* 市場學：機械學習可以用嚟教電腦由過去有關唔同產品嘅銷售量嘅數據，預測將來（間公司想出）嘅同類產品嘅銷售量。

... 等等。

機械學習同數據科學（data science）好有關係，例如係做數據探勘（data mining）噉，就可以涉及教部電腦點樣搵出數據當中嘅規律，令到部電腦曉自動化噉探勘一啲人手好難分析嘅數據，由呢啲數據嗰度抽取有用嘅資訊，而因為「由數據抽取資訊」呢樣嘢基本上無論乜嘢科學同商學領域都會用到，所以機械學習對於好多領域嚟講都係一種好有用嘅技術。

概論
--

睇埋：學習
### 定位

機械學習呢個領域嘅定義如下：

|  |  |  |
| --- | --- | --- |
| 「 | 英文原文："A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P if its performance at tasks in T, as measured by P, improves with experience E."
粵文翻譯：如果一個電腦程式能夠喺一樣或者一類工作 T 上嘅表現－表現以 P 做指標量度－隨住經驗 E 而改進嘅話，噉呢個程式就可以稱得上係「有由經驗 E 嗰度對工作 T 同表現量度指標 P 作出學習」（而機械學習就係指研究點樣幫電腦程式做呢樣嘢嘅領域）。 | 」 |

上述呢個定義避免咗一啲歧義性嘅問題：英國著名數學家亞倫圖靈（Alan Turing）對於人工智能曾經問過「機械有冇能力思考？」呢條問題，所以有人提出將人工智能（包括機械學習）定義為「研究點樣令機械思考」嘅領域。但呢個定位俾好多科學家嫌佢含糊得滯（例如「思考」呢個詞應該要定義就經已好摎攪），所以研究機械學習嘅科學家一般唔主張用呢個詞定義一個領域；而相比之下，上述嘅定義唔使依賴啲乜嘢零舍含糊嘅詞語－呢個定義只係要求電腦程式有類似人噉嘅行為，所以俾人覺得比較適合用嚟做成個科學領域嘅定位。

### 理論基礎

一個常態分佈嘅圖解；X 軸表示研究緊嗰個變數，而 Y 軸反映咗每個變數出現嘅頻率。
內文：運算學習論
一個學習者（無論係機械定係人）嘅主要目的係要將經驗普遍化（generalize）：由經歷過嘅嘢當中，抽取嗰啲嘢普遍具有嘅特性，並且用呢啲資訊嚟解難；例如一個人喺俾隻狗咬過之後，可能會產生「狗普遍傾向會咬人」嘅諗頭，並且從此之後傾向避開狗（將「呢一隻狗會咬我」普遍化成「狗普遍都會咬我」）。機械學習都係同一道理：做機械學習會俾一部電腦處理一啲數據，再要部電腦對於一啲佢之前未見過嘅同類個案作出預測，好似係一啲金融上會用嘅機械學習程式噉，設計者嘗試教部電腦用「過去嘅股價數據」預測「將來嘅股價」（將「我處理過嗰啲股票嘅股價變化法則」普遍化做「股票股價變化起上嚟普遍會跟從嘅法則」）。

用統計學行話講嘅話，呢個過程如下：學習用嘅數據係出自一個有特定概率分佈（probability distribution）嘅現實，而假設柞數據係大致上準確噉代表到嗰個現實嘅概率分佈嘅（柞數據嘅概率分佈同個現實嘅近乎一樣），噉個機械學習程式就要靠佢嘅演算法加埋啲數據，砌返個合乎現實嘅數學模型出嚟。

舉個例說明：想像家陣有個常態分佈（normal distribution；睇附圖），佢 X 軸表示研究緊嘅變數，而 Y 軸就反映咗變數每個值出現嘅機會率。如果 X 軸代表「人類嘅身高」，噉個常態分佈表達嘅嘢如下：人類嘅身高最常喺中間嗰個數值（嗰個數值出現率最高），而距離中間嗰個數值愈遠嘅身高值就出現得愈少（好少有極高或者極矮嘅人）。個常態分佈條線會有一條相應嘅方程式。而家假想個常態分佈代表住全人類嘅身高，跟住研究者抽一個樣本（sample），例如係由全世界嘅人當中搵 500 個返嚟，量度佢哋嘅身高。喺最理想嘅情況之中，個樣本會完美噉代表到人類總體嘅身高分佈－即係話如果將個樣本入面嘅「身高值」同「每個值出現嘅率」畫條線，條線嘅形狀會同總體人類嗰條完全一個板。而如果家陣話要訓練一個機械學習程式，去靠個樣本嘅數據學習人類嘅身高分佈，個程式要做嘅嘢就係「由啲數據嗰度，砌返一個代表到人類總體身高分佈嗰條線嘅數學式出嚟」。

運算學習論（computational learning theory）係專門研究機械學習演算法嘅表現嘅電腦科學子領域。呢個領域會用到大量嘅統計學技巧分析機械學習所要面對嘅問題，例如係喺抽樣本嘅過程當中，一般都假設咗個樣本代表到所研究嘅總體（例：「手上嘅股票嘅行為」大概正確噉反映到「古往今來所有嘅股票嘅行為」），而呢個假設喺最嚴格嘅邏輯基準嚟睇查實並唔正確（「我見過嘅天鵝都係白色」唔代表「古往今來嘅天鵝冚唪唥都係白色」）。因為呢啲原因，雖然話事實經已說明咗，機械學習喺實用上表現好好，但喺理論上機械學習嘅原理查實唔係冇漏洞嘅，所以研究運算學習論嘅科學家就要去思考呢啲問題。

### 基本流程

喺實用上，機械學習嘅流程基本上如下：

1. **搜集數據**：用某啲方法搜集一啲描述緊要預測嘅現象嘅數據，並且以某啲形式（例如係一個表）呈現啲數據，數據嘅質同量會影響最後個模型嘅準確性；
2. **事前處理數據**：處理吓啲數據先，清走啲會擾亂機械學習演算法嘅嘢，好似啲缺失數據（missing data）呀噉；
3. **揀個演算法**：機械學習可以用好多唔同嘅演算法嚟做，唔同演算法各有利弊；
4. **訓練個 ML 程式**：將啲數據輸入去個程式嗰度，等佢按自己嘅演算法建立一個模擬個現象嘅數學模型，個數學模型會有若干個參數（parameter，{\displaystyle p}）；
5. **評估個 ML 程式**：用某啲指標評估個程式學得有幾好，通常嘅做法係要個程式對佢未見過嘅數據進行預測，再睇吓佢預測得準唔準；
6. **執吓啲參數**：執吓個程式啲參數（例如係學習率或者係初始化嘅數值等），睇吓呢啲改變可唔可以再改善個程式（可以睇吓最佳化）；
7. **作出預測**：用個程式對現實世界嘅現象進行預測。



 

參數 p
誤差率
最佳選擇

X 軸表示個模型啲參數，而 Y 軸表示某個量度個模型「有幾好」嘅指標；假想而家用緊嗰個指標係數值愈低愈好嘅（例如誤差），一個理想嘅學習演算法會將啲參數變成「最佳選擇數值」（誤差率數值最低化）嘅數值。

事前數據處理
------

一個典型嘅數據庫；當中每一個直行代表一個變數，每一個橫行代表一個個案，個數據庫會有每個個案喺各變數上嘅數值。
內文：事前數據處理
事前數據處理（data preprocessing）係攞到數據之後要做嘅第一個步驟。喺搜集數據嘅過程之後，個研究者手上會有一個數據庫，個數據庫嘅數據包含咗每一個個案喺每個變數上嘅數值。現實嘅搜集數據過程都係唔完全受控嘅，所以搜集到嘅數據幾乎梗會出啲錯，例如係某幾個個案喺某個變數上嘅數值量度唔到（即係所謂嘅缺失數據）或者有啲擺明冇可能嘅數值（例：有個個案喺「年齡」呢個變數嘅數值係負數），等等。呢啲噉嘅數據直接攞去分析嘅話好多時會搞到個程式出錯，所以做機械學習嘅人喺開始俾個程式做學習之前往往會做啲事前處理先。另一方面，做事前數據處理又會涉及「將啲數據轉化成要用嘅機械學習能夠處理嘅格式」等嘅工序。

例子碼
以下係一段用 Python 程式語言寫嘅源碼，用途在於將啲數據重新縮放成 0 至 1 之間嘅數值（將每個變數，最大嘅數值設做 1，最細嘅數值設做 0，而喺中間嗰啲數值就按比例變成 0 至 1 之間嘅實數）。噉樣做係因為，有某啲機械學習演算法需要數據係 0 至 1 之間嘅數先至行得到：

```
# Python code to Rescale data (between 0 and 1) 
import pandas 
import scipy 
import numpy 
from sklearn.preprocessing import MinMaxScaler 
url = "https://archive.ics.uci.edu/ml/machine-learning-databases/pima-indians-diabetes/pima-indians-diabetes.data" # 指定一個網址
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class'] # 指定每個變數嘅名
dataframe = pandas.read\_csv(url, names=names) # 由網址嗰度攞數據。
array = dataframe.values # 將數據擺入去屬於個程式一個 array 嗰度。
  
X = array[:,0:8] # X 呢個 array 包含咗用嚟做預測嘅變數。
Y = array[:,8] # Y 呢個 array 包含咗要預測嘅變數。

# 將 X 入面嘅數字重新縮放。
scaler = MinMaxScaler(feature\_range=(0, 1))
rescaledX = scaler.fit\_transform(X) 
  
# 將做完縮放嘅嗰柞數據 show 出嚟睇。
numpy.set\_printoptions(precision=3) 
print(rescaledX[0:5,:]) 

# 跟住打後嘅碼就會開始做學習過程。

```

數學模型
----

睇埋：知識表示
喺準備好啲數據之後，個機械學習程式就要建立一個數學模型。佢要將數據當中嘅某啲變數做輸入，然後用佢內部嘅數學模型計個佢預想嘅輸出出嚟（「預想輸出」係啲輸入嘅函數；{\displaystyle {\text{Output}}=f({\text{Input}})}）。喺最簡單嘅監督式學習裏面，個程式跟住會計吓，用佢個數學模型（{\displaystyle f}）計嘅「預想輸出」同實際嘅輸出差幾遠（睇誤差函數），按照呢個誤差調較自己個數學模型嘅參數（{\displaystyle p\_{i}} 係第 {\displaystyle i} 個參數），

{\displaystyle \Delta p\_{i}=g({\text{actual y}}-{\text{model output}})}，{\displaystyle \Delta p\_{i}} 係指「{\displaystyle p\_{i}} 嘅改變」；
呢個過程用虛擬碼表達嘅話係：

```
讀取事前處理完嘅數據；

建立一個數學模型（f），將 y（要預測嘅變數）寫成 x（用嚟做預測嘅變數）嘅函數；

逐個逐個噉讀取數據入面嘅個案，for 每一個個案
    按照個數學模型同個個案嘅 x 值，計出預想嘅 y 值；
    計吓「預想中嘅 y 值」同「個數據所顯示，嗰個個案嘅實際 y 值」差幾遠；
    按呢個誤差，計吓個模型要點樣改；

# 如果一切順利，讀取嗮所有數據之後，最後嗰個數學模型會能夠做有返咁上下準嘅預測。

```

當中 {\displaystyle f} 可以有好多唔同款：

### 迴歸模型

一個線性迴歸模型嘅圖解；幅圖嘅兩條軸分別代表研究緊嗰兩個變數（x 同 y）。
內文：迴歸模型
迴歸分析（regression analysis）係統計模型上嘅一類技術，用嚟預測兩個或者以上唔同變數之間嘅關係：喺統計學上，研究者好多時會想用一個變數嘅數值嚟預測第啲變數嘅數值；喺最簡單嗰種情況下，個統計模型會涉及兩個連續性（continuous）嘅變數，當中一個係自變數（independent variable；IV），而另一個就係應變數（dependent variable；DV），而個研究者會用個 IV 嘅數值嚟預測個 DV 嘅數值；對個研究者嚟講，一個可能嘅做法係搜集啲數據返嚟，用啲數據做迴歸分析，整個模型（即係畫條線）出嚟，個模型就能夠幫佢預測「當 IV 係呢個數值嗰陣，假設第啲因素不變，個 DV 嘅數值會傾向係幾多」。迴歸模型有以下呢啲：

{\displaystyle DV=a+b(IV)}（線性迴歸；linear regression）；
{\displaystyle DV=a+b(IV)+c(IV)^{2}}（多項式迴歸；polynomial regression）；
... 等等。

原則上，如果有個方法可以搵出 {\displaystyle a} 同埋 {\displaystyle b} 等參數嘅數值，就可以靠條式大致上用 IV 嘅值估計 DV 嘅值，而機械學習可以用一個迴歸模型做佢嘅數學模型，例如係以下呢段碼噉，做嘅嘢就係（攞到數據同做完啲事前處理之後）建立一個參數值係隨機設嘅線性迴歸模型，再按柞數據入面啲個案慢慢噉調較個模型。

### 人工神經網絡

一個前饋人工神經網絡嘅抽象圖；每個圓圈代表咗一粒模擬嘅神經細胞，而每粒神經細胞嘅啟動程度由佢打前嗰排神經細胞嘅啟動程度話事－就好似動物嘅神經系統噉。
內文：人工神經網絡同深度學習
人工神經網絡（artificial neural network）係受生物神經系統啟發嘅一種數學模型。一隻（例如）靈長目動物嘅腦閒閒地有斷百億計嘅神經細胞（neuron），一粒神經細胞喺俾電同化學物訊號刺激到嗰陣，會跟住以電或者化學物嚟傳新訊號，所以當一粒神經細胞射訊號嗰陣可以引起連鎖反應，將資訊喺成個神經網絡嗰度傳開去；而人工神經網絡主要係以電腦程式嘅方法嚟模擬呢個過程，令一個電腦程式能夠出現一啲好似動物神經系統噉嘅行為。

一個人工神經網絡由大量嘅人工神經細胞（artificial neuron）組成。喺用電腦程式整神經網絡嗰陣，個研究者（通常）會每粒人工神經細胞都同佢設返個數值，用呢個數代表佢嘅**啟動程度**（activation level），而每粒神經細胞嘅啟動程度嘅數值都有條式計，呢條式包括咗喺佢之前嗰啲神經細胞嘅啟動程度。啲函數當中嘅參數可以變化，而如果一個神經網絡嘅程式令到佢識得靠自己嘅經驗嚟到調整呢啲參數嘅話，嗰個神經網絡就會具有學習嘅能力。

舉個例說明，例如家吓搵個神經網絡入面某一粒人工神經細胞集中睇佢，佢會有返個數字嚟反映佢嘅啟動程度，而呢個數字取決於第啲人工神經細胞嘅啟動程度－即係話個程式入面*每粒細胞*都會有一條類似噉樣嘅算式：

{\displaystyle A=W\_{1}A\_{1}+W\_{2}A\_{2}...}；
喺呢條式當中，{\displaystyle A} 代表嗰粒神經細胞嘅啟動程度，{\displaystyle A\_{n}} 代表其他神經細胞當中第 {\displaystyle n} 粒嘅啟動程度，而 {\displaystyle W\_{n}} 就係其他神經細胞當中第 {\displaystyle n} 粒嘅權重（指嗰粒神經細胞有幾影響到 {\displaystyle A}）。所以當一粒人工神經細胞啟動嗰陣，會帶起佢後面啲人工神經細胞跟住佢啟動－似十足生物神經網絡入面嗰啲神經細胞噉。假如個神經網絡嘅程式令佢能夠自行按照經驗改變 {\displaystyle W\_{n}} 嘅數值嘅話，佢就會曉學習。

喺演算法上，一個最簡單嘅監督式學習神經網絡同一個用迴歸模型嘅機械學習演算法一個板，分別只係在於 y 同 x 之間嗰條式唔同咗。喺一個人工神經網絡嘅程式當中，會有若干粒細胞做輸出值，若干粒細胞做輸入值，每粒輸出層細胞嘅啟動程度會係佢之前嗰層細胞嘅啟動程度嘅函數，如此類推。喺程式編寫上，呢啲咁多嘅權重值同啟動值可以用矩陣（matrix）輕易噉儲住。好似係以下呢段虛擬碼噉：

```
X = [0, ...]; # 個 IV 層，呢個係一個 array（陣列）。
...
Y = A\_1\*H\_1; # 輸出 Y 嘅啟動程度係之前嗰層嘅啟動程度嘅函數，當中 Y 同 H\_1 係 array，而 A\_1 係一個矩陣。
H\_1 = A\_2\*H\_2 # 如此類推如此類推
H\_2 = A\_3\*X

# 隨機噉設啲權重嘅數值，噉做會整出一個唔準嘅迴歸模型。
A\_1 = random(0,1);
A\_2 = random(0,1);
A\_3 = random(0,1);
...

```

一開始嗰陣，人工神經網絡嘅技術係諗住用嚟普遍噉解難嘅，但隨時間過去，啲人開始發覺設計上偏離生物神經網絡嘅人工神經網絡喺好多情況下能夠更加有效噉解難，於是出咗好多唔同種嘅神經網絡。到咗廿一世紀，人工神經網絡經已廣泛噉俾人用嚟教電腦辨識圖像、辨識語音、管控社交網站、做機械翻譯同埋玩遊戲。

### 決策樹

一個用嚟預測一個鐵達尼號乘客有幾大機會生還嘅決策樹
內文：決策樹學習
決策樹學習（decision tree learning）係機械學習嘅一種模型，一個決策樹（decision tree）會有若干個**節點**（node），每個節點代表咗一個考慮緊嘅變數，並且喺接收到一個個案嗰陣，先後噉用呢啲變數作出預測，例如係附圖入面嗰個決策樹噉樣，佢會接收一個個案嘅數據，然後先後噉按照個個案嘅各種變數（性別、年紀同有幾多個親屬喺船上呀噉）預測嗰個鐵達尼號乘客有幾大機會生還。而一個用決策樹嘅機械學習演算法要做嘅嘢就係用手上嘅數據，砌出一個噉樣嘅決策樹。一個建立決策樹嘅演算法步驟大致如下：

1. 喺淨低嘅「用嚟做預測嘅變數」當中，揀出能夠最有效噉預測到個結果變數嗰個（個演算法可以用資訊熵變化等嘅指標嚟量度「一個變數預測起第個變數上嚟有幾有效」；詳情可以睇資訊理論）；
2. 繼續分枝；
3. 返去步驟 1。

例如係以下嘅虛擬碼噉，就能夠由手上數據砌一個決策樹出嚟（呢個演算法就係所謂嘅 ID3）：

```
計吓成個數據庫嘅 information entropy（資訊熵；簡單啲講就係指柞數據有幾接近完全隨機）

For 每一個用嚟做預測嘅變數
    計吓用咗佢分類之後嘅總 entropy
    計吓用咗佢分類之後嘅總 entropy 同成個數據庫嘅 entropy 差幾多（information gain）

揀 information gain 最高嗰個變數嚟分類

For 每一個分咗嘅類，用嗰個類內嘅個案做數據庫，做多次上述嘅過程，直至用嗮所有用嚟做預測嘅變數，或者到咗指定嘅分枝數上限為止。

```

### 貝葉斯網絡

一個簡單嘅貝葉斯網絡
內文：貝葉斯網絡
貝葉斯網絡（Bayesian network）係一種可以用嚟教電腦推理、學習、同計劃嘅工具。一個貝葉斯網絡會考慮大量嘅變數，並且用一柞基於貝葉斯定理（Bayes' Theorem）嘅方程式模擬唔同變數之間嘅關係。舉個簡單例子說明，假想家吓有一個貝葉斯網絡，佢會睇某啲變數（包括咗「有冇落雨」同埋「啲灌溉花灑有冇開著」）嘅數值，並且計出「啲草係濕嘅」呢個狀態係「真」嘅機會率，會用到（例如）以下呢條式：

{\displaystyle \Pr(G,S,R)=\Pr(G|S,R)\Pr(S|R)\Pr(R)}；
當中 {\displaystyle G} 係指「啲草濕咗」呢個狀態，{\displaystyle S} 係指「啲灌溉花灑著咗」呢個狀態，而 {\displaystyle R} 係指「有落雨」呢個狀態。成條式用日常用語講嘅話係噉嘅：「嗰三個狀態都係真嘅機會率」（{\displaystyle \Pr(G,S,R)}）等如「如果有落雨而且啲灌溉花灑著咗，啲草濕咗嘅機會率」（{\displaystyle \Pr(G|S,R)}）乘以「如果有落雨，啲灌溉花灑著咗嘅機會率」（{\displaystyle \Pr(S|R)}）乘以「有落雨嘅機會率」（{\displaystyle \Pr(R)}）。

個設計者寫好程式之後，可以（例如）走去搵一大柞有關呢幾個變數之間嘅關係嘅數據俾個程式睇，跟住叫個程式用呢啲過往嘅數據，計出變數同變數之間嘅關係係點，而個程式就可以攞嚟預測未來。貝葉斯式嘅人工智能有相當廣泛嘅用途，例如 Xbox Live 噉，就會喺幫啲打緊網上遊戲嘅玩家搵比賽加入嗰陣就會用到考慮嗰個玩家嘅贏率嘅貝葉斯網絡，並且寫個演算法搵出令到呢個機會率最接近 50% 嘅分隊法（即係盡可能令場比賽勢均力敵，一般認為勢均力敵嘅比賽會好玩啲）。

### 支援向量機

內文：支援向量機
支援向量機（support vector machines，簡稱「SVM」）係一類機械學習上會用嘅數學模型，用嚟做分類，多數係監督式學習之下先會用嘅。當一個支援向量機接到收有關一柞個案嘅數據嗰陣時，會將每個個案分類做兩個（事先指定咗嘅）類別嘅其中一個。例如係下圖入面噉，黑點同白點係兩類唔同嘅個案，每個個案喺 X 軸同 Y 軸呢個變數上有個數值，H1 呢條線唔能夠將個案清楚噉分類，H2 叫勉強做到分類，而 H3 就能夠清楚噉將個案分做兩類，係最理想嗰條線－而用多個兩個變數做分類嘅支援向量機可以按同一道理想像。

一個建立一個支援向量機嘅演算法大致上要做以下嘅工作：

1. 讀取數據；
2. 將數據入面每一個個案用一個向量表達（{\displaystyle ({\vec {x}}\_{1},y\_{1}),\ldots ,({\vec {x}}\_{n},y\_{n}),}；{\displaystyle y} 係個個案所屬嘅類別，而 {\displaystyle {\vec {x}}} 就係若干個用嚟將個案分類嘅變數）；
3. 喺個空間（維度數量 = 用嚟分類嘅變數嘅數量）入面畫一條線（唔一定係直線），再用某啲指標量度呢條線「能唔能夠有效噉將啲個案清楚分類」；
4. 按指標睇吓使唔使改吓條線同埋要點改。

學習範式
----

睇埋：最佳化
喺建立咗一個數學模型之後，個程式就要以某啲方法慢慢噉改變個模型啲參數－係迴歸模型或者支援向量機嘅話，就要執條線嘅式嗰啲系數；係人工神經網絡嘅話，就要執啲神經細胞之間嘅權重值... 等等，目的係最後達致一個能夠準確噉做預測同決策嘅模型－就好似人同第啲動物嘅學習過程噉樣。喺機械學習上，呢個過程可以用好多演算法做，而呢啲演算法可以分幾大類：

### 監督式

內文：監督式學習
監督式學習（supervised）可以話係最簡單直接嗰種學習範式。監督式學習演算法做嘅嘢係建立一個數學模型模擬柞數據，佢當中某啲變數扮演輸入、又有啲變數扮演輸出。柞學習用嘅數據係所謂嘅**訓練用數據**（training data）。用數學行話講返，即係要搵出一柞已知嘅例子，有

* 若干對輸入（{\displaystyle x}）同正確輸出（{\displaystyle y}），{\displaystyle {\displaystyle (x,y),x\in X,y\in Y}}，
* 再由容許得嘅函數當中搵返個同啲例子最啱搭嘅函數 {\displaystyle {\displaystyle f:X\rightarrow Y}} 出嚟。

喺呢種學習之下，個神經網絡會由研究者度收到一柞數據俾佢學，好似有個老師噉－所以就叫「監督」式學習。

監督式學習演算法要做嘅工作如下：

1. 攞數據入面嘅一個個案（通常用一個向量表示）；
2. 用嗰個個案嘅「預測用變數」嘅值做自己個數學模型（{\displaystyle f}）嘅輸入，計自己個模型所俾嘅輸出；
3. 比較自己計嗰個輸出值同埋數據顯示嘅實際輸出值（即係所謂嘅「監督訊號」；supervisory signal）；
4. 攞呢兩個數嘅落差（誤差），計吓自己個模型啲參數要點變，先可以令到自己下次更有可能計到正確輸出值；
5. 攞數據入面嘅下一個個案做多次呢個過程，直至讀完嗮個數據入面嘅所有個案為止。

用監督式學習可以訓練一個機械學習程式做好多唔同嘅工作，好似係規律辨識（pattern recognition）呀噉。舉個例說明，家吓有個研究員想訓練一個程式分辨一個病人係咪有肺癌，用嚟幫啲醫生手做檢查；佢可以去問醫院同醫學院等嘅單位借有關肺癌病人嘅數據，呢柞數據要包括咗每個病人嘅檢查結果（{\displaystyle x}）以及佢係咪真係有肺癌（{\displaystyle y}）等嘅資訊；跟手個研究員就會逐個逐個將啲病人個案嘅檢查結果同 X 光片嗰柞數字入落去個程式嘅輸入嗰度，而個輸出層就會係是但一個**二元**（binary）嘅輸出－「有肺癌」（用「1」代表）同「冇肺癌」（用「0」代表）。喺初頭嗰陣，個程式會犯好多錯，但係喺用呢柞數據訓練到咁上下之後，個程式會根據佢啲學習法則改變咗佢啲參數，順利嘅話啲誤差會變到愈嚟愈細；而最後如果個誤差細到去一個可以接受嘅水平嘅話，啲醫護人員就有可能會有興趣用呢個程式幫佢哋手做肺癌檢查。事實係，喺醫學上經已有唔少醫護人員會用機械學習程式幫手做診斷，有研究甚至發現，用機械學習程式嚟做診斷有陣時仲準過用人手做。

### 非監督式

聚類分析嘅圖解；每一點代表一個個案，每個個案喺用 X 軸同 Y 軸分別代表嗰兩個變數上都各有其數值，由幅圖睇得出，啲個案明顯可以按呢兩個變數分三大類。
內文：非監督式學習
非監督式學習（unsupervised）同監督式學習最大分別在於非監督式學習唔會有個設計者話俾個程式知乜嘢先係「正確答案」。一個用非監督式學習嘅機械學習程式淨係會接收輸入，並且嘗試由收到嘅輸入當中搵出一啲規律。一個典型嘅非監督式學習演算法嘅步驟大致如下：

1. 攞數據入面嘅一個個案；
2. 將佢同第啲個案比較，例如係佢會唔會同某柞個案（「某柞個案」係手上個案嘅子集）有共通點或者喺各變數上嘅數值距離特別近等等；
3. 將下一個個案噉樣做。

非監督式學習最常見嘅用途係攞嚟做聚類分析（cluster analysis）。譬如話，家吓有個生態學家想研究吓一柵區域入面嗰啲樹傾向於聚集喺啲乜嘢位置，佢可以坐直昇機或者用人造衛星影啲相返嚟，再記錄嗮嗰柵區域入面每樖樹生喺邊個位（呢個過程會嘥唔少時間），噉樣得出一個數據庫，之記錄嗮每樖樹喺 X 軸同 Y 軸嗰度嘅坐標。跟手佢就可能會想睇吓：啲樹會唔會傾向於聚集喺個區域入面嘅某啲特定位置（呢啲資訊可能有助佢保育一啲靠樹生存嘅動物）。如果相對嚟講有某一柞、啲樹彼此之間距離近、又同佢哋以外嘅樹距離遠，噉就可以話佢係「聚埋一羣」。而聚類分析就正係用嚟分析一柞個案入面會唔會有幾羣個體係「彼此之間距離近，同羣以外啲個體距離遠」嘅。

喺呢次研究入面，個生態學家唔會事先知道要點將啲樹分羣，所以用唔到監督式學習。但係佢可以使非監督式學習嚟整一個神經網絡幫佢手做呢個聚類分析。一個簡單嘅可能做法係好似以下噉：將浸輸入層設做「樖樹嘅坐標」，等啲隱藏層用每一樖樹嘅數據逐個逐個計吓。而浸輸出層就有（例如）5 粒人工神經細胞。對每樖樹嘅運算結束之後都會有一粒輸出層嘅神經細胞個啟動程度係大過其他嘅－據此個生態學家就可以按「將樖樹嘅數據入咗落去個神經網絡度之後，邊粒輸出層神經細胞嘅啟動程度最大」為準則將啲樹分做唔同聚類，而且佢仲有得按照分類結果分得好唔好，嚟計吓使唔使改變吓個神經網絡啲參數－個神經網絡就噉喺度進行緊學習。除咗噉，電腦科學界仲有第啲更加精良嘅演算法嚟做開非監督式學習。

### 強化學習

內文：強化學習
強化學習（reinforcement learning）係機械學習嘅一種學習範式，喺機械人設計上好有用。喺強化學習嘅過程裏面，個研究者唔會有個數據庫 {\displaystyle {\displaystyle \textstyle x}} 俾個程式睇同跟住學，而係俾個程式係噉同佢周圍嘅環境互動（個環境可以係現場，又可以係一個模擬嘅環境）：喺每一個時間點 {\displaystyle {\displaystyle \textstyle t}}，個程式會產生一個用輸出數字表示嘅動作（例如「0」代表「企喺度唔郁」同「1」代表「向前行」呀噉），而跟住佢周圍個環境會俾返一啲 feedback－簡單啲講就係話返俾個程式聽，佢個動作啱唔啱（例如個地下有個窿，「向前行」會跌得好痛）。而個程式跟手就會根據呢個 feedback 計吓，睇吓要點樣改佢嗰啲參數先可以令到下次佢做行動嗰陣得到正面回應嘅機會率高啲－而上述嘅呢個例子就有可能可以攞嚟教一個機械人行路。

強化學習嘅過程大致可以想像成噉：

1. 個程式俾出一個輸出，{\displaystyle a}；
2. 個**環境**會根據佢嘅內部運作法則決定 feedback，{\displaystyle r(i,a,j)}，係乜（{\displaystyle i} 係現時狀態，而 {\displaystyle j} 係下一個狀態）；
3. 個程式會根據 {\displaystyle r(i,a,j)} 決定係咪要修改自己內部嘅參數，若果係，要點改；
4. 返步驟 1做過。

個程式內部要有一個演算法，個演算法要用 {\displaystyle r(i,a,j)} 做輸入，俾出「內部參數要變幾多」做輸出。

### 遺傳演算法

內文：遺傳演算法
遺傳演算法（genetic algorithm，簡稱 GA）係一種建基於進化論物競天擇過程嘅一種機械學習演算法：喺進化論上，一個族群內部嘅生物個體（例如一群人類）彼此之間或多或少噉喺遺傳上有所差異，而呢啲差異會引致佢哋喺表現型（包括外表、行為同體質等）上有個體差異，當中佢哋有啲生存同繁殖能力勁啲，所以就更加有機會將自己啲遺傳基因傳俾下一代。假設環境唔變，個族群就會一代一代噉喺遺傳上有變異，變到愈發適合喺嗰個環境生存同繁衍。遺傳演算法就係受呢個理論啟發嘅一種演算法，做法如下：

1. 整一大柞同類嘅數學模型出嚟，當中每個啲參數都有唔同；
2. 叫每個數學模型做若干次嘅預測，每個按佢做預測陣時嘅準確度得返個分數 {\displaystyle s}，分數愈高表示佢表現愈好；
3. 揀選分數 {\displaystyle s} 最高嗰柞模型，將其餘嘅模型淘汰；
4. 做「繁殖」嘅過程－用最高分嗰柞模型做「父母」，生產下一代嘅模型。啲仔喺參數上會似佢哋嘅父母（「每個仔嘅每粒參數」都係「佢父母嘅同位參數」嘅函數）；
5. 再做過上述過程，重複若干代；

如果一切順利，若干代之後手上嘅模型會係一啲預估估得啱嘅模型。

GA 嘅想像圖；  
啲模型（A1、A2、A3...）每個都有自己嘅模型參數（模型掕住嗰啲值），  
啲參數對應物競天擇當中嘅基因（gene）同埋染色體（chromosome）。

模型評估
----

兩條 ML 研究用嘅訓練曲線；X 軸係讀取咗嘅數據個案嘅數量，而 Y 軸表示表現指標。
睇埋：訓練曲線、精確率同召回率同埋模型能耐
喺做完學習過程之後，就要評估吓最後得出嗰個模型好定唔好。要評一個模型係咪「好」，有以下指標使得：

### 準確度

最常用開評估機械學習模型嘅指標就係**準確度**（accuracy）。即係喺做完學習之後，要個機械學習程式睇一啲佢之前未見過嘅個案，同埋要佢對嗰啲個案進行預測。譬如一個訓練嚟預測股價嘅機械學習程式噉，要評估佢嘅準確度，最好方法就係要佢預估吓一啲股價、係佢之前未見過嘅時間點嘅。如果個程式做嘅嘢係將個案分做離散（discrete）嘅類，準確度可以用以下嘅式計：

{\displaystyle {\text{Accuracy}}={\frac {\text{Number of correct predictions}}{\text{Total number of examples}}}\,}
* {\displaystyle {\text{Number of correct predictions}}} 係估啱咗幾多個個案；
* {\displaystyle {\text{Total number of examples}}} 係個案嘅總數。

而要評估一個模型嘅準確度，主要有幾種做法：

* 將手上啲數據分成**訓練集**（training set）同**測試集**（test set）：喺開始做學習之前，將手上數據分做訓練集同測試集。用訓練集（通常包含咗 2/3 嘅個案）做學習，然之後用測試集（通常包含 1/3 嘅個案）要個程式試吓做預測，再用某啲指標嚟量度個程式喺測試當中個預測有幾準－如果係做分類嘅話，可以用準確度（估啱嘅比率）做指標；而如果要預測嘅變數係連續變數嘅話，就可以使平均誤差（平均嚟講，預測嘅數值同正確數值差幾遠）。
* 自助抽樣法（bootstrapping）；設個數據入面嘅個案數量係 n；個演算法會由啲數據度隨機抽一個個案出嚟，將個個案放入自助樣本（bootstrap sample），跟住再擺返第個個案入去抽過（即係所謂嘅邊替換邊抽樣 sampling with replacement），重複 n 次。最尾得出一個（可能有重複嘅）自助樣本，用個自助樣本做過測試。
* K 次交叉驗證（K-fold cross-validation）：隨機噉將數據嘅個案劏做 K 份（喺實際應用上，K 一個常見數值係 10）；然後攞其中一份做測試，其餘啲份做學習－跟住逐份逐份（每次都係一個疊代；iteration）過呢個過程。同一道理，都要使用某啲指標量度準確度。以下係 {\displaystyle k} 次（{\displaystyle k=4}）交叉驗證嘅抽象圖解：

### 靈敏同特異

睇埋：靈敏度同特異度
除咗預測準確度之外，一個做分類嘅機械學習模型嘅質素仲可以用靈敏度同特異度（sensitivity and specificity）作為指標嚟量度。靈敏度同特異度包括咗四個數值：

* 歸啱咗啲陽性個案嘅**真陽性**率（True Positive Rate，TRP）
* 歸啱咗啲陰性個案嘅**真陰性**率（True Negative Rate，TNR）
* 歸錯咗啲陽性個案嘅**假陽性**率（False Positive Rate，FRP）
* 歸錯咗啲陰性個案嘅**假陰性**率（False Negative Rate，FNR）

亦都有啲設計者嫌呢啲數字淨係顯示到比例，所以喺寫論文同報告嗰陣會將啲比例嘅分子分母都報埋出嚟。

想像有一柞個案（圓點），個案分兩種（實心點同空心點），家吓個機械學習演算法嘅任務係要揀啲實心點，大圓圈（selected elements）表示嘅係個演算法判定為「實心點」嘅點，可以畫成下圖實心點係「relevant elements」（對個演算法嚟講重要嘅嘢）：

### 過適嘅問題

內文：過適
人工智能學起嘢嗰陣好多時都會跟奥坎剃刀（Occam's razor）嘅原則：呢條原則話，假設其他因素不變，一個學習者會偏好比較簡單啲嘅理論同假說，除非比較複雜啲嗰個模型（例如）解釋同預測現實嘅能力勁好多。

當一個人工智能（通常因為設計得唔好）喺學習嗰陣，為咗要令自己信嗰個模型完美符合過去數據，而選擇一個太複雜嘅模型嗰陣，呢個現象就係所謂嘅過適（overfitting）：雖然話呢啲複雜嘅模型解釋過去數據嘅能力比較勁，但係統計學上嘅研究顯示，呢啲模型通常解釋將來數據嘅能力會渣啲。因為噉，喺用手上數據評估一個機械學習模型嗰陣，研究者通常會係想個模型嘅表現有返咁上下好，但如果個模型表現好得滯（例如準確度有成 100%），研究者往往會開始擔心有過適嘅問題。

下圖係過適嘅展示。喺學嘢嗰陣，人工智能會嘗試搵條有返咁上下合乎過去數據（黑點）嘅線，用條線做心目嘅模型。藍色嗰條線有過適嘅問題－藍色線完美符合過去數據，但佢條式複雜過黑線好多，通常解釋將來數據嘅能力會比較渣。

應用
--

### 異常檢測

內文：異常檢測
喺數據探勘上，異常檢測（anomaly detection）係指探測一啲同手上嘅大多數個案唔同嘅異常個案，好多時係因為呢啲個案有啲可疑－例如係喺醫療上探測邊啲病人身體狀況數據異常、金融上邊啲銀行交易似係詐騙，又或者一段字入面邊啲句子似係文法錯誤啊噉。喺現實應用當中，要檢查嘅個案數量通常閒閒地都論千計，所以好難用人手做。因為噉，有唔少機械學習專家都落力研究點樣用機械學習技術做異常檢測。

異常檢測方面嘅技術常用於探測異常網絡活動（因為呢啲活動可能暗示黑客攻擊等等網絡安全問題）。喺呢種情況下，異常檢測未必會依賴「異常」作為分類指標，因為呢啲活動未必咁罕有；一種常見嘅做法係運用聚類分析，教部電腦（例如）認出同黑客攻擊有拏褦嘅網絡活動通常都有啲乜嘢特徵，最後令部電腦曉自動噉探測邊啲活動似係黑客攻擊。

無論監督式學習定非監督式學習，機械學習演算法都可以攞嚟做異常檢測。非監督式學習嘅例子通常係，個程式自動噉用聚類分析將啲個案分類、再自動噉將啲屬於少數類型嘅個案歸類做「異常」。呢種做法大前題係啲屬少數嗰類型嘅個案真係想要探測嘅類型（喺網絡安全上，呢條假設未必成立）。而監督式學習嘅例子通常嚟講就係個程式設計者明文噉教個程式，講埋佢聽邊啲個案係「異常」，邊啲係「正常」。半監督式學習嘅做法就係用一柞「正常」個案嘅數據，建立一個數學模型；跟手喺撞到下一個個案嗰陣，計吓「假設個產生個案嘅模型同程式內部嗰個一樣、會出現呢啲數值」嘅機會率。而假如計出嚟呢個機會率數值夠細，就有理由相信呢個個案屬於「異常」。

### 推薦系統

內文：推薦系統
推薦系統（recommendation system）指一個曉預測用家對某件物件會俾乜評價嘅系統，當中成日會用到機械學習演算法。推薦系統嘅例子有 YouTube 等影片分享平台會做嘅「向用家推介有啲乜片佢會有興趣睇」或者 Google 搜尋等嘅搜尋器會做嘅「向用家推介有啲乜新聞佢會有興趣睇」－呢啲技術基本原理都係一樣，涉及個程式攞有關用家以前睇過乜片或者乜網站等嘅資訊，預測個用家對唔同影片或者網站會有乜評價。

喺最基本嗰種協同過濾（collaborative filtering）做法如下：協同過濾淨係攞有關個用家同啲物件嘅過去互動嘅數據做分析，想像以下呢段噉嘅演算法：

```
import graphlab
import pandas as pd # 攞要用嘅 library

# 攞數據；呢個演算法用嘅數據包括每個用家對每件嘢食嘅評價，喺現實應用當中，評價可以用對影片嘅 like 等指標量度。
r\_cols = ['user\_id', 'food\_item', 'rating']
train\_data\_df = pd.read\_csv('train\_data.csv', sep='\t', names=r\_cols)
test\_data\_df = pd.read\_csv('test\_data.csv', sep='\t', names=r\_cols)

train\_data = graphlab.SFrame(train\_data\_df)
test\_data = graphlab.SFrame(test\_data\_df)

# 訓練一個模型，例如整個迴歸模型，搵用家嘅特性（性別、年紀同睇開乜嘢網站等）做 x，佢對某件嘢食嘅評價做 y。
collab\_filter\_model = graphlab.item\_similarity\_recommender.create(train\_data, 
                                                                  user\_id='user\_id', 
                                                                  item\_id='food\_item', 
                                                                  target='rating', 
                                                                  similarity\_type='cosine')
                                                                  
# 當有一個用家撳 search 嗰陣，向佢推薦佢最有可能會俾高評價嘅嘢食。
which\_user\_ids = [1, 2, 3, 4]
how\_many\_recommendations = 5
item\_recomendation = collab\_filter\_model.recommend(users=which\_user\_ids,
                                                   k=how\_many\_recommendations)

```

### 第啲應用

機械學習能夠令電腦自動噉預測某啲變數嘅數值，所以基本上任何科學或者商學領域都可以用到機械學習嘅技術：

* 偏好學習
* 腦機介面
* 電腦視覺
* 人工情感智能
* 經濟研究
* 軟件工程
* 市場學
* 情感運算

... 等等。

研究
--

電腦科學等領域嘅科學家有著力做機械學習方面嘅研究，務求令機械學習更加有效率。機械學習研究一種簡單做法係噉嘅：研究者可以去搵個數據庫返嚟，將個數據庫嘅個案斬做兩份，一份做訓練集，另一份做測試集，然後用每個研究緊嘅演算法做訓練同埋評估表現（睇返上面「模型評估」）嘅過程，比較吓呢啲演算法嘅表現係點。

另一方面，又有啲機械學習研究會用一個研究者已知嘅數學模型嚟產生數據，然後再喺所產生嘅數據上用個演算法做學習，睇吓最後個演算法俾嗰個數學模型有幾似原裝嗰個，即係行好似噉樣嘅虛擬碼：

```
有一個已知嘅數學模型產生數據；
# 例：
# x = rand(100,1) （x 係一個向量，包含 100 個隨機產生嘅數字）
# y = rand(100,1) （set y 做 100 個數字嘅隨機向量先）
# for ii < 100 （for 每個 y 入面嘅數值，將嗰個數值設做 x 嘅相應數值嘅兩倍；y = x \* 2 就係個已知嘅數學模型） 
# y(ii) = x(ii) \* 2 
# ii = ii + 1

用 x 同 y 做數據嘅輸入同輸出，將一個監督式學習嘅 ML 演算法行一次；

最後個程式應該會有個由學習產生嘅數學模型，將個數學模型同個已知嘅數學模型比較；

如果學習產生嘅數學模型同個已知數學模型相近，表示個演算法能夠有效噉做學習。

# 然後研究者可以比較吓唔同演算法邊個最能夠準確噉學到個真嘅數學模型。

```

上述呢啲研究令學界能夠不斷創造更新更強嘅機械學習演算法。

事實係，雖然機械學習係一種重大嘅革新，但喺應用上，機械學習好多時都達唔到理想嘅效果。原因可以有好多：數據本身嘅偏差同埋用錯演算法等都可以搞到個機械學習演算法失敗。「機械學習可能失敗」係一個好受關注嘅議題，因為廿一世紀初好多技術都係靠機械學習做嘅。例如係喺 2018 年，優步（Uber）架靠機械學習訓練嘅自駕車探測唔到行人，於是炒咗車，仲撞死咗人。而仲有個案報告話用嚟做醫療診斷嘅機械學習程式出咗錯，搞到病人好長手尾。呢啲噉嘅問題令到機械學習嘅專家開始思考機械學習有啲乜嘢缺陷，同埋啲缺陷要點補救。

註釋
--

亞倫圖靈（Alan Turing）嘅相；佢對「機械有冇能力思考」等嘅問題作出咗深入嘅考究。

1. ↑  喺實際應用上，一個 ML 程式第一步通常係做初始化，將模型啲參數設做隨機嘅數值；理論上，初始化嗰陣的確有可能會咁啱得咁橋，一嘢就得到理想嘅參數數值，但呢樣嘢發生嘅機會率微乎其微。

相關領域
----

* 認知科學
* 電腦科學
* 人工智能
* 統計學
* 數據科學
* 數據探勘

睇埋
--

* 大數據同語義網
* 主動機械學習
* 圖靈測試
* 先驗後驗
* 統計學詞彙表

文獻
--

* Nils J. Nilsson, *Introduction to Machine Learning*.
* Trevor Hastie, Robert Tibshirani and Jerome H. Friedman (2001). *The Elements of Statistical Learning*, Springer. ISBN 0-387-95284-5.
* Pedro Domingos (September 2015), *The Master Algorithm*, Basic Books, ISBN 978-0-465-06570-7
* Ian H. Witten and Eibe Frank (2011). *Data Mining: Practical machine learning tools and techniques*. Morgan Kaufmann, 664pp. ISBN 978-0-12-374856-0.
* Ethem Alpaydin (2004). *Introduction to Machine Learning*, MIT Press, ISBN 978-0-262-01243-0.
* David J. C. MacKay. *Information Theory, Inference, and Learning Algorithms*. Cambridge: Cambridge University Press, 2003. ISBN 0-521-64298-1
* Richard O. Duda, Peter E. Hart, David G. Stork (2001) *Pattern classification* (2nd edition), Wiley, New York, ISBN 0-471-05669-3.
* Christopher Bishop (1995). *Neural Networks for Pattern Recognition*, Oxford University Press. ISBN 0-19-853864-2.
* Stuart Russell & Peter Norvig, (2009). *Artificial Intelligence – A Modern Approach*. Pearson, ISBN 9789332543515.
* Ray Solomonoff, *An Inductive Inference Machine, IRE Convention Record, Section on Information Theory*, Part 2, pp. 56–62, 1957.
* Ray Solomonoff, *An Inductive Inference Machine*, A privately circulated report from the 1956 Dartmouth Summer Research Conference on AI.
* VanderPlas, J. (2016). *Python data science handbook: essential tools for working with data*. O'Reilly Media, Inc.

攷
-

1. ↑  AI today and tomorrow is mostly about curve fitting, not intelligence. *diginomica*.
2. ↑  The definition "without being explicitly programmed" is often attributed to Arthur Samuel, who coined the term "machine learning" in 1959, but the phrase is not found verbatim in this publication, and may be a paraphrase that appeared later. Confer "Paraphrasing Arthur Samuel (1959), the question is: How can computers learn to solve problems without being explicitly programmed?" in Koza, John R.; Bennett, Forrest H.; Andre, David; Keane, Martin A. (1996). Automated Design of Both the Topology and Sizing of Analog Electrical Circuits Using Genetic Programming. *Artificial Intelligence in Design* '96. Springer, Dordrecht. pp. 151–170.
3. 1 2 3 4  Bishop, C. M. (2006), *Pattern Recognition and Machine Learning*, Springer.
4. ↑  6 Top Applications of Machine Learning. *Hackernoon*.
5. ↑  Kononenko, I. (2001). Machine learning for medical diagnosis: history, state of the art and perspective. *Artificial Intelligence in medicine*, 23(1), 89-109.
6. ↑  Heaton, J. B. Polson, N. G. & Witte, J. H. (2017). Deep learning for finance: deep portfolios. *Applied Stochastic Models in Business and Industry*, 33(1), 3-12.
7. ↑  Ling, C. X. & Li, C. (1998, August). *Data mining for direct marketing: Problems and solutions*. In Kdd (Vol. 98, pp. 73-79).
8. 1 2 3  Friedman, Jerome H. (1998). "Data Mining and Statistics: What's the connection?". *Computing Science and Statistics*. 29 (1): 3–9.
9. ↑  Samuel, Arthur (1959). "Some Studies in Machine Learning Using the Game of Checkers". *IBM Journal of Research and Development*. 3 (3): 210–229.
10. 1 2  Mitchell, T. (1997). *Machine Learning*. McGraw Hill. p. 2.
11. 1 2  Harnad, S. (2006). The annotation game: On Turing (1950) on computing, machinery, and intelligence. In *The Turing test sourcebook: philosophical and methodological issues in the quest for the thinking computer*. Kluwer.
12. ↑  Walker, J. E.; Shea, T. M.; Bauer, A.M. "Generalization and the Effects of Consequences | Education.com". *www.education.com*.
13. ↑  Vidyasagar, M. (2002). *A theory of learning and generalization*. Springer-Verlag.
14. 1 2  Mohri, Mehryar; Rostamizadeh, Afshin; Talwalkar, Ameet (2012). *Foundations of Machine Learning*. USA, Massachusetts: MIT Press.
15. ↑  Angluin, D. 1992. Computational learning theory: Survey and selected bibliography. In *Proceedings of the Twenty-Fourth Annual ACM Symposium on Theory of Computing* (May 1992), pages 351–369.
16. ↑  Frameworks for Approaching the Machine Learning Process. *KDnuggets*.
17. ↑  Pyle, D. 1999. *Data Preparation for Data Mining*. Morgan Kaufmann Publishers, Los Altos, California.
18. ↑  Chicco D (December 2017). "Ten quick tips for machine learning in computational biology". *BioData Mining*. 10 (35): 1–17.
19. ↑  Data Preprocessing for Machine learning in Python 互聯網檔案館嘅歸檔，歸檔日期2019年7月6號，..
20. 1 2  Linear Regression with example. *Towards Data Science*.
21. ↑  Seber, G. A. & Lee, A. J. (2012). *Linear regression analysis* (Vol. 329). John Wiley & Sons.
22. ↑  YangJing Long (2009). "Human age estimation by metric learning for regression problems". *Proc. International Conference on Computer Analysis of Images and Patterns*: 74–82.
23. ↑  Regression in Machine Learning. *Towards Data Science*.
24. ↑  Gardner, M. W. & Dorling, S. R. (1998). Artificial neural networks (the multilayer perceptron)—a review of applications in the atmospheric sciences. *Atmospheric environment*, 32(14-15), 2627-2636.
25. ↑  Russell, Stuart J.; Norvig, Peter (2010). *Artificial Intelligence A Modern Approach*. Prentice Hall. p. 578.
26. ↑  The Machine Learning Dictionary - activation level 互聯網檔案館嘅歸檔，歸檔日期2018年8月26號，..
27. 1 2 3  Learning process of a neural network 互聯網檔案館嘅歸檔，歸檔日期2021年2月11號，.. *Towards Data Science*.
28. 1 2  Honglak Lee, Roger Grosse, Rajesh Ranganath, Andrew Y. Ng. "Convolutional Deep Belief Networks for Scalable Unsupervised Learning of Hierarchical Representations" *Proceedings of the 26th Annual International Conference on Machine Learning*, 2009.
29. ↑  Decision Trees in Machine Learning. *Towards Data Science*.
30. ↑  Decision Tree. *Machine Learning*.
31. ↑  Chapter 4: Decision Trees Algorithms.
32. ↑  Decision Trees: ID3 Algorithm Explained. *Towards Data Science*.
33. ↑  Bayesian inference algorithm:

	* Russell & Norvig 2003, pp. 504–519,
	* Poole, Mackworth & Goebel 1998, pp. 361–381,
	* Luger & Stubblefield 2004, pp. ~363–379,
	* Nilsson 1998, chpt. 19.4 & 7.
34. ↑  Bayesian learning and the expectation-maximization algorithm:

	* Russell & Norvig 2003, pp. 712–724,
	* Poole, Mackworth & Goebel 1998, pp. 424–433,
	* Nilsson 1998, chpt. 20.
35. ↑  Bayesian decision theory and Bayesian decision networks:

	* Russell & Norvig 2003, pp. 597–600.
36. 1 2  Bayesian Networks 互聯網檔案館嘅歸檔，歸檔日期2019年7月9號，.. *Bayesialab*.
37. ↑  Bayesian networks:

	* Russell & Norvig 2003, pp. 492–523,
	* Poole, Mackworth & Goebel 1998, pp. 361–381,
	* Luger & Stubblefield 2004, pp. ~182–190, ≈363–379,
	* Nilsson 1998, chpt. 19.3–4.
38. 1 2  Delalleau, O. Contal, E. Thibodeau-Laufer, E. Ferrari, R. C. Bengio, Y. & Zhang, F. (2012). Beyond skill rating: Advanced matchmaking in ghost recon online. *IEEE Transactions on Computational Intelligence and AI in Games*, 4(3), 167-177.
39. 1 2  Cortes, Corinna; Vapnik, Vladimir N. (1995). "Support-vector networks". *Machine Learning*. 20 (3): 273–297.
40. ↑  Ben-Hur, Asa; Horn, David; Siegelmann, Hava; and Vapnik, Vladimir N.; "Support vector clustering"; (2001); *Journal of Machine Learning Research*, 2: 125–137.
41. 1 2  Ojha, Varun Kumar; Abraham, Ajith; Snášel, Václav (2017-04-01). "Metaheuristic design of feedforward neural networks: A review of two decades of research". *Engineering Applications of Artificial Intelligence*. 60: 97–116.
42. ↑  Ting Qin, et al. "A learning algorithm of CMAC based on RLS." *Neural Processing Letters* 19.1 (2004): 49–61.
43. ↑  M.R. Smith and T. Martinez (2011). "Improving Classification Accuracy by Identifying and Removing Instances that Should Be Misclassified". *Proceedings of International Joint Conference on Neural Networks* (IJCNN 2011). pp. 2690–2697.
44. ↑  Looney, C. G. (1997). *Pattern recognition using neural networks: theory and algorithms for engineers and scientists* (pp. 171-172). New York: Oxford University Press.
45. ↑  Cancer Detection - MATLAB Example[*失咗效嘅鏈*].
46. ↑  Menéndez, L. Á. de Cos Juez, F. J. Lasheras, F. S. & Riesgo, J. Á. (2010). Artificial neural networks applied to cancer detection in a breast screening programme. *Mathematical and Computer Modelling*, 52(7-8), 983-991.
47. ↑  Milani, C. & Jadavji, N. M. (2017). Solving cancer: The use of artificial neural networks in cancer diagnosis and treatment. *Journal of Young Investigators*, 33(4).
48. ↑  Jordan, Michael I.; Bishop, Christopher M. (2004). "Neural Networks". In Allen B. Tucker (ed.). *Computer Science Handbook*, Second Edition (Section VII: Intelligent Systems). Boca Raton, Florida: Chapman & Hall/CRC Press LLC.
49. ↑  Unsupervised learning - MathWorks.
50. 1 2 3  Unsupervised Learning and Data Clustering. *Towards Data Science*.
51. ↑  Dostál, P. & Pokorný, P. (2009). Cluster analysis and neural network. In *17th Annual Conference Proceedings on Technical Computing Prague* (pp. 131-57).
52. ↑  Dominic, S.; Das, R.; Whitley, D.; Anderson, C. (July 1991). "Genetic reinforcement learning for neural networks". *IJCNN-91-Seattle International Joint Conference on Neural Networks*. Seattle, Washington, USA: IEEE.
53. ↑  Hoskins, J.C.; Himmelblau, D.M. (1992). "Process control via artificial neural networks and reinforcement learning". *Computers & Chemical Engineering*. 16 (4): 241–251.
54. ↑  Bertsekas, D.P.; Tsitsiklis, J.N. (1996). Neuro-dynamic programming. *Athena Scientific*. p. 512.
55. 1 2  NEURAL NETWORKS AND REINFORCEMENT LEARNING 互聯網檔案館嘅歸檔，歸檔日期2018年10月24號，. (PDF).
56. ↑  Miller, W. T. Werbos, P. J. & Sutton, R. S. (Eds.). (1995). *Neural networks for control*. MIT press.
57. ↑  Goldberg, David E.; Holland, John H. (1988). "Genetic algorithms and machine learning". *Machine Learning*. 3 (2): 95-99.
58. ↑  Michie, D.; Spiegelhalter, D. J.; Taylor, C. C. (1994). "*Machine Learning, Neural and Statistical Classification*". Ellis Horwood Series in Artificial Intelligence.
59. ↑  Zhang, Jun; Zhan, Zhi-hui; Lin, Ying; Chen, Ni; Gong, Yue-jiao; Zhong, Jing-hui; Chung, Henry S.H.; Li, Yun; Shi, Yu-hui (2011). "Evolutionary Computation Meets Machine Learning: A Survey" (PDF). *Computational Intelligence Magazine*. 6 (4): 68-75.
60. ↑  Metrics to Evaluate your Machine Learning Algorithm. *Towards Data Science*.
61. ↑  Various ways to evaluate a machine learning model’s performance. *Towards Data Science*.
62. 1 2  Kohavi, Ron (1995). "A Study of Cross-Validation and Bootstrap for Accuracy Estimation and Model Selection". *International Joint Conference on Artificial Intelligence*.
63. ↑  Rodriguez, J. D. Perez, A. & Lozano, J. A. (2009). Sensitivity analysis of k-fold cross validation in prediction error estimation. *IEEE transactions on pattern analysis and machine intelligence*, 32(3), 569-575.
64. ↑  Altman DG, Bland JM (June 1994). "Diagnostic tests. 1: Sensitivity and specificity". *BMJ*. 308 (6943): 1552.
65. ↑  Pontius, Robert Gilmore; Si, Kangping (2014). "The total operating characteristic to measure diagnostic ability for multiple thresholds". *International Journal of Geographical Information Science*. 28 (3): 570–583.
66. ↑  Domingos 2015, Chapter 6, Chapter 7.
67. ↑  Killourhy, K. S. & Maxion, R. A. (2009, June). Comparing anomaly-detection algorithms for keystroke dynamics. In 2009 IEEE/IFIP International Conference on Dependable Systems & Networks (pp. 125-134). *IEEE*.
68. ↑  Zimek, Arthur; Schubert, Erich (2017), "Outlier Detection", *Encyclopedia of Database Systems*, Springer New York, pp. 1–5.
69. 1 2  Hodge, V. J.; Austin, J. (2004). "A Survey of Outlier Detection Methodologies". *Artificial Intelligence Review*. 22 (2): 85–126.
70. ↑  Dokas, Paul; Ertoz, Levent; Kumar, Vipin; Lazarevic, Aleksandar; Srivastava, Jaideep; Tan, Pang-Ning (2002). "Data mining for network intrusion detection" (PDF). *Proceedings NSF Workshop on Next Generation Data Mining*.
71. ↑  Chandola, V.; Banerjee, A.; Kumar, V. (2009). "Anomaly detection: A survey". *ACM Computing Surveys*. 41 (3): 1–58.
72. ↑  Mahadevan, V. Li, W. Bhalodia, V. & Vasconcelos, N. (2010, June). Anomaly detection in crowded scenes. In 2010 IEEE Computer Society Conference on Computer Vision and Pattern Recognition (pp. 1975-1981). *IEEE*.
73. 1 2  An Easy Introduction to Machine Learning Recommender Systems.
74. ↑  Davidson, J. Liebald, B. Liu, J. Nandy, P. Van Vleet, T. Gargi, U. ... & Sampath, D. (2010, September). The YouTube video recommendation system. In *Proceedings of the fourth ACM conference on Recommender systems* (pp. 293-296).
75. ↑  Baluja, S. & Pomerleau, D. (1994). Non-intrusive gaze tracking using artificial neural networks. In *Advances in Neural Information Processing Systems* (pp. 753-760).
76. ↑  Foody, G. M. McCulloch, M. B. & Yates, W. B. (1995). The effect of training set size and composition on artificial neural network classification. *International Journal of Remote Sensing*, 16(9), 1707-1723.
77. ↑  Lange, K. L. Little, R. J. & Taylor, J. M. (1989). Robust statistical modeling using the t distribution. *Journal of the American Statistical Association*, 84(408), 881-896.
78. ↑  Acerbi, L. & Ji, W. (2017). Practical Bayesian optimization for model fitting with Bayesian adaptive direct search. In *Advances in neural information processing systems* (pp. 1836-1846).
79. ↑  Lüthi, M. Jud, C. & Vetter, T. (2013, September). A unified approach to shape model fitting and non-rigid registration. In *International workshop on machine learning in medical imaging* (pp. 66-73). Springer, Cham.
80. 1 2  "Why Machine Learning Models Often Fail to Learn: QuickTake Q&A". *Bloomberg.com*.
81. ↑  "The First Wave of Corporate AI Is Doomed to Fail". *Harvard Business Review*. 2017-04-18.
82. ↑  "Why the A.I. euphoria is doomed to fail". *VentureBeat*. 2016-09-18.
83. ↑  "9 Reasons why your machine learning project will fail". *www.kdnuggets.com*.
84. ↑  "Why Uber's self-driving car killed a pedestrian". *The Economist*.
85. ↑  "IBM's Watson recommended 'unsafe and incorrect' cancer treatments - STAT". *STAT*.
86. ↑  Hernandez, Daniela; Greenwald, Ted (2018-08-11). "IBM Has a Watson Dilemma". *Wall Street Journal*.
87. ↑  Char, D. S.; Shah, N. H.; Magnus, D. (2018). "Implementing Machine Learning in Health Care—Addressing Ethical Challenges". *New England Journal of Medicine*. 378 (11): 981–983.

拎
-


維基同享有多媒體嘅嘢：  
**Machine learning**

* International Machine Learning Society.
* mloss is an academic database of open-source machine learning software.
* Machine Learning Crash Course by Google.
* Machine Learning，一本研究機械學習嘅學術期刊。

| * 睇
* 傾
* 改
機械學習同數據探勘 |
| --- |
| 可以睇埋機械學習詞彙同數據科學 |
| 基本概念 | 人工智能 · 學習 · 運算學習論 · 線性可分性 · 事前數據處理 · 特徵提取 · 知識表示 |  |
| 數學模型 | 

|  |
| --- |
| 迴歸模型 · 決策樹（蒙地卡羅樹搜尋） · 貝葉斯網絡 · 支援向量機 · 關聯規則學習 |
| 神經網絡 | 

|  |  |
| --- | --- |
| 網絡基礎 | 人工神經細胞 · 前饋網絡（感知機 · 多層感知機） |
| 遞迴網絡 | 霍菲特網絡 · 玻茲曼機 · 長短期記憶 · 神經圖靈機 |
| 深度學習 | 卷積網絡 · 受限玻茲曼機（深度信念網絡） · 深度強化學習 |
| 網絡概念 | 反向傳播算法 · 關注機制 · 生成對抗網絡 · 基於流嘅生成模型 |
| 自編碼器 · 脈衝神經網絡 · 自組織對映 · 網絡種類一覽 |

 |

 |
| 最佳化 | 誤差函數 · 爬山演算法 · 梯度下降法 · 全局最佳化 · 正則化 · 變分推斷 · 資訊最大化 |
| 學習範式 | 監督式學習 · 非監督式學習 · 強化學習 · 遺傳演算法 · 主動機械學習 |
| 模型評估 | 自助抽樣法 · 交叉驗證 · 訓練曲線 · 適合度函數 · 過適 |
| 主要應用 | 統計分類（線性分類機） · 表徵學習 · 降維（特徵選擇） · 聚類分析 · 異常檢測 |
| 拉雜相關 | 認知科學 · 電腦科學 · 統計學 · 資訊理論 · 資訊系統、資訊過多同大數據 |
| 機械學習類 · 數據探勘類 |

| * 睇
* 傾
* 改
人工智能（**AI**） |
| --- |
| 研究「點樣人工噉創造智能體」嘅學問 |
| 基本概念 | 智能體 · 智能（超智能） · 演算法同電腦程式編寫 · 複雜 · 基於規則嘅系統 · AI 完全 · AI 詞彙表 |  |
| 運算方法 | 符號 AI · 貝葉斯網絡 · 神經網絡 · 進化演算法（遺傳演算法） · 解釋得嘅 AI |
| 重要問題 | 

|  |
| --- |
| 自動推理 · 行動選擇同自動計劃 · 運動規劃 · 群體智能 · 情感運算同性格運算 · 瓣瓣掂玩遊戲
機械感知（電腦視覺 · 邊緣檢測 · 手寫辨識 · 物體檢測） · 機械學習（知識表示 · 深度學習）
NLP（語音識別 · 機械翻譯） · 運算創意 · 強 AI · 協作智能 · 自動資料收集 |

 |
| AI 應用 | 遊戲 AI · 專家系統 · 自駕車 · 傾偈機械人 · 認人樣系統 · 虛擬助理 · 聰明玩具 · 智能感應器 · 環境智能 |
| AI 哲學 | 圖靈測試 · 中文房間 · AI 箱 · AI 叛變 · 友好嘅 AI · 機械人三定律 |
| AI 史 | 圖靈 · AI 低谷 · DeepMind · OpenAI · ChatGPT |
| 相關領域 | 

|  |  |
| --- | --- |
| 認知科學 | 動物行為學同認知心理學 · 神經科學（運算神經科學） · 語言學 · 人機互動 |
| 電腦科學（軟件工程） · 應用數學（統計學） · 控制理論 · 機械人學 · 經濟學 |

 |
| 拉雜相關 | 認知 · 意識 · 智能放大 · 機械人（人形機械人） · 元宇宙 · Cyberpunk · 科技奇異點 · 通用心理測量 |
| AI 類 |

| * 睇
* 傾
* 改
電腦科學 |
| --- |
| 研究運算嘅科學工程領域 |
| 重要概念 | 運算 · I/O · 電腦 · 運算邏輯 · 數論 · 二進制 · 數學邏輯 · 離散數學（圖論） · 抽象化 · 電腦科學詞彙表 |  |
| 電腦理論 | 

|  |  |
| --- | --- |
| 運算理論 | 自動機理論 · 可運算度理論 · 運算複雜度理論 · 圖靈機 · 量子運算 |
| 資訊理論（資訊 · 訊號 · 資訊熵 · 編碼理論） · 資料類型‎同數據結構 · 系統資源 · 演算法（分析） · 形式化方法 |

 |
| 電腦系統 | 電腦架構（邏輯門 · 指令集架構 · 微架構 · 多元處理 · 作業系統） · 並行運算、平行運算同分散運算 · 電腦性能 |
| 電腦通訊 | 

|  |  |
| --- | --- |
| 電腦網絡 | 網絡傳輸協議 · 網絡拓樸 · 數據傳輸 · 互聯網 · 網頁設計 |
| 電腦保安 | 網絡保安 · 漏洞 · 公共漏洞同暴露 · 網絡攻擊 · 電腦病毒 · 密碼學 |

 |
| 程式編寫 | 程式語言（程式語言理論 · 低級同高級程式語言 · 控制流程） · 程式執行 · 編譯器 · 程式編寫範式 |
| 電腦應用 | 

|  |  |
| --- | --- |
| 數碼藝術 | 電腦圖像（2D · 3D · 電腦動畫 · 資訊可視化 · VR · AR · 電腦圖像學） · 電腦音樂 |
| 軟件工程 | 電腦軟件 · 軟件開發 · 軟件需求 · 軟件項目管理 · 電子遊戲製作 |
| HCI | 

|  |
| --- |
| 用家 · 易用度 · 用家介面（設計 · 圖像 · 命令行 · 腦機） |

 |
| 其他應用 | 資訊系統（數據庫） · 科學運算（電腦模擬） · 運算數論 · 電腦代數 |

 |
| AI | AI 哲學 · 知識表示 · 自動計劃 · 電腦視覺 · NLP · 機械學習（ANN · 監督式學習 · 非監督式學習 · 強化學習） |
| 相關領域 | 

|  |  |
| --- | --- |
| 　工程學 | 電子工程（電訊） · 電腦工程 · 資訊科技 · 機械人學 · 機電工程 |
| 邏輯學 · 數學（統計學 · 博弈論） · 認知科學 · 模控學 · 資訊科學 · 系統科學 |

 |
| 電腦科學類 |

| * 睇
* 傾
* 改
學習（拉丁文：Doctrina） |
| --- |
| 一個個體吸收知識、技能同行為嘅過程 |
| 行為學習 | 

|  |  |
| --- | --- |
| 聯想式 | 古典制約 · 操作制約（強化同懲罰） · 銘印 · 觀察學習 · 習得型失助 |
| 行為概念 | 非聯想式（習慣化 · 敏化作用） · 習慣 · 玩 · 動機 |

 |
| 理論模型 | 學習曲線同遺忘曲線 · 海伯理論 · 貝葉斯腦假說 · 運算學習論 · 行為改變理論 |
| 認知相關 | 心智表徵（模型） · 感知 · 注意力 · 記憶同遺忘 · 知識（外顯同內隱） · 智能 · 遷移 |
| 神經相關 | 記憶嘅神經底質（記憶痕跡） · 神經可塑 · 海馬體 · 杏仁核 · 前額皮層 · 犒賞系統 |
| 教育相關 | 主動學習同被動學習 · 混合式學習 · 填鴨式教育 · 終身學習 · 有益難度 |
| 管理相關 | 組織學習 · 知識傳遞 · 知識管理 · 吸收能力 |
| 應用技術 | 動物訓練 · 應用行為分析 · 語言習得（SLA） · 強迫循環 · 神經回輸 · 機械學習（RL） |
| 相關領域 | 

|  |  |
| --- | --- |
| 認知科學 | 心理學（認知心理學 · 行為主義） · 神經科學 · AI |
| 教育學（教育心理學） · 知識管理 · 精神醫學 · 邏輯 · 知識論 |

 |
| 拉雜相關 | 演繹推理同歸納 · 貝葉斯推論 · 先天定後天（先天知識） · 好奇 · 心流 · 適應系統 |
| 學習類 |