
不願意看那一堆公式符號,卻想知道卷積神經網路(Convolutional Neural Network)如何做影象分辨?分享一段我給自己研究生的講解答疑視訊,希望對你有幫助。
茫然
常有朋友問,我的Python和資料科學課程開在哪個學期,他們想過來蹭課。
不好意思,這個真沒有。
我寫了一系列的資料科學教程。但原本只是給我自己的研究生賦能,並非課程講義。

他們有的人,本科學的專業,與技術毫不沾邊。
但是情報學是個交叉學科。尤其是近幾年,與資料科學融合愈發深入。
往周圍看看,其他社會科學專業,例如新聞學、心理學、社會學、政治學等,都在利用開放網際網路資料集,做以往無法想象的大規模資訊分析。
在這種情況下,你一個情報學研究生,處在原本就有資料分析優勢的學科,卻一點兒也不掌握資料科學技能,出門好意思跟其他同學打招呼嗎?
於是我給他們寫教程,寫儘量讓文科生能看懂的教程。
事實證明,他們能跟著教程,做出來結果。

但是,我在《Python程式設計遇問題,文科生怎麼辦?》中說過,“照葫蘆畫葫蘆”,只是你入門資料科學的第一步。
你需要理解技術應用的前提和方法,這樣才能應對自己的研究問題,利用適當工具,加以解決。
本週的組會上,我聽一年級研究生論文翻譯展示,明顯感覺他們對於卷積神經網路結構與原理,依然不清楚。

我很奇怪。
因為我專門為他們寫過至少2篇文章,都是講如何利用卷積神經網路做影象處理的。
而且,他們還用自己的資料集,重新做過訓練與測試。
在文章裡,我還給他們介紹了深度學習模型的基本原理,並且在文末詳細列出了參考資料,供延伸閱讀。
這麼長時間過去了,怎麼還是懵懵懂懂?
倘在從前,我肯定要訓人了。
因為怎麼看,這都是學習態度不端正的問題。
但是,有了同理心訓練基礎,我突然能夠理解他們的茫然與苦惱了。
同理
他們看到的延伸閱讀材料,像一個黑洞。
這個黑洞吸收他們的時間和工作量,卻看不到任何正反饋。
因為他們缺乏基礎。
要學好深度神經網路,並不需要多麼高人一等的智慧。但是一些基礎要件卻很重要。這些基礎包括:
- 程式設計
- 數學
- 英語
如果有這3個基礎,你根本無需導師幫助。自修 Coursera 上 Andrew Ng 《深度學習》這樣的精品MOOC課程,就會讓你成長迅速,大呼過癮。

可是對國內的文科生來說,上面列出的幾個基礎要件,可謂是“三座大山”,能壓得他們寸步難行。
程式設計沒學過,數學早忘了,英語不過關。
你讓他們一點一滴從頭學起,全部補齊?
即便真補完整了,也該畢業了。
還做什麼研究?
誠然,老師可以幫助他們精簡學習模組。
程式設計不好,沒關係。
不要去碰 Tensorflow 的神經網路結構搭建細節語句,只要會用最簡單的 TuriCreate 呼叫遷移學習工具,幾行程式碼搞定影象識別。
英語不好,沒事兒。
我把教程給你用中文寫出來。你直接照著做,就能出結果。
但是數學不好,理解不了神經網路模型的原理,怎麼辦?
從前我也是束手無策。
要麼把整個工具當作黑箱,只知道輸入輸出,就能做出結果來。

但這是使用者的態度,不是研究者的態度。
這種低水準認知,可能讓你有機會充分實踐什麼叫“垃圾進,垃圾出”。
很多對統計學一無所知的學生,不就是這麼玩兒SPSS的嗎?
想到這裡,我突然靈光一閃。
借鑑
統計學對很多文科生,也很難學。
他們是通過什麼途徑學會的呢?
是一種“有限度拆解”。
只學會匯入資料,點按鈕出圖表,顯然不夠用。
但是從頭推各種分佈的公式,講解閾值設定(例如那個神奇的0.7)的原理……人早就跑掉了。
怎麼辦?
我想起來了李連江教授的這本書。

