【深智書摘】卷積神經網路(CNN)的發展與結構

更新 發佈閱讀 7 分鐘

  卷積神經網路(Convolutional Neural Networks,CNN),其應用包括影像辨識、自然語言處理(NLP)等領域。若能從其發展至今的脈絡開始了解,必定可以更進一步地理解專案的想法,將該技術掌握得更得心應手。以下就其發展和結構分別說明。


  LeNet是最早的分類卷積網路,在1998年由Yann Lecun提出。當時,LeNet被設計用於手寫數字辨識,但是因為其理論解釋性較差,並且效果不如處理人工特徵的SVM,所以一直沒有得到重視。

  一直到2012年,AlexNet在ILSVRC(也就是ImageNet比賽)中一舉奪魁,才觸發了人們對於深度學習的熱情,從此深度學習進入了高速發展的時期,之後便誕生了VGG、ResNet等一系列卷積網路架構。

1. LeNet

  LeNet的結構如圖4-4所示,其中只有3種網路層——卷積層、池化層和全連接層。在啟動函數的選擇上,LeNet選擇了雙曲正切函數(Tanh),確定了卷積神經網路的基本結構。

raw-image

  現在有些深度學習框架中已經不提供定義好的LeNet 網路了,即使有,也是經過簡化改良之後的LeNet-5,用於辨識MNIST資料集的LeNet-5結構如圖4-5 所示。

raw-image

  Tanh 啟動函數被替換成了ReLU 啟動函數。

2. AlexNet

  AlexNet中主要是提出了ReLU啟動函數和Dropout方法,同時還引入了資料增強操作,使模型的泛化能力得到進一步提高。但是這個網路中的參數量達到了6000萬,AlexNet的作者使用了兩片GTX 580訓練了五六天才得到分類結果。最終的分類結果也不負所望,以超越第二名10.9%的絕對優勢奪得第一名。AlexNet 網路結構如圖4-6 所示。

  AlexNet中包含了5個卷積層和3個全連接層,層數比LeNet多,但是卷積、池化這樣的整體流程並沒有改變。AlexNet中用到的3個訓練技巧對最終的結果造成了積極作用。

raw-image


  • ReLU:ReLU啟動函數具有非線性的特徵,又不會像Sigmoid和Tanh那樣,容易出現梯度彌散的問題。
  • Dropout:其原理類似於sklearn中的整合演算法,在訓練過程中,會以一定機率讓神經網路節點失去活性。在預測過程中,會將所有節點的輸出乘以這個機率值。這樣訓練出來的神經網路能夠得到類似多模型整合的效果,緩解了模型的過擬合問題。
  • 資料增強:資料增強過程相當於增加了樣本的多樣性,使模型具有更強的泛化能力。

3. VGGNet

  我們可以將VGGNet看作一個加深版的AlexNet,它使用了3個全連接層,使模型的總參數量達到了1.3億,這個架構最大的貢獻是它證明了:使用小尺寸的卷積核心並增加網路深度可以有效提升模型效果。不過有關VGGNet的論文中提到,當網路層數疊加到19層時,其準確率幾乎達到飽和,即此時無法再透過加深網路來提高準確率了。

  這個網路在當時看來已經非常深了,VGG的作者在訓練VGG模型的時候,是先訓練了淺層網路(VGG-11),等淺層網路穩定之後,再往上增加新的卷積層,這樣逐步將網路深度增加到13、16、19。圖4-7展示了VGG-16的網路結構。

raw-image

  VGG使用多個小卷積核心替代了大卷積核心,比如使用3個3×3卷積核心得到的特徵圖尺寸和使用1個7×7卷積核心得到的特徵圖尺寸相同,7×7卷積核心有49×channel個參數,而3個3×3卷積核心只有27×channel個參數(channel 是通道數)。

  在VGG之後出現的網路中,卷積核心基本以3×3卷積和1×1卷積為主。

4. GoogleNet

  GoogleNet也叫InceptionNet,與AlexNet和VGGNet這種單純依靠加深網路結構進而改進網路性能的想法不一樣,它另闢蹊徑,在加深網路的同時,改進了網路結構:引入Inception模組(見圖4-8),使用分支結構。在僅有500萬參數的情況下,GoogleNet力壓VGG模型獲得2014年ILSVRC分類比賽的冠軍(VGG是定位比賽的冠軍和分類比賽的亞軍)。

