【深智書摘】卷積神經網路(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
留言分享你的想法!
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
還在煩惱平凡日常該如何增添一點小驚喜嗎?全家便利商店這次聯手超萌的馬來貘,推出黑白配色的馬來貘雪糕,不僅外觀吸睛,層次豐富的雙層口味更是讓人一口接一口!本文將帶你探索馬來貘雪糕的多種創意吃法,從簡單的豆漿燕麥碗、藍莓果昔,到大人系的奇亞籽布丁下午茶,讓可愛的馬來貘陪你度過每一餐,增添生活中的小確幸!
Thumbnail
還在煩惱平凡日常該如何增添一點小驚喜嗎?全家便利商店這次聯手超萌的馬來貘,推出黑白配色的馬來貘雪糕,不僅外觀吸睛,層次豐富的雙層口味更是讓人一口接一口!本文將帶你探索馬來貘雪糕的多種創意吃法,從簡單的豆漿燕麥碗、藍莓果昔,到大人系的奇亞籽布丁下午茶,讓可愛的馬來貘陪你度過每一餐,增添生活中的小確幸!
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 已被摒棄。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News