深度學習與圖神經網路學習分享:CNN 經典網路之-ResNet

龍騰AI技術發表於2022-10-12

resnet 又叫深度殘差網路

影像識別準確率很高,深度網路的退化問題

深度網路難以訓練,梯度消失,梯度爆炸,老生常談,不多說

深度學習與圖神經網路學習分享:CNN 經典網路之-ResNet

resnet 解決了這個問題,並且將網路深度擴充套件到了最多152層。怎麼解決的呢?

殘差學習

結構如圖

深度學習與圖神經網路學習分享:CNN 經典網路之-ResNet

 

在普通的卷積過程中加入了一個x的恆等對映(identity mapping)

專家把這稱作 skip connections 或者 shortcut connections

殘差結構的理解

為什麼要這樣呢?下面我從多個角度闡述這個問題。

生活角度

每學習一個模型,我都希望能用日常的生活去解釋為什麼模型要這樣,一是加深對模型的理解,二是給自己搭建模型尋找靈感,三是給最佳化模型尋找靈感。

resnet 無疑是解決很難識別的問題的,那我舉一個日常生活中人類也難以識別的問題,看看這個模型跟人類的識別方法是否一致。

比如人類識別杯子裡的水燙不燙

一杯水,我摸了一下,燙,好,我的神經開始運轉,最後形成理論杯子裡的水燙,這顯然不對

又一杯水,我一摸,不燙,好嘛,這咋辦,認知混亂了,也就是無法得到有效的引數,

那人類是怎麼辦呢?

我們不止是摸一摸,而且在摸過之後還要把杯子拿起來仔細看看,有什麼細節可以幫助我們更好的識別,這就是在神經經過運轉後,又把x整體輸入,

當然即使我們拿起杯子看半天,也可能看不出任何規律來幫助我們識別,那人類的作法是什麼呢?我記住吧,這種情況要小心,這就是梯度消失了,學習不到任何規律,記住就是恆等對映,

這個過程和resnet是一致的。

網路結構角度

深度學習與圖神經網路學習分享:CNN 經典網路之-ResNet

當梯度消失時,f(x)=0,y=g(x)=relu(x)=x,怎麼理解呢?

1. 當梯度消失時,模型就是記住,長這樣的就是該類別,是一個大型的過濾器

2. 在網路上堆疊這樣的結構,就算梯度消失,我什麼也學不到,我至少把原來的樣子恆等對映了過去,相當於在淺層網路上堆疊了“複製層”,這樣至少不會比淺層網路差。

3. 萬一我不小心學到了什麼,那就賺大了,由於我經常恆等對映,所以我學習到東西的機率很大。

數學角度

深度學習與圖神經網路學習分享:CNN 經典網路之-ResNet

可以看到 有1 的存在,導數基本不可能為0

那為什麼叫殘差學習呢

深度學習與圖神經網路學習分享:CNN 經典網路之-ResNet

可以看到 F(x) 透過訓練引數 得到了 H(x)-x,也就是殘差,所以叫殘差學習,這比學習H(x)要簡單的多。

等效對映 identity mapping

上面提到殘差學習中需要進行 F(x)+x,在resnet中,卷積都是 same padding 的,當通道數相同時,直接相加即可,

但是通道數不一樣時需要尋求一種方法使得 y=f(x)+wx

實現w有兩種方式

1. 直接補0

2. 透過使用多個 1x1 的卷積來增加通道數。

網路結構

block

block為一個殘差單元,resnet 網路由多個block 構成,resnet 提出了兩種殘差單元。

左邊針對的是ResNet34淺層網路,右邊針對的是ResNet50/101/152深層網路,右邊這個又被叫做 bottleneck

bottleneck 很好地減少了引數數量,第一個1x1的卷積把256維channel降到64維,第三個又升到256維,總共用引數:1x1x256x64+3x3x64x64+1x1x64x256=69632,

如果不使用 bottleneck,引數將是 3x3x256x256x2=1179648,差了16.94倍

這裡的輸出通道數是根據輸入通道數確定的,因為要與x相加。

整體結構

深度學習與圖神經網路學習分享:CNN 經典網路之-ResNet

1. 與vgg相比,其引數少得多,因為vgg有3個全連線層,這需要大量的引數,而resnet用 avg pool 代替全連線,節省大量引數。

