iT邦幫忙

2024 iThome 鐵人賽

DAY 17
1
AI/ ML & Data

征服機器學習的終極秘技系列 第 17

Day 17 - 提升模型性能:模型優化

  • 分享至 

  • xImage
  •  

簡介

選擇演算法後,我們通常會發現還有許多設定可以進行調整。模型優化就像是對一台精密儀器進行校準,想像你正在調整一台望遠鏡🔭,即使是很小的調整,也可能讓你看到更清晰、更遠的景象。在機器學習中,這種調整主要集中在「超參數」上,每一個微小的改變都可能帶來顯著的性能提升📈。為了理解什麼是超參數,我們先來區分兩個概念:

  • 參數(Parameters):這些是模型自己學習的內部值,在訓練過程中會自動調整。就像人類在學習過程中會記住某些事實一樣,模型通過分析數據來調整這些值。例如,如果模型在學習如何識別貓🐱和狗🐶,它可能會學習到「如果看到尖耳朵👂,很可能是貓🐱」這樣的規則。參數包括線性回歸中的係數或神經網絡中的權重等。我們不能直接告訴模型這些規則或手動更改這些值,它需要自己通過數據學習。參數的調整目的是讓模型更好地適應數據,提高其預測或分類的準確性
  • 超參數(Hyperparameters):這些是我們可以手動調整的外部設定,需要在訓練前設定。就像你可以調整望遠鏡的焦距一樣,我們可以調整這些值來影響模型的學習過程。超參數不會隨著訓練過程自動改變,但可以顯著影響模型的性能。例如,我們可以決定模型學習的速度(學習率🚀),或者模型應該多麼複雜(如決策樹的深度🌳)。其他常見的超參數包括正則化強度、批量大小等。調整超參數可以幫助模型更好地適應實際應用場景,是模型優化的重要部分。

理解這兩者的區別很重要,因為在模型優化中,我們主要關注超參數的調整。接下來,我們將深入探討各種優化方法,解釋它們的使用步驟和適用場景及優缺點。

1) 🛠️超參數調整(Hyperparameter Tuning)

超參數調整是模型優化中最常用的方法之一。它就像是調整一台複雜機器的各個旋鈕,直到找到最佳的設定組合。常見的超參數包括學習率(決定每次更新模型權重的步長)、樹的深度(對於決策樹算法來說)、以及正則化強度(控制模型的複雜度)。微調這些超參數可以顯著提高模型的預測準確性。常見的超參數調整方法包括:

  • 🔍網格搜索(Grid Search):系統地測試所有可能的超參數組合,以找到最佳設定。這種方法可以確保找到全局最優解,但計算量大,時間消耗高。

    • 具體步驟:
    1) 定義要調整的超參數及其可能的值範圍
    
    2) 生成所有可能的超參數組合
    
    3) 對每種組合訓練一個模型並評估其性能
    
    4) 選擇性能最佳的超參數組合
    
    • 使用時機:
      • 當超參數的數量較少(通常不超過 3-4 個)時
      • 當你有充足的計算資源和時間
      • 當你想確保找到全局最優解
  • 🎲隨機搜索(Random Search):在超參數空間中隨機選擇若干組合進行測試。這種方法比網格搜索更高效,能夠在較短的時間內找到良好的超參數組合。

    • 具體步驟:
    1) 定義每個超參數的可能值範圍或分佈
    
    2) 隨機生成預定數量的超參數組合
    
    3) 對每種組合訓練模型並評估性能
    
    4) 選擇性能最佳的組合
    
    • 使用時機:
      • 當超參數空間較大
      • 當你的計算資源有限,無法進行完整的網格搜索時
      • 當你不確定哪些超參數更重要時
  • 📈貝葉斯優化(Bayesian Optimization):貝葉斯優化使用機率模型來預測哪些超參數可能會有好的效果,然後優先嘗試這些參數。

    • 具體步驟:
    1) 定義超參數空間
    
    2) 選擇初始的幾個超參數組合進行評估
    
    3) 基於已有的結果,使用高斯過程等方法建立超參數與模型性能之間的關係模型
    
    4) 使用這個模型來預測哪些超參數組合可能會有好的效果
    
    5) 評估這些新的超參數組合
    
    6) 更新模型,重複步驟 4-5 直到達到停止條件
    
    • 使用時機:
      • 當評估每個超參數組合的成本很高時(例如,訓練大型神經網絡)
      • 當你希望在有限的嘗試次數內找到好的解
      • 當超參數空間較大或連續時
        https://ithelp.ithome.com.tw/upload/images/20240918/20168116PZ6tNUwg9g.jpg

