機器學習

機器學習（machine learning，簡稱ML）是人工智慧的一個分支。機器學習理論主要是設計和分析一些讓電腦可以自動「學習」的演算法。機器學習演算法是一類從數據中自動分析獲得規律，並利用規律對未知數據進行預測的演算法。因為學習演算法中涉及了大量的統計學理論，機器學習與推斷統計學聯繫尤為密切，也被稱為統計學習理論。演算法設計方面，機器學習理論關注可以實現的，行之有效的學習演算法（要防止錯誤累積）。很多推論問題屬於非程序化決策，所以部分的機器學習研究是開發容易處理的近似算法。

機器學習已廣泛應用於數據挖掘、電腦視覺、自然語言處理、生物特徵識別、搜尋引擎、醫學診斷、檢測信用卡詐騙、證券市場分析、DNA序列測序、語音和手寫識別、遊戲和機器人等領域。機器學習在近30多年已發展為一門多領域科際整合，涉及機率論、統計學、逼近論、凸分析、計算複雜性理論、資訊理論等多門學科。

## 定義

機器學習有下面幾種定義：

- 機器學習是一門人工智慧的科學，該領域的主要研究對象是人工智慧，特別是如何在經驗學習中改善具體演算法的性能。
- 機器學習是對能通過經驗自動改進的電腦演算法的研究。
- 機器學習是用數據或以往的經驗，以此優化電腦程序的性能標準。

另外，電腦科學家湯姆·麥秋·米切爾在其著作的Machine Learning一書中定義的機器學習為：

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.｜Tom Mitchell｜Machine Learning

## 與其他領域的關係

作為一項科學事業，機器學習源自人類對人工智慧（Artificial Intelligence，簡稱AI）的探索。在人工智慧成為學術領域的早期，一些研究者便嘗試讓機器從數據中學習。他們一方面採用多種符號方法（symbolic methods）處理這一問題，另一方面也使用當時稱為「神經網路」（neural networks）的模型。這類神經網路主要包括感知機（perceptrons）及其他模型，後來被認為相當於對統計學中廣義線性模型（generalized linear models）的重新發明。此外，研究者還廣泛使用機率推理（probabilistic reasoning）方法，尤其是在自動化醫學診斷領域。

然而，隨著學術界對邏輯和基於知識的（knowledge-based）方法日益強調，人工智慧（AI）和機器學習之間逐漸產生了分歧。機率系統（probabilistic systems）也面臨著數據獲取和數據表示方面的理論與實際問題。到1980年左右，專家系統（expert systems）開始在人工智慧領域占據主導地位，統計學方法逐漸被邊緣化。在AI領域內部，符號學習（symbolic learning）或知識學習（knowledge-based learning）的研究依然繼續，並催生了歸納邏輯編程（inductive logic programming，簡稱ILP）。而更為側重統計方法的研究，則逐漸被歸類到模式識別（pattern recognition）和資訊檢索（information retrieval）等領域，不再屬於AI的核心研究方向。同時，神經網路（neural networks）的研究也在AI和電腦科學（computer science）領域被逐漸放棄。這條研究路徑後來在AI和電腦科學之外繼續發展，形成了以「聯結主義」（connectionism）為代表的學派，由其他領域的研究者推動，如約翰·霍普菲爾德（John Hopfield）、大衛·魯梅爾哈特（David Rumelhart）和傑弗里·辛頓（Geoffrey Hinton）等人。他們的研究在1980年代中期取得了重要突破，其中以反向傳播算法（backpropagation）的重新發現最為顯著。

機器學習（Machine Learning，簡稱ML）在1990年代被重新整合併確立為獨立的研究領域，並開始蓬勃發展。這一領域的目標也從最初追求實現人工智慧（Artificial Intelligence，簡稱AI），轉變為解決實際中能夠被有效解決的問題。研究重心逐漸遠離了繼承自AI的符號方法（symbolic approaches），轉向了從統計學（statistics）、模糊邏輯（fuzzy logic）以及機率理論（probability theory）中借鑑的方法和模型。

## 理論

