【随笔】从飞桨入门深度学习
機(jī)器學(xué)習(xí)算法理論在上個(gè)世紀(jì)90年代發(fā)展成熟,在許多領(lǐng)域都取得了成功應(yīng)用。但平靜的日子只延續(xù)到2010年左右,隨著大數(shù)據(jù)的涌現(xiàn)和計(jì)算機(jī)算力提升,深度學(xué)習(xí)模型異軍突起,極大改變了機(jī)器學(xué)習(xí)的應(yīng)用格局。今天,多數(shù)機(jī)器學(xué)習(xí)任務(wù)都可以使用深度學(xué)習(xí)模型解決,尤其在語音、計(jì)算機(jī)視覺和自然語言處理等領(lǐng)域,深度學(xué)習(xí)模型的效果比傳統(tǒng)機(jī)器學(xué)習(xí)算法有顯著提升。
那么相比傳統(tǒng)的機(jī)器學(xué)習(xí)算法,深度學(xué)習(xí)做出了哪些改進(jìn)呢?其實(shí)兩者在理論結(jié)構(gòu)上是一致的,即:模型假設(shè)、評(píng)價(jià)函數(shù)和優(yōu)化算法,其根本差別在于假設(shè)的復(fù)雜度,如下圖所示。
不是所有的任務(wù)都像牛頓第二定律那樣簡(jiǎn)單直觀。對(duì)于圖1中的美女照片,人腦可以接收到五顏六色的光學(xué)信號(hào),能用極快的速度反應(yīng)出這張圖片是一位美女,而且是程序員喜歡的類型。但對(duì)計(jì)算機(jī)而言,只能接收到一個(gè)數(shù)字矩陣,對(duì)于美女這種高級(jí)的語義概念,從像素到高級(jí)語義概念中間要經(jīng)歷的信息變換的復(fù)雜性是難以想象的!這種變換已經(jīng)無法用數(shù)學(xué)公式表達(dá),因此研究者們借鑒了人腦神經(jīng)元的結(jié)構(gòu),設(shè)計(jì)出神經(jīng)網(wǎng)絡(luò)的模型。
深度學(xué)習(xí)改變了很多領(lǐng)域算法的實(shí)現(xiàn)模式。在深度學(xué)習(xí)興起之前,很多領(lǐng)域建模的思路是投入大量精力做特征工程,將專家對(duì)某個(gè)領(lǐng)域的“人工理解”沉淀成特征表達(dá),然后使用簡(jiǎn)單模型完成任務(wù)(如分類或回歸)。而在數(shù)據(jù)充足的情況下,深度學(xué)習(xí)模型可以實(shí)現(xiàn)端到端的學(xué)習(xí),即不需要專門做特征工程,將原始的特征輸入模型中,模型可同時(shí)完成特征提取和分類任務(wù),如下圖所示。
以計(jì)算機(jī)視覺任務(wù)為例,特征工程是諸多圖像科學(xué)家基于人類對(duì)視覺理論的理解,設(shè)計(jì)出來的一系列提取特征的計(jì)算步驟,典型如SIFT特征。在2010年之前的計(jì)算機(jī)視覺領(lǐng)域,人們普遍使用SIFT一類特征+SVM一類的簡(jiǎn)單淺層模型完成建模任務(wù)。
SIFT特征由David Lowe在1999年提出,在2004年加以完善。SIFT特征是基于物體上的一些局部外觀的興趣點(diǎn)而與影像的大小和旋轉(zhuǎn)無關(guān)。對(duì)于光線、噪聲、微視角改變的容忍度也相當(dāng)高。基于這些特性,它們是高度顯著而且相對(duì)容易擷取,在母數(shù)龐大的特征數(shù)據(jù)庫中,很容易辨識(shí)物體而且鮮有誤認(rèn)。使用SIFT特征描述對(duì)于部分物體遮蔽的偵測(cè)率也相當(dāng)高,甚至只需要3個(gè)以上的SIFT物體特征就足以計(jì)算出位置與方位。在現(xiàn)今的電腦硬件速度下和小型的特征數(shù)據(jù)庫條件下,辨識(shí)速度可接近即時(shí)運(yùn)算。SIFT特征的信息量大,適合在海量數(shù)據(jù)庫中快速準(zhǔn)確匹配。
在深度學(xué)習(xí)框架出現(xiàn)之前,機(jī)器學(xué)習(xí)工程師處于手工業(yè)作坊生產(chǎn)的時(shí)代。為了完成建模,工程師需要儲(chǔ)備大量數(shù)學(xué)知識(shí),并為特征工程工作積累大量行業(yè)知識(shí)。每個(gè)模型是極其個(gè)性化的,建模者如同手工業(yè)者一樣,將自己的積累形成模型的“個(gè)性化簽名”。而今,“深度學(xué)習(xí)工程師”進(jìn)入了工業(yè)化大生產(chǎn)時(shí)代。只要掌握深度學(xué)習(xí)必要但少量的理論知識(shí),掌握Python編程,即可在深度學(xué)習(xí)框架上實(shí)現(xiàn)非常有效的模型,甚至與該領(lǐng)域最領(lǐng)先的模型不相上下。建模這個(gè)被“老科學(xué)家”們長期把持的建模領(lǐng)域面臨著顛覆,也是新入行者的機(jī)遇。
下圖呈現(xiàn)了只有一個(gè)參數(shù)維度時(shí),均方誤差和絕對(duì)值誤差(只將每個(gè)樣本的誤差累加,不做平方處理)的損失函數(shù)曲線圖。
由此可見,均方誤差表現(xiàn)的“圓滑”的坡度有兩個(gè)好處:
(1)曲線的最低點(diǎn)是可導(dǎo)的。
(2)越接近最低點(diǎn),曲線的坡度逐漸放緩,有助于通過當(dāng)前的梯度來判斷接近最低點(diǎn)的程度(是否逐漸減少步長,以免錯(cuò)過最低點(diǎn))。
而絕對(duì)值誤差是不具備這兩個(gè)特性的,這也是損失函數(shù)的設(shè)計(jì)不僅僅要考慮“合理性”,還要追求“易解性”的原因。
為什么之前我們要做輸入特征的歸一化,保持尺度一致?這是為了讓統(tǒng)一的步長更加合適。如下圖所示,特征輸入歸一化后,不同參數(shù)輸出的Loss是一個(gè)比較規(guī)整的曲線,學(xué)習(xí)率可以設(shè)置成統(tǒng)一的值;特征輸入未歸一化時(shí),不同特征對(duì)應(yīng)的參數(shù)所需的步長不一致,尺度較大的參數(shù)需要大步長,尺寸較小的參數(shù)需要小步長,導(dǎo)致無法設(shè)置統(tǒng)一的學(xué)習(xí)率。
通過大量實(shí)驗(yàn)發(fā)現(xiàn),模型對(duì)最后出現(xiàn)的數(shù)據(jù)印象更加深刻。訓(xùn)練數(shù)據(jù)導(dǎo)入后,越接近模型訓(xùn)練結(jié)束,最后幾個(gè)批次數(shù)據(jù)對(duì)模型參數(shù)的影響越大。為了避免模型記憶影響訓(xùn)練效果,需要進(jìn)行樣本亂序操作。
R-CNN的系列算法分成兩個(gè)階段,先在圖像上產(chǎn)生候選區(qū)域,再對(duì)候選區(qū)域進(jìn)行分類并預(yù)測(cè)目標(biāo)物體位置,它們通常被叫做兩階段檢測(cè)算法。SSD和YOLO算法則只使用一個(gè)網(wǎng)絡(luò)同時(shí)產(chǎn)生候選區(qū)域并預(yù)測(cè)出物體的類別和位置,所以它們通常被叫做單階段檢測(cè)算法。
參考文獻(xiàn):https://www.paddlepaddle.org.cn/tutorials/projectdetail/1211152
猜你喜歡:👇🏻
?【隨筆】深度學(xué)習(xí)之美——楊家有女初長成,養(yǎng)在深閨人未識(shí)
?【隨筆】卷積神經(jīng)網(wǎng)絡(luò)中的卷積怎么卷?
?【隨筆】通用近似定理
總結(jié)
以上是生活随笔為你收集整理的【随笔】从飞桨入门深度学习的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python模拟抛硬币_python实现
- 下一篇: java技术论坛的毕业设计_基于java