1.最佳化問題

梯度下降法

步驟

  1. 搜集訓練資料
  2. 設計數學模型
  3. 訓練數學模型 - 反復輸入訓練資料,計算目標輸出與輸出的差異,作為參數的調整依據,找出一組結果差異最小的參數。

    學習率(Learning Rate)

    學習率是一個重要的超參數,它控制著我們基於損失梯度調整神經網絡權值的速度。
    如何設定學習率?
    可以動態方式設定學習率。以執行次數或時間為基準。一開始設置學習率較大,可以加快學習速度,隨後逐次調降學習率,使能逐漸畢竟極值而不容易跳脫。
    如何評價數學模型的訓練效果?
  • 給定測試資料
  • 計算測試資料的平均誤差
  • 改進誤差:重設起始值 / 重建數學模型

    過度擬合(Overfitting)

    模型對訓練資料的誤差趨勢越來越小,但對於測試資料的誤差卻越來越大。(對訓練資料的過度學習)
    原因:資料量不夠 OR 特徵差異太大
    解決TrainData差異太大的方式
  1. 對TrainData做正規化,也對TestData做正規化,再將結果做正規化,得到Output。
  2. TrainData做正規化,但Output不做正規化。(如果只是在做分類,不需要做正規化)

如何處理過度擬合(OverFitting)?

  1. 選用簡單的模型
  2. 資料清理、刪除
  3. 增加訓練資料 - 盡可能多的收集訓練資料,讓資料盡可能貼近真實的資料分佈情況。仔細觀察資料,找出關鍵的特徵元素。
  4. 正則化(Regularization)

    2.遺傳演算法(GA)

    😀 Holland ,1975
    主要運算子:複製、交配、突變

    步驟

  5. 染色體:將所有資料編碼成稱為“染色體”的字串

  6. 產生母體(Population):所有染色體中隨機產生n個初始字串
  7. 適應函數:依據求解條件設計適應函數(fitness function)
  8. 挑選:適應值高的染色體被挑選至交配池
  9. 交配 / 突變
  10. 產生子代
  11. 計算適應函數
  12. 替換交配池
  13. … … …
  14. 最後會產生最適解的一條染色體,將此染色體(即權重)帶回問題。

    編碼(Encoding)

    如何編碼?
    原則:合法性、可行性、一致性
    編碼方式:二元編碼【搜尋空間:2的L次方】、排列編碼【L!】(適用於有序、序列問題)、實數編碼【(1~9)9的L次方】、樹狀編碼

    交配(Crossover)

    二元編碼的交配運算方法:單點交配、雙點交配、均勻交配(不只是固定點做交換,交配一次就可以換一個mask)

    突變(Mutation)

  • 二元編碼:選擇一個bit做翻轉
  • 排列編碼:選擇兩個位置做交換
  • 實數編碼:選擇一個位置加減數值
  • 樹狀編碼:內部節點選擇一處交換

    選擇(Selection)

    測量方法:適應函數
    輪盤法:適應度越大,分配到的概率越大
    競爭法

    執行前相關設定

  • 設定編碼方式

  • 設定族群數
  • 設定選擇、交配、突變方式
  • 設置交配率和突變率

    停止條件

  1. 時間:具體的時間
  2. 次數:設定世代數
  3. 差異飽和:前後世代最佳值之差異低於極小值(極小值是自己設定的門檻),已經沒有很大變化了
  4. 收斂飽和 / 適應值:成熟率大於設定值(成熟:當族群中絕大部分的染色體都具有相同基因時)

    挑戰

  5. 記憶體

  6. 編碼

    缺點

    直接的交換不合適。
    突變也沒有方向。
    沒有指向性表明上一代的演化是否是好的。

    3.螞蟻演算法

    😀 Dorigo等 , 1996
    依據:長度長短、費洛蒙多少

    步驟

  7. 將問題轉換為路徑問題

  8. 初始化路徑上的費洛蒙濃度
  9. 讓螞蟻搜尋路徑
  10. 更新費洛蒙濃度
  11. … … …
  12. 終止條件(時間、適應值、次數)

    人工螞蟻

    數量建議:螞蟻數量S=節點總數量A

    費洛蒙

    螞蟻走過的路就會留下一部分費洛蒙(留下多少費洛蒙是取決於走過這條路的長度;路線越短,留下的費洛蒙越多)
    揮發機制:會陷入局部最佳解,應該公平對待所有可能的解。

    期望值

    點到點之間線段的優劣。一直尋找最近的點不一定是最快到達的路徑。

    轉換機率

    路徑尋優係利用轉化機率

    優點

    理性探索(往好的地方走的概念)

    缺點

  13. 僅適用於組合最佳化問題

  14. 費洛蒙很容易使得演算法陷入局部最佳解 - 整體更新法(只有好的訊息和情報留下)、局部更新法(每一隻螞蟻找的路徑都會互相影響,費洛蒙濃度一直在改變)
  15. 讓螞蟻分散隨機尋找路線 - 探索 / 追隨
  16. 需要用到較多的記憶體
  17. 螞蟻太多會收斂得太早,所以螞蟻數量也很難決定

    4.粒子群演算法(PSO)

    全域最佳解演算法
    利用決策中的兩種重要信息:自身的經驗、他人的經驗

    步驟

  18. 初始化及參數設定

  • 隨機產生一群粒子(群體規模要合適,否則會影響運算速度和收斂性)
  • 設定粒子i在時刻t的狀態下的屬性(位置向量:方向和速度)
  • 搜索空間的上下限,學習因子,最大最小飛行速度,迭代次數,最大迭代次數,慣性權重,收斂精度
  1. 評估每一個粒子
  • 測量適應值
  • 從所有粒子中找出當前所有個體最佳極值
  1. 在t+1時刻粒子i根據更新公式更新速度和位置(先更新local,再更新global)
  2. 檢驗是否符合介紹條件

    核心思想

  3. 分散式多點搜尋

  4. 記憶功能:每個粒子具有記憶性。記憶全域和區域的最佳解。利用以前尋找過的路徑去決定下一步的方向。
  5. 方向性:方向和速度
  6. 學習因子的調節

    參數調節

    慣性權重的調節
  • 加入慣性權重