其他聚類及降維任務的超參數調整

  • K 均值的選擇 (K-Means) 中的 K 值選擇:通常使用 Elbow Method 或輪廓係數(Silhouette Score)來確定最佳聚類數
  • DBSCAN 中的 ε 和 MinPts:通過調整這些參數來找到最佳的聚類結構。
  • 主成分分析(PCA)的主成分數量:通過解釋方差比例來選擇最佳主成分數量。
  • t-SNE 的學習率和迭代次數:調整這些超參數來優化降維效果。

2) ⚖️正則化技術(Regularization)

正則化技術是用來防止模型過擬合的關鍵手段。過擬合指的是模型在訓練數據上表現很好,但在未見數據上表現不佳。正則化通過在模型的損失函數中添加懲罰項來限制模型的複雜度,從而提升模型的泛化能力。常見的正則化技術包括之前演算法文章提過的:

  • 📐L1 正則化(Lasso):通過添加參數的絕對值和作為懲罰項,來驅使某些參數變為零,實現特徵選擇的效果。這有助於簡化模型並提高其可解釋性。

    • 具體步驟:
    1) 在模型的損失函數中添加 λ∑|w_i| 項,其中 λ 是正則化強度,w_i 是模型參數
    
    2) 訓練模型時最小化新的損失函數
    
    3) 根據需要調整 λ 值
    
    • 使用時機:
      • 當你懷疑有許多無關特徵
      • 當你需要一個稀疏模型,即只使用少量重要特徵的模型
      • 在線性回歸、邏輯回歸等模型中特別有用
    • 優缺點:
      • 優點:能夠自動進行特徵選擇,產生稀疏模型。
      • 缺點:可能會過度簡化模型,丟失一些有用但不那麼重要的特徵。
  • 🏔️L2 正則化(Ridge):通過添加參數的平方和作為懲罰項,來防止模型過度擬合。這種方法能夠平滑模型的學習過程,使其更加穩定。

    • 具體步驟:
    1) 在模型的損失函數中添加 λ∑(w_i)^2 項
    
    2) 訓練模型時最小化新的損失函數
    
    3) 根據需要調整 λ 值
    
    • 使用時機:
      • 當你希望所有特徵都對預測有一定貢獻
      • 當處理多重共線性問題時(即特徵之間高度相關)
      • 在許多線性和非線性模型中都很有用,如線性回歸、邏輯回歸、神經網絡等
    • 優缺點:
      • 優點:有助於處理多重共線性,產生更穩定的模型。
      • 缺點:不會產生稀疏解,所有特徵都會被保留

適用任務類型:

  • 回歸:線性回歸 (L1:適合需要稀疏模型的情況。L2:適合處理多重共線性問題,並使模型更穩定。)
  • 分類:邏輯回歸 (L1:可以用於特徵選擇,使模型更加簡潔。L2:使模型穩定,適合處理多重共線性。)
    https://tse4.mm.bing.net/th?id=OIP.1UjkiDmORr6urj740kfT7QAAAA&pid=Api&P=0&h=180

3) 🔧模型微調策略(Model Fine-Tuning Strategies)

