遷移學(xué)習(xí)讓深度學(xué)習(xí)更容易x
發(fā)布時間:2020-08-26 來源: 實(shí)習(xí)報告 點(diǎn)擊:
遷移學(xué)習(xí)讓深度學(xué)習(xí)更容易 深度學(xué)習(xí)在一些傳統(tǒng)方法難以處理的領(lǐng)域有了很大的進(jìn)展。這種成功是由于改變了傳統(tǒng)機(jī)器學(xué)習(xí)的幾個出發(fā)點(diǎn),使其在應(yīng)用于非結(jié)構(gòu)化數(shù)據(jù)時性能很好。如今深度學(xué)習(xí)模型可以玩游戲,檢測癌癥,和人類交談,自動駕駛。
深度學(xué)習(xí)變得強(qiáng)大的同時也需要很大的代價。進(jìn)行深度學(xué)習(xí)需要大量的數(shù)據(jù)、昂貴的硬件、甚至更昂貴的精英工程人才。
在 Cloudera Fast Forward 實(shí)驗(yàn)室,我們對能解決這些問題的創(chuàng)新特別興奮。我們最新的研究報告深入探討了多任務(wù)學(xué)習(xí),一種允許機(jī)器學(xué)習(xí)模型同時從多個任務(wù)中學(xué)習(xí)的方法。其中的一個好處就是可以減少訓(xùn)練數(shù)據(jù)需求。
在本文中,我們將講述遷移學(xué)習(xí),這是一種可以將知識從一項(xiàng)任務(wù)遷移到另一項(xiàng)任務(wù)的相關(guān)技術(shù)。遷移學(xué)習(xí)允許你從相關(guān)問題中轉(zhuǎn)移知識而不是針對問題開發(fā)一個完全定制的解決方案,這能幫助你更輕松地解決特定問題。通過遷移這些知識,你可以減少很多開支,接下來看一下該方法如何有效地解決上述問題。
為什么深度學(xué)習(xí)不同于其他方法 于其他方法 遷移學(xué)習(xí)不是一種新技術(shù),也不是專門針對深度學(xué)習(xí)的,但考慮到最近深度學(xué)習(xí)的進(jìn)展,它是一種令人興奮的新技術(shù)。首先,有必要說明深度學(xué)習(xí)與傳統(tǒng)機(jī)器學(xué)習(xí)的不同之處。
深度學(xué)習(xí)是在較低的抽象層次上進(jìn)行的 深度學(xué)習(xí)是在較低的抽象層次上進(jìn)行的 機(jī)器學(xué)習(xí)是機(jī)器自動學(xué)習(xí)函數(shù)權(quán)重的一種方式。
確定函數(shù)如何從提供的輸入產(chǎn)生輸出是比較困難的。如果對函數(shù)沒有任何限制,那么可能性是無窮無盡的。為了簡化這個任務(wù),我們通常在功能上強(qiáng)加某種類型的結(jié)構(gòu)——基于我們正在解決的問題的類型或者簡單的嘗試和誤差。這種結(jié)構(gòu)定義了一種機(jī)器學(xué)習(xí)模型。
理論上,結(jié)構(gòu)是無限的,但在實(shí)踐中,大多數(shù)機(jī)器學(xué)習(xí)用例都可以通過應(yīng)用少數(shù)的結(jié)構(gòu)來解決:線性模型、樹的集合和支持向量機(jī)。數(shù)據(jù)科學(xué)家的工作就是從這一小部分可能的結(jié)構(gòu)中選擇正確的結(jié)構(gòu)使用。
這些模型可以作為黑盒對象從各種成熟的機(jī)器學(xué)習(xí)庫中獲得,并且只需要幾行代碼就可以訓(xùn)練出來。例如,可以使用 Python 的 scikit-learn 來訓(xùn)練一個隨機(jī)森林模型,如下所示:
clf = RandomForestClassifier()
clf.fit(past_data, labels)
predictions = clf.predict(future_data)
或 R 中的線性回歸模型:
linearModel <- lm(y ~ X, data=pastData)
predictions <- predict(linearModel, futureData)
雖然深度學(xué)習(xí)是在較低的層次上進(jìn)行的,但并不是在有限的模型結(jié)構(gòu)中進(jìn)行選擇的,而是允許實(shí)踐者加上自己設(shè)計的模型結(jié)構(gòu)。構(gòu)建塊是可以認(rèn)為是基本數(shù)據(jù)轉(zhuǎn)換的模塊。這意味著在應(yīng)用深度學(xué)習(xí)時,我們需要打開黑盒子,而不是通過算法固定地實(shí)現(xiàn)。
這樣以來就允許開發(fā)者構(gòu)建更強(qiáng)大的模型,從另一個角度來看這也為模型構(gòu)建添加了一個全新的維度。盡管大量的深度學(xué)習(xí)研究報告、實(shí)用指南被發(fā)表,但要有效地組織這些轉(zhuǎn)變可能是一個困難的過程。
考慮一個極其簡單的卷積神經(jīng)網(wǎng)絡(luò)圖像分類器,它在流行的深度學(xué)習(xí)庫 PyTorch中定義:
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.conv1 = nn.Conv2d(1, 10, kernel_size=5)
self.conv2 = nn.Conv2d(10, 20, kernel_size=5)
self.conv2_drop = nn.Dropout2d()
self.fc1 = nn.Linear(320, 50)
self.fc2 = nn.Linear(50, 10)
def forward(self, x):
x = F.relu(F.max_pool2d(self.conv1(x), 2))
x = F.relu(F.max_pool2d(self.conv2_drop(self.conv2(x)), 2))
x = x.view(-1, 320)
x = F.relu(self.fc1(x))
x = F.dropout(x, training=self.training)
x = self.fc2(x)
return F.log_softmax(x, dim=1)
因?yàn)槲覀兪褂玫氖堑图壍臉?gòu)建塊,所以我們可以更改模型的單個組件(例如F.relu,F.sigmoid)。這為我們提供了可能會產(chǎn)生不同結(jié)果的全新模型體系結(jié)構(gòu),而這種可能性是無限的。
深度學(xué)習(xí)尚未被充分理解 深度學(xué)習(xí)尚未被充分理解 即使給定一個固定的神經(jīng)網(wǎng)絡(luò)架構(gòu),訓(xùn)練也是非常困難的。首先,深度學(xué)習(xí)損失函數(shù)不是一般的凸函數(shù),這意味著訓(xùn)練不一定會產(chǎn)生最好的解決方案。其次,深度學(xué)
習(xí)仍然是非常新的,它的許多組成部分還沒有被很好地理解。例如,批處理歸一化最近受到了關(guān)注,因?yàn)橐恍┠P椭兴坪鯇α己媒Y(jié)果至關(guān)重要,但專家們無法就原因達(dá)成一致。研究員阿里·拉希米在最近的一次機(jī)器學(xué)習(xí)會議上把深度學(xué)習(xí)比作煉金術(shù)引起了一些爭議。
自動特征工程 程 深度學(xué)習(xí)中增加的復(fù)雜性使一種稱為表示學(xué)習(xí)的技術(shù)得以實(shí)現(xiàn),這就是為什么神經(jīng)網(wǎng)絡(luò)經(jīng)常被稱為“自動特征工程”?傊覀円赃@樣一種方式構(gòu)建模型而不需要從數(shù)據(jù)集中人工設(shè)計有用的特征,這樣它們就可以學(xué)習(xí)任何必要的、對手頭任務(wù)有用的特征。將特征工程放到模型上是非常強(qiáng)大的,但是需要大量數(shù)據(jù)和大量計算能力的模型成本。
你能做什么 你能做什么 與其他機(jī)器學(xué)習(xí)方法相比,深度學(xué)習(xí)顯得很復(fù)雜,以至于它似乎難以融入你的業(yè)務(wù)。對于資源有限的組織來說,這種感覺更加強(qiáng)烈。
對于真正需要投入大量資源進(jìn)行開發(fā)的組織,可能確實(shí)需要雇傭?qū)<也①徺I專門的硬件。但在很多情況下,這是不必要的。有很多方法可以在不進(jìn)行巨額投資的情況下有效地應(yīng)用它,這就是遷移學(xué)習(xí)的由來。
轉(zhuǎn)移學(xué)習(xí)是使知識從一種機(jī)器學(xué)習(xí)模式遷移到另一種機(jī)器學(xué)習(xí)模式的技術(shù)。這些模型可能是多年來對模型結(jié)構(gòu)的研究、對龐大數(shù)據(jù)集的訓(xùn)練以及多年的計算時間進(jìn)行優(yōu)化的結(jié)果。通過遷移學(xué)習(xí),你可以不用付出任何代價就能從這項(xiàng)工作中獲得好處。
什么是轉(zhuǎn)移學(xué)習(xí) 什么是轉(zhuǎn)移學(xué)習(xí)? 大多數(shù)機(jī)器學(xué)習(xí)任務(wù)從零知識開始,這意味著模型的結(jié)構(gòu)和參數(shù)開始是隨機(jī)猜測的。
例如:檢測貓模型是通過猜測開始訓(xùn)練的,它通過聚集它所見過的許多不同的貓的共同模式,逐漸了解貓是什么。
在這種情況下,模型學(xué)到的所有東西都來自所給出的數(shù)據(jù)。但這是解決問題的唯一方法嗎?在某些情況下,好像是。
檢測貓的模型在不相關(guān)的應(yīng)用程序中可能是無用的,比如詐騙檢測。它只知道如何理解貓的圖片,而不是信用卡交易。
但在其他情況下,兩個系統(tǒng)之間好像能夠在任務(wù)之間共享信息。
貓檢測器在相關(guān)任務(wù)中很有用,比如貓的面部定位。檢測器應(yīng)該已經(jīng)知道如何檢測貓的胡須、鼻子和眼睛——所有這些東西在定位貓的臉時都很有用。
這就是轉(zhuǎn)移學(xué)習(xí)的本質(zhì):采用一個已經(jīng)學(xué)會如何很好地完成一項(xiàng)任務(wù)的模型,并將部分知識遷移到相關(guān)任務(wù)。
當(dāng)我們檢查自己的學(xué)習(xí)經(jīng)驗(yàn)時,也證明著遷移學(xué)習(xí)的正確性;我們定期會遷移過去學(xué)到的技能,以便更快地學(xué)習(xí)新的技能。例如,一個已經(jīng)學(xué)會扔棒球的人不需要完全重新學(xué)習(xí)扔球的技巧來學(xué)習(xí)如何扔足球。這些事情是內(nèi)在相關(guān)的,做好其中一件事的能力自然會轉(zhuǎn)化為做好另一件事的能力。
在機(jī)器學(xué)習(xí)領(lǐng)域,沒有比過去五年的計算機(jī)視覺領(lǐng)域更好的例子了。一開始訓(xùn)練模型是很少見的。相反,我們從一個預(yù)先訓(xùn)練好的模型開始,這個模型已經(jīng)知道如何分類簡單的物體,比如貓、狗和雨傘。學(xué)習(xí)對圖像進(jìn)行分類的模型首先要學(xué)習(xí)檢測一般圖像特征,如邊緣、形狀、文本和面孔。
預(yù)訓(xùn)練模型具有這些基本技能。通過在新數(shù)據(jù)集上添加層或重新訓(xùn)練,可以稍微修改預(yù)先訓(xùn)練的分類模型,將這些昂貴的基本技能遷移到新的專門化中,這就是遷移學(xué)習(xí)。
遷移學(xué)習(xí)需要更少的訓(xùn)練數(shù)據(jù) 遷移學(xué)習(xí)需要更少的訓(xùn)練數(shù)據(jù) 當(dāng)你在一個新的與貓相關(guān)的任務(wù)中再次用你的貓檢測模型時,你的模型已經(jīng)有了“認(rèn)識一百萬只貓的智慧”,這意味著你不需要使用幾乎同樣多的圖片來訓(xùn)練新的任務(wù)。
通過遷移學(xué)習(xí)的模型泛化能力更好 通過遷移學(xué)習(xí)的模型泛化能力更好 遷移學(xué)習(xí)提高了泛化能力,或者提高了模型在未經(jīng)訓(xùn)練的數(shù)據(jù)上表現(xiàn)良好的能力。這是因?yàn)轭A(yù)先訓(xùn)練的模型是有目的地訓(xùn)練任務(wù),這些任務(wù)迫使模型學(xué)習(xí)在相關(guān)上下文中有用的通用特性。當(dāng)模型遷移到一個新的任務(wù)時,很難對新的訓(xùn)練數(shù)據(jù)進(jìn)行過度擬合,因?yàn)槟P椭荒軓囊粋非常一般的知識庫中增量地學(xué)習(xí)。建立一個泛化能力好的模型是機(jī)器學(xué)習(xí)中最困難也是最重要的部分之一。
遷移學(xué)習(xí)訓(xùn)練過程并不那么脆弱 遷移學(xué)習(xí)訓(xùn)練過程并不那么脆弱 從一個預(yù)先訓(xùn)練好的模型開始有助于克服訓(xùn)練一個復(fù)雜模型的、令人沮喪的、脆弱的和混亂的過程。遷移學(xué)習(xí)將可訓(xùn)練參數(shù)的數(shù)量減少了 100%,使訓(xùn)練更穩(wěn)定,更容易調(diào)試。
轉(zhuǎn)移學(xué)習(xí)使深度學(xué)習(xí)更容易 轉(zhuǎn)移學(xué)習(xí)使深度學(xué)習(xí)更容易 最后,遷移學(xué)習(xí)使深度學(xué)習(xí)更容易進(jìn)行,因?yàn)椴恍枰约撼蔀閷<襾慝@得專家級別的結(jié)果。比如流行的圖像分類模型 Resnet-50。
這個特定的架構(gòu)是如何選擇的?這是多年來各種深度學(xué)習(xí)專家的研究和實(shí)驗(yàn)的結(jié)果。在這個復(fù)雜的結(jié)構(gòu)中有 2500 萬個權(quán)重,如果沒有對模型的每個組件的廣泛了解,從頭優(yōu)化這些權(quán)重幾乎是不可能的。幸運(yùn)的是,通過遷移學(xué)習(xí),可以重用復(fù)雜的結(jié)構(gòu)和優(yōu)化的權(quán)重,大大降低了深入學(xué)習(xí)的門檻。
結(jié)論 結(jié)論 遷移學(xué)習(xí)是一種知識(權(quán)重)共享技術(shù),它減少了構(gòu)建深度學(xué)習(xí)模型所需的訓(xùn)練數(shù)據(jù)、計算能力和工程人才的數(shù)量。而且,由于深度學(xué)習(xí)能夠比傳統(tǒng)機(jī)器學(xué)習(xí)提供顯著的改進(jìn),因此遷移學(xué)習(xí)是一個必不可少的工具。
原文鏈接 本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
相關(guān)熱詞搜索:學(xué)習(xí) 更容易 遷移
熱點(diǎn)文章閱讀