學習器（learner）的核心目標之一是從經驗中進行泛化（generalize）。在這一背景下，泛化指的是學習機器在經歷了訓練數據集（learning data set）之後，能夠在新出現的、未曾見過的樣本或任務上準確表現的能力。這些訓練樣本通常來自某個未知的機率分布（probability distribution，這個機率分布被認為能代表真實場景中事件的分布空間），學習器需要基於這些數據構建出一個一般化的模型，從而能夠對新的情景或樣本做出足夠準確的預測。

對機器學習演算法及其性能進行的計算分析，是理論電腦科學（theoretical computer science）的一個分支，稱為計算學習理論（computational learning theory），通常通過機率近似正確學習模型（probably approximately correct learning，簡稱PAC Learning）實現。由於訓練集（training sets）是有限的，而未來又充滿不確定性，因此學習理論通常並不能絕對保證演算法的表現；取而代之的是，通常會給出算法性能的機率性界限（probabilistic bounds）。偏差-方差分解（bias–variance decomposition）是一種用於量化泛化誤差（generalization error）的方法。

為了獲得最佳的泛化（generalization）性能，假設（hypothesis，也即模型）的複雜度應與數據背後的真實函數（function）的複雜度相匹配。如果假設的複雜度低於真實函數的複雜度，那麼模型就會出現欠擬合（underfitting）的現象；在這種情況下，適當增加模型的複雜度可以降低訓練誤差（training error）。然而，如果假設的複雜度過高，模型又會面臨過擬合（overfitting）問題，從而導致泛化能力下降。

除了研究性能界限（performance bounds）之外，學習理論的研究人員也關注學習的時間複雜度（time complexity）和可行性（feasibility）。在計算學習理論（computational learning theory）中，如果某個計算可以在多項式時間（polynomial time）內完成，那麼就被視為是可行的（feasible）。關於時間複雜度，有兩種類型的結果：

- 正面結果（Positive results）表明某一類函數可以在多項式時間內被學習。
- 負面結果（Negative results）表明某些函數類別無法在多項式時間內被學習。

## 分類

機器學習方法傳統上被劃分為以下幾類，對應不同的學習範式（learning paradigms），具體取決於學習系統可獲得的「信號」或「反饋」的類型：

- 半監督學習：介於監督學習與無監督學習之間。
- 強化學習：機器為了達成目標，隨著環境的變動，而逐步調整其行為，並評估每一個行動之後所到的回饋是正向的或負向的。

## 模型與方法

機器學習模型是一種數學模型，在經過某個數據集的「訓練」之後，可以用於對新數據進行預測或分類。在訓練過程中，學習算法會通過迭代不斷調整模型的內部參數，以儘可能減少預測誤差。廣義上，「模型」一詞可以指代不同層級的內容：既可以是某一類模型及其對應的學習演算法，也可以是所有內部參數都已經調整完畢、訓練完成的具體模型。

在機器學習系統中，已經研究和應用了多種類型的模型。為特定任務選擇最合適的模型的過程被稱為模型選擇（model selection）**。

具體的機器學習模型有：

- 構造間隔理論分布：聚類分析和模式識別
- 人工神經網絡
- 決策樹
- 感知器
- 支援向量機
- 集成學習AdaBoost
- 降維與度量學習
- 聚類
- 貝葉斯分類器
- 構造條件概率：回歸分析和統計分類
- 高斯過程回歸
- 線性判別分析
- 最近鄰居法
- 徑向基函數核
- 最大期望算法
- 機率圖模型：包括貝氏網路和Markov隨機場
- Generative Topographic Mapping
- 馬爾可夫鏈
- 蒙特卡羅方法
- 變分法
- 最優化：大多數以上方法，直接或者間接使用最優化演算法。
- 量子機器學習

### 人工神經網絡

人工神經網絡（Artificial Neural Networks，簡稱ANNs），又稱聯結主義系統（connectionist systems），是一類受動物大腦中生物神經網路啟發而構建的計算系統。這類系統通過學習樣本來完成任務，而通常不依賴於任何針對特定任務的預設規則。換句話說，它們是通過觀察大量示例，逐步「學會」如何解決問題的。

人工神經網絡（ANN）是一種由多個相互連接的單元或節點構成的模型，這些節點被稱為「人工神經元」，其靈感來源於生物大腦中的神經元。在人工神經網絡中，每個連接類似於生物大腦中的突觸，可以在人工神經元之間傳遞資訊，也就是「信號」。

