1 of 30

理解神經網路

20250312 B1 羅東高中

20250313 B1 高雄高商

             師大附中 李柏翰

2 of 30

什麼是AI

  • 能表現出智慧的演算過程
  • 但智慧本身無明確數學定義

3 of 30

人類怎麼看懂手寫數字?

  • 圖片輸入進大腦
  • 大腦由過往經驗判斷這是什麼

4 of 30

神經網路(Neural Network)

  • 很難想到有一個簡單的演算法判斷
  • 參考人類的思考模式,讓電腦「學習」
  • 一個神經元連到另一個神經元

5 of 30

單變數預測的數學建模

  •  

6 of 30

怎麼找最佳解?

  •  

 

7 of 30

以神經元的觀點看

8 of 30

多輸入的神經元

  • 這麼多神經元,微分=0的方法不切實際

9 of 30

梯度下降

  • 有些更進階的函數難得知微分後的函數,只知道微分值
  • 比剛剛微分=0更能快速運算
  • 簡單來講就是沿著斜坡走下去

10 of 30

梯度下降

  •  

11 of 30

梯度下降公式

12 of 30

最簡單的神經網路 - DNN

  • 輸入層每個都只能有一個數字
  • 將一層的理解傳給下一層
  • 一層一層往下堆疊
  • 故稱為深層神經網路(Deep NN)

13 of 30

激勵函數(Activation Function)

  • 再多個線性計算,也只能擬合線性關係
  • 因此在一層後面加入激勵函數可擬合非線性關係
  • 激勵函數通常是非線性的

  • 在最後一層如果是要輸出機率,�通常會用Softmax,限制總和為1、�每個值均介於0~1

14 of 30

One hot encoding

  • 適用於分類任務
  • 例如有三類,狗(0)、貓(1)、兔(2)
  • 若輸入資料是貓,則其答案為[0, 1, 0]

15 of 30

拿DNN辨識手寫數字

  1. 把圖片攤平成一維的
  2. 這個一維陣列的每個數字代表每個輸入神經元
  3. 輸入每一層(激勵函數用relu)
  4. 最後一層輸出每個數字的機率(激勵函數用Softmax)

16 of 30

範例程式 DNN MNIST

https://colab.research.google.com/drive/1sI5aPtcG9hBkv6lxgC2-vgelocp2XaSZ

https://tinyurl.com/4kr9d7sa

OR

17 of 30

DNN的不足處

  • 直接二維攤平成一維 → 失去空間資訊
  • 輸入只要有一層很大,參數量就會很大
  • 對於圖片輸入,可以改用CNN

18 of 30

什麼是CNN?

  • CNN是卷積神經網路(Convolutional Neural Network)
  • CNN進行很多次卷積運算,用於取特徵

圖片與數位化後的資料[1]

19 of 30

卷積運算

  • 卷積除了原始資料之外,還有一個kernel map(mask)
  • 範例為3x3的mask
  • mask 通常為正方形,少數是長方形

一個平凡的kernel map[1]

20 of 30

卷積運算

  • 接著進行卷積運算,也就是對每個3x3框框(mask大小)做內積

第一個3x3框框做內積[1]

21 of 30

卷積運算 stride�(步伐)=1

卷積運算示意圖[1]

22 of 30

卷積運算

  • 解釋convolution通常會用底下這張圖,其實就是剛剛的簡化版。

卷積運算簡化示意圖[1]

23 of 30

常見的kernel

  • CNN訓練時更新的就是kernel
  • 有一些kernel有特殊用途

kernel

原圖

邊緣偵測

銳利化

近似高斯模糊

24 of 30

卷積運算

  • 經過卷積運算後,圖會變這樣
  • 圖變小了,若不想讓圖變小,可以在邊界補0(zero-padding)

卷積運算結果示意圖[1]

25 of 30

為何要Pooling?

  • 進行多次卷積後,資料量會增大。
  • 高*寬*channel->(高-k+1)*(寬-k+1)*filters
  • Channels就是有幾個色彩通道,一般RGB就是3個,RGBA就是4個
  • Pooling能有效減少資料量

卷積運算示意圖

26 of 30

什麼是Pooling(池化)

  • Pooling有多種。
  • kernel_size=2
  • 每2x2取最大值
  • 這是maxpooling

Maxpooling示意圖[1]

27 of 30

MaxPooling2D

池化運算結果圖[1]

28 of 30

什麼是CNN?

  • CNN是進行許多卷積與池化的神經網路
  • 池化能減少卷積產生的巨大資料量
  • 卷積層後可接一層池化層

29 of 30

範例程式 MNIST CNN

https://tinyurl.com/ydc3ud32

https://colab.research.google.com/drive/1v3ySPNPDFHht5--7MGfPOL7BYIaQP4hs

OR

30 of 30