雞湯文——寫給在夢想的山腰彷徨的逐夢者

雞湯文——寫給在夢想的山腰彷徨的逐夢者

來自專欄人工智慧圖像識別技術與計算機視覺(CV)1 人贊了文章

本專欄的學術性內容已經大體講完了,接下來我將會逐步補全細節,以及發表關於計算機視覺新進展的內容。此後的內容就輕鬆很多了,沒有公式,沒有複雜的數學推導,也不至於動不動就寫出代碼千行。

但是,很多朋友可能懷著滿腔熱血投身人工智慧方面的學習,中途缺因為遇到難以逾越的鴻溝而喪失信心。

請不要放棄夢想,每一個堅持本心的追夢人都是最美的!


我理解很多因為自身能力有限而放棄最初夢想的人。放棄的那一刻,想必內心是矛盾而複雜的,因為在自己專業而擅長的領域,誰也不願摔一個重重的跟頭。

曾經我有一個夢想,那就是成為一名作曲家,寫出輝煌而震撼的交響樂。然而,天生的缺陷讓我不得不面對現實:我的左手拇指是畸形,右手的小拇指也不能伸直!

我的左手拇指由於先天畸形,無法完全伸展

然而作曲對鋼琴的要求,不比鋼琴專業對鋼琴的要求要差。由於鋼琴不過關,得不到專業教育,我的管弦作曲的夢想破滅了。

但是,逐漸地,我發現了自己的另一個愛好——搖滾樂。我在讀初一那年,第一次接觸了吉他。我發現,吉他需要左手握住琴頸,我左手的畸形簡直恰到好處地卡住了琴頸,而右手的彈奏甚至也不需要小拇指。於是,吉他成了我最愛的樂器。

同時,我也接觸了管弦作曲的四大本教材:和聲、復調、配器、曲式,同時提高了搖滾樂和交響樂的作曲技能。2016年8月,我首次站在街上,帶著自己的搖滾樂團隱函數樂隊,唱出了我的原創歌曲《北街》。

2016年8月,我在家鄉淄博的首次演出

2018年,同樣是家鄉淄博,在市元旦晚會上,我唱了原創歌曲《北街》《寫給遠去的我》和《殘翅的鳥》,不過,這是經過了我的重新編曲,加入了管弦樂器,並由北京的The Symorch完成交響伴奏錄製。此時正值高三,學業繁忙,樂隊已經解散,但青春的夢想從不會散場。

之所以我選擇《北街》作為歌曲標題,是因為在我家北邊有一條高速公路,車來車往,許多人忙碌地奔波著。我曾以為,那就是夢想。實際上我錯了,就像法磐禪師所說,江上只有兩條船來往,一條船為名,一條船為利。

真正的夢想,就是堅持自己的本心,不被世俗所誘惑。既然有困難,何不迎難而上?即使鳥兒被獵槍打穿了翅膀,它也不會放棄任何求生的希望。因為,上天註定了它是一隻鳥。同樣,上天也註定了我們的夢想。

越來越多的科學研究表明,人腦的構造,與基因的關係不到30%;而由於突觸的隨機產生,人的愛好和夢想更多地具有隨機性。傅里葉也間接地暗示了這一點——上帝正在將他的劇本(頻域)變換成我們周圍的花開花謝(時域)。

對於計算機視覺方面的學習,很多人滿懷憧憬地來到了這一領域,卻失望地走出去。是的,比起其他計算機演算法,深度神經網路、卷積神經網路、反向傳播演算法等更具有模糊性和抽象性,而且需要實時交互(前向傳播)來獲取需要修改的信息,甚至正確性都不容易證明,更不用說動量和自適應學習率這些優化了。還有朋友在訓練神經網路時,由於學習率設大了,誤差越來越大;或者動量和自適應度設大了,誤差起伏不定;要不就是這些參數設小了,收斂緩慢。但是,不要灰心,畢竟參數這個東西,需要自己嘗試,往往也不能一次就能得到最優參數。

未來是人工智慧的時代,基於神經網路的人工智慧演算法也是人工智慧領域的主要支柱。與其說我們在研究人工智慧,不如說我們在模擬自己。我們將自己的思維通過代碼告訴計算機,讓計算機完成人能順利完成的高級工作。因為某些挫折而放棄一個看似複雜的研究,顯然是不明智的。

最後我來聊一聊我在學習人工智慧演算法的經驗與收穫。我接觸到的第一個人工智慧演算法是kNN(k-臨近演算法),雖說在數字識別方面的應用非常成功,但是限於kNN的缺點——頻繁計算待測數據與樣本之間的歐幾里得距離,樣本越多,雖然正確率越高,但是計算速度慢,耗時長。不得不說,kNN演算法在圖像識別方面的局限太大了。