一個接收到信號的人工神經元可以對其進行處理，並將處理後的信號傳遞給與其連接的其他人工神經元。在常見的ANN實現中，神經元之間連接所傳遞的信號是一個實數，而每個人工神經元的輸出是其所有輸入的加權和經過某種非線性函數變換後的結果。

神經元之間的連接稱為「邊」（edges）。人工神經元和連接邊通常都帶有一個權重，這個權重會隨著學習過程的進行而調整。權重決定了信號傳遞的強度，權重越大，信號越強。有些人工神經元還設有閾值：只有當接收到的總信號超過該閾值時，才會傳遞輸出信號。

通常，人工神經元會被組織成不同的層（layers）。不同的層可能對輸入執行不同類型的變換。信號從第一層（輸入層）開始，一直傳遞到最後一層（輸出層），過程中可能會多次經過中間的隱藏層。

人工神經網絡（ANN）最初的目標是模擬人腦的工作方式來解決問題。然而，隨著時間的推移，研究重點逐漸轉向如何高效地完成特定任務，這也導致了神經網路的發展逐漸偏離了生物學上的真實神經結構。

儘管如此，人工神經網絡已經在眾多領域得到了廣泛應用，包括：

- 電腦視覺（computer vision）
- 語音識別（speech recognition）
- 機器翻譯（machine translation）
- 社交網路內容過濾（social network filtering）
- 棋類與電子遊戲（playing board and video games）
- 醫學診斷（medical diagnosis）

這些成功應用證明了神經網路在解決複雜、非線性問題方面的強大能力。

深度學習（Deep Learning）是指在人工神經網絡中引入多個隱藏層（hidden layers）的一種方法。這種方法試圖模擬人腦將光和聲音轉化為視覺和聽覺的處理方式。深度學習在多個領域取得了顯著成果，其中電腦視覺（computer vision）和語音識別（speech recognition）是其最成功的應用之一。

### 決策樹

決策樹學習（Decision Tree Learning）是一種使用決策樹作為預測模型的方法，通過對一個對象的觀察（表示在樹的分支上），推導出該對象的目標值（表示在葉子節點上）。它是統計學、數據挖掘和機器學習中常用的一種預測建模方法。

- 當目標變量是離散值（例如分類標籤）時，所構建的樹被稱為分類樹（Classification Tree）。在這類樹結構中，葉子節點代表類別標籤，分支則代表導致這些標籤的特徵組合。
- 當目標變量是連續值（通常是實數）時，該樹稱為回歸樹（Regression Tree）。

在決策分析（Decision Analysis）中，決策樹可以被用來直觀、明確地表示決策過程及其可能結果。而在數據挖掘（Data Mining）中，決策樹不僅可以用來描述數據本身，其生成的分類樹還可以作為後續決策的依據。

總結來說，決策樹是一種結構清晰、解釋性強的模型，適合處理既有分類又有回歸問題。

### 隨機森林回歸

隨機森林回歸（Random forest regression, RFR）屬於基於決策樹的模型範疇。RFR 是一種集成學習方法（ensemble learning method），它通過構建多個決策樹並對其預測結果進行平均，從而提高預測的準確性並有效避免過擬合。

在構建決策樹的過程中，RFR 採用自助採樣法（bootstrapped sampling），也就是說，每棵決策樹都是在訓練集中隨機抽取的一部分數據上進行訓練的。這種訓練方式的「隨機性」有助於減少模型的偏差，使預測結果更加準確。

RFR 會生成相互獨立的多個決策樹，它既可以用於單一輸出變量的回歸問題，也可以用於多回歸任務（multiple regressor task）。這種靈活性使得 RFR 能夠被廣泛應用於各種實際場景中。

### 支持向量機

支持向量機（SVM），也稱為支持向量網路（Support-Vector Networks），是一組用於分類（classification）和回歸（regression）的監督學習方法。在給定一組訓練樣本的前提下，其中每個樣本都被標註為屬於兩個類別之一，SVM 的訓練算法會構建一個模型，用來預測新的樣本屬於哪個類別。SVM 是一種非機率性的二分類線性分類器，雖然也有像 Platt scaling 這樣的擴展方法，可以使其應用於機率分類任務。

除了進行線性分類，SVM 還可以藉助所謂的核技巧（kernel trick），高效地實現非線性分類。這種方法通過隱式地將輸入映射到高維特徵空間，使得在原本線性不可分的問題中，也能找到一個可分的超平面，從而實現更複雜的分類效果。

