---
# System prepended metadata

title: 【類神經網路效能提升】
tags: [Data Analysis]

---

# 【類神經網路效能提升】

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