2. 引數少,殘差學習,所以訓練效率高

結構引數

Resnet50和Resnet101是其中最常用的網路結構。

深度學習與圖神經網路學習分享:CNN 經典網路之-ResNet

我們看到所有的網路都分成5部分,分別是:conv1,conv2_x,conv3_x,conv4_x,conv5_x

其結構是相對固定的,只是通道數根據輸入確定。

注意,Resnet 最後的 avg_pool 是把每個 feature map 轉換成 1 個特徵,故池化野 size 為 feature map size,如 最後輸出位 512x7x7,那麼池化野size 為 7 

最新進展

殘差單元被進一步更新

  深度學習與圖神經網路學習分享:CNN 經典網路之-ResNet

個人經驗

1. 卷積層包含大量的卷積計算,如果想降低時間複雜度,減少卷積層

2. 全連線層包含大量的引數,如果想降低空間複雜度,減少全連線層

分享安排

1. 人工智慧、深度學習的發展歷程

2. 深度學習框架

3. 神經網路訓練方法

4. 卷積神經網路,卷積核、池化、通道、啟用函式

5. 迴圈神經網路,長短時記憶LSTM、門控迴圈單元GRU

6. 引數初始化方法、損失函式Loss、過擬合

7. 對抗生成網路GAN

8. 遷移學習TL

9. 強化學習RF

10. 圖神經網路GNN

一、演算法和場景融合理解

1.空間相關性的非結構化資料,CNN演算法。典型的影像資料,畫素點之間具有空間相關性,例如影像的分類、分割、檢測都是CNN演算法。

2.時間相關性的非結構化資料,RNN演算法。這類場景普遍的一個現象就是資料之間具有時序相關性,也就是資料之間存在先後依賴關係。例如自然語言處理、語音相關演算法都是基於RNN演算法。

3.非歐氏資料結構, GNN。這類場景典型的可以用圖來表示。例如社交網路等。

案例摘要講解

醫療領域:如流行疾病、腫瘤等相關疾病檢測

遙感領域:如遙感影像中的場景識別

石油勘探:如石油油粒大小檢測

軌道交通:如地鐵密集人流檢測

檢測領域:如故障檢測

公安領域:如犯罪行為分析

國防領域:目標檢測、訊號分析、態勢感知…

經濟領域:如股票預測

二、資料理解及處理

分析典型場景中的典型資料,結合具體的演算法,對資料進行處理

1.結構化資料,如何對資料進行讀取,進行組織。

2.影像資料,在實際應用過程中的處理方法,怎樣做資料的預處理、進行資料增強等。

3.時序訊號,將單點的資料如何組合成一個序列,以及對序列資料處理的基本方法。

三、技術路徑設計

針對具體的場景設計特定的神經網路模型,對典型資料適配的網路結構進介紹。

1.DNN模型搭建的基本原則

2.CNN模型中常見的網路結構,以及引數分析。

3.RNN中支援的一些基本運算元,如何對序列資料進行組織。

四、模型驗證及問題排查

簡單的演算法或者模型對典型的場景進行快速驗證,並且針對一些頻發的問題進行講解。

1. 模型收斂狀態不佳

2. 分類任務重最後一層啟用函式對模型的影響

五、高階-模型最佳化的原理

不同的模型需要採用的最佳化函式以及反向傳播中引數的最佳化方法

1.模型最佳化的演算法介紹,基於隨機梯度下降的演算法介紹。

2.不同場景適應的損失函式介紹。

3.針對典型場景的反向傳播梯度的推到過程。

六、高階-定製化思路

結合往期學員的一些專案,簡單介紹一下解決一個具體問題的思路。

遙感成像中,地塊農作物種類的識別。

實操解析與訓練

第一階段:

神經網路實踐

實驗:神經網路

1.神經網路中基本概念理解:epoch、batch size、學習率、正則、噪聲、啟用函式等。

2.不同的資料生成模型、調整網路引數、調整網路規模

3.神經網路分類問題

4.不同資料特徵的作用分析、隱含層神經元數目

5.過擬合

高頻問題:

1.輸入資料與資料特徵     2.模型設計的過程中的引數與功能的關係。

關鍵點:

1.掌握神經網路的基本概念   2.學會搭建簡單的神經網路結構

