我的深度學習入門之路

過春節(jié)前一周,不知從哪里看到優(yōu)達學城(Udacity)的深度學習(Deep learning)課程在搞優(yōu)惠活動,抱著不出點血就學不下去的想法愉快的報了名,開始為期四個月的在線學習。這周終于完成了全部課程和五個項目作業(yè),獲到納米學位證書,寫一下學習體會和心路歷程。

自己上研究生的專業(yè)就是模式識別與智能系統(tǒng),無奈那時候這個領域還是偏理論研究,工程應用雖然也有,但是總給人感覺不是Artificial Intelligence (AI) 而是 Artificial Stupid。尤其氣人的是堂堂智能感知重點實驗室,裝的指紋鎖各種無法識別總是進不去門,心灰意冷投身軟件行業(yè)成了前端開發(fā)。彈指一揮間,沒想到短短幾年屬于人工智能的時代這么快就來了(昨天阿爾法狗又贏了柯潔)。

幸運的是,寫了幾年的代碼,倒是對重拾人工智能(主要是深度學習)挺有幫助,畢竟算法應用還要靠軟件程序來實現(xiàn)的。另外以Tensorflow為代表的深度學習框架讓模型訓練的過程變的更加工程化,不到五十行代碼就能實現(xiàn)一個文字翻譯或者圖片識別模型的訓練全過程,所以編程技能對學這門課可以起到很大幫助。

但就像這個課一開始所介紹的,初學者不用擔心自己理論知識和編程水平的不足,邁出第一步并一直保持學習熱情才是最關鍵的。剛開始在線學習,就想對優(yōu)達學城的課程設計點個贊。最大的優(yōu)點就是學著不累!畢竟長達四個月的學習時間,好的體驗非常重要。

(他們家還有不少免費課程,若有興趣可以去體驗一下)

網(wǎng)站里的課程學習界面,課程內(nèi)容會不斷更新

這個課的主講是左邊的一位Google工程師Siraj(很逗比,經(jīng)常會在視頻里說rap),后面還請了不少牛人(記得還包括GAN的發(fā)明者)在視頻里言傳身教。雖然中文網(wǎng)站里的主要內(nèi)容都是已經(jīng)翻譯的,但基本所有資料和論文還是英文的,不禁回憶起當初啃論文的日子。相關的訓練數(shù)據(jù)和論文都有免費的網(wǎng)上資源,對于不在學校還想從事研究的人絕對是福利。

需要完成的五個項目,日期后來調(diào)整了

差不多每個月,在每一個階段學習的最后都要完成一個有意思的實際項目,而且必須在規(guī)定日期前完成,否則就得不到學位了!提交的代碼會有專人review并提出有針對的修改意見和反饋,直到完全達到要求才算通過。審閱的人給出的意見都很具體,態(tài)度也非常nice。嗯,畢竟花了錢呀。

項目的review,經(jīng)常有修改建議和鼓勵的話

剛開始的項目相對容易,后面隨著模型的復雜訓練起來就很耗計算機資源。我的所有項目都是用的Mac Air跑完的,不支持GPU加速。后幾個項目的訓練時間都以半天記。其實課程里專門有講如何申請和搭建AWS的實例做GPU加速,就是懶得去裝 ╰( ̄▽ ̄)╭

下面大概說說所學到的知識點吧。

第一階段,新手入門。Python的簡單語法、numpy進行多維向量操作、conda管理包依賴和環(huán)境、梯度下降的優(yōu)化原理、多層神經(jīng)網(wǎng)絡模型的構建。

項目:用多層神經(jīng)網(wǎng)絡預測共享單車數(shù)量。

樣本數(shù)據(jù)

這個項目就是用歷史數(shù)據(jù)(日期、天氣等,當日租車數(shù)量)訓練模型,然后用另一部分數(shù)據(jù)驗證模型的準確性。

最后的測試結果

