實(shí)時(shí)深度學(xué)習(xí)的推理加速和連續(xù)學(xué)習(xí)
在本技術(shù)分析報(bào)告的***部分《研學(xué)社·系統(tǒng)組 | 實(shí)時(shí)深度學(xué)習(xí)的推理加速和持續(xù)訓(xùn)練》,我們介紹了最近一些用于 DNN 推理加速的硬件和算法技術(shù)。在這第二部分,我們將基于最近一篇論文《在連續(xù)學(xué)習(xí)場(chǎng)景中對(duì)深度神經(jīng)網(wǎng)絡(luò)進(jìn)行微調(diào)(Fine-Tuning Deep Neural Networksin Continuous Learning Scenarios)》探討 DNN 連續(xù)學(xué)習(xí),該論文的作者為 Christoph Kading、Erik Rodner、Alexander Freytag 和 Joachim Denzler。
要將深度學(xué)習(xí)系統(tǒng)投入生產(chǎn),有一個(gè)方面很重要,就是要能應(yīng)對(duì)輸入和輸出數(shù)據(jù)的分布隨時(shí)間的變化。和任何統(tǒng)計(jì)機(jī)器學(xué)習(xí)模型一樣,深度神經(jīng)網(wǎng)絡(luò)的可行性和有效性嚴(yán)重取決于一個(gè)假設(shè)——輸入和輸出數(shù)據(jù)的分布不會(huì)隨時(shí)間發(fā)生顯著變化,否則會(huì)使得模型原本學(xué)習(xí)到的模式和復(fù)雜關(guān)系表現(xiàn)不佳或甚至完全不可用。但是,在真實(shí)世界中,這樣的假設(shè)很少能夠成立,尤其是在信息安全等領(lǐng)域,其中基礎(chǔ)數(shù)據(jù)生成機(jī)制的快速演變已然是一種常態(tài)(在安全領(lǐng)域的案例中,這是因?yàn)榉烙胶蛯?duì)手這兩方都要不斷努力改變自己的策略以超越對(duì)方,從而利用對(duì)手未加防備的漏洞。因此,隨著我們?cè)谶@些領(lǐng)域中應(yīng)用深度學(xué)習(xí)來(lái)更好解決許多曾經(jīng)無(wú)法解決的問(wèn)題,深度神經(jīng)網(wǎng)絡(luò)的連續(xù)學(xué)習(xí)問(wèn)題也就得到了機(jī)器學(xué)習(xí)即服務(wù)(MLaaS)提供商和應(yīng)用架構(gòu)師的越來(lái)越大的關(guān)注——我們?cè)撛趺春芎玫貓?zhí)行連續(xù)學(xué)習(xí),而不會(huì)損害生產(chǎn)質(zhì)量或提高資源消耗。
在本報(bào)告的第二部分,我們將會(huì)形式化連續(xù)學(xué)習(xí)場(chǎng)景并介紹一種增量式的微調(diào)方法(incremental fine-tuning approach)。然后我們會(huì)給出有多個(gè)實(shí)證研究支持的三大重要發(fā)現(xiàn)。本文的目的不是全面調(diào)查和描繪連續(xù)學(xué)習(xí)的現(xiàn)狀全景,而是為了啟發(fā)更多不同專業(yè)背景的人加入到我們的討論中,并與我們交流知識(shí)。
第二部分:連續(xù)學(xué)習(xí)
連續(xù)學(xué)習(xí)場(chǎng)景和增量式微調(diào)
微調(diào)(fine-tuning)原本一直是指預(yù)訓(xùn)練一個(gè)帶有生成式目標(biāo)(generative objective)的 DNN 的過(guò)程,后面跟著帶有一個(gè)鑒別式目標(biāo)(discriminative objective)的額外訓(xùn)練階段。早期關(guān)于預(yù)訓(xùn)練和微調(diào)深度信念網(wǎng)絡(luò)和深度堆疊自動(dòng)編碼器的研究成果全都遵循這種方法。研究者期望這種生成式訓(xùn)練階段能讓網(wǎng)絡(luò)學(xué)習(xí)到數(shù)據(jù)域的良好分層表征,而鑒別式階段則能利用這種表征,并希望它能在該表征空間中學(xué)習(xí)到一個(gè)更好的鑒別器功能。
最近,研究者已經(jīng)在使用微調(diào)來(lái)在 ImageNet 這樣的大型通用數(shù)據(jù)集上預(yù)訓(xùn)練復(fù)雜精細(xì)、當(dāng)前***的 DNN 了,然后又在更小的相關(guān)數(shù)據(jù)集上對(duì)模型進(jìn)行微調(diào)。這有助于緩解醫(yī)療診斷或地理探測(cè)等領(lǐng)域內(nèi)有標(biāo)簽訓(xùn)練數(shù)據(jù)不足的問(wèn)題,因?yàn)樵谶@些領(lǐng)域中,獲取有標(biāo)簽數(shù)據(jù)需要密集的勞動(dòng)或成本高昂。研究者的基本假設(shè)是:在大型訓(xùn)練數(shù)據(jù)集上得到的相當(dāng)好的結(jié)果已經(jīng)使該網(wǎng)絡(luò)接近參數(shù)空間中的局部***了,所以即使新數(shù)據(jù)的數(shù)據(jù)量很小,也能快速將該網(wǎng)絡(luò)引導(dǎo)至***點(diǎn)。
從連續(xù)學(xué)習(xí)的觀點(diǎn)來(lái)看,上面兩種方法都是網(wǎng)絡(luò)只接受兩次訓(xùn)練(初始預(yù)訓(xùn)練和一次更新)的極端案例。連續(xù)學(xué)習(xí)的更一般形式是迭代式地訓(xùn)練和更新,這就帶來(lái)了一個(gè)問(wèn)題:應(yīng)該怎樣穩(wěn)健又高效地執(zhí)行一系列持續(xù)的更新?對(duì)于生產(chǎn)系統(tǒng)來(lái)說(shuō),穩(wěn)健性是很重要的,因?yàn)橐粋€(gè)實(shí)時(shí)系統(tǒng)通常不能容忍模型表現(xiàn)突然下降,而該系統(tǒng)的實(shí)時(shí)本質(zhì)又必需對(duì)資源和時(shí)間的高效率利用。為此,在下面的討論中,我們的重點(diǎn)關(guān)注場(chǎng)景是每個(gè)更新步驟僅使用少量新數(shù)據(jù)的情況(相比于原來(lái)的完全的訓(xùn)練數(shù)據(jù)集),但要求更新后的模型是即時(shí)可用的。
1. 連續(xù)學(xué)習(xí)場(chǎng)景
連續(xù)學(xué)習(xí)的最一般形式是整個(gè)訓(xùn)練數(shù)據(jù)集都會(huì)隨時(shí)間演變。但是,為了讓學(xué)習(xí)可行,我們?cè)O(shè)置了一個(gè)限制,即輸入域保持不變。這并不意味著輸入域中的數(shù)據(jù)分布是恒定不變的——相反,我們?cè)试S多種多樣的數(shù)據(jù)分布會(huì)發(fā)生變化的案例,但這些變化總是定義在同一域中。另一方面,我們假設(shè)輸入域可以變化。這是為了配合當(dāng)系統(tǒng)持續(xù)運(yùn)行了相當(dāng)長(zhǎng)時(shí)間后出現(xiàn)新標(biāo)簽的案例。比起輸入域變化的情況,這個(gè)假設(shè)更有可能實(shí)際出現(xiàn),因?yàn)樵谧詣?dòng)駕駛汽車等大多數(shù)生產(chǎn)系統(tǒng)中,如果輸入視頻或激光雷達(dá)圖像急劇改變(由于極端天氣、光照、地形或路況),那我們就不能期望系統(tǒng)還能遠(yuǎn)程工作;但我們希望該系統(tǒng)能在連續(xù)學(xué)習(xí)過(guò)程中適應(yīng)新型的不可碰撞的目標(biāo),并且能夠應(yīng)對(duì)這種新標(biāo)簽的類別。因此,我們將我們的連續(xù)學(xué)習(xí)場(chǎng)景中的數(shù)據(jù)定義為按時(shí)間 t 索引的數(shù)據(jù)集的序列。我們的目標(biāo)是為每個(gè)時(shí)間步驟 t 學(xué)習(xí)一個(gè)網(wǎng)絡(luò)
。根據(jù)
的變化方式,我們有兩種可能場(chǎng)景:
1) 我們不會(huì)隨時(shí)間獲得新類別,但是我們的數(shù)據(jù)集不斷增長(zhǎng)。
2) 我們會(huì)隨時(shí)間獲得新類別的樣本。
在每個(gè)時(shí)間步驟 t,我們需要使用新出現(xiàn)的可用信息更新我們的網(wǎng)絡(luò);這些新信息即為更新集(update set):。因?yàn)槲覀兗僭O(shè)更新集很小,為了避免欠擬合,在時(shí)間步驟 t 我們使用上一步收斂的
熱啟動(dòng)(warm-start)優(yōu)化。這種技術(shù)的可行性取決于一個(gè)假設(shè),即
在數(shù)據(jù)集擴(kuò)展時(shí)會(huì)平滑地改變——因此我們要假設(shè)更新步驟小且輸入域恒定。在實(shí)際情況中,就算這些假設(shè)(部分地)屬實(shí),我們?nèi)赃€依賴于一個(gè)預(yù)期:通過(guò)在之前一個(gè)局部***點(diǎn)的初始化,帶有不同參數(shù)空間情況的新優(yōu)化問(wèn)題可以快速且穩(wěn)定地收斂到一個(gè)新的局部***點(diǎn)。但是,大多數(shù)現(xiàn)代 DNN 都太復(fù)雜了,所以難以保證這一點(diǎn)——它們的目標(biāo)函數(shù)是高度非線性和非凸的,有時(shí)候參數(shù)空間中還都是些糟糕的局部條件數(shù)(local condition numbers)。即便如此,熱啟動(dòng)仍然是目前***的方法之一,肯定比從頭開(kāi)始更好,而且在實(shí)驗(yàn)上也表現(xiàn)出了***的潛力。對(duì)于場(chǎng)景 2,在每個(gè)時(shí)間步驟,我們都可能需要為***的輸入層添加額外的神經(jīng)元以及與前一層的連接權(quán)重。
但還存在三個(gè)問(wèn)題。一,每個(gè)更新步驟需要多少個(gè) SGD 步驟?二,在每個(gè)更新過(guò)程中,我們使用多少前一步驟的數(shù)據(jù),又使用多少當(dāng)前步驟的數(shù)據(jù)?三,這個(gè)更新流程是否穩(wěn)健,能應(yīng)對(duì)標(biāo)注噪聲嗎?對(duì)于生產(chǎn)系統(tǒng)來(lái)說(shuō),這些問(wèn)題都很重要,因?yàn)檎缥覀兦懊嬲劦降模€(wěn)健性和效率是很重要的。
實(shí)證研究
在實(shí)驗(yàn)中,我們使用了在 ImageNet ILSVRC-2010 上預(yù)訓(xùn)練的 BVLC AlexNet 作為示例網(wǎng)絡(luò)。我們將學(xué)習(xí)率固定為 0.001,L2 權(quán)重衰減固定為 0.0005,動(dòng)量固定為 0.9;并且更新集的大小也固定為,其中的樣本來(lái)自同一類別。對(duì)于評(píng)估,我們使用了 MS-COCO-full-v0.9 和 Stanford40Actions。相比 ImageNet,這兩個(gè)數(shù)據(jù)集都很小,因?yàn)槲覀兿胧褂帽瘸跏碱A(yù)訓(xùn)練小的更新來(lái)評(píng)估連續(xù)學(xué)習(xí)的表現(xiàn)。對(duì)于 MS-COCO,我們使用了 15 個(gè)類別,其中每個(gè)包含 500 到 1000 個(gè)樣本;每個(gè)樣本都僅保留 ground truth 邊界框,且寬和高都至少是 256 像素。為了進(jìn)行評(píng)估,我們隨機(jī)選擇了 10 個(gè)類來(lái)對(duì) CNN 進(jìn)行初始化微調(diào)。從剩余的數(shù)據(jù)中,我們?cè)匐S機(jī)選擇 5 個(gè)類別用作全新數(shù)據(jù)(在每個(gè)更新步驟輸入的新數(shù)據(jù)),并且從每個(gè)類別隨機(jī)選擇了 100 個(gè)樣本。每個(gè)更新步驟使用的度量都是分類準(zhǔn)確度。為了得到無(wú)偏差的比較,我們進(jìn)行了該實(shí)驗(yàn) 9 次。
1. 每個(gè)更新步驟的 SGD 迭代次數(shù)
SGDminibatch 的大小固定為 64,但我們改變了每個(gè)更新步驟中 SGD 迭代執(zhí)行的次數(shù)。我們將 SGD 迭代次數(shù)表示成了一個(gè)相對(duì)于總訓(xùn)練數(shù)據(jù)大小(即 epoch 數(shù))的比例,以補(bǔ)償不斷增長(zhǎng)的訓(xùn)練數(shù)據(jù)大小。
讓人驚訝的是,即使每次更新的 SGD 迭代少了很多,分類準(zhǔn)確度依然穩(wěn)健,除了那些僅使用了十分之一數(shù)據(jù)的案例,很可能是因?yàn)樵谶@樣小的 epoch 中一些類別代表不足。事實(shí)上,我們可以直接將 SGD 迭代的次數(shù)固定為一個(gè)小常量(比如更新集大小),表現(xiàn)也不會(huì)顯著下降。
2. 每個(gè)更新步驟中舊數(shù)據(jù)與新數(shù)據(jù)的比例
對(duì)于增量式的學(xué)習(xí)算法,舊數(shù)據(jù)與新數(shù)據(jù)的影響的比例是最重要的超參數(shù)之一。在 SGD 迭代中,我們根據(jù)概率對(duì)每個(gè)樣本 i 進(jìn)行了采樣,其中 0≤λ≤1。在極端情況下,λ=0 意味著之前的數(shù)據(jù)完全被忽視了,而 λ=1 則表示新數(shù)據(jù)的影響推遲到了下一個(gè)更新步驟,因?yàn)檫@是它們?cè)?a target="_blank">
中結(jié)束的時(shí)候。
我們看到,為了防止在更小的更新集上過(guò)擬合,就必需舊數(shù)據(jù)。我們觀察到一個(gè)有趣的結(jié)果:因?yàn)樾碌母录瘮?shù)據(jù)被認(rèn)為是下一步驟 t 中的一部分,因此 λ=0.75 和 λ=1 的表現(xiàn)差不多。
3. 在有標(biāo)注噪聲時(shí)保持穩(wěn)健
在生產(chǎn)場(chǎng)景中,新數(shù)據(jù)的標(biāo)簽很少是無(wú)噪聲的——由于實(shí)時(shí)性需求,人類判斷者往往需要做出快但并不準(zhǔn)確的決定,而三到五位判斷者之間的不一致率可能會(huì)高達(dá) 75%。因此,在有標(biāo)注噪聲時(shí)保持穩(wěn)健對(duì)于連續(xù)學(xué)習(xí)方案而言至關(guān)重要。
我們使用 64 的 minibatch 大小在每個(gè)更新步驟執(zhí)行了 10 epoch,并隨機(jī)污染固定比例的新可用數(shù)據(jù)——用剩余類別的樣本替換這些數(shù)據(jù),但同時(shí)保持它們的標(biāo)簽不變。如預(yù)期一樣,標(biāo)注噪聲會(huì)降低準(zhǔn)確度,但我們的連續(xù)學(xué)習(xí)方案對(duì)此相對(duì)穩(wěn)健,在存在 10% 的噪聲時(shí)準(zhǔn)確度僅下降了 2%。
作者 Yanchen 畢業(yè)于普林斯頓大學(xué)機(jī)器學(xué)習(xí)方向,現(xiàn)就職于微軟Redmond總部,從事大規(guī)模分布式機(jī)器學(xué)習(xí)和企業(yè)級(jí)AI研發(fā)工作。
【本文是51CTO專欄機(jī)構(gòu)“機(jī)器之心”的原創(chuàng)文章,微信公眾號(hào)“機(jī)器之心( id: almosthuman2014)”】