## SCAICT 四月課程第三堂
### 機器學習理論與實作(二)
<br>特徵映射、卷積
---
## 簽到
![qrcode_docs.google.com](https://hackmd.io/_uploads/HJQRPNPCa.png)
---
## SVM
----
以支持向量(Support Vector)找出決策邊界
![87987987](https://hackmd.io/_uploads/BJGpTZ5gC.png =50%x)
----
以最小化Geometric Margin為目標
$\gamma^{(i)}=y^{(i)}((\frac{w}{\Vert w \Vert})^Tx^{(i)}+\frac{b}{\Vert w\Vert})=\frac{\hat{\gamma}^{(i)}}{\Vert w\Vert}$
$$\gamma=\min_{i=1,...,n}\gamma^{(i)}$$
---
### 那現在如果數據是長這樣
就不能線性分割了
![flow.drawio (3)](https://hackmd.io/_uploads/BJGMrYVZC.png =50%x)
----
這時我們可以考慮做
### 特徵映射
----
我們先試著構造出一種方法能區別這兩種類別
![flow.drawio (3)](https://hackmd.io/_uploads/BJGMrYVZC.png =50%x)
----
例如可以以數據至原點的距離來判定
當數據離原點的距離$<r$就判定為$\Delta$
![flow.drawio (4)](https://hackmd.io/_uploads/B10ASF4WC.png =50%x)
----
所以這個函數可以表示為
$h(x)=g(r^2-(x_1^2+x_2^2))$
----
從這裡可以看到每一項都帶有係數
$h(x)=g(r^2-(x_1^2+x_2^2))$
----
所以又可以表示為
$\begin{aligned}h(x)&=g(\tilde{w_1}z_1+\tilde{w_2}z_2+\tilde{w_3}z_3)\\&=g(\tilde{w}z)\end{aligned}$
----
所以在轉換後的坐標系
資料變成線性可分了
![flow.drawio (5)](https://hackmd.io/_uploads/HJQUdKIb0.png =50%x)
----
這個過程就被稱作
#### 特徵映射(feature map)
----
我們可以用$\phi(x)$表示特徵映射
$\begin{aligned}h(x)&=g(\tilde{w_1}+\tilde{w_2}x_1^2+\tilde{w_3}x_2^2)\\&=g(\tilde{w}\phi(x))\end{aligned}$
----
$\phi(x)可以將特徵映射至任意維$
即可以$\mathbb{R}^d\mapsto\mathbb{R}^p$
![1__Uhpj662QpxoIa8qlPYJ9A](https://hackmd.io/_uploads/HyHe4ScZC.png)
---
## 卷積
----
### 卷積在機器學習的應用
音頻和語音識別、NLP、醫學影像分析、
自動駕駛、圖像增強
----
### 以卷積為核心概念的神經網路
卷積神經網路CNN
![CNN_International_logo.svg](https://hackmd.io/_uploads/S1hqSH5-C.png =30%x)
----
### 什麼是卷積?
----
### 卷積是在做函數的疊加
----
有一間工廠生產麵包
遵循以下兩條規則
1. $f(x)=$隨時間麵包的產量
2. $g(x)=$隨時間麵包未腐壞率
----
那如果想知道在第$t$個時間單位共有多少麵包呢?
----
我們先想一下
在第0個時間單位生產的麵包數量為
$f(0)g(t)$
----
所以在時間為$x$時的麵包有
$f(x)g(t-x)$個
----
所以共有
$\sum_{x=0}^tf(x)g(t-x)$個麵包
----
或是
$\int_0^t f(x)g(t-x)dx$個麵包
----
這就是卷積公式
我們用 $\ast$ 表示卷積運算
$$(f\ast g)(t)=\int_0^t f(\tau)g(t-\tau)d\tau$$
---
練習:用陣列做卷積
$[1,2,3]\ast[4,5,6]$
----
先把其中一個陣列反轉
然後依序移動做對應項的乘積和
![IMG_0711](https://hackmd.io/_uploads/HkSXL4QPp.jpg =40%x)
----
![IMG_0711](https://hackmd.io/_uploads/HkSXL4QPp.jpg =40%x)
目前答案: [**1*4**, , , , ]
----
![IMG_0712](https://hackmd.io/_uploads/SyxnLEmPT.jpg =32%x)
目前答案: [4, **1\*5+2\*4**, , , ]
----
![IMG_0713](https://hackmd.io/_uploads/Hy1gwNmw6.jpg =25%x)
目前答案: [4, 13, **1\*6+2\*5+3\*4**, , ]
----
![IMG_0714](https://hackmd.io/_uploads/SyMBPVXDp.jpg =32%x)
目前答案: [4, 13, 28, **2\*6+3\*5**, ]
----
![IMG_0715](https://hackmd.io/_uploads/ry_wDN7wa.jpg =40%x)
目前答案: [4, 13, 28, 27, **3\*6**]
----
所以最後得出
$[1,2,3]\ast[4,5,6]=[4, 13, 28, 27, 18]$
---
![螢幕擷取畫面 2023-12-22 231924](https://hackmd.io/_uploads/HkDGYm7Dp.png =70%x)
from 3blue1brown
---
## 圖像卷積
---
### 圖的數值化
在圖像中會以8個bit儲存顏色資訊
也就是說每個像素可以調整出256種不同的顏色強度
![234562345](https://hackmd.io/_uploads/BkhnWI9ZA.png =60%x)
----
彩色圖片則可以分為RGB三個channel
一樣以8bit分別儲存顏色資訊
![螢幕擷取畫面 2024-04-27 182344](https://hackmd.io/_uploads/BkUIzIc-R.png)
----
所以一張圖片最後會這樣子表示
![93419C04-5B40-48CC-8C36-30D19758B0E7_L0_001-2024_4_16 上午10_29_20](https://hackmd.io/_uploads/B1BpGUcW0.jpg)
----
### 卷積核(Kernel)
因為卷積需要兩個訊號,
所以除了圖片還需要Kernel
![螢幕擷取畫面 2023-12-23 161649](https://hackmd.io/_uploads/rkUPtfED6.png =70%x)
----
### 圖像卷積方式
將Kernel放上圖片
接著將對應項相乘後求乘積和
再移動Kernel繼續運算
![螢幕擷取畫面 2023-12-23 161649](https://hackmd.io/_uploads/rkUPtfED6.png =70%x)
---
### Padding
卷積後圖像大小會小一圈
所以我們在卷積前可以將原始圖像加上一圈0
確保在運算後圖像大小會相同
![螢幕擷取畫面 2023-12-23 104050](https://hackmd.io/_uploads/BJwTup7wT.png =70%x)
---
### 各種Kernel的效果展示
---
### 補充資料
為什麼卷積叫卷積:https://reurl.cc/GjoQXd
很好的影片:https://youtu.be/KuXjwB4LzSA
----
## 沒了
### 作業放在dc
---
## 回饋表單
![qrcode_docs.google.com (1)](https://hackmd.io/_uploads/Sy98_NwRT.png)
{"title":"四月課程第三堂","contributors":"[{\"id\":\"8270ce89-c16d-4965-af18-50cdee721260\",\"add\":4153,\"del\":400}]"}