選自Course 機(jī)器之心編譯 參與:李澤南、曹瑞
做好準(zhǔn)備:如何設(shè)置亞馬遜云服務(wù) (AWS) 深度學(xué)習(xí)服務(wù)器
在你開始第一節(jié)課之前,你需要一臺(tái)可以深度學(xué)習(xí)的機(jī)器(也就是說,帶有 Nvidia GPU 的計(jì)算機(jī))。這部分的課程當(dāng)中講述的大部分內(nèi)容都是以使用亞馬遜云服務(wù) (AWS) 為例。 這個(gè)視頻詳細(xì)介紹了設(shè)置深度學(xué)習(xí)服務(wù)器的各個(gè)步驟,使用最近發(fā)布的一個(gè)叫做「P2」的亞馬遜云服務(wù) (AWS) 產(chǎn)品,帶有非常強(qiáng)大的 GPU,還有超大內(nèi)存。 這個(gè)視頻以及我們大多數(shù)的內(nèi)容,都將 us-west-2 (Oregon) 設(shè)置為了默認(rèn)區(qū)域。如果你在歐洲,可以使用 eu-east-1 (Ireland),使用 setup_p2_ireland.sh,而不是 setup_p2.sh。目前,AWS 的 p2 只在 3 個(gè)地區(qū)可以使用,如果你在美國(guó)或是歐洲以外的其他地方,你還可以使用這些地區(qū)的 Amazon 系統(tǒng)映像 (AMI),但是可能會(huì)有延時(shí)。 注意:AWS 需要確認(rèn)用戶信息真實(shí)性,所以如果你是 AWS 新用戶的話,你需要對(duì)進(jìn)入 P2 提出特殊的請(qǐng)求。視頻中已經(jīng)對(duì)如何發(fā)送這一請(qǐng)求做出了展示,但是要注意的是現(xiàn)在有一點(diǎn)變化:現(xiàn)在你可以直接在表格當(dāng)中進(jìn)行請(qǐng)求,在視頻中沒有顯示出來。使用視頻中的「use case description」,在你的請(qǐng)求被處理之前,不能設(shè)置 P2 服務(wù)器。 PS:如果你有 Azure 賬戶的話,可以用新的 GPU 服務(wù)器來代替,它們的運(yùn)作方式幾乎完全相同。如果你希望采用這種方式的話,維基和論壇上面有相關(guān)的細(xì)節(jié)。 0、為什么要研究深度學(xué)習(xí)?卷積簡(jiǎn)介
這個(gè)課程分為兩部分:
本課的音質(zhì)的畫質(zhì)與其他課程相比稍差一些。另外,本課當(dāng)中涉及到的材料在其他的課程當(dāng)中將會(huì)有更加詳細(xì)地講述。你在看完第 1 課和第 2 課的視頻之后,就會(huì)發(fā)現(xiàn)事先看這個(gè)視頻的用處。 1、識(shí)別貓和狗
在課程開始之前,請(qǐng)確認(rèn)已做好深度學(xué)習(xí)服務(wù)器設(shè)置,請(qǐng)參閱 AWS 課程:http://course./lessons/aws.html。 在課程開始前,請(qǐng)閱讀入門 http://course./start.html。 概論
課程對(duì)深度學(xué)習(xí)進(jìn)行了簡(jiǎn)要介紹。隨后,我們將展示如何啟動(dòng)、停止和管理 AWS 實(shí)例,如何將數(shù)據(jù)復(fù)制到其中(如果你已經(jīng)熟悉 AWS,那么你可以快速完成這一部分)。 下一部分的討論的是如何為本課程(以及我們將要處理的所有計(jì)算機(jī)視覺項(xiàng)目)的數(shù)據(jù)進(jìn)行結(jié)構(gòu)化。這是最重要的步驟——如果你的數(shù)據(jù)有問題,你將無法訓(xùn)練任何模型。 然后進(jìn)入第一個(gè)深度學(xué)習(xí)模型。我們將學(xué)習(xí)如何從大量圖片中區(qū)分貓和狗。我們無需理解數(shù)學(xué)細(xì)節(jié),而是通過學(xué)習(xí)使用計(jì)算機(jī)完成任務(wù),使用「微調(diào)」,這也許是任何深度學(xué)習(xí)實(shí)踐者最重要的技能。一旦我們構(gòu)建了一個(gè)可以從大量貓圖中找出狗圖的模型,我們就會(huì)退后一步,了解最初的「預(yù)訓(xùn)練」模型,并驗(yàn)證它在未經(jīng)任何微調(diào)的情況下可以做什么。 2、卷積神經(jīng)網(wǎng)絡(luò)
在上節(jié)課后,你的目標(biāo)是在區(qū)分貓狗的競(jìng)賽中達(dá)到排名前 50%。在這節(jié)課上,Jeremy 將會(huì)展示他處理這一任務(wù)的作品。 在展示一個(gè)成功的模型之后,我們接下來會(huì)學(xué)到關(guān)于分類任務(wù)中最常用的損失函數(shù)的一些關(guān)鍵信息,同時(shí)學(xué)習(xí)如何使用可視化來了解你的模型的成功和失敗之處。 在課程的下半部分,我們將深入了解 CNN 的細(xì)節(jié)和微調(diào)。我們將首先討論為何通常需要從與訓(xùn)練網(wǎng)絡(luò)(而不是隨機(jī)權(quán)重)開始,觀察微調(diào)如何讓模型保持層次化,并調(diào)節(jié)權(quán)重以使各層協(xié)調(diào)。我們將學(xué)習(xí)為何需要微調(diào),這包括神經(jīng)網(wǎng)絡(luò)的三大要素:
3、欠擬合與過擬合
我們已經(jīng)學(xué)到構(gòu)建 CNN 的幾種辦法——現(xiàn)在需要全面了解它是如何工作的了。在本節(jié)我們?cè)敿?xì)介紹了卷積的作用,以及它是如何與最大池化(max pooling)一起構(gòu)建 CNN 的。我們還將了解 softmax 激活函數(shù),它對(duì)于在分類模型中獲得良好結(jié)果是至關(guān)重要的(分類模型是設(shè)計(jì)用于將數(shù)據(jù)項(xiàng)分為不同類,即離散組的任何模型)。 如果你對(duì)于卷積操作不太理解,你可以先跳到第四課的開頭。 隨后,我們將深入了解創(chuàng)建一個(gè)有效模型所需的最重要技能:處理欠擬合與過擬合。首先構(gòu)建一個(gè)過擬合模型(這樣我們就會(huì)知道我們的模型足夠有效,可以被訓(xùn)練),然后逐漸使用一些策略來減少過擬合。在本節(jié)中,最重要的部分是應(yīng)對(duì)過擬合的技術(shù)列表。我們建議你可以把這份列表抄寫到一個(gè)方便的地方,隨時(shí)參考使用,同時(shí)確保自己了解其中所有方法的意義。 我們將展示兩種應(yīng)對(duì)過擬合最為有用的技術(shù):dropout 和 data augmentation。我們還會(huì)討論預(yù)計(jì)算卷積層技術(shù)。 4、協(xié)同過濾、嵌入
卷積是學(xué)生最難以理解的概念之一,因此我們將從詳細(xì)介紹卷積運(yùn)算開始本節(jié)課程,在電子表格中實(shí)現(xiàn)一對(duì)卷積層和過濾器。接下來,我們對(duì) SGD(和它的新變種)進(jìn)行相同的介紹,你會(huì)看到加速 SGD 方式非常易用。 隨后,我們將進(jìn)一步研究避免過擬合,并學(xué)習(xí)一些應(yīng)對(duì)含有大量未標(biāo)記數(shù)據(jù),少量已標(biāo)記數(shù)據(jù)的數(shù)據(jù)集(半監(jiān)督學(xué)習(xí)任務(wù))的技巧:「?jìng)螛?biāo)記(pseudo-labeling)」與「知識(shí)蒸餾(knowledge distillation)」。 最后,我們將離開計(jì)算機(jī)視覺,對(duì)推薦系統(tǒng)(特別是協(xié)同過濾)展開討論,這是一種有用的技術(shù),同時(shí)也是了解嵌入概念的好方式。 5. 自然語(yǔ)言處理和循環(huán)神經(jīng)網(wǎng)絡(luò)入門
我們將開始結(jié)合我們之前所學(xué)過的東西,看我們能從中做出什么東西:我們發(fā)現(xiàn)我們得到了一個(gè)可以在 Kaggle 上獲勝的結(jié)果!重點(diǎn)來了:在這個(gè)課程中,我們?yōu)?VGG 加入了批規(guī)范化(batch normalization),而且在原來的教室環(huán)境中,我們直接使用這個(gè)新實(shí)現(xiàn)更新了 VGG16 班。但是,在 MOOC 中,因?yàn)槊總€(gè)人都有自己的學(xué)習(xí)節(jié)奏,所以沒有提供這個(gè)選擇——如果你想使用這個(gè)版本的批規(guī)范化(強(qiáng)烈推薦),我們還創(chuàng)建了一個(gè)單獨(dú)的 Vgg16BN 班。 接下來,讓我們回到協(xié)同過濾(collaborative filtering),然后我們可以發(fā)現(xiàn)我們可以快速輕松地構(gòu)建一個(gè)能極大超越一點(diǎn)快速搜索所能得到的所有基準(zhǔn)的模型。然后我們將我們注意力轉(zhuǎn)向了對(duì)這些模型所創(chuàng)造的隱因素(latent factor)的可視化。 我們還介紹了一下 Keras 功能 API,后面我們會(huì)大量用到它,因?yàn)槠鋵?duì)架構(gòu)的構(gòu)建提供了很好的支持和靈活性。 現(xiàn)在我們終于準(zhǔn)備好開始自然語(yǔ)言處理(NLP)了,首先我們會(huì)了解前面我們開發(fā)的嵌入(embedding)可以如何幫助我們理解自然語(yǔ)言。我們?cè)谶@個(gè)課程中所關(guān)注特定 NLP 任務(wù)是情感分析(sentiment analysis),但也有明白我們?cè)谶@里學(xué)到的一切也適用于其它 NLP 分類任務(wù)(比如:垃圾信息過濾、欺詐檢測(cè)或假新聞分類、在法律發(fā)現(xiàn)中尋找相關(guān)文檔等)。我們也將了解 NLP 領(lǐng)域中遷移學(xué)習(xí)的等效技術(shù),即預(yù)訓(xùn)練的詞向量(pre-trained word vectors)的使用。這個(gè)工具能讓模型實(shí)現(xiàn)更快的訓(xùn)練、減少數(shù)據(jù)需求、提升泛化能力。 最后我們將介紹循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN),其中包括了解神經(jīng)網(wǎng)絡(luò)架構(gòu)的「視覺詞匯(visual vocabulary)」——后續(xù)的課程會(huì)用到它們。 6、構(gòu)建循環(huán)網(wǎng)絡(luò)
本課程首先介紹一個(gè)新工具 MixIterator,它允許我們完全實(shí)現(xiàn)在前幾個(gè)課程里學(xué)到的偽標(biāo)記技術(shù)(pseudo-labeling technique)。MixIterator 甚至能夠進(jìn)一步改進(jìn)我們最好的 MNIST 模型,它已進(jìn)入「學(xué)術(shù)排行榜」的前五。 然后我們?cè)俅卧谇度胂到y(tǒng)中查看,使用電子表格來顯示它們?nèi)绾卧凇改缓蟆构ぷ鳌N覀冊(cè)谇度胫胁榭磪f(xié)同過濾(collaborative filterings),就像查看自然語(yǔ)言處理(NLP)那樣。 在完成這些較短的任務(wù)后,我們就準(zhǔn)備開始今天主要的任務(wù),即構(gòu)建循環(huán)神經(jīng)網(wǎng)絡(luò)。我們查看循環(huán)神經(jīng)網(wǎng)絡(luò)各種不同的模型,然后使用基本的 Keras 構(gòu)建塊從頭開始創(chuàng)建每個(gè)模型。 最后,我們首次查看 Theano,它是 Keras 用來實(shí)現(xiàn)計(jì)算的庫(kù)。為了更好地理解 Theano 和循環(huán)神經(jīng)網(wǎng)絡(luò)的工作原理,我們?cè)诩兇獾?Theano 中創(chuàng)建自己的循環(huán)神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)。學(xué)習(xí) Theano 對(duì)于每個(gè)人都不是必需的,但是當(dāng)你發(fā)現(xiàn)需要實(shí)現(xiàn)在 Keras 中還不存在的東西時(shí),或?yàn)槟愕奶囟?xiàng)目修改些什么的時(shí)候,Theano 可能就變得至關(guān)重要了。它有助于我們理解深度學(xué)習(xí)真正的運(yùn)行方式。 7、卷積神經(jīng)網(wǎng)絡(luò)架構(gòu);循環(huán)神經(jīng)網(wǎng)絡(luò)參數(shù)推導(dǎo)
這一課是第一部分課程的最后一課!本節(jié)分為兩個(gè)部分:
這些較高級(jí)的話題都是進(jìn)入第 2 部分課程學(xué)習(xí)的必需內(nèi)容,第 2 部分課程將于 2017 年 2 月 27 日在舊金山大學(xué)數(shù)據(jù)中心開課,網(wǎng)絡(luò)課程大約會(huì)在 2017 年 3 月更新。之后,我們將會(huì)繼續(xù)對(duì)深度學(xué)習(xí)進(jìn)行更加全面和深入的探討,希望這些課程能讓你從中受益! |
|