Reflection: Deep Learning with R-Ch5.3
ch5.3
6 min readApr 21, 2020
### 5.3. USING A PRETRAINED CONVNET
- 預訓練網絡是先前在大型數據集上(通常是在大型圖像分類任務上)進行訓練的已保存網絡。
- 有兩種使用預訓練網絡的方法:特徵提取和微調。
#### 5.3.1. Feature extraction
- 它們以一系列池化和卷積層開始,並以密集連接的分類器結束。 第一部分稱為模型的捲積基礎。 對於卷積網絡,特徵提取包括獲取先前訓練過的網絡的捲積基礎,通過它運行新數據,並訓練新的輸出頂部的分類器。
- 能重用密集連接的分類器嗎? NO, 通常應避免這樣做。
- 卷積基礎學習的表示形式可能更通用,因此可重用
- 在密集連接的圖層中找到的表示形式不再包含有關對像在輸入圖像中的位置的任何信息
- 請注意,由特定卷積層提取的表示形式的普遍性(以及因此的可重用性)取決於模型中該層的深度。
- 如果新數據集與訓練原始模型的數據集相差很大,那麼最好只使用模型的前幾層進行特徵提取,而不要使用整個卷積基礎。
- 以下是Keras中使用的圖像分類模型(均已在ImageNet數據集上進行了預訓練):
- Xception
- Inception V3
- ResNet50
- VGG16
- VGG19
- MobileNet
- weights指定從中初始化模型的權重檢查點。
- include_top是指在網絡頂部包含(或不包含)密集連接的分類器。預設此緊密連接的分類器對應於ImageNet的1,000個類。(這裡不需要,只要貓跟狗兩類)
- input_shape是要送到網絡的圖像張量的shape。如果不設定,網絡將能夠處理任何大小的輸入。
- Feature extraction without data augmentation: 在數據集上運行卷積基礎,將其輸出記錄到磁盤上的數組中,然後使用該數據作為獨立密集連接的分類器的輸入,類似於本書 Part 1 中所看到的。 該解決方案運行起來快速且便宜,因為它只需要為每個輸入圖像運行一次卷積基數,並且到目前為止,卷積基數是管道中最昂貴的部分。但是出於同樣的原因,該技術也不允許您使用數據擴充。
- Feature extraction with data augmentation: 通過在頂部添加密集層並在輸入數據上端到端地運行整個模型來擴展模型(conv_base)。這將能夠使數據增強功能,因為每一次輸入圖像都會在模型每次看到時都經過卷積基數。(有GPU才能用這個方法)
- 在編譯和訓練模型之前,凍結卷積基礎非常重要。凍結一層或一組層意味著防止其權重在訓練期間更新。如果不這樣做,在訓練過程中將修改卷積基礎先前學習的表示形式。由於頂部的密集層是隨機初始化的,因此非常大的權重更新將通過網絡傳播,破壞了先前學習的表示形式。
- 達到90%準確度
#### 5.3.2. Fine-tuning
- 微調包括解凍用於特徵提取的凍結模型的一些頂層(最後幾層),並共同訓練模型的新添加部分(在本例中為完全連接的分類器)和這些頂層。
- 一旦已經訓練了頂部的分類器,就只能夠微調卷積基礎的頂層。
- 對網絡進行微調的步驟如下:
1.將自定義網絡添加到已經訓練好的基礎網絡之上。
2.凍結基礎網絡。
3.訓練新增的部分。
4.取消凍結基礎網絡中的某些層。
5.聯合訓練這些層和添加的部分。
- 將從 block3_convl 開始微調,但可以調整更多嗎?需要先考慮以下的問題。
- 卷積基礎中的較早層(可重複使用的特徵)更通用,而較高的層則含有更專業的特徵。微調更專業的功能更為有用,因為這些功能需要針對您的新問題進行調整。微調較低層時的效益低。
- 訓練的參數越多,越可能面臨過度擬合的風險。卷積基數有1500萬個參數,因此嘗試在小型數據集上進行訓練是有風險的。
- 使用RMSProp優化器來進行微調,並使用非常低的學習率。 使用低學習率的原因是,希望將對微調的三層表示的修改幅度限制在一定範圍內。
- 準確率從90%到96%
- 如果損失沒有減少,如何保持準確性或提高準確性?
答案很簡單:顯示的是按點損失值的平均值,但是對準確性而言重要的是損失值的分佈,而不是其平均值,因為準確性是模型預測的類別概率的二進制閾值結果 。
#### 5.3.3. Wrapping up
小資料集處理圖片分類問題
- 卷積網是用於視覺處理的最佳機器學習模型。 即使是在非常小的數據集上,也可以從頭開始訓練一個,而且效果不錯。
- 在較小的數據集上,過度擬合將是主要問題。 在處理圖像數據時,數據增強是解決過度擬合的有效方法。
- 通過特徵提取,可以很容易地在新數據集中重複使用現有的convnet。 這是處理小型圖像數據集的寶貴技術。
- 作為特徵提取的補充可以使用微調,這種微調可以適應新問題,而現有模型先前已經學習了某些表示。 這進一步提高了性能。