### 回歸分析

回歸分析（Regression analysis）是一個涵蓋廣泛的統計方法集合，主要用於估計輸入變量與其相關特徵之間的關係。其中最常見的形式是線性回歸（Linear Regression），通過一條直線來最優地擬合給定數據，這條線通常依據某種數學準則（如最小二乘法，Ordinary Least Squares）確定。

為了減輕過擬合（overfitting）和偏差（bias）的問題，線性回歸往往會結合正則化方法（regularization methods）進行擴展，例如嶺回歸（Ridge Regression）。

在面對非線性問題時，常用的替代模型包括：

- 多項式回歸（Polynomial Regression）：如 Microsoft Excel 中用於趨勢線擬合的工具。
- 邏輯回歸（Logistic Regression）：廣泛用於統計分類任務。
- 核回歸（Kernel Regression）：利用核技巧（kernel trick）將輸入變量隱式映射到更高維空間，從而引入非線性。

這些模型能夠更靈活地擬合和預測現實中複雜的數據關係。

多元線性回歸（Multivariate Linear Regression）是在傳統線性回歸的基礎上擴展而來的，用於同時處理多個因變量（輸出變量）的情況。這種方法通過擬合一個多維線性模型，來估計一組輸入變量與多個輸出變量之間的關係。

多元線性回歸特別適用於以下場景：

- 輸出變量之間存在相互依賴關係。
- 多個輸出共享某種潛在的模式或結構。

例如：

- 同時預測多個經濟指標。
- 重建圖像數據（圖像本身是多維結構）。

這種方法在處理複雜、關聯性強的多輸出問題時，能提供更全面和準確的建模能力。

### 貝葉斯網路

貝葉斯網路（Bayesian Network），又稱信念網路（Belief Network）或有向無環圖模型（Directed Acyclic Graphical Model），是一種機率圖模型（probabilistic graphical model），它通過一個有向無環圖（Directed Acyclic Graph,DAG）來表示一組隨機變量之間的條件獨立性關係。

例如，一張貝葉斯網路可以用於表示疾病與症狀之間的機率關係。當給定一些症狀時，可以利用該網路計算出不同疾病出現的機率，從而輔助判斷可能的病因。

貝葉斯網路配有高效的推理與學習演算法，能夠處理複雜的機率推斷任務。

進一步擴展：

- 如果貝葉斯網路用於表示變量序列（如語音信號、蛋白質序列等），這樣的模型稱為動態貝葉斯網路（Dynamic Bayesian Networks）。
- 能夠在不確定性下表示並解決決策問題的貝葉斯網路模型，稱為影響圖（Influence Diagrams）。

這些圖模型在醫學診斷、語音識別、機器人決策等領域都有重要應用。

### 高斯過程

高斯過程（Gaussian Processes）是一種隨機過程（stochastic process），其特點是：在該過程中，任意有限數量的隨機變量都服從一個多元正態分布（multivariate normal distribution）。高斯過程依賴於一個預定義的協方差函數（covariance function）或稱核函數（kernel），用於建模不同點之間的關係，這種關係取決於它們在空間中的位置。

在給定一組已觀測的數據點（即輸入-輸出樣本）後，我們可以通過這些已知點之間的協方差，以及它們與某個新的、未觀測點之間的協方差，直接計算該新點的輸出值的機率分布，這是高斯過程的核心能力之一。

高斯過程在貝葉斯優化（Bayesian Optimization）中非常受歡迎，常被用作替代模型（surrogate model），特別適合用於超參數優化（hyperparameter optimization）等任務。

## 軟體

包含各種機器學習演演算法的軟體套裝包括：

### 自由開源軟體

- Caffe
- Deeplearning4j
- DeepSpeed
- ELKI
- JAX
- Infer.NET
- Keras
- Kubeflow
- LightGBM
- Mahout
- Mallet
- Microsoft Cognitive Toolkit
- ML.NET
- mlpack
- MXNet
- OpenNN
- Orange
- pandas (software)
- ROOT (TMVA with ROOT)
- scikit-learn
- Shogun
- Spark MLlib
- SystemML
- TensorFlow
- Torch / PyTorch
- Weka / MOA
- XGBoost
- Yooreeka