raw-image

  GoogleNet為了能讓模型更進一步地收斂,在較淺層的特徵圖上設計了輔助損失單元,這樣得到的淺層特徵也能有很好的區分能力。

  Inception v2中提出了Batch Normalization(本書將其簡稱為BatchNorm),對啟動值進行了規範化操作,使網路梯度反向傳播時不再受參數尺度影響,這個方法已經被後來很多網路架構應用。在有些專案中,為了最佳化模型的速度和記憶體佔用情況,會將BatchNorm合併到卷積中。

5. ResNet

  ResNet可以說是卷積神經網路發展史上里程碑式的貢獻,其獨創的殘差結構(見圖4-9)能夠有效緩解梯度彌散問題,在網路層數達到100多層的時候,仍然可以有效地進行訓練。

  考慮到x的維度與F(x)的維度可能不匹配,需進行維度匹配工作,在恆等層採用1×1 卷積核心來增加維度。

  在網路進一步加深之後,圖4-9中的殘差模組變得不是特別有效,所以又設計了一種瓶頸參數模組,如圖4-10所示。第一個1×1卷積有著降維的作用,將原來256維的x降維到64維,從而使3×3卷積得以在較低維度上進行運算,有著提高運算效率的作用。3×3卷積計算完畢之後,再使用1×1卷積進行升維,以便與原有的x相加。

raw-image
raw-image
raw-image


本文摘錄自深智數位出版之《PyTorch深度學習:電腦視覺流行專案親自動手》

留言
avatar-img
深智數位的沙龍
10會員
25內容數
深智數位的沙龍的其他內容
2023/08/02
在機器學習中,我們的目標是找到一種能夠最好地描述數據的模型。例如,在迴歸問題中,我們希望找到一種函數,該函數能以一種對我們的目標變數(例如:銷售量、股票價格等) 的最佳估計的方式,描述輸入特徵(例如:廣告支出、市場狀況等)。
Thumbnail
2023/08/02
在機器學習中,我們的目標是找到一種能夠最好地描述數據的模型。例如,在迴歸問題中,我們希望找到一種函數,該函數能以一種對我們的目標變數(例如:銷售量、股票價格等) 的最佳估計的方式,描述輸入特徵(例如:廣告支出、市場狀況等)。
Thumbnail
2023/07/21
  在程式設計中,變數(Variable)是一個代表內存位置的符號,用於存儲和操作數據。它是一個內存單元,可以存儲各種類型的數據,例如整數、浮點數、字符串等。變數的值可以在程式執行時改變,並在需要時被讀取。 變數是暫時存放資料用的,可以將變數想像成是一個箱子,箱子裡面可以是空的,
Thumbnail
2023/07/21
  在程式設計中,變數(Variable)是一個代表內存位置的符號,用於存儲和操作數據。它是一個內存單元,可以存儲各種類型的數據,例如整數、浮點數、字符串等。變數的值可以在程式執行時改變,並在需要時被讀取。 變數是暫時存放資料用的,可以將變數想像成是一個箱子,箱子裡面可以是空的,
