收錄 ML/DL 的術語;按照英文字母序排列;提供比較詳盡的定義、實例、圖解、引註,術語之間有交互連結。
Warning
部分定義使用 ChatGPT 生成,但經過團隊成員人工改寫。
啟動函數(activation function)是在神經網路中的一種非線性函數(nonlinear function),位於每一層神經元的輸出端。它的作用是將輸入映射到某個範圍,並引入非線性(nonlinearity),使得神經網路能夠學習和表示複雜的非線性關係,從而提升模型在分類、迴歸等複雜任務中的表現。
常見的啟動函數包括 Logistic 函數、ReLU、tanh、Leaky ReLU 等等。
ANN搜尋(Approximate nearest neighbor),本質上是在許多稠密搜尋中,快速找到目標點的財務點,並認為這就是相似的節點,主要用於影像搜尋、高維度搜尋。映射在同一表示空間與距離相近的點,具有相似的語意特徵,距離越近越相關,反之關係越遠。
AdaDelta是基於AdaGrad改進的一種自適應學習率的優化器,Adadelta 演算法的設計是不需要手動設定學習率。
在機器學習模型中,偏差(bias)是一個加到加權和(weighted sum)中的額外參數,用於調整模型輸出的偏移量。
偏差允許模型擬合更複雜的資料模式。例如在應對非線性問題情況時能夠保持靈活性。或是幫助模型在沒有輸入的情況下也能產生有意義的輸出。
二元分類(binary classification)是機器學習中一種分類問題,目標是將輸入的資料分成兩個類別之一。
二元交叉熵(binary cross-entropy,BCE)是專門用於二元分類問題的損失函數,衡量模型預測的機率分佈與實際標籤之間的差異。它是交叉熵損失在二元分類上的專用版本。
其數學表達式為:
其中:
二元交叉熵損失越小,模型的預測結果與實際標籤越接近。這個損失函數通常用在如垃圾郵件檢測、疾病診斷等二元分類問題中。
BinaryCrossentropy
。BCELoss
。Benchmark Corpus 是一個標準化的數據集,通常用來衡量或比較不同的演算法或系統在特定任務上的性能。這些數據集可以用於各種自然語言處理(NLP)、計算機視覺、語音識別等領域,作為一種統一的測試基準,來評估不同模型或方法的表現。
Benchmark Corpus 的目的是提供一個公共的參考,使研究者和開發者能夠在相同的條件下進行實驗,以便更準確地比較不同技術的有效性。常見的 Benchmark Corpus 包括:
分類問題(classification problem)是機器學習中一種常見的任務,目的是將輸入的資料分配到不同的類別中。分類問題的輸出是離散的,也就是模型要從一組有限的標籤中選擇一個作為輸出的結果。
分類問題的例子包括:
在處理分類問題時,常見的演算法有:
分類問題的損失函數通常使用交叉熵損失來度量預測結果和真實標籤之間的差異,並透過最佳化演算法來最小化這個損失。
交叉熵損失(cross-entropy loss)是機器學習中常用於分類問題的一種損失函數,特別是二元或多元分類問題。它衡量模型預測的機率分佈與實際分佈之間的差異。
交叉熵損失越小,表示模型預測的機率分佈與真實標籤的分佈越接近,因此交叉熵損失被最小化時,模型性能通常會更好。
基於密度的分群演算法,適合異常值處理。
梯度(gradient)是向量微積分中的一個概念,表示一個多變數函數在每個變數上的偏導數。對於一個函數 ,其梯度是一個向量,其分量是該函數對每個變數的偏導數。具體的數學表達式為:
其中 是函數 的梯度, 是函數 對變數 的偏導數。
就幾何意義來說,梯度指向函數值增長最快的方向,且向量的長度表示增長的速率。
在機器學習中,梯度通常是指目標函數(如損失函數)相對於模型參數的梯度。在最佳化演算法(如梯度下降法)中,梯度用來告訴我們應該如何更新模型的參數,使損失函數減少。
梯度下降法(gradient descent)是機器學習中一種常用的最佳化演算法,用來最小化損失函數。它透過計算損失函數對模型參數的梯度來更新參數,使損失函數逐步減小。
以下是梯度下降法的過程概說:
關於更淺白的解釋,可以參考[1]。
梯度下降法有多種變體,如批次梯度下降法、隨機梯度下降法、小批次梯度下降法,它們在計算梯度時使用的資料量不同。
超參數(hyperparameter)是在機器學習中由開發者或使用者事先設定的參數,這些參數在模型訓練過程中保持不變。與模型中的「參數」不同,參數是由訓練資料自動學習而來,而超參數需要手動調整。
常見的超參數包括:
調整這些超參數對模型性能有很大影響,通常需要透過實驗來找到最佳設定。
Intersection over Union 是 兩個物件的重疊(overlap)/交集比例
K 近鄰(K-nearest neighbors,KNN)是一種常見的監督式學習演算法,用於分類和迴歸問題。
KNN 使用資料點的鄰近性進行預測,是一種「懶惰學習」的演算法,因為它在訓練過程中並不建立顯式的模型,而是直接儲存訓練資料,直到進行預測時才利用鄰居來決定結果。
KNN 的主要流程如下
選擇參數 K 和距離指標:
找到新資料點的 K 個最近鄰居:對於新樣本,計算它與所有訓練資料的距離,並根據距離選擇 K 個最近的鄰居。
根據鄰居進行預測:
L1 範數(L1-norm)是 L1 正則化使用的範數,定義為所有參數的絕對值之和,即
L1 正則化(L1 regularization)是一種正則化技術。它在損失函數中加入模型參數的 L1 範數作為懲罰項,也就是
使用 L1 正則化的線性迴歸,稱為 Lasso 迴歸。
L2 範數(L2-norm)是 L2 正則化使用的範數,定義為所有參數平方和的平方根,即
L2 正則化(L2 regularization)是一種正則化技術。它在損失函數中加入模型參數的 L2 範數作為懲罰項,也就是
使用 L2 正則化的線性迴歸,稱為 Ridge 迴歸。
Lasso 迴歸(Lasso regression)是使用 L1 正則化的線性迴歸模型,它的損失函數可以表示成
其中:
因為 L1 正則化會讓一些參數的值收縮到零,Lasso 回歸可以同時進行特徵選擇,這在有大量冗餘特徵的情況下非常有用。
Lasso 迴歸的「Lasso」來自 Least Absolute Shrinkage and Selection Operator 的縮寫。
Leaky ReLU 是基於 ReLU 的變體[2],是一種分段線性函數(piecewise linear function),也是神經網路中常見的啟動函數之一。它的定義是
其中 。由上式可看出,當輸入小於 0 時,Leaky-ReLU 有一個微小的斜率 ,這可避免 ReLU 的「神經元死亡問題」。
學習率(learning rate)是機器學習中的一種超參數,用來控制模型在每次更新時調整參數的步伐大小。它決定了模型在優化過程中學習的速度。
學習率通常需要調整,以找到「能平衡模型訓練速度和穩定性」的最佳值。
學習率的符號通常用希臘字母 (eta)來表示,有時也會用 (alpha)表示。
Logistic 迴歸(logistic regression,可譯作邏輯斯迴歸)是一種常用於分類問題的統計模型。它透過一個線性方程式計算輸入變數的加權總和,然後使用 sigmoid 函數將結果轉換成介於 0 和 1 之間的機率值。這樣,模型可以預測某個觀察值屬於某一類別的機率,當機率超過某個閾值(通常為 0.5)時,就將其分類到某一類。
簡單來說,邏輯斯迴歸就是用來預測輸出為兩個可能值(例如,真或假、是或否)的分類模型。
損失函數(loss function)是機器學習中用來衡量模型預測結果與實際標籤之間差異的一個函數。它的目的是量化模型預測的「錯誤」,以便在模型訓練過程中通過最小化這個錯誤來優化模型的性能。
常見的損失函數包括:
損失函數越小,表示模型預測的準確性越高,因此優化的目標通常是最小化損失函數的值。
MNIST(Modified National Institute of Standards and Technology)是機器學習和深度學習領域中最常用的圖像資料集之一,主要用來進行手寫數字的識別任務。
MNIST 資料集包含 70,000 張 像素的灰階手寫數字圖像,其中訓練集有 60,000 張圖像,測試集有 10,000 張圖像。
每張圖像都代表 0 到 9 的手寫數字,這是一個典型的多元分類問題,共有 10 個類別。由於其簡單且易於上手的特性,MNIST 數據集經常被用作測試機器學習演算法和深度神經網路的入門範例。此外,MNIST 資料集也經常用來進行模型性能的比較,像是比較各種不同的卷積神經網路。
在 Python 中,可以透過 Tensorflow Keras 或 PyTorch 的 API 來載入 MNIST 資料集。以下是 Keras 的載入範例:
對於機器學習模型來說,模型參數(model parameters)通常指的是模型的權重和偏差。這些參數透過模型訓練過程自動更新,以最小化損失函數,從而提高模型的準確性,使模型學習到資料中潛在的規律,並應用於未來的預測或分類等機器學習任務。
模型參數和可學習參數(learnable parameters)基本上是同義的。後者強調了模型參數有「透過訓練來學習和最佳化」的特性。
動量(momentum)是一種優化器技術,它在梯度下降法的基礎之上額外引入「動量項」,讓參數更新時不僅考慮「當前」的梯度,還考慮到「過去」的梯度,從而能夠減少振盪並加快收斂速度。
動量的數學表達式為:
其中:
動量可以幫助模型更快穿過扁平的區域(即梯度變化小的區域),並減少在損失函數谷底附近的振盪,使優化過程更為穩定。
對於多元分類問題(使用 one-hot 編碼標籤),交叉熵損失的數學表達式為:
其中:
神經網路(neural network),或稱人工神經網路(artificial neural network,ANN),是機器學習的一種模型,受到人腦結構和功能的啟發。它由多層節點(node,或稱為神經元 [neuron]、單元 [unit])組成,這些節點以特定的方式相互連接,模擬大腦神經元之間的連結。神經網路主要用於處理複雜的非線性問題,例如影像辨識、語音識別、自然語言處理等。
典型的神經網路由以下幾個部分組成:
神經網路的訓練過程通常包括以下步驟:
常見的神經網路類型包括:
神經網路的強大之處在於它們能夠自動從資料中學習特徵,尤其在深度學習的應用中,能夠處理大量資料並表現出色。
在最佳化問題中,目標函數(objective function)是最佳化演算法需要最小化或最大化的函數。
在機器學習任務中,目標函數通常是指損失函數,因為損失函數代表「模型預測與實際結果之間的差異」,而縮小此差異相當於讓「模型預測更加準確」,這正是模型訓練的目標。
One-hot 編碼(one-hot encoding)是將分類資料轉換為二進制向量的編碼方式。每個類別對應一個唯一的二進制向量,向量中只有一個位置為 1,其餘為 0。
例如,對於 3 個類別 ["A", "B", "C"]
,編碼結果為:
A
[1, 0, 0]
B
[0, 1, 0]
C
[0, 0, 1]
這種編碼方式適合用於機器學習中的分類問題。
優化器(optimizer)是最佳化演算法在機器學習中的實作(implementation)。它根據模型的損失函數,計算出每次模型參數更新的方向和步伐,目標是使損失函數找到最小值。
常見的優化器有:
最佳化演算法(optimization algorithm)是在最佳化問題中用來尋找目標函數最大值或最小值的程序。這些演算法透過迭代調整變數值,使目標函數的結果逐漸逼近最佳解。
在機器學習領域中,最佳化演算法的實作(implementation)稱為優化器(optimizer)。
在機器學習中,資料預處理 (preprocessing) 是一個將原始資料轉換成適合模型訓練的形式的關鍵步驟。這個過程有助於提升模型的效能與準確性。資料預處理包括資料清理、特徵縮放、編碼、資料轉換等操作,以確保資料能夠被模型正確理解和使用。
PyTorch 是一個開源的深度學習框架,主要由 Facebook 開發和維護。PyTorch 提供了靈活且易於使用的動態計算圖,這讓它特別適合研究和實驗性質的深度學習模型。它的主要特點包括:
torch.Tensor
是類似於 NumPy 的多維數組,但能在 GPU 上運行。torch.nn
和 torch.optim
),讓使用者可以輕鬆構建和訓練深度神經網路。PyTorch 因其靈活性和友好的使用體驗,成為了深度學習研究和開發中的主流框架之一。
正則化(regularization)是在機器學習中用來防止模型過度擬合(overfitting)的一種技術。
正則化是透過在損失函數中加入一個懲罰項,來限制模型的複雜度,從而減少過度擬合的風險。
常見的正則化方法有:
在以上公式中,
正則化的目的在於簡化模型結構,使其更具泛化能力,不會過度依賴訓練資料的特異性。
ReLU,全稱 Rectified Linear Unit,是一種分段線性函數(piecewise linear function),也是神經網路中常用的啟動函數。它的定義是
RMSProp,全稱 Root Mean Square Propagation(均方根傳遞),是一種具有自適應學習率的優化器,專門用來解決梯度下降過程中學習率調整的問題。RMSProp 針對每個參數使用不同的學習率,根據歷史梯度的平方平均值來動態調整,使最佳化過程更加穩定。
RMSProp 的主要特點是,它可以有效地解決由於梯度差異過大而導致的振盪問題,特別是對於深度神經網路來說,它可以加速收斂並防止學習率過大造成的優化失敗。
RMSProp 的更新規則如下:
其中:
RMSProp 通過平滑化梯度的影響,能夠穩定更新步伐,特別適合處理噪音大的梯度或在 RNN 等模型中常見的長期依賴問題。
在 PyTorch 和 TensorFlow 中,RMSProp 可以這樣使用:
PyTorch:
TensorFlow/Keras:
RMSProp 是一種強大的優化器,尤其適合在訓練深度學習模型時處理較為複雜和不穩定的梯度問題。
Scikit-learn,簡稱 sklearn,是一個用於 Python 的開源機器學習函式庫,建立在 NumPy、SciPy 和 Matplotlib 之上。
Sigmoid 函數(sigmoid function,或譯為 S 型函數)是一類數學函數。
一些 sigmoid 函數的比較。圖片來源:Wikimedia
Tanh (發音為 [tæntʃ][3]),即雙曲正切函數(hyperbolic tangent),是一種雙曲函數,也常在深度學習中作為神經元的啟動函數。
Tanh 函數可以定義為
它的值域在 之間,常用於需要對稱輸出的情況。
在機器學習模型中,權重(weight)是與每個輸入特徵相乘的係數。在神經網絡中,每個神經元的輸出都是其輸入特徵與權重的加權和(weighted sum)。
Tommy Huang. 機器/深度學習-基礎數學(二):梯度下降法(gradient descent). Medium. 2018-07-25. ↩︎