當慣性權重較大 — PSO傾向於開發者(大範圍搜索),全域搜尋。
當慣性權重較小 — PSO傾向於探測者(小範圍找尋),局部搜尋。

  • 以線性遞減慣性權重

學習影子的調節
學習因子決定了粒子本身經驗與群體經驗對粒子運動軌跡的影響。
在搜索初期飛行主要考慮粒子本身的歷史信息,後期則注重社會信息。

挑戰

  1. 群體規模要合適,否則會影響運算速度和收斂性
  2. 由於粒子群演算法中沒有實際的機制來控制粒子的速度,所以有必要對速度的最大值進行限制(特別是飛行速度的上限,值太大會導致粒子跳過最佳解,太小會導致搜索空間不充分)

    優點

  3. 實作方便且參數設置少

  4. 結合局部搜尋和全域搜尋
  5. 適合在連續性範圍內搜尋
  6. 可以被應用來解決大多數的最佳化問題

比較PSO與GA


PSO GA
相同 屬於多點搜尋
群體隨機初始化
對群體內每一個個體計算適應值
群體根據適應值進行複製

相異 |
1. 根據自己的速度決定搜尋
2. 粒子具有記憶性(交換正向資訊)
3. 所需參數設定較少
4. 適合連續性問題,也適合離散性最佳化問題
| 遺傳操作 - 交換、突變 |

5.決策樹

什麼時候決策樹?

  1. 用來處理分類問題的樹狀結構
  2. 每個內部節點表示一個評估欄位
  3. 每個分枝代表一個可能的欄位輸出結果
  4. 每個葉節點代表不同分類的類別標記

