
過春節(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)點就是學著不累!畢竟長達四個月的學習時間,好的體驗非常重要。
(他們家還有不少免費課程,若有興趣可以去體驗一下)

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

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

剛開始的項目相對容易,后面隨著模型的復雜訓練起來就很耗計算機資源。我的所有項目都是用的Mac Air跑完的,不支持GPU加速。后幾個項目的訓練時間都以半天記。其實課程里專門有講如何申請和搭建AWS的實例做GPU加速,就是懶得去裝 ╰( ̄▽ ̄)╭
下面大概說說所學到的知識點吧。
第一階段,新手入門。Python的簡單語法、numpy進行多維向量操作、conda管理包依賴和環(huán)境、梯度下降的優(yōu)化原理、多層神經(jīng)網(wǎng)絡模型的構建。
項目:用多層神經(jīng)網(wǎng)絡預測共享單車數(shù)量。

這個項目就是用歷史數(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做英語-法語翻譯

第二個項目是用兩個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學習已有圖片生成新圖片

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


用同樣的模型來生成人臉圖片,可以看到模型的優(yōu)化過程。這個訓練起來超費電腦,邊跑邊心疼我的Air。如果用好電腦可以把模型做得更復雜效果會更好。
最后一個項目截止日期是這個月25號,提交了結果隔了一天看到標語:您已畢業(yè)。開心!
然后就可以提交個人信息并填寫調(diào)查表,獲得畢業(yè)證書,撒花ヽ(??▽?)ノ

所以,一切結束了么?沒有,甚至在標題上用“入門”兩個字都感到挺心虛的。通過這次學習,自己也僅僅是看到了深度學習這個領域的廣闊,更覺得自己掌握的東西少得可憐。這種感覺和剛接觸前端開發(fā)時候非常像,就是知道了哪些自己不知道的階段。
嗯,接下來的路還有很長。
最后想說的就是,人工智能的時代真的到來了。放心,在可以預見的未來電腦還不會統(tǒng)治人類的。但是用人工智能的方法加上代碼實現(xiàn),每個人都可以做出很多很酷的東西。比如我就想試著做一個去處圖片里玻璃反光的濾鏡,有了結果再分享了。
寫完了。