Thumbnail
2023/05/17
新手在使用ChatGPT 時,對於ChatGPT的回答普遍印象是廢話連篇,而這通常是因為沒有給出足夠清晰的指示所導致,以下將介紹3個讓你跟ChatGPT溝通更有效的提示技巧,幫助讀者快速掌握提升回答品質的秘訣!
Thumbnail
2023/05/17
新手在使用ChatGPT 時,對於ChatGPT的回答普遍印象是廢話連篇,而這通常是因為沒有給出足夠清晰的指示所導致,以下將介紹3個讓你跟ChatGPT溝通更有效的提示技巧,幫助讀者快速掌握提升回答品質的秘訣!
Thumbnail
看更多
你可能也想看
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
本篇文章介紹如何使用PyTorch構建和訓練圖神經網絡(GNN),並使用Cora資料集進行節點分類任務。通過模型架構的逐步優化,包括引入批量標準化和獨立的消息傳遞層,調整Dropout和聚合函數,顯著提高了模型的分類準確率。實驗結果表明,經過優化的GNN模型在處理圖結構數據具有強大的性能和應用潛力。
Thumbnail
本篇文章介紹如何使用PyTorch構建和訓練圖神經網絡(GNN),並使用Cora資料集進行節點分類任務。通過模型架構的逐步優化,包括引入批量標準化和獨立的消息傳遞層,調整Dropout和聚合函數,顯著提高了模型的分類準確率。實驗結果表明,經過優化的GNN模型在處理圖結構數據具有強大的性能和應用潛力。
Thumbnail
本篇文章專注於消息傳遞(message passing)在圖神經網絡(GNN)中的應用,並以簡單的例子解釋了消息傳遞的過程和機制。
Thumbnail
本篇文章專注於消息傳遞(message passing)在圖神經網絡(GNN)中的應用,並以簡單的例子解釋了消息傳遞的過程和機制。
Thumbnail
本文主要筆記使用pytorch建立graph的幾個概念與實作。在傳統的神經網路模型中,數據點之間往往是互相連接和影響的,使用GNN,我們不僅處理單獨的數據點或Xb,而是處理一個包含多個數據點和它們之間連結的特徵。GNN的優勢在於其能夠將這些連結關係納入模型中,將關係本身作為特徵進行學習。
Thumbnail
本文主要筆記使用pytorch建立graph的幾個概念與實作。在傳統的神經網路模型中,數據點之間往往是互相連接和影響的,使用GNN,我們不僅處理單獨的數據點或Xb,而是處理一個包含多個數據點和它們之間連結的特徵。GNN的優勢在於其能夠將這些連結關係納入模型中,將關係本身作為特徵進行學習。
Thumbnail
長短期記憶(英語:Long Short-Term Memory,LSTM)是一種時間循環神經網路(RNN),論文首次發表於1997年。 LSTM(長短期記憶)是一種特定類型的遞歸神經網絡(RNN),在許多需要處理時間序列數據或順序數據的應用中非常有用。 以下是一些常見的 LSTM 應用:
Thumbnail
長短期記憶(英語:Long Short-Term Memory,LSTM)是一種時間循環神經網路(RNN),論文首次發表於1997年。 LSTM(長短期記憶)是一種特定類型的遞歸神經網絡(RNN),在許多需要處理時間序列數據或順序數據的應用中非常有用。 以下是一些常見的 LSTM 應用:
Thumbnail
U-Net演算法架構解析,首次介紹了U-Net的設計,架構,以及在Stable-diffusion中的應用。詳盡分析了U-Net的收縮路徑、擴展路徑、最終層,以及形變不變性的應用。同時提供了相關論文以及PyTorch實作的參考資料。
Thumbnail
U-Net演算法架構解析,首次介紹了U-Net的設計,架構,以及在Stable-diffusion中的應用。詳盡分析了U-Net的收縮路徑、擴展路徑、最終層,以及形變不變性的應用。同時提供了相關論文以及PyTorch實作的參考資料。
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 接著來談 Transformer 架構中的 Feedforward Network (FFN): 其為全連接的神經網路架構 回顧 AI說書 - 從0開始 - 64
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 接著來談 Transformer 架構中的 Feedforward Network (FFN): 其為全連接的神經網路架構 回顧 AI說書 - 從0開始 - 64
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 首先先展示 Transformer 的架構圖: 可以看到架構中不再出現 RNN 、 LSTM 、 CNN 等物件,因為 Recurrence 已被摒棄。
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 首先先展示 Transformer 的架構圖: 可以看到架構中不再出現 RNN 、 LSTM 、 CNN 等物件,因為 Recurrence 已被摒棄。
Thumbnail
本文主要介紹神經網路訓練辨識的過程,利用fashion_mnist及簡單的神經網路來進行分類。 使用只有兩層的神經網路來訓練辨識fashion_mnist資料。
Thumbnail
本文主要介紹神經網路訓練辨識的過程,利用fashion_mnist及簡單的神經網路來進行分類。 使用只有兩層的神經網路來訓練辨識fashion_mnist資料。
Thumbnail
在AI已經全民運動的年代,Google還是希望有一個更小巧精美的深度學習套件讓大家都能快速上手──JAX就這麼誕生了。 現在,你真的可以放心的進入JAX的世界,當你上手之後,不論是CNN、RNN、NLP或是GAN,全部可以又快又好又清楚的做出來
Thumbnail
在AI已經全民運動的年代,Google還是希望有一個更小巧精美的深度學習套件讓大家都能快速上手──JAX就這麼誕生了。 現在,你真的可以放心的進入JAX的世界,當你上手之後,不論是CNN、RNN、NLP或是GAN,全部可以又快又好又清楚的做出來
Thumbnail
  卷積神經網路(Convolutional Neural Networks,CNN),其應用包括影像辨識、自然語言處理(NLP)等領域。若能從其發展至今的脈絡開始了解,必定可以更進一步地理解專案的想法,將該技術掌握得更得心應手。以下就其發展和結構分別詳細說明。 1. LeNet
Thumbnail
  卷積神經網路(Convolutional Neural Networks,CNN),其應用包括影像辨識、自然語言處理(NLP)等領域。若能從其發展至今的脈絡開始了解,必定可以更進一步地理解專案的想法,將該技術掌握得更得心應手。以下就其發展和結構分別詳細說明。 1. LeNet
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News