屬性選擇指標:資訊獲利(Information Gain)、吉尼係數
資料獲利:以熵(Entropy)為基礎。【熵:衡量資訊量的凌亂程度指標】
EX.當硬幣丟出正反面的數量是一樣的,熵是1(最凌亂)
資料獲利(Gain)越大越好,熵(Entropy)越小越好。
為什麼需要為每一個概率加上權重?
因為每個分支所佔的比例對整個集合計算出來的Gain會有很大的影響。譬如90%的資料已經分得很好了,10%的資料沒有分好,這樣的結果應該對於整體來說是好的才對。
Tree太深會有什麼影響?
分類時間久。計算成本和記憶體成本都變高。

步驟

  1. 資料設定(TrainData & TestData)
  2. 決策樹生成
  3. 剪枝:透過決策數不再增長的方式來達到修建的目的

修剪決策樹

  • 事前修剪:選擇某一個屬性作為決策樹的一個內部節點,若該屬性的指標值(熵)低於預設的臨界值時,停止此節點及以下子節點的增長。
  • 事後修剪:子樹置換、子樹提升

    挑戰

    重要:找到好的分割屬性 (分完要有清楚的結果)

  • 避免過度適配資料

  • 合併連續性屬性
  • 屬性選擇指標的其他度量標準 - 訊息獲利、獲利比率、吉尼係數
  • 處理缺少屬性值的訓練範例
  • 處理不同代價的屬性
  • 決策樹的可度量性

    Train和Test所需時間比較

    | | NN | 類神經網絡 | 決策樹 | | —- | —- | —- | —- | | Train | 只需要存資料,幾乎不佔用時間 | 要學習、記權重,需要很長時間 | 計算,慢 | | Test | 需要計算很多的距離,慢 | 快 | 只要做判斷是哪一類,快 |

6.最近鄰居分類(NN)

😀 Cover & Hart , 1968
根據現在已分類好的資料合集,找出與待分類資料最為鄰近的資料,根據此最鄰近資料所屬類別,對分類資料進行判斷和預測。

Tie-breaker

平手的時候要如何處理的問題

  • 多數決(K設置為奇數)
  • 加入距離權重

前處理
屬性值的正規化:讓值在同一個範圍,使特征影響力一致

缺點

  • 計算量大(過多的距離計算)【改進方法:對樣本資料進行組織和整理,分群分層】【最近鄰居快速搜尋法】
  • 記憶空間需求量大(需儲存所有資料於記憶體)【改進方法:刪減部分樣本資料,著重有意義部分指標】【二分剪輯近鄰法】【重複剪輯近鄰法】

改進方法

  • 最近鄰居快速搜索演算法:樣本集合的分解 ->快速搜索(群間過濾、群內過濾)
  • 二分剪輯近鄰法:位於邊界處不同類別交疊樣本刪除,把資料分割得越來越明顯,使得類別被明顯區分開來
  • 壓縮近鄰法:刪除類別中重複的、不重要的資料

    7.類神經網絡

    感知器

    類神經網絡運作模式

  • 學習過程 - 從範例中學習,以調整網絡連接加權值

  • 回想過程 - 由Input決定Output的過程

    步驟

    學習過程
  1. 設定網絡參數:設定神經元個數、層間的連結數
  2. 以均勻隨機亂數設定加權值矩陣、閥值向量的初始值
  3. 輸入TrainData的Input和Output
  4. 計算推論Output
  5. 計算差距量
  6. 計算加權值矩陣修正量及閥值修正量
  7. 更新加權值矩陣及閥值向量
  8. 重複3~7直到終止條件

回想過程

  1. 設定網絡參數
  2. 讀入加權值矩陣和閥值
  3. 輸入測試範例
  4. 計算推論輸出向量

    倒傳遞網絡

    架構:輸入層、隱藏層、輸出層