於是高二時,我接觸了神經網路。我最先學習的神經網路是BP神經網路,即三層結構的受限玻爾茲曼機,可以看作是DNN的退化。對於它的訓練,我還是能夠理解每一步偏微分的意義的,只是在編寫代碼時,我花費了三天的時間才完成調試(因為這些神經網路的容錯性太強了,即使能夠完成訓練,代碼依然有可能是錯誤的,推薦的查錯方法是靜態查錯,即小黃鴨調試法,因為200行左右的代碼,查錯的壓力還不是很大)。

接下來我加大了受限玻爾茲曼機的層深,並將其模板化。模板化的RBM為我的很多便利,特別是在高三的時候,我利用DNN處理了高考成績和全校排名對全省排名的數據,以及名校自主招生成績分析,還有高考志願填報前的數據預測。最後結果表明,我訓練的DNN非常成功。

至於卷積神經網路,我是在高三下學期學習到的。那時由於考卷過多,老師徒手閱卷實在效率低下,而網閱設備不成熟,答題卡沒有學號塗卡區域(沒錯,我們刷的正是衡某卷),於是我得到了一個任務:編寫手寫數字識別的代碼。我們學校人數眾多(三個年級加起來5000左右),單純靠kNN,要麼準確率低,要麼效率低下。所以,我接觸了CNN。

起初我編寫的CNN學習並不順利,誤差瞬間飆升,看了論文我才知道,學習率設太大了,於是我調整學習率和動量,繼續CNN的學習。後來我發現,網路總誤差的收斂位置有點詭異,大體在4150左右收斂了(每個數字我使用了180個樣本用於學習,20個樣本用於驗證)。這下我懵了,好在我機(zhì)智(zhàng)地拿了一個樣本來測試網路,發現Softmax的結果是,每個數字的概率都為10%左右。於是我發現了問題:我的卷積神經網路寫錯了。排除了前向傳播、l2正則化的問題,結果指向了反向傳播和dropout。再次查閱論文我發現,反向傳播中卷積核在誤差層上的卷積居然是旋轉180°的(知道當時我有多傻了吧)!同時dropout也維護錯了,導致末層卷積層的偏置量被訓練得絕對值巨大。

就這樣,在逐步實踐與修改代碼的過程,我完成了卷積神經網路的模板,並成功訓練出正確率94%左右的用於數字識別的神經網路。但是除了數字識別,我並沒有在卷積神經網路上面有很多的應用。不過,我也寫了許多比較有趣而經典的識別,比如動物識別、城市與鄉村建築識別等等。後者我可能會單獨拿出一篇文章來作工程分析,以方便大家更加理解基於卷積神經網路的圖像識別技術的應用。

其實卷積神經網路還有一個娛樂性的應用,那就是「顏值評分」,即輸出層只有一個神經元(也可以有多個,那就是多種審美方向的顏值評分),激活函數為50 · Sigmoid(x)來將結果映射到(50, 100),並且沒有Softmax層,誤差函數為差值平方和公式。為此我偷拍了同學不少黑照(手動滑稽)……

(我是不會告訴你,我在樣本中給自己的照片都打了100分,再次手動滑稽)

(不過驗證集中我用了一張自己的帥照,一次失敗的訓練讓那張圖片的評分變成了59分,於是我放棄了那個CNN,重新訓練)

(怎麼這麼多行都是括弧……算了,說正經的了)

於是經過驗證集驗證,擁有世界上最標準審美的顏值評分系統誕生了。

除了BP演算法,我也曾用模擬退火演算法(SA)和遺傳演算法(GA)等訓練神經網路,但是效果不如BP演算法。有興趣的朋友可以試一下。


最後,怎麼說呢,我們正在探索一個混沌的領域——模糊數學。在這裡,繁雜的數學推導甚至不如多去親身嘗試對於我們的學習效果更明顯。夢想坐落在布滿荊棘的大山之巔,逐夢者們,勇於探索吧,未來屬於你們。加油吧!


推薦閱讀:

純Python實現鳶尾屬植物數據集神經網路模型
論文筆記:圖像風格轉換(一)
吳老師-『神經網路與深度學習』第四周
AI寫程序,這事可沒那麼簡單!
深度學習筆記12:卷積神經網路的Tensorflow實現

TAG:心靈雞湯 | 雞湯文 | 神經網路 |