國立臺北護理健康大學 NTUNHS
CNN Network
Orozco Hsu
2025-03-28
1
About me
2
• Education
• NCU (MIS)、NCCU (CS)
• Experiences
• Telecom big data Innovation
• Retail Media Network (RMN)
• Customer Data Platform (CDP)
• Know-your-customer (KYC)
• Digital Transformation
• LLM Architecture & Development
• Research
• Data Ops (ML Ops)
• Generative AI research
• Business Data Analysis, AI
Tutorial
Content
3
Network Architectures
LeNet-5
Homework
Deep Learning Events
AlexNet
Neural Network Introduction
VGG
Code
• Sample code
• https://drive.google.com/drive/folders/1CLa89eI2JT4V_PhSX-WnJevzLznD-
DqG?usp=sharing
4
5
Copy it to your
google drive
Check your google
drive
Copy the .ipynb to your Google Drive
神經網路介紹
• 神經網路也稱為通用「函數」逼近/近似器 (Function approximation with
neural network)。
• 任何「連續函數」和「決策函數 (分類、預測)」都可以通過一個以上隱藏層
的神經網路來逼近。 古典物理學中有一句格言: 「自然界中,一切都是連續的」
• 構建神經網路,並以「連續的 Sigmoidal 函數」作為激活函數,若適當地
調整神經網路的權重 (參數),將準確地逼近任何 N 維連續函數。
• 同樣,任何 N 維連續函數也可以通過使用「非線性與單調 Relu 函數」作為
激活函數來逼近任何 N 維連續函數。
6
神經網路介紹
• 神經網路分類 (Classification)
• 神經網路預測 (Regression)
7
圖形前處理:
1. 拉大,符合模型輸入格式
2. 取得圖片特徵值
神經網路介紹
• 我們都會將一個現實中的問題化成一個數學問題,一個數學問題基本
上都是包含函數的。
• 幾乎人類的問題都可以化成一個函數來解答:
• 圖像辨識: f(image) => classes
• 語音轉文字: f(speech) => text
• 機器人聊天: f(text) => text
• 所以可以逼近(近似)任何連續函數的模型就可以解答任何問題。
8
9
https://machinelearningmastery.com/neural-networks-are-function-approximators/
觀測(自然)現象後,繪製圖表如下,透過我們設計的函數來逼近,有了設計函數後,我們就可以進行該(自然)現象的預測
神經網路介紹
• 淺層的神經網路 (Universal approximation theorem)
• 一個簡單的前饋神經網路 (Feedforward network),只包含了一個
hidden layer,並且有適當權重與激活函數 (Activation function);包含
有限個神經元的情況下,可以去逼近(近似)任何連續函數。
10
參考: http://www.feiguyunai.com/index.php/2019/
神經網路介紹
• 典型的神經網路具有以下三個構造:
• 結構:
• 結構指定了網路中的各單元和它們的關係。
例如:輸入值、權重 (參數)、激活函數、誤差值 (Bias)、計算後的輸出值、輸出結果。
• 激活函數:
• 定義神經元如何根據其他神經元的活動來改變激活值。
• 學習規則:
• 指定了神經網路中的權重如何隨著迭代計算而調整更新。
11
隱藏層
神經網路介紹
• 神經元構造
12
激活函數
輸入值
權重值
誤差值 (Bias)
輸出值
輸入值 Xi 可以看成一個矩陣,
例如: 3x3 的矩陣
同理,權重 Wi 也可以看成一個矩陣,
例如: 3x3 的矩陣
+b
b
例如輸入為 3x3 的矩陣
可以看成輸入值 X1, X2, X3…X9 (共9個輸入值)
例如: 9個輸入值,就會對應9個權重
神經網路介紹 (類神經網路)
13
https://aws.amazon.com/tw/what-is/neural-network/
神經網路介紹
• 激活函數
• Sigmoid (S 函數),取值範圍 (0,1),很適
合用來做二元分類。
• 優點: 函數平滑,容易求導數。
• 缺點: 倒傳遞神經網路計算時,很容易出
現梯度消失 (權重參數) 狀況,因此無法完
成深層網路的訓練。
14
補充
15
導數 (Derivative) vs 導函數 (Derivative Function)
1. 導數/(梯度)就是切線斜率,為數字
2. 導函數為計算切線斜率的函數
https://blog.csdn.net/feizxiang3/article/details/101294382
紅色為 Sigmoid 函數的導數
當輸入值很大或很小時 (向橫軸的兩端延伸時,導
數接近0),於是輸出值「接近0 」 。如果是淺層的
神經網路,這並不會造成太大的問題,當深層神經
網路會造成模型無法訓練,稱為「梯度消失」 。
模型訓練過程透過倒傳遞類神經網路運用「梯度下
降學習法」(利用偏微分求導數/梯度),更新調整
「權重參數」,使誤差盡可能地縮小。
深層神經網路通常用 Relu 函數,因為通常它不會產生一
個很小的導數(梯度)。
調整學習率(控制梯度下降的速度),若梯度消失則增大,梯度爆
炸則減小。
或是,將輸入層資料進行標準化 (Batch normalization)
減輕梯度消失的問題。例如: 限制輸入在 -4<X<4 之間。
補充
• 學習率
• 公式:新權重 = 舊權重 - 學習率 * 梯度
• 設定過小,收斂較慢,容易過擬合
• 設定過大,學習過快,無法收斂,
造成震盪或發散
• 設定值範圍
• 0.01-0.001 之間,都可以嘗試看結
果好壞
16
https://gino6178.medium.com
深度學習開始發展
• 2018 Turing Award
• Bengio, Hinton, and LeCun, are sometimes referred to as the "Godfathers of
AI" and "Godfathers of Deep Learning
17
Ref: https://awards.acm.org/about/2018-turing
強化學習脫穎而出
• 2024 Turing Award
• 強化學習(Reinforcement Learning)奠基者 Andrew Barto 和 Richard
Sutton,表彰他們開創性的研究
18
圖靈獎也納入 AI 版圖:2024 年得主為強化學習先驅 Andrew Barto 與 Richard Sutton | TechNews 科技新報
深度學習開始發展
• ImageNet Large Scale Visual Recognition Challenge (ILSVRC)
19
Ref: https://image-net.org/index.php
智能上限
ILSVRC 歷屆的深度學習模型 – CH.Tseng (wordpress.com)
補充
• 2012 年 ILSVRC 冠軍 AlexNet,錯誤率比前一年減少 10%,首度引用
Dropout 層。
• 2014年 ILSVRC 亞軍 VGGNet。
• 2014年 ILSVRC 冠軍 GoogleNet & Inception 同時使用多種不同大小的
Kernel,讓系統決定最佳的 Kernel;並引入 Batch Normalization 觀念。
• 2015年 ILSVRC 冠軍 ResNet 發現 20 層以上的模型前面幾層發生優化退化
(Degradation),因此提出殘差 (Residual) 解決。
20
補充
21
Top-1 Accuracy: 只預測一次且正確的機率
Top-2 Accuracy: 預測五次,只要有一次正確就當正確的機率
深度學習開始發展
• CS231n:
• Convolutional Neural Networks for Visual Recognition
22
Ref: http://cs231n.stanford.edu/index.html
23
這是黑白的圖片(Grey Image)
https://towardsdatascience.com/convolutional-neural-network-feature-map-and-filter-visualization-f75012a5a49c
Feather extractor
(Encoder)
Classifier
(Decoder)
24
https://www.apeer.com/blog/feature-learning-vs-feature-engineering
Image feature extraction (Gabor Filters)
Network architectures
25
Ref: https://www.sciencedirect.com/science/article/pii/S0386111219301566
Feature extractor
• Kernel maps: Image features of edge-
detection, sharpen…etc. (一般為奇數,例如: 1x1,
3x3, 5x5)
• Convolutional: Convolutional and
pooling layers which act as the feature
extractor.
• Feature maps: The outputs of kernel
map process.
26
https://zhuanlan.zhihu.com/p/77471866
Feature extractor
• We need to know the Stride number.
• Ex: stride=1 or stride=2
27
有時候我們會透過 Stride 在 hidden layer 中,控制輸出的維度大小
Feature extractor
28
Ref: https://learnopencv.com/wp-content/uploads/2017/11/convolution-example-matrix.gif
(4*1)+(3*-1)+(3*1)+(2*-1)+(2*1)+(7*-1)
• We need to matrix multiplication to get the feature map.
補充
• What if you want the feature map to be of the same size as the input
image? Using the 「Zero padding 」on it.
29
Ref: https://towardsdatascience.com/convolution-neural-networks-a-beginners-guide-implementing-a-mnist-hand-written-digit-8aa60330d022
Valid padding: Original image size
Same padding: Add zero padding
feature extractor
30
Ref: https://www.researchgate.net/figure/Toy-example-illustrating-the-drawbacks-of-max-pooling-and-average-pooling_fig2_300020038
• Pooling
• Max (在ImageNet模型當中,比較流行)
• 記住特徵,尤其在特徵提取方面
• Average
• 仍保留部分全圖資訊
• 常用於連接 Dense 層
Pooling 或稱 Subsampling (池化) 就是一種降維技術
31
這是彩色的圖片(RGB)
補充
• Spatial Contextual Module (pixel wise)
32
Ref: https://www.researchgate.net/figure/The-sum-pooling-strategy-for-feature-maps-in-a-convolutional-layer-a-Input-cloud-image_fig2_323433191
https://www.analyticsvidhya.com/blog/2019/0
8/3-techniques-extract-features-from-image-
data-machine-learning-python/
補充
將 2D 轉成 1D
• Flatten Layer
• It is used to convert the data into 1D arrays (多維資料 => 一維資料) to create a single
feature vector.
• After flattening we forward the data to a fully connected layer for final
classification.
33
Ref: https://data-flair.training/blogs/keras-convolution-neural-network/
因為圖像的特殊性,需要將 2D 轉成 1D 之後進行類神經網路訓練
Classifier (分類器)
• Dense Layer
• It is a fully connected layer. Each node in this layer is connected to the
previous layer.
• This layer is used at the final stage of CNN to perform classification.
• Dropout Layer
• It is used to prevent the network from overfitting.
34
Ref: https://data-flair.training/blogs/keras-convolution-neural-network/
分類器可以是所有機器學習當中的監督式學習模型
激活函數
• 激活函數在(FC)中,決定神經元輸出是否被激活,以及輸出值的全連接層範圍
• 輸出為 0 表示該神經元沒有被激活
• 常見的激活函數包括 ReLU(避免梯度消失)與 Sigmoid、Tanh(特定應用)
• Sigmoid: 輸出值於 (0,1),如: 二元分類問題
• Tanh: 輸出值於 (-1,1) ,均勻對稱,利於權重更新更穩定,如: 情感分析
• 適當選擇激活函數有助於提升模型的學習能力與非線性表達能力。
35
權重更新
36
DL、ML筆記(一):類神經網路概念 - JianJie - Medium
利用差異更新所學知識,進行知識修正的步驟
在深度學習網路中,所謂更新權重包含:
1. 所有神經元之間傳遞的權重
2. Kernal map 的權重 (核權重)
3. 誤差權重 (誤差值)
所以需要不斷進行權重更新,直到模型收斂;這個過程體現在程式當中的參數: epoch
建模與推論的過程
37
Ref: https://www.aldec.com/en/solutions/embedded/deep-learning-using-fpga
建模: Training
推論: Inferencing
LeNet-5 網路架構
38
輸入: 32x32x1
接下來:
f=5
s=1
p=0
k=6
輸入: 14x14x6
接下來:
f=5
s=1
k=16
輸入: 10x10x16
接下來:
f=2
s=2
輸入: 28x28x6
接下來:
f=2
s=2
Layer 1 Layer 2
400個神經元與120個神經元連接
輸入: 5x5x16
接下來:
輸出: 400個神經元
1998 年提出的卷積神經網路(CNN),主要用於手寫數字識別。其架構包含兩個卷積層、兩個池化層、全連接層及輸出層。LeNet-5 是深度學習歷史上重要的 CNN 之一,奠定
了現代 CNN 的基礎
39
補充
Ref: https://madebyollin.github.io/convnet-calculator/
黑白圖片為1,彩色圖片為3
Kernel數量,若5x5為5
神經元數量
LeNet-5 的 C1
輸入圖片的大小
LeNet-5 網路架構
• Fashion-MNIST 資料集:
• 訓練資料集: 60,000
• 測試資料集: 10,000
• Grayscale image: 28x28
• Label: 10 classes
40
注意! 使用 LeNet-5 網路,但是訓練的圖片大小不是 28x28,則必須調整到 28x28 才行。
參考 pytorch transforms.Compose 函數,包含圖片旋轉、剪裁、正規化
LeNet-5.ipynb
Label Name
1 T-shirt/top
2 Trouser
3 Pullover
4 Dress
5 Coat
6 Sandal
7 Shirt
8 Sneaker
9 Bag
10 Ankle Boot
何謂 Pretrained 模型
• 透過大量的數據訓練出的模型,使用者直接引入即可使用,不用重新訓練。
• 例如: 直接拿貓狗的圖片,便可以進行圖片分類。
• 如果要增加兔子的圖片分類功能,可以在既有的貓狗圖片分類器
(Pretrained model) 上,準備小量的兔子圖片,保留住原有的權重參數,重
新訓練 classifier,讓分類可以分類出貓狗兔,這樣的做法又稱 「Transfer
learning 」 之 「 Fine-Tune 」。
• 什麼是微調 (fine-tuning)? 如何微調 GPT-3.5 模型?|ExplainThis
• Google開發逐步蒸餾技術,小資料小模型也能打敗LLM | iThome
41
AlexNet_Pretrain.ipynb
https://pytorch.org/vision/main/models.html
AlexNet 網路架構
• LeNet-5 對於小資料可以取得好成績,但更大的數據集就不行了,深度學習
因此沉寂好一段時間。
• AlexNet 為電腦視覺領域最有影響力的論文之一,它刺激了更多使用卷積神
經網路 (CNN) 和 GPU 來加速深度學習的論文出現。
• 包含八層;前五層是卷積層,最後三層是全連接層,它使用了 Relu 激活函
數,顯示比 Tanh 和 Sigmoid 有更好的表現,正式開啟 CNN 的時代。
42
43
AlexNet 網路架構
https://www.oreilly.com/library/view/advanced-deep-learning/9781789956177/b2258aa6-2c18-449c-ac00-939e812f5a4a.xhtml
44
AlexNet_Build.ipynb
激活函數從 Sigmoid 到 Relu 的改變,讓模型深度更深,越深的網路證明效果越好
補充
VGG 網路架構
• VGG 網路承襲了 AlexNet 思路,建立「更多層」 ,最常見的就是 16 與 19 層。
• VGG-16 (13 個卷積層與3個全連接層)。
• VGG-19 (16 個卷積層與3個全連接層)。
• 利用較小的 Kernel (Ex: 3x3) 替代較大的 (Ex: 5x5 or 7x7)
• 網路架構為: 卷積層+ 卷積層+ 卷積層+ 池化層,而不是傳統的卷積層+池化層
• 減少參數數量、加快計算速度、減少過擬合
• 隨著每一層加深,每一個卷積都有激活函數,可擬合更複雜的數據
• 證明「較深」的層數能提高效能。
45
46
VGG 網路架構
https://medium.com/nerd-for-tech/vgg-16-easiest-explanation-12453b599526
VGG-16 Build from scratch
• 輸入格式是 224x224 的 RGB 影像,共有 16 層網路架構。
• 13 層 3x3 的 kernel 抽取特徵,和 3 層全連接層 (Fully-connected)
• 5 層的池化層分散在卷積層之間
• 網路架構切割成「 6 」個區塊。
• 前面 5 個區塊是由卷積層和池化層組成,用來抽取影像特徵
• 最後一個區塊是由全連接層組成,用來產生 ImageNet 的 1000 類影像辨識的結果
47
VGG16_Build.ipynb
有些人考量電腦算力不足,可能會在基本的網路架構上,調整神經元數量,降低運算量。
Homework (基礎)
• 完成練習 (75分鐘)
• 類神經網路:遊樂場練習 | Machine Learning | Google for Developers
48
Homework (進階)
• 嘗試修改 VGG-16 網路參數,透過
調整參數的情況下,比較模型大小
• 透過 summary 函數
• 每層的參數量與模型參數
• 不用實際執行模型訓練
49
目前模型大小 512.32MB

CNN_Image Classification for deep learning.pdf