# 【類神經網路效能提升】
## 目錄
- 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(降維)

:::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 等(結構或語意)

**Adv. 2:能處理複雜資料集**
- 可利用預訓練語言模型(PLM)或深度架構應對高維資料(圖、表格、時序資料)
**Adv. 3:可避開雜訊**
- 只保留輸入的核心特徵,忽略干擾資訊
### 範例應用(Ex: Youbike 資料)
**資料為一週(Mon–Fri)每小時(24h)的騎乘紀錄 → 向量維度為 1x24**
- 利用 AutoEncoder 將這類資料壓縮到低維空間 R1
- 觀察發現:正常資料聚集在一區、雜訊資料(如雨天、假日)分佈較分散
**❗這種特性可應用於異常檢測**

## 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>