## 第四章現狀
對ConvNet架構的各個組件的作用的審查強調了卷積塊的重要性,卷積塊主要負責網絡捕獲的大多數抽象。相比之下,這個組件仍然是最不被理解的處理塊,因為它需要最重要的學習。本章回顧了試圖了解各種ConvNet層學習內容的當前趨勢。鑒于這些趨勢,將突出顯示仍存在的各種關鍵性開放問題。
### 4.1當前趨勢
雖然各種ConvNet模型繼續在幾個計算機視覺應用中進一步推動最先進的技術,但對這些系統如何以及為何如此有效運行的理解是有限的。這個問題引起了各種研究人員的興趣,并且在回應中出現了幾種方法來理解ConvNets。一般來說,這些方法可以分為三個方面:那些依賴于學習過濾器和提取的特征圖的可視化的方法,那些依賴于消融研究的方法,這些研究是從理解視覺皮層的生物學方法和依賴于最小化學習的方法中獲得的。通過將分析原理引入其網絡設計中。本節將簡要回顧這些方法中的每一種。
#### 4.1.1通過可視化了解ConvNets
盡管文獻中已經提出了幾種方法來可視化由ConvNets提取的特征圖,但在本節中我們將集中討論兩種最突出的方法并討論它們的不同變化。
ConvNet可視化的第一種方法被稱為以數據集為中心的方法[151],因為它依賴于使用來自數據集的輸入探測網絡以找到網絡中的最大響應單元。屬于這一類別的最早的方法之一被稱為DeConvNet [154],其中可視化分兩步實現。首先,向ConvNet提供來自數據集的若干圖像,并記錄對該輸入最大響應的特征圖。其次,使用DeConvNet架構將這些特征映射投射回圖像空間,該架構由反轉所用ConvNet操作的塊組成。特別是,DeConvNet通過使用所考慮的ConvNet中的學習過濾器的轉置來反轉卷積運算(_,即_。執行“去卷積”)。這里值得注意的是,不能保證轉置轉換操作。對于“取消匯集”,DeConvNet依賴于記錄ConvNet中與最大池化響應相對應的位置,并使用這些位置“取消匯集”或對特征映射進行上采樣。這些操作總結在圖4.1中。
|  |  |
| (一個) | (b)中 |
圖4.1:DeConvNet構建塊。 (a)說明DeConvNet操作,該操作可應用于將從ConvNet的任何層提取的特征映射投影回圖像空間。 (b)通過使用“開關”說明“非匯集”操作,“開關”對應于響應最大匯集操作的位置。圖[154]再現。

