# 【類神經網路效能提升】 ## 目錄 - Part1: 類神經架構前處理流程 - Part2: RBF 模型 - Part3: U-Net - Part4: Auto-Encoder - Part5: GAN <br><br> ## Part1: 類神經架構前處理流程 #### 淺層類神經網路之運作模式 ```mermaid graph LR A(定義題目) --> B(收集資料) --> C(清洗資料、取特徵值、降維) --> D(設計類神經網路) --> E(結果) style A fill:#fff,stroke:#333,stroke-width:2px; style B fill:#fff,stroke:#333,stroke-width:2px; style C fill:#fff,stroke:#333,stroke-width:2px; style D fill:#fff,stroke:#333,stroke-width:2px; style E fill:#fff,stroke:#333,stroke-width:2px; ``` #### 深度學習之運作模式 ```mermaid graph LR A(定義題目) --> B(收集資料) --> C(建立深度學習模型) --> E(結果) style A fill:#fff,stroke:#333,stroke-width:2px; style B fill:#fff,stroke:#333,stroke-width:2px; style C fill:#fff,stroke:#333,stroke-width:2px; style E fill:#fff,stroke:#333,stroke-width:2px; ``` :::info **注意事項**: 在深度學習模型中,已包含**取特徵值、降維**等步驟。 ::: #### 討論1:為何把動作融進去模型後效果會更好? - 淺層類神經網路:特徵值其他方法選(以人類知識設計),找出來的方法可能有瑕疵。取出特徵值不一定符合模型的需求。 - 深度學習模型:取特徵值步驟不再含有人類知識。電腦選的比較不會有瑕疵。取特徵值的步驟與模型一起訓練,所以特徵能夠百分百符合模型需求。 #### 討論2:用此概念進行輕量化建模 - 階段一:先訓練一個深度學習模型 - 階段二:把前面深度學習模型,建模的部分替換成其他機器學習模型 (對開發硬體有幫助) <center> <img src="https://hackmd.io/_uploads/S1ENJ_VnR.png", style=" width: 70%; height: auto;"> <div style=" border-bottom: 3px solid #d9d9d9; display: inline-block; color: #999; padding: 3px;"> </div> </center> :::success **重點筆記**: - **看待類神經不是看整體網路**: 看功能block。其模型做了什麼改變來提升效能或應對什麼樣的格式。 - **Convolution's Filter**: 以前用數學公式算 Convolution 的 Filter 數值。現在用電腦調,又快又準。 ::: #### 目前學術論文主軸 ```mermaid graph LR A(資料及題目需求) ---> B(方法) ---> C(結果) style A fill:#fff,stroke:#333,stroke-width:2px; style B fill:#fff,stroke:#333,stroke-width:2px; style C fill:#fff,stroke:#333,stroke-width:2px; ``` <br> ## Part2: RBF 模型 實驗室所使用的 RBF 與過往使用方法的差別在於,RBF 可以直接找出關鍵因子 <center> <img src="https://hackmd.io/_uploads/S1ENJ_VnR.png", style=" width: 70%; height: auto;"> <div style=" border-bottom: 3px solid #d9d9d9; display: inline-block; color: #999; padding: 3px;"> </div> </center> #### 1D-RBF <center> <img src="https://hackmd.io/_uploads/SJrDaD4nR.png", style=" width: 50%; height: auto;"> <div style=" border-bottom: 3px solid #d9d9d9; display: inline-block; color: #999; padding: 3px;"> </div> </center> - 版本一 <center> <img src="https://hackmd.io/_uploads/B1ZcyOV2C.png", style=" width: 70%; height: auto;"> <div style=" border-bottom: 3px solid #d9d9d9; display: inline-block; color: #999; padding: 3px;"> </div> </center> - 版本二 <center> <img src="https://hackmd.io/_uploads/B1LAy_43R.png", style=" width: 70%; height: auto;"> <div style=" border-bottom: 3px solid #d9d9d9; display: inline-block; color: #999; padding: 3px;"> </div> </center> <br> #### RBF 研究的變形 - 原始 1D-RBF (處理向量資料) - 快速初始化: <center> <img src="https://hackmd.io/_uploads/rJspl_EhA.png", style=" width: 90%; height: auto;"> <div style=" border-bottom: 3px solid #d9d9d9; display: inline-block; color: #999; padding: 3px;"> </div> </center> - 遷移學習: 先觀察變動後資料與原始資料差距 1. 差距很遠:刪掉舊的 RBF 用 GMM 加上新的 RBF 2. 差距不遠:微調既有的 RBF <center> <img src="https://hackmd.io/_uploads/SynZbuVhA.png", style=" width: 90%; height: auto;"> <div style=" border-bottom: 3px solid #d9d9d9; display: inline-block; color: #999; padding: 3px;"> </div> </center> #### 2D-RBF 之前 1D 資料(向量),但實驗室都是 2D 資料(地圖網格) $\to$ 把 1D-RBF 變成 2D-RBF - 1D-RBF 會變動 $mean$ 和 $\sigma$ - 2D-RBF 只變動 $\sigma$ <center> <img src="https://hackmd.io/_uploads/r1MXGdVhR.png", style=" width: 90%; height: auto;"> <div style=" border-bottom: 3px solid #d9d9d9; display: inline-block; color: #999; padding: 3px;"> </div> </center> :::success **重點筆記**: 由 2D-RBF 的 $\sigma$ ,判斷 $\sigma$ 中間網格對輸出影響, $\sigma$ 越小(越高),影響力越大。 <center> <img src="https://hackmd.io/_uploads/rkFpzdNnR.png", style=" width: 90%; height: auto;"> <div style=" border-bottom: 3px solid #d9d9d9; display: inline-block; color: #999; padding: 3px;"> </div> </center> ::: <br> #### 3D-RBF 將 3D-RBF 應用於時空地圖。由於沒有 3D-RBF 但是我們擁有 1D-RBF 與 2D-RBF - Model I - 時間 + 空間 ( 1D-RBF + 2D-RBF ) <center> <img src="https://hackmd.io/_uploads/HknENO420.png", style=" width: 90%; height: auto;"> <div style=" border-bottom: 3px solid #d9d9d9; display: inline-block; color: #999; padding: 3px;"> </div> </center> <br> - Model II - 空間 + 時間 ( 2D-RBF + 1D-RBF ) <center> <img src="https://hackmd.io/_uploads/rkx9NOE3R.png", style=" width: 70%; height: auto;"> <div style=" border-bottom: 3px solid #d9d9d9; display: inline-block; color: #999; padding: 3px;"> </div> </center> :::success **重點筆記**: 用 3D-RBF 抓人流特徵 + 把特徵丟入 CGAN 找出未來人流 ::: <br> ## Part3: U-Net #### 原本資料: 取固定範圍特徵,如果範圍超過 nxn 則會抓不到資料 <center> <img src="https://hackmd.io/_uploads/BkVaBuEhA.png", style=" width: 70%; height: auto;"> <div style=" border-bottom: 3px solid #d9d9d9; display: inline-block; color: #999; padding: 3px;"> </div> </center> #### U-Net: 所有size的特徵皆列入考慮,確保特徵一定能抓的到 (例如: 刀具時頻圖) <center> <img src="https://hackmd.io/_uploads/SJhKSON3A.png", style=" width: 90%; height: auto;"> <div style=" border-bottom: 3px solid #d9d9d9; display: inline-block; color: #999; padding: 3px;"> </div> </center> <br> ## Part4: Auto Encoder ### 基本概念 - AutoEncoder 是一種神經網路架構,用來進行降維與資料重建。 **結構包含兩個部分:** 1. Encoder(編碼器):將高維資料轉換成低維表示(稱為 latent 或 bottleneck) 2. Decoder(解碼器):根據 latent 還原出原始資料 **❗輸入與輸出是相同資料(自監督學習)** <center> <img src="https://hackmd.io/_uploads/BJu5wCbQgg.png", style=" width: 100%; height: auto;"> <div style=" border-bottom: 3px solid #d9d9d9; display: inline-block; color: #999; padding: 3px;"> </div> </center> ### 示意說明與比喻 - 你(You)是見證人,記得關鍵特徵(term, eye, mouth) - Encoder 相當於你只記住「小偷的特徵」 - Decoder 根據這些特徵,畫出嫌疑人(如畫像師) **整個過程就像是資料壓縮再還原,但關鍵是保留重要特徵** - 即:Dimensional Reduction(降維) ![image](https://hackmd.io/_uploads/Sk2_uR-Xxe.png) :::success **重點筆記**: Loss Function - 負責確保找到的犯人特徵是好特徵,以增加辨識的效果。 ::: - 功用 I:抓取特徵 <center> <img src="https://hackmd.io/_uploads/By8DDd4nA.png", style=" width: 90%; height: auto;"> <div style=" border-bottom: 3px solid #d9d9d9; display: inline-block; color: #999; padding: 3px;"> </div> </center> :::success **重點筆記**: 實驗室經常看到新 model 和新方法 ⟹ 把他套到大數據流程後就可以讓自己用或與其他方法比較。 ::: - 功用 II:抓出雜訊 <center> <img src="https://hackmd.io/_uploads/HkVk_OE3C.png", style=" width: 70%; height: auto;"> <div style=" border-bottom: 3px solid #d9d9d9; display: inline-block; color: #999; padding: 3px;"> </div> </center> <br> ### AutoEncoder 優勢(Advantage) #### Adv. 1:高適應性(high adaptive)設計 **Encoder 可以是:** - CNN(影像) - LSTM(時間序列) - DNN、PLM 等(結構或語意) ![image](https://hackmd.io/_uploads/rJoM9A-Qex.png) **Adv. 2:能處理複雜資料集** - 可利用預訓練語言模型(PLM)或深度架構應對高維資料(圖、表格、時序資料) **Adv. 3:可避開雜訊** - 只保留輸入的核心特徵,忽略干擾資訊 ### 範例應用(Ex: Youbike 資料) **資料為一週(Mon–Fri)每小時(24h)的騎乘紀錄 → 向量維度為 1x24** - 利用 AutoEncoder 將這類資料壓縮到低維空間 R1 - 觀察發現:正常資料聚集在一區、雜訊資料(如雨天、假日)分佈較分散 **❗這種特性可應用於異常檢測** ![image](https://hackmd.io/_uploads/HJobjR-7gx.png) ## Part5: GAN 基本簡介: - G、D 兩個網路可根據需求而定義 - G 的結過可經過加工再丟給 D - GAN 很難 Train,需要比一般 NN 更大量資料 - 大家都以為只有 G 可以用,但 D 也可以使用 <center> <img src="https://hackmd.io/_uploads/ryAZF_NnR.png", style=" width: 90%; height: auto;"> <div style=" border-bottom: 3px solid #d9d9d9; display: inline-block; color: #999; padding: 3px;"> </div> </center> #### CGAN - 把所有的可能透過 Auto Enocder 分解,不但特徵數量減少,可能條件也減少 - CGAN的問題? 1. 很難評估 LOSS 值 2. 以前 CGAN 產生圖,圖的 Loss Function 都是在探討像素間的合理性,因此套用在其他議題 Loss 相對難處理 3. 對本實驗室的解決方法:Loss Function 改方式判斷效果 <center> <img src="https://hackmd.io/_uploads/HyOoOd4hR.png", style=" width: 70%; height: auto;"> <div style=" border-bottom: 3px solid #d9d9d9; display: inline-block; color: #999; padding: 3px;"> </div> </center>