李老師的態度,是原理要講清楚,不能讓學生隨便“拷打”資料。
但是又不能深入到底層數學原理,那樣很多文科生根本就看不懂,甚至會很快喪失掉興趣。
他的辦法,簡單而實際。
就是舉例子和打比方。
用一個SPSS自帶的僱員例子,他解釋了好幾章的內容。從資料的型別,一直到多元迴歸。
因為有了實際樣例,學生充分代入,就好理解。
講到因子分析,做旋轉。這個怎麼講?
他用了兩個比喻。
一個是三大男高音,代表3個因子。
三大男高音同臺的演唱會,觀眾如潮。

有的觀眾愛聽多明哥,有的愛聽卡雷拉斯,有的是衝著帕瓦羅蒂來的。
但是觀眾們都坐在一起,你分不清哪個觀眾究竟是哪位歌唱家的粉絲。
怎麼辦?
讓男高音們分開唱,唱對臺戲。
這是第二個比喻。
一旦有對臺戲,觀眾選擇的座位,就明確代表了態度。
某個問項,歸屬於哪個因子,也同樣可以通過因子唱對臺戲(旋轉)來分辨。
讀了《戲說統計》,我覺得講得真好。
但是我後來看了李老師的課程視訊,覺得收穫更大。
因為視訊的資訊傳播更加豐富。
同樣是剛才的例子,因為有了影象化解讀,學生可以理解得更加透徹而深刻。


尤其是,每當講到研究中統計結果出來,需要一些“不足為外人道”、“社會科學界有共識”的操作手法,李老師的笑容,總能讓人跟著忍俊不禁。
講解
有了李連江老師的例子做參考,我用組會的剩餘時間,以板書的形式,一步步為研究生們講解了以下內容:
- 深度神經網路的基本結構;
- 神經元的計算功能實現;
- 如何對深度神經網路做訓練;
- 如何選擇最優的模型(超引數調整);
- 卷積神經網路基本原理;
- 遷移學習的實現;
- 疑問解答。
我沒有追求最大化的嚴謹,也沒有對例子的通用性和實用性做更多的要求,只是從頭到尾,把一個簡化到極致的影象識別模型,與客戶流失預判模型進行了對比講解。
同樣的,我用了樣例,也用了打比方,盡力把聽講的認知負荷,降到最低。
過程中,我要求學生隨時提問。因此互動很密切。
講解完畢後,他們幾個表示,這下終於弄懂了卷積神經網路的基礎知識。

由於最近閻教練的工作坊訓練了視覺記錄行為,我講了幾分鐘後,突然覺察到這一段可以錄下來,分享給更多人。
於是我讓坐在前排的楊文同學,幫我錄製了視訊。
視訊中沒有能包含最初的幾分鐘內容,即剛才列表的前兩個部分。頗為遺憾。
不過沒關係,過一段時間後,我準備組會時讓研究生上講臺,把這一段複述一遍,作為學習效果檢查。
如果他們做得好,我會錄下來,分享給大家。
他們還不知道我的打算。
所以你看見後,別告訴他們。噓!
這段視訊時長接近30分鐘,不算短。
如果你和他們一樣,讀過了我的《如何用Python和深度神經網路鎖定即將流失的客戶?》、《如何用Python和深度神經網路識別影象?》和《如何用Python和深度神經網路尋找近似圖片?》這幾篇文章,但是對於深度神經網路的原理構造還是迷茫,建議你從頭看到尾,可能會有一些收穫。
歡迎點選這個連結,觀看視訊。
有言在先,因為是即興講解,沒有任何準備。內容如有疏漏,在所難免。
歡迎各位高手幫助指出紕漏,我會在將來的講解中,迭代改進。
提前謝過!
討論
你是如何學會卷積神經網路工作原理的?對於研究中遇到的數學公式,你有沒有什麼更好的辦法理解和掌握呢?歡迎留言,把你的經驗和思考分享給大家,我們一起交流討論。
喜歡請點贊。還可以微信關注和置頂我的公眾號“玉樹芝蘭”(nkwangshuyi)。
如果你對資料科學感興趣,不妨閱讀我的系列教程索引貼《如何高效入門資料科學?》,裡面還有更多的有趣問題及解法。