藍色是訓練后模型(就是多層神經(jīng)網(wǎng)絡)的預測,紅色是實際數(shù)據(jù)。前面吻合的很好,后面就不準了。reviewer還問我:你知道為什么后面誤差很大么?廢話,圣誕節(jié)大家都放假了嘛 (o?v?)ノ

第二階段,使用Tensorflow構建模型、用于處理圖像的卷積神經(jīng)網(wǎng)絡(CNN)

還介紹了Prisma實現(xiàn)圖像內(nèi)容和樣式的合成原理。

項目:用Tensorflow實現(xiàn)卷積網(wǎng)絡(CNN)對圖片數(shù)據(jù)集進行分類識別

每張圖片的識別結果(概率)

這個就是用CNN(多層卷積神經(jīng)網(wǎng)絡)識別圖像,結果是得到的每張圖片可能的類別概率。最后訓練的結果可以達到56%準確率,就是說一大半圖片都能識別出來里面是喵星人還是汪星人了。然后非常高興的另外去網(wǎng)上找了些圖片來試試,結果一個都沒認對。

(╯‵□′)╯︵┴─┴

第三階段,專門處理時序數(shù)據(jù)(比如語言)的循環(huán)神經(jīng)網(wǎng)絡(RNN)、LSTM--一種改進的RNN結構、文字建模方法Word2Vec、同時用兩個RNN實現(xiàn)序列到序列轉化Seq2Seq。

項目1:用RNN生成辛普森一家臺詞

機器生成的臺詞

這階段的第一個項目是用LSTM(一種循環(huán)神經(jīng)網(wǎng)絡)通過學習已有的《辛普森一家》臺詞,去生成新的臺詞。這個還是很有趣的,在訓練的過程中,可以觀察到模型慢慢學會句子的組成方式,單詞的相互關系。

項目2:用兩個LSTM做英語-法語翻譯

機器實現(xiàn)英/法翻譯

第二個項目是用兩個LSTM分別作encoder和decoder來實現(xiàn)語言翻譯,結果真的不忍直視

(翻譯出來的法語好像是:I think it is easy to translate English and California)

?╮(╯_╰)╭?

畢竟可以用的翻譯模型需要大量數(shù)據(jù)長時間訓練以及調(diào)優(yōu)。


第四階段,GAN模型(兩個神經(jīng)網(wǎng)絡相互對抗找到均衡解)對沒有標記的數(shù)據(jù)進行半監(jiān)督學習

項目:用GAN學習已有圖片生成新圖片

機器生成的手寫體數(shù)字

用GAN通過隨機信號生成的手寫數(shù)字圖片。嗯,這個效果不錯。

機器生成的人臉圖片1
機器生成的人臉圖片1

用同樣的模型來生成人臉圖片,可以看到模型的優(yōu)化過程。這個訓練起來超費電腦,邊跑邊心疼我的Air。如果用好電腦可以把模型做得更復雜效果會更好。


最后一個項目截止日期是這個月25號,提交了結果隔了一天看到標語:您已畢業(yè)。開心!

然后就可以提交個人信息并填寫調(diào)查表,獲得畢業(yè)證書,撒花ヽ(??▽?)ノ

所以,一切結束了么?沒有,甚至在標題上用“入門”兩個字都感到挺心虛的。通過這次學習,自己也僅僅是看到了深度學習這個領域的廣闊,更覺得自己掌握的東西少得可憐。這種感覺和剛接觸前端開發(fā)時候非常像,就是知道了哪些自己不知道的階段。

嗯,接下來的路還有很長。

最后想說的就是,人工智能的時代真的到來了。放心,在可以預見的未來電腦還不會統(tǒng)治人類的。但是用人工智能的方法加上代碼實現(xiàn),每個人都可以做出很多很酷的東西。比如我就想試著做一個去處圖片里玻璃反光的濾鏡,有了結果再分享了。

寫完了。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容