中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

基于Keras對深度學(xué)習(xí)模型進(jìn)行微調(diào)的全面指南 Part 1

2018-08-16    來源:raincent

容器云強(qiáng)勢上線!快速搭建集群,上萬Linux鏡像隨意使用

原標(biāo)題 A Comprehensive guide to Fine-tuning Deep Learning Models in Keras (Part I),作者為 Felix Yu 。

在這篇文章中,我們將對實(shí)踐中的微調(diào)做一個(gè)全面的概述,微調(diào)是深度學(xué)習(xí)中常用的方法。

我將借鑒自己的經(jīng)驗(yàn),列出微調(diào)背后的基本原理,所涉及的技術(shù),及最后也是最重要的,在本文第二部分中將分步詳盡闡述如何在 Keras 中對卷積神經(jīng)網(wǎng)絡(luò)模型進(jìn)行微調(diào)。

首先,為什么對模型進(jìn)行微調(diào)?

當(dāng)我們得到一個(gè)深度學(xué)習(xí)任務(wù)時(shí),例如,一個(gè)涉及在圖像數(shù)據(jù)集上訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò)(Covnet)的任務(wù),我們的第一直覺將是從頭開始訓(xùn)練網(wǎng)絡(luò)。然而,在實(shí)踐中,像 Covnet 這樣的深度神經(jīng)網(wǎng)絡(luò)具有大量的參數(shù),通常在百萬數(shù)量級。在一個(gè)小的數(shù)據(jù)集(小于參數(shù)數(shù)量)上訓(xùn)練一個(gè) Covnet,會(huì)極大的影響網(wǎng)絡(luò)的泛化能力,通常會(huì)導(dǎo)致過擬合。

因此,更常見的是微調(diào)一個(gè)在大數(shù)據(jù)集上已經(jīng)訓(xùn)練好的模型,就像 ImageNet(120 萬的標(biāo)注圖像),然后在我們的小數(shù)據(jù)集上繼續(xù)訓(xùn)練(即運(yùn)行反向傳播)。假如我們的數(shù)據(jù)集與原始數(shù)據(jù)集(例如 ImageNet)在上下文中沒有明顯的不同,則預(yù)訓(xùn)練模型已經(jīng)具有了處理我們自己的分類問題相應(yīng)的學(xué)習(xí)特征。

何時(shí)微調(diào)模型?

一般來說,如果我們的數(shù)據(jù)集在上下文中與預(yù)訓(xùn)練模型的訓(xùn)練數(shù)據(jù)集沒有明顯不同,我們應(yīng)該進(jìn)行微調(diào)。像 ImageNet 這樣大而多樣的數(shù)據(jù)集上的預(yù)訓(xùn)練網(wǎng)絡(luò),在網(wǎng)絡(luò)前幾層可以捕獲到像曲線和邊緣這類通用特征,這些特征對于大多數(shù)分類問題都是相關(guān)且有用的。

當(dāng)然,如果我們的數(shù)據(jù)集代表一些非常具體的領(lǐng)域,例如醫(yī)學(xué)圖像或中文手寫字符,并且找不到這個(gè)領(lǐng)域的預(yù)訓(xùn)練網(wǎng)絡(luò),那么我們應(yīng)該考慮從頭開始訓(xùn)練網(wǎng)絡(luò)。

另一個(gè)問題是,如果我們的數(shù)據(jù)集很小,那么在小數(shù)據(jù)集上微調(diào)預(yù)先訓(xùn)練的網(wǎng)絡(luò)可能會(huì)導(dǎo)致過擬合,特別是如果網(wǎng)絡(luò)的最后幾層是全連接層,就像 VGG 網(wǎng)絡(luò)的情況。根據(jù)我的經(jīng)驗(yàn),如果我們有幾千個(gè)原始樣本,并實(shí)現(xiàn)了常見的數(shù)據(jù)增強(qiáng)策略(翻譯,旋轉(zhuǎn),翻轉(zhuǎn)等),微調(diào)通常會(huì)使我們得到更好的結(jié)果。

