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的一種方式,也在近年來被無數科技大廠以及各所名校投入海量的資源進行研究。此文會紀錄簡單的機器學習筆記。
機器學習是基於統計學去預測未來發展的學問。與人類由因而果的思考模式相比,機器學習更像是倒果為因。儘管無法清楚地闡述因果關係,但這不妨礙機器學習在生活上有著極其多元的應用。機器學習主要分為以下幾種分類,再往下會有一些常見的應用,如圖。
- 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),模型學習輸入與標籤之間的映射關係。
- 線性回歸 (Linear Regression) - 最基本的回歸方法,適用於線性數據關係。
- 岭回歸 (Ridge Regression, L2 Regularization) - 增加 L2 正則化來防止過擬合。
- 套索回歸 (Lasso Regression, L1 Regularization) - 使用 L1 正則化來選擇特徵。
- 決策樹回歸 (Decision Tree Regression) - 以決策樹為基礎的回歸模型。
- 隨機森林回歸 (Random Forest Regression) - 使用多棵決策樹進行回歸,提高泛化能力。
- 支持向量回歸 (Support Vector Regression, SVR) - SVM 的回歸版本,適用於小樣本數據。
- 邏輯回歸 (Logistic Regression) - 適用於二元分類問題。
- 支持向量機 (Support Vector Machine, SVM) - 適用於高維數據的分類問題。
- 決策樹分類 (Decision Tree Classifier) - 適用於結構化數據,易於解釋。
- 隨機森林分類 (Random Forest Classifier) - 透過多棵決策樹提升分類效果。
- 極端梯度提升 (XGBoost Classifier) - 高效的 boosting 方法,廣泛應用於競賽與工業界。
- K 近鄰分類 (K-Nearest Neighbors, KNN) - 簡單但效果良好的基礎分類方法。
- 朴素貝葉斯 (Naive Bayes) - 適用於文本分類,如垃圾郵件過濾。
無監督學習 (Unsupervised Learning)
訓練方式:不使用標記資料,模型學習數據內在結構。
- K-均值聚類 (K-Means Clustering) - 最常用的聚類算法,需手動指定群集數 K。
- 層次聚類 (Hierarchical Clustering) - 不需要指定 K 值,適用於階層結構數據。
- DBSCAN (Density-Based Spatial Clustering of Applications with Noise) - 透過密度找出聚類,適用於非均勻分佈數據。
- 降維 (Dimensionality Reduction)
- 主成分分析 (Principal Component Analysis, PCA) - 用於降維,提取數據主要特徵。
- t-SNE (t-Distributed Stochastic Neighbor Embedding) - 適用於數據可視化,特別是高維數據。
半監督學習 (Semi-Supervised Learning)
- 標籤傳播算法 (Label Propagation Algorithm) - 根據標記與未標記數據的關係來預測標籤。
- 自監督學習 (Self-Supervised Learning) - 如 BERT (Bidirectional Encoder Representations from Transformers),應用於 NLP。
強化學習 (Reinforcement Learning, RL)
- Q-學習 (Q-Learning) - 最基礎的強化學習演算法,基於值函數。
- 深度 Q-網絡 (Deep Q-Network, DQN) - 用深度學習來提升 Q-learning 的能力。
- 策略梯度 (Policy Gradient) - 直接學習策略而不是值函數。
深度學習 (Deep Learning)
- 多層感知機 (Multilayer Perceptron, MLP) - 最基礎的神經網絡架構。
- 卷積神經網絡 (Convolutional Neural Network, CNN) - 適用於圖像處理,如 ResNet、VGG。
- 循環神經網絡 (Recurrent Neural Network, RNN) - 適用於序列數據,如 LSTM、GRU。
- 生成對抗網絡 (Generative Adversarial Networks, GANs) - 用於圖像生成,如 StyleGAN。