3.理解神經網路引數

實操解析與訓練

第二階段:

深度學習三種程式設計思想

實驗:Keras實踐

1.理解Keras基本原理      2.學會Keras程式設計思想

3.三種不同的深度神經網路構建程式設計方式

4.給定資料集,採用Keras獨立完成實際的工程專案

高頻問題:

1.如何程式設計實現深度神經網路   2.三種開發方式的具體使用

關鍵點:

1.掌握Keras程式設計思想      2.採用三種不同方式編寫深度神經網路

實操解析與訓練

第三階段:CNN實踐

實驗:影像分類

1.使用CNN解決影像分類問題   2.搭建AlexNet  3.VGG16/19

4.GoogleNet  5.ResNet

高頻問題:

1.CNN更復雜的模型在哪裡可以找到程式碼

關鍵點:

1.使用卷積神經網路做影像分類  2.常見開原始碼以及適用的問題

實驗:影片人物行為識別

1.基於C3D的影片行為識別方法  2.基於LSTM的影片行為識別方法

3.基於Attention的影片行為識別方法

高頻問題:

1.2D卷積與3D卷積        2.影片的時空特徵

關鍵點:

1.C3D網路的構建         2.Attention機制

實操解析與訓練

第四階段:

R-CNN及YOLO實踐

實驗:目標檢測

1.目標檢測發展現狀及代表性方法

2.兩階段目標檢測方法:R-CNN系列模型

3.一階段目標檢測方法:YOLO系列模型

高頻問題:

1.提名與分類    2.BBOX實現策略    3.YOLO Loss函式

關鍵點:

1.提名方法    2.ROI Pooling    3.SPP Net    4.RPN    5.YOLO

實操解析與訓練

第五階段:

RNN實踐

實驗:股票預測

1.股票資料分析    2.同步預測    3.非同步預測

高頻問題:

1.歷史資料的使用

關鍵點:

1.構建RNN    2.採用Keras程式設計實現

實操解析與訓練

第六階段:

Encoder-Decoder實踐

實驗:去噪分析

1.自編碼器     2.去噪自編碼器

高頻問題:

1.噪聲的引入與去除

關鍵點:

1.設計去噪自編碼器

實驗:影像標題生成

結合計算機視覺和機器翻譯的最新進展,利用深度神經網路生成真實的影像標題。

1.掌握Encoder-Decoder結構   2.學會Seq2seq結構

3.影像CNN +文字RNN      4.影像標題生成模型

高頻問題:

1.如何能夠根據影像生成文字?

關鍵點:

1.提取影像特徵CNN,生成文字RNN  2.構建Encoder-Decoder結構

實操解析與訓練

第七階段:

GAN實踐

實驗:藝術家作品生成

1. 生成對抗網路原理    2.GAN的生成模型、判別模型的設計

高頻問題:

1.生成模型與判別模型的博弈過程

關鍵點:

1.掌握GAN的思想與原理  2.根據需求學會設計生成模型與判別模型

實操解析與訓練

第八階段:

強化學習實踐

實驗:遊戲分析

1.遊戲場景分析      2.強化學習的要素分析    3.深度強化學習

高頻問題:

1.DNN 與DQN       2.探索與利用

關鍵點:

1.深度強化學習的原理   2.根據實際需求,設計深度強化學習模型

實操解析與訓練

第九階段:

圖卷積神經網路實踐

實驗:社交網路分析

1.圖神經網路的原理     2.圖卷積神經網路的思想

3.設計圖卷積神經網路進行社交網路分析

高頻問題:

1.如何從圖神經網路的原理轉化到實際程式設計

關鍵點:

1. 掌握圖神經網路原理    2. 圖卷積神經網路程式設計實現

實操解析與訓練

第十階段:

Transformer實踐

實驗:基於Transformer的對話生成

1. Transformer原理     2. 基於Transformer的對話生成

3.基於 Transformer 的應用

高頻問題:

1.如何應用自注意力機制   2.如何應用於自然語言處理與計算機視覺

關鍵點:

1.self-Attention機制    2.position

學習和關注人工智慧技術與諮詢,更多詳情可諮詢175-3102-1189(v同號)。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70021344/viewspace-2917896/,如需轉載,請註明出處,否則將追究法律責任。

相關文章