如果我們的數(shù)據(jù)集非常小,比如少于一千個(gè)樣本,則更好的方法是在全連接的層之前將中間層的輸出作為特征(瓶頸特征)并在網(wǎng)絡(luò)的頂部訓(xùn)練線性分類器(例如 SVM)。SVM 特別擅長在小型數(shù)據(jù)集上繪制決策邊界。

微調(diào)技術(shù)

以下是一些實(shí)現(xiàn)微調(diào)通用的指導(dǎo)原則:

1. 常用的做法是截?cái)囝A(yù)訓(xùn)練網(wǎng)絡(luò)的最后一層(softmax 層),并將其替換為與我們自己的問題相關(guān)的新 softmax 層。例如,ImageNet 上經(jīng)過預(yù)先訓(xùn)練的網(wǎng)絡(luò)帶有 1000 個(gè)類別的 softmax 層。

如果我們的任務(wù)是 10 個(gè)類別的分類,則網(wǎng)絡(luò)的新 softmax 層將是 10 個(gè)類別而不是 1000 個(gè)類別。然后,我們在網(wǎng)絡(luò)上運(yùn)行反向傳播來微調(diào)預(yù)訓(xùn)練的權(quán)重。確保執(zhí)行交叉驗(yàn)證,以便網(wǎng)絡(luò)具有很好的泛化能力。

2. 使用較小的學(xué)習(xí)率去訓(xùn)練網(wǎng)絡(luò)。因?yàn)槲覀兤谕A(yù)先訓(xùn)練的權(quán)重相比隨機(jī)初始化權(quán)重要好很多,所以不希望過快和過多地扭曲這些權(quán)重。通常的做法是使此刻的初始學(xué)習(xí)率比從頭訓(xùn)練的初始學(xué)習(xí)率小 10 倍。

3. 還有一個(gè)常用的做法是凍結(jié)預(yù)訓(xùn)練網(wǎng)絡(luò)的前幾層的權(quán)重。這是因?yàn)榍皫讓硬东@了與我們的新問題相關(guān)的曲線和邊緣等通用特征。我們希望保持這些權(quán)重的完整。相反,我們將在后面的層中專注于學(xué)習(xí)數(shù)據(jù)集中的特殊特征。

在哪里找到預(yù)訓(xùn)練網(wǎng)絡(luò)?

這要取決于深度學(xué)習(xí)框架。對于像 Caffe,Keras,TensorFlow,Torch,MxNet 等流行的框架,他們各自的貢獻(xiàn)者通常會(huì)保留已實(shí)現(xiàn)的最先進(jìn) Covnet 模型(VGG,Inception,ResNet 等)的列表和在 ImageNet 或 CIFAR 等常見數(shù)據(jù)集上的預(yù)訓(xùn)練權(quán)重。

找到這些預(yù)訓(xùn)練模型的最好方法是用 google 搜索特定的模型和框架。但是,為了方便您的搜索過程,我將在流行框架上的常用預(yù)訓(xùn)練 Covnet 模型放在一個(gè)列表中。

• Caffe

• Model Zoo -為第三方貢獻(xiàn)者分享預(yù)訓(xùn)練 caffe 模型的平臺

• Keras

• Keras Application - 實(shí)現(xiàn)最先進(jìn)的 Convnet 模型,如 VGG16 / 19,googleNetNet,Inception V3 和 ResNet

• TensorFlow

• VGG16

• Inception V3

• ResNet

• Torch

• LoadCaffe - 維護(hù)一個(gè)流行模型的列表,如 AlexNet 和 VGG。從 Caffe 移植的權(quán)重

• MxNet

• MxNet Model Gallery - 維護(hù)預(yù)訓(xùn)練的 Inception-BN(V2)和 Inception V3。

在 Keras 中微調(diào)

這篇文章的第二部分,我將詳細(xì)介紹如何在 Keras 中對流行模型 VGG,Inception V3 和 ResNet 進(jìn)行微調(diào)。

標(biāo)簽: Google 大數(shù)據(jù) 搜索 網(wǎng)絡(luò)

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:理解Python數(shù)據(jù)類:Dataclass 的特征概述 (上)

下一篇:誰來審核決定人生的算法?