# Introduction [toc] ## 機器學習 機器學習作為實現AI的一種方式,也在近年來被無數科技大廠以及各所名校投入海量的資源進行研究。此文會紀錄簡單的機器學習筆記。 機器學習是基於統計學去預測未來發展的學問。與人類由因而果的思考模式相比,機器學習更像是倒果為因。儘管無法清楚地闡述因果關係,但這不妨礙機器學習在生活上有著極其多元的應用。機器學習主要分為以下幾種分類,再往下會有一些常見的應用,如圖。 ```mermaid graph TD; Machine_Learning[Machine Learning] Machine_Learning --> Supervised_Learning(Supervised Learning) Machine_Learning --> Unsupervised_Learning(Unsupervised Learning) Machine_Learning --> Reinforcement_Learning(Reinforcement Learning) Supervised_Learning(Supervised Learning) --> Classification(Classification) Supervised_Learning(Supervised Learning) --> Regression(Regression) Unsupervised_Learning(Unsupervised Learning) --> Clustering(Clustering) Unsupervised_Learning(Unsupervised Learning) --> Compression(Compression) Reinforcement_Learning(Reinforcement Learning) --> Interactive_Problem(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。 - Concrete Feature : 指可以直接觀測、具備明確物理意義的原始數據。例如:鳶尾花的「花瓣長度」、房屋的「樓層數」。 - Raw Feature : 指將具體觀測值(Concrete)進行初步處理後的純數值表達式。它是進入模型演算法前的「標準輸入」,雖然已經是電腦可讀的數字,但尚未具備模型提取出的深層語意。 - Abstract Feature : 指原始數據經過模型轉換(如權重加權)後,所提取出不具直觀物理意義的高階特徵。例如:影像辨識中隱藏層提取出的「輪廓組合」或特徵向量。 **訓練相關** - 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 預訓練模型來處理醫學影像、工業檢測等。 - **主動式學習 (Active Learning)** 概念:當標註資料成本昂貴時,模型主動挑選「最不確定」或「最有價值」的樣本要求專家標註,從而用最少的標註成本達到最高的準確率。 --- ### 機器學習演算法種類 以下是現今主流的機器學習演算法,後續的章節會一一介紹 #### 監督式學習 (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 的回歸版本,適用於小樣本數據。 7. XGBoost 回歸 (XGBoost Regression) - 提升樹方法中的強者,精度高、速度快,常用於比賽與實務。 8. LightGBM 回歸 (LightGBM Regression) - 與 XGBoost 類似,但更快更省資源,適合大規模數據。 9. 多層感知器回歸 (MLP Regression) - 前饋神經網絡,能擬合複雜非線性關係,但易過擬合。 10. 貝葉斯回歸 (Bayesian Regression) - 建模參數的不確定性,適合小數據或需置信區間時。 11. K近鄰回歸 (K-Nearest Neighbors Regression) - 基於鄰近樣本平均,簡單但對維度高不友好。 12. 梯度提升回歸 (Gradient Boosting Regression) - 基於殘差迭代的提升樹模型,提升預測能力。 - 分類 (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。