圖4.2:通過在標準ConvNet架構的各個層(如AlexNet [88])應用DeconvNet獲得的可視化。圖[154]轉載。
這些方法產生的典型可視化如圖4.2所示。總體而言,這些可視化顯示網絡中的早期層傾向于捕獲低級特征,例如定向條和邊,_,即_。在較低層學習的濾波器類似于定向帶通濾波器。相比之下,在更高層的特征捕獲從簡單紋理到更復雜對象的進展。有趣的是,這些可視化傾向于從圖像中保留高水平的細節,從而在網絡中產生高響應。事實上,似乎這些可視化傾向于強調輸入圖像的邊緣,并且主要揭示負責高響應的圖像部分(_即_。它們可被視為查找輸入圖像的方法輸入圖像的高對比度點,主要揭示負責高分類結果的部分)。受這些觀察的啟發,屬于以數據集為中心的范式的其他方法提出了更簡單的方法來可視化網絡正在學習的內容。例子包括逐步從圖像中去除部分的方法,產生高響應以突出顯示哪些部分負責高響應[156,157]。從這些方法中得出的一些結論是,對象主要負責識別場景[156]或更一般地說,當我們可視化網絡的更高層時,對象檢測器會出現[157]。
ConvNet可視化的第二種方法被稱為以網絡為中心的方法[151],因為它僅使用網絡參數而無需任何其他數據用于可視化目的。這種方法最初是在深層信念網絡[37]的背景下引入的,后來應用于ConvNets [133]。在這種情況下,通過合成將最大化一些神經元(或濾波器)響應的圖像來實現可視化。例如,從產生類別分數的網絡的最后一層開始,以及初始化為隨機噪聲的圖像,目標是修改圖像,使其屬于類的分數]最大化。這個優化問題在[133]中定義
(4.1)
其中是正則化參數。這里正則化用于懲罰大值。屬于這種范式的大多數其他方法試圖解決相同的優化問題,同時執行不同的正則化技術,例如總變差正則化以強制平滑并避免合成圖像中的高頻內容[104]或簡單剪切不強烈參與的像素過濾器的響應僅突出顯示負責過濾器激活的模式[151]。
當用于最大化(4.1)中定義的類別分數時,以網絡為中心的方法產生的典型可視化如圖4.3所示。通常,這些可視化表明網絡正在學習高級形狀,負責區分各種物體(_例如_。當目標類是動物面部時,眼睛,鼻子和耳朵);但是,這些功能的確切位置無關緊要。因此,這些可視化意味著網絡逐漸學習不變性(_,例如_。它在較高層變為位置不可知),正如使用各種池化操作所預期的那樣。然而,當這種以網絡為中心的可視化技術應用于反轉較低層時,它并不一定表明它們正在學習較低級別的特征,例如邊緣,而不是以數據集為中心的技術。例如,在圖4.3(b)中,可以看出較低層保留了圖像中存在的大部分攝影信息。更一般地,理解ConvNets的可視化方法的主要限制是解釋的主觀性質,其通常基于該方法的作者的視覺檢查。
|  |
| (a) |
|  |
| (b) |
圖4.3:通過在網絡中心方法中對圖像空間應用優化而獲得的可視化。 (a)通過最大化屬于各種類別的得分而獲得的可視化,如下面每個圖像所示。圖[133]轉載。 (b)通過最大化各層的標準網絡響應而獲得的可視化,如下圖所示。圖[104]轉載。
#### 4.1.2通過消融研究了解ConvNets
另一種流行的方法是闡明廣泛使用的ConvNet功能,即所謂的網絡消融研究。事實上,許多著名的ConvNet論文(_,例如_。[23,154,134,144,41,29,78])在他們的實驗部分包括消融研究,其目標是隔離不同的成分查看刪除或添加塊如何影響整體性能的網絡。
這些消融研究有可能引導ConvNet從業者走向“良好實踐”,以在不同的應用中實現更高的性能。例如,ConvNets背景下最早的消融研究之一揭示了即使在使用隨機初始化網絡時也需要進行適當的整流和歸一化[77]。其他工作揭示了在所有層使用較小過濾器時更深層表示的重要性[23,135]。還有其他研究,調查了預訓練和微調的作用以及特征的數量,位置和大小。這些調查進一步突出了跨任務從ConvNets中提取的特征的可轉移性[1]。
更有意思的是,其他工作提出要剖析ConvNets以調查每個組成部分對所學表征的可解釋性的影響[6]。該方法依賴于具有像素級注釋的數據集,其中每個像素被分配若干“概念”標簽,其包括顏色,紋理,對象和場景標簽。評估ConvNet中的每個單元的能力,以生成與某個基于概念的分割掩碼匹配的分割掩碼。特別地,網絡中的每個特征映射被轉換為二進制掩碼,其中僅當像素的激活超過某個預設閾值時才將像素設置為。接下來,每個單位根據其分割給定概念的能力分配一個分數,根據
(4.2)
其中是集合的基數。通過這種方法,每個單元的可解釋性基于其生成良好分割掩模的能力來定義。該測量表明,較低層中的單元能夠生成更好的基于顏色或紋理的掩模,而較高層可以生成更好的對象和場景分割。與數據集為中心的可視化方法一致,這一觀察結果表明,較低層是學習過濾器,捕獲較低層次的概念,而較高層層次學習更多抽象特征,如對象部分。這種方法還允許系統地分析各種非線性和訓練策略對可解釋性的影響,并揭示出更高的表現并不總是產生高度可解釋的單位。例如,已經表明,諸如批量歸一化之類的正則化技術非常簡單地影響該方法中定義的單元的可解釋性。此外,與廣泛使用的ImageNet培訓相比,發現在場景數據集上訓練的網絡產生更多可解釋的單元。不幸的是,這種方法的一個主要缺陷是它們對可解釋性的定義在很大程度上取決于用于評估的數據集。換句話說,能夠捕獲數據集中未表示的概念的ConvNet單位將產生較低的IoU分數;因此,即使該概念在視覺上是可解釋的,也被認為不能通過這種方法解釋。因此,該方法可能會遺漏由負責更高性能的網絡組件揭示的其他重要方面。
#### 4.1.3通過受控設計了解ConvNets
理解ConvNets的另一種方法是通過將先驗注入網絡設計來最小化學習參數的數量。例如,一些方法減少每層學習過濾器的數量,并包括每層中學習過濾器的變換版本以模擬旋轉不變性,_,例如_。 [100,158]。其他方法依賴于用基組替換學習過濾器而不是學習過濾器參數,而是學習如何組合基組以在每層形成有效過濾器,_,例如_。 [75,28,148,100,158]。還有其他方法,通過全面手工制作網絡并使其適應特定任務,推動將先行者注入其網絡設計的想法,這產生了特別可解釋的網絡,_,例如_。 [15,113,60]。大多數屬于這種范式的技術先前已在第3章第3.1.2節中詳細討論過。
- TensorFlow 1.x 深度學習秘籍
- 零、前言
- 一、TensorFlow 簡介
- 二、回歸
- 三、神經網絡:感知器
- 四、卷積神經網絡
- 五、高級卷積神經網絡
- 六、循環神經網絡
- 七、無監督學習
- 八、自編碼器
- 九、強化學習
- 十、移動計算
- 十一、生成模型和 CapsNet
- 十二、分布式 TensorFlow 和云深度學習
- 十三、AutoML 和學習如何學習(元學習)
- 十四、TensorFlow 處理單元
- 使用 TensorFlow 構建機器學習項目中文版
- 一、探索和轉換數據
- 二、聚類
- 三、線性回歸
- 四、邏輯回歸
- 五、簡單的前饋神經網絡
- 六、卷積神經網絡
- 七、循環神經網絡和 LSTM
- 八、深度神經網絡
- 九、大規模運行模型 -- GPU 和服務
- 十、庫安裝和其他提示
- TensorFlow 深度學習中文第二版
- 一、人工神經網絡
- 二、TensorFlow v1.6 的新功能是什么?
- 三、實現前饋神經網絡
- 四、CNN 實戰
- 五、使用 TensorFlow 實現自編碼器
- 六、RNN 和梯度消失或爆炸問題
- 七、TensorFlow GPU 配置
- 八、TFLearn
- 九、使用協同過濾的電影推薦
- 十、OpenAI Gym
- TensorFlow 深度學習實戰指南中文版
- 一、入門
- 二、深度神經網絡
- 三、卷積神經網絡
- 四、循環神經網絡介紹
- 五、總結
- 精通 TensorFlow 1.x
- 一、TensorFlow 101
- 二、TensorFlow 的高級庫
- 三、Keras 101
- 四、TensorFlow 中的經典機器學習
- 五、TensorFlow 和 Keras 中的神經網絡和 MLP
- 六、TensorFlow 和 Keras 中的 RNN
- 七、TensorFlow 和 Keras 中的用于時間序列數據的 RNN
- 八、TensorFlow 和 Keras 中的用于文本數據的 RNN
- 九、TensorFlow 和 Keras 中的 CNN
- 十、TensorFlow 和 Keras 中的自編碼器
- 十一、TF 服務:生產中的 TensorFlow 模型
- 十二、遷移學習和預訓練模型
- 十三、深度強化學習
- 十四、生成對抗網絡
- 十五、TensorFlow 集群的分布式模型
- 十六、移動和嵌入式平臺上的 TensorFlow 模型
- 十七、R 中的 TensorFlow 和 Keras
- 十八、調試 TensorFlow 模型
- 十九、張量處理單元
- TensorFlow 機器學習秘籍中文第二版
- 一、TensorFlow 入門
- 二、TensorFlow 的方式
- 三、線性回歸
- 四、支持向量機
- 五、最近鄰方法
- 六、神經網絡
- 七、自然語言處理
- 八、卷積神經網絡
- 九、循環神經網絡
- 十、將 TensorFlow 投入生產
- 十一、更多 TensorFlow
- 與 TensorFlow 的初次接觸
- 前言
- 1.?TensorFlow 基礎知識
- 2. TensorFlow 中的線性回歸
- 3. TensorFlow 中的聚類
- 4. TensorFlow 中的單層神經網絡
- 5. TensorFlow 中的多層神經網絡
- 6. 并行
- 后記
- TensorFlow 學習指南
- 一、基礎
- 二、線性模型
- 三、學習
- 四、分布式
- TensorFlow Rager 教程
- 一、如何使用 TensorFlow Eager 構建簡單的神經網絡
- 二、在 Eager 模式中使用指標
- 三、如何保存和恢復訓練模型
- 四、文本序列到 TFRecords
- 五、如何將原始圖片數據轉換為 TFRecords
- 六、如何使用 TensorFlow Eager 從 TFRecords 批量讀取數據
- 七、使用 TensorFlow Eager 構建用于情感識別的卷積神經網絡(CNN)
- 八、用于 TensorFlow Eager 序列分類的動態循壞神經網絡
- 九、用于 TensorFlow Eager 時間序列回歸的遞歸神經網絡
- TensorFlow 高效編程
- 圖嵌入綜述:問題,技術與應用
- 一、引言
- 三、圖嵌入的問題設定
- 四、圖嵌入技術
- 基于邊重構的優化問題
- 應用
- 基于深度學習的推薦系統:綜述和新視角
- 引言
- 基于深度學習的推薦:最先進的技術
- 基于卷積神經網絡的推薦
- 關于卷積神經網絡我們理解了什么
- 第1章概論
- 第2章多層網絡
- 2.1.4生成對抗網絡
- 2.2.1最近ConvNets演變中的關鍵架構
- 2.2.2走向ConvNet不變性
- 2.3時空卷積網絡
- 第3章了解ConvNets構建塊
- 3.2整改
- 3.3規范化
- 3.4匯集
- 第四章現狀
- 4.2打開問題
- 參考
- 機器學習超級復習筆記
- Python 遷移學習實用指南
- 零、前言
- 一、機器學習基礎
- 二、深度學習基礎
- 三、了解深度學習架構
- 四、遷移學習基礎
- 五、釋放遷移學習的力量
- 六、圖像識別與分類
- 七、文本文件分類
- 八、音頻事件識別與分類
- 九、DeepDream
- 十、自動圖像字幕生成器
- 十一、圖像著色
- 面向計算機視覺的深度學習
- 零、前言
- 一、入門
- 二、圖像分類
- 三、圖像檢索
- 四、對象檢測
- 五、語義分割
- 六、相似性學習
- 七、圖像字幕
- 八、生成模型
- 九、視頻分類
- 十、部署
- 深度學習快速參考
- 零、前言
- 一、深度學習的基礎
- 二、使用深度學習解決回歸問題
- 三、使用 TensorBoard 監控網絡訓練
- 四、使用深度學習解決二分類問題
- 五、使用 Keras 解決多分類問題
- 六、超參數優化
- 七、從頭開始訓練 CNN
- 八、將預訓練的 CNN 用于遷移學習
- 九、從頭開始訓練 RNN
- 十、使用詞嵌入從頭開始訓練 LSTM
- 十一、訓練 Seq2Seq 模型
- 十二、深度強化學習
- 十三、生成對抗網絡
- TensorFlow 2.0 快速入門指南
- 零、前言
- 第 1 部分:TensorFlow 2.00 Alpha 簡介
- 一、TensorFlow 2 簡介
- 二、Keras:TensorFlow 2 的高級 API
- 三、TensorFlow 2 和 ANN 技術
- 第 2 部分:TensorFlow 2.00 Alpha 中的監督和無監督學習
- 四、TensorFlow 2 和監督機器學習
- 五、TensorFlow 2 和無監督學習
- 第 3 部分:TensorFlow 2.00 Alpha 的神經網絡應用
- 六、使用 TensorFlow 2 識別圖像
- 七、TensorFlow 2 和神經風格遷移
- 八、TensorFlow 2 和循環神經網絡
- 九、TensorFlow 估計器和 TensorFlow HUB
- 十、從 tf1.12 轉換為 tf2
- TensorFlow 入門
- 零、前言
- 一、TensorFlow 基本概念
- 二、TensorFlow 數學運算
- 三、機器學習入門
- 四、神經網絡簡介
- 五、深度學習
- 六、TensorFlow GPU 編程和服務
- TensorFlow 卷積神經網絡實用指南
- 零、前言
- 一、TensorFlow 的設置和介紹
- 二、深度學習和卷積神經網絡
- 三、TensorFlow 中的圖像分類
- 四、目標檢測與分割
- 五、VGG,Inception,ResNet 和 MobileNets
- 六、自編碼器,變分自編碼器和生成對抗網絡
- 七、遷移學習
- 八、機器學習最佳實踐和故障排除
- 九、大規模訓練
- 十、參考文獻