模型微調策略是針對模型訓練過程中的細節進行調整,以進一步提升模型的性能。這些策略包括:

  • 📈逐步微調(Stepwise Tuning):逐步調整一個或少數幾個模型的超參數,並觀察每次調整對模型性能的影響,然後決定下一步的調整方向。這種方法可以幫助找到最佳的超參數組合,逐步提高模型的效果。

    • 具體步驟:
        1) 選擇一個初始的超參數組合
    
        2) 選擇一個要調整的超參數
    
        3) 在一個小範圍內調整該超參數,評估模型性能
    
        4) 如果性能提升,則保留新的值;否則,嘗試其他方向的調整
    
        5) 重複步驟 2-4,直到性能不再顯著提升
    
    • 使用時機:
      • 當你對某些超參數的影響有一定了解時
      • fine-tuning 預訓練模型時特別有用
      • 當你想要深入理解每個超參數的影響
  • 📊自適應學習率(Adaptive Learning Rate):根據訓練過程的變化動態自動調整學習率。例如,使用學習率衰減策略來逐步減小學習率,這樣可以在訓練的後期提高模型的穩定性和收斂速度。

    • 具體步驟:
    1) 設定初始學習率和調整策略(如學習率衰減)
    
    2) 在訓練過程中監控性能指標(如驗證集損失)
    
    3) 根據性能變化自動調整學習率
    
    4) 如果性能停滯,降低學習率
    
    5) 如果性能快速提升,可以略微提高學習率
    
    • 使用時機:
      • 訓練深度神經網絡時特別有用
      • 當你不確定最佳的固定學習率是多少時
      • 在長時間訓練的模型中,可以幫助克服學習停滯的問題
        https://ithelp.ithome.com.tw/upload/images/20240918/20168116gicdgzJR43.jpg

其他聚類及降維任務的微調策略:

  • 選擇適合的距離度量:如歐氏距離、曼哈頓距離等,這會影響聚類結果的質量。
  • 特徵縮放:在 K 均值等距離基礎的聚類算法中,特徵縮放(如標準化或歸一化)可以提高聚類效果。
  • 特徵選擇:在降維之前使用特徵選擇方法來減少不必要的特徵。
  • 數據預處理:如特徵標準化或中心化,有助於提升降維算法的效果。

實踐建議(Practical Tips for Tuning)

  • 粗略搜索與精細調整結合:先使用隨機搜索或粗略網格搜索確定一個大致的範圍,再進行精細化的調整。也就是先使用較大的步長進行粗略搜索,找到大致的良好區域,然後在這個區域內使用更小的步長進行精細搜索。
  • 使用交叉驗證:在微調過程中,使用交叉驗證來評估模型在不同超參數下的表現,確保模型在不同數據集上具有穩定的性能。在調整過程中使用 k 折交叉驗證(通常 k = 5 或 10)。
  • 觀察多個指標:不要只關注一個性能指標(如準確率),盡可能的同時考慮其他相關指標
  • 記錄每一次的實驗結果:詳細記錄每次實驗的超參數設定和對應的性能。這有助於你理解參數變化對性能的影響,並避免重複無效的嘗試。
  • 考慮計算成本:在資源有限的情況下,可以先用小型數據集或簡化模型進行初步調優。然後將最佳設定應用到完整模型上進行最後的微調。

結論

模型優化是一個需要耐心和創造力的過程。通過調整超參數、應用正則化技術、採用適當的微調策略,我們可以顯著提升模型的性能。不同的問題可能需要不同的優化策略,持續實驗、學習和調整是提高模型性能的關鍵。隨著你在這個領域積累更多經驗,你會逐漸培養出一種直覺,知道在什麼情況下應該使用哪種優化技術。


上一篇
Day 16 - 回歸、聚類與降維問題的評估指標及模型比較
下一篇
Day 18 - 模型預測:從模型到實際應用
系列文
征服機器學習的終極秘技30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言