ML00 : Introduction

AI對於現代社會越來越重要。而多種LLM的推出更是點燃了全世界對於AI的重視。AI工程師的薪水也跟著水漲船高。下圖是levels.fyi上揭露的的AI工程師薪水,可以說是達到很誇張的地步,足足高了同等職位的其他職缺一大截,也彰顯了AI的重要程度。

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

機器學習

機器學習作為實現AI的一種方式,也在近年來被無數科技大廠以及各所名校投入海量的資源進行研究。此文會紀錄簡單的機器學習筆記。

機器學習是基於統計學去預測未來發展的學問。與人類由因而果的思考模式相比,機器學習更像是倒果為因。儘管無法清楚地闡述因果關係,但這不妨礙機器學習在生活上有著極其多元的應用。機器學習主要分為以下幾種分類,再往下會有一些常見的應用,如圖。

Machine Learning

Supervised Learning

Unsupervised Learning

Reinforcement Learning

Classification

Regression

Clustering

Compression

Interactive Problem

  • Supervised Learning(監督式學習)
    透過已標註的資料進行學習,模型學習輸入(features)與輸出(labels)之間的映射關係。
    目標是讓模型能夠對新的輸入預測正確的輸出。
    常見應用:
    分類(Classification):如垃圾郵件偵測(Spam detection)、影像辨識(Image classification)。
    回歸(Regression):如房價預測(House price prediction)、股票走勢預測。
  • Unsupervised Learning(非監督式學習)
    無標註資料,模型學習輸入資料的內部結構或模式。
    主要用於找出數據中的群集(clusters)或關聯模式(patterns)。
    常見應用:
    分群(Clustering):如顧客分群(Customer segmentation)、基因資料分析。
    降維(Dimensionality Reduction):如PCA(主成分分析)用於資料可視化或特徵選取。
  • Reinforcement Learning(強化學習)
    透過試錯法(Trial and Error)學習,智能體(Agent)與環境(Environment)互動,根據回饋(Reward)調整策略(Policy),以達成最大化累積獎勵(Maximize cumulative reward)。
    常見應用:
    遊戲AI(Game AI):AlphaGo、Dota 2 AI。
    機器人控制(Robotics):機器人手臂學習抓取物體、自駕車學習駕駛策略。

專有名詞

基礎概念

  • Feature(特徵):用來描述數據的變數,例如房價預測中的「房屋面積」、「地點」等。
  • Label(標籤):模型的預測目標,例如貓狗分類中的「貓」或「狗」。
  • Dataset(資料集):訓練和測試模型的數據集合,通常分為訓練集(Training set)、驗證集(Validation set)、測試集(Test set)。
  • Model(模型):學習數據與標籤之間關係的數學函數或演算法。
  • Loss Function(損失函數):衡量模型預測結果與真實標籤的誤差,例如均方誤差(MSE)、交叉熵(Cross-Entropy)。
  • Optimizer(優化器):調整模型參數以最小化損失函數的演算法,例如 SGD、Adam、RMSprop。

訓練相關

  • Epoch(世代):完整跑過整個訓練數據集的一次迭代。例如,一個 10,000 筆數據的資料集,每個 epoch 都會讓模型學習所有 10,000 筆數據一次。
  • Batch(批次):將數據集拆分成較小的部分,每次訓練時使用一部分數據來更新模型。例如,若有 10,000 筆數據,batch size = 32,則每次訓練用 32 筆數據來更新權重。
  • Batch Size(批次大小):每次訓練時使用的數據樣本數量。較大 batch size 可加快計算,但較小 batch size 可能有更好的泛化能力。
  • Iteration(迭代次數):每次模型更新的次數,例如若 batch size = 32,總數據量 10,000,則一個 epoch 需進行 10,000 ÷ 32 ≈ 313 次 iteration。

梯度下降與學習率

  • Gradient Descent(梯度下降):一種優化演算法,透過計算損失函數的梯度來調整模型參數,使損失降低。
  • Learning Rate(學習率,η 或 eta):控制每次更新參數的步長,通常為小於 1 的數值。太大可能導致模型不收斂,太小則收斂速度過慢。
  • Momentum(動量):加速梯度下降的技術,透過累積過去的梯度來減少震盪,提高收斂速度。

模型評估

  • Overfitting(過擬合):模型在訓練集表現良好,但在測試集表現不佳,通常是因為學習了太多細節或噪音。
  • Underfitting(欠擬合):模型無法有效學習數據特徵,導致在訓練和測試集上表現都不好。
  • Bias(偏差):模型對目標的錯誤假設,例如線性回歸無法有效擬合非線性資料,導致高偏差。
  • Variance(變異):模型對不同數據集的敏感度,高變異表示模型容易受訓練數據影響,可能導致過擬合。
  • Regularization(正則化):防止過擬合的方法,如 L1 正則化(Lasso)和 L2 正則化(Ridge)。

訓練方式

  • 隨機梯度下降(Stochastic Gradient Descent, SGD)
    概念:每次訓練時,從資料集中隨機選擇一個樣本(或少量樣本)來更新模型參數,而不是使用整個資料集。
    優勢:
    更新速度快,適合大規模數據集。
    避免局部最小值,因為隨機性使其具有更好的探索能力。
    缺點:
    收斂不穩定,可能因為隨機選擇而產生較大的變動,難以穩定到最優解。
    應用:
    適合深度學習、大數據應用,如神經網絡訓練。
  • 小批次梯度下降(Mini-Batch Gradient Descent)
    概念:在每次更新時,不是使用整個資料集(如批量梯度下降),也不是單個樣本(如隨機梯度下降),而是選取一小批數據(Mini-Batch) 來進行更新。
    優勢:
    兼顧SGD的速度與批量梯度下降(Batch Gradient Descent)的穩定性。
    更有效地利用硬體,如GPU的並行計算能力。
    缺點:
    仍可能存在局部最優解的問題。
    應用:
    幾乎是深度學習訓練的標準方法(如 CNN、RNN、Transformer)。
  • 批量梯度下降(Batch Gradient Descent)
    概念:每次更新時,計算整個訓練資料集的梯度,再進行參數更新。
    優勢:
    在收斂時較為穩定,容易找到最優解。
    缺點:
    計算量大,特別是在處理大型資料集時,可能會導致記憶體耗盡。
    更新速度較慢,尤其當資料集很大時。
    應用:
    適用於小型數據集(如小型線性回歸問題)。
  • 增量學習(Online Learning)
    概念:模型會在收到新數據時即時更新,而不是一次性地訓練完整的數據集。
    優勢:
    可以持續學習,不需要重訓整個模型。
    適用於即時數據(如金融市場、推薦系統)。
    缺點:
    容易受到噪音影響,若數據品質不穩定,可能會學習到錯誤模式。
    應用:
    股票市場預測、動態推薦系統、物聯網(IoT)裝置。
  • 遷移學習(Transfer Learning)
    概念:先使用已訓練好的模型,將其學到的知識應用到新的任務上,只需微調(fine-tuning)部分參數,而不是從零開始訓練整個模型。
    優勢:
    大幅減少訓練時間,避免需要大量標註數據。提高小樣本數據的學習效果。
    缺點:
    需要選擇適合的預訓練模型,否則可能影響效果。
    應用:
    自然語言處理(NLP):BERT、GPT 等語言模型的微調。
    計算機視覺(CV):使用 ImageNet 預訓練模型來處理醫學影像、工業檢測等。

機器學習演算法種類

以下是現今主流的機器學習演算法,後續的章節會一一介紹

監督式學習 (Supervised Learning)

訓練方式:使用標記資料 (Labeled Data),模型學習輸入與標籤之間的映射關係。

  • 回歸 (Regression)
  1. 線性回歸 (Linear Regression) - 最基本的回歸方法,適用於線性數據關係。
  2. 岭回歸 (Ridge Regression, L2 Regularization) - 增加 L2 正則化來防止過擬合。
  3. 套索回歸 (Lasso Regression, L1 Regularization) - 使用 L1 正則化來選擇特徵。
  4. 決策樹回歸 (Decision Tree Regression) - 以決策樹為基礎的回歸模型。
  5. 隨機森林回歸 (Random Forest Regression) - 使用多棵決策樹進行回歸,提高泛化能力。
  6. 支持向量回歸 (Support Vector Regression, SVR) - SVM 的回歸版本,適用於小樣本數據。
  • 分類 (Classification)
  1. 邏輯回歸 (Logistic Regression) - 適用於二元分類問題。
  2. 支持向量機 (Support Vector Machine, SVM) - 適用於高維數據的分類問題。
  3. 決策樹分類 (Decision Tree Classifier) - 適用於結構化數據,易於解釋。
  4. 隨機森林分類 (Random Forest Classifier) - 透過多棵決策樹提升分類效果。
  5. 極端梯度提升 (XGBoost Classifier) - 高效的 boosting 方法,廣泛應用於競賽與工業界。
  6. K 近鄰分類 (K-Nearest Neighbors, KNN) - 簡單但效果良好的基礎分類方法。
  7. 朴素貝葉斯 (Naive Bayes) - 適用於文本分類,如垃圾郵件過濾。

無監督學習 (Unsupervised Learning)

訓練方式:不使用標記資料,模型學習數據內在結構。

  • 聚類 (Clustering)
  1. K-均值聚類 (K-Means Clustering) - 最常用的聚類算法,需手動指定群集數 K。
  2. 層次聚類 (Hierarchical Clustering) - 不需要指定 K 值,適用於階層結構數據。
  3. DBSCAN (Density-Based Spatial Clustering of Applications with Noise) - 透過密度找出聚類,適用於非均勻分佈數據。
  • 降維 (Dimensionality Reduction)
  1. 主成分分析 (Principal Component Analysis, PCA) - 用於降維,提取數據主要特徵。
  2. t-SNE (t-Distributed Stochastic Neighbor Embedding) - 適用於數據可視化,特別是高維數據。

半監督學習 (Semi-Supervised Learning)

  1. 標籤傳播算法 (Label Propagation Algorithm) - 根據標記與未標記數據的關係來預測標籤。
  2. 自監督學習 (Self-Supervised Learning) - 如 BERT (Bidirectional Encoder Representations from Transformers),應用於 NLP。

強化學習 (Reinforcement Learning, RL)

  1. Q-學習 (Q-Learning) - 最基礎的強化學習演算法,基於值函數。
  2. 深度 Q-網絡 (Deep Q-Network, DQN) - 用深度學習來提升 Q-learning 的能力。
  3. 策略梯度 (Policy Gradient) - 直接學習策略而不是值函數。

深度學習 (Deep Learning)

  1. 多層感知機 (Multilayer Perceptron, MLP) - 最基礎的神經網絡架構。
  2. 卷積神經網絡 (Convolutional Neural Network, CNN) - 適用於圖像處理,如 ResNet、VGG。
  3. 循環神經網絡 (Recurrent Neural Network, RNN) - 適用於序列數據,如 LSTM、GRU。
  4. 生成對抗網絡 (Generative Adversarial Networks, GANs) - 用於圖像生成,如 StyleGAN。