1. 程式人生 > >研究生論文價值、必要、討論和工具

研究生論文價值、必要、討論和工具

  • 價值

  • 必要

  • 討論

  • 工具

價值

咱們先說說價值。

研究價值,是一篇論文的靈魂。文字寫得再精妙,如果沒有研究價值,也不值得做。

這裡涉及到一個具體的價值評判標準問題:如果機器分類效果,比不上人工水平,那麼值不值得做?

直覺會第一時間告訴你——不值得啊!既然人可以做得更好,就讓人做唄。只有機器效能超越了人類,研究成果才值得發表嘛!

但是,仔細想想看,這種論斷,不僅和學術界的共識不同,也違揹你的常識。

你叫來一個人,讓他分辨一張照片是貓還是狗。他會覺得小菜一碟,準確率也會很高。

反之,你讓機器來判別貓和狗。即便是目前最尖端的計算機視覺技術,也會出現在人類看來,非常顯而易見的疏漏。

你可能會因此對機器的“智慧”嗤之以鼻。

且慢。

剛才的情境,只是去分辨一張照片。對吧?

十張八張呢?似乎也沒問題啊。

可假如,你讓這個人分辨一千萬張照片呢?

他扭頭就跑了,對不對?

因為這個任務,不僅繁重,而且枯燥,機會成本太高。

有做這件事的時間,他可以做很多更有意義和趣味的活動。

機器的好處,這時候就體現出來了。它任勞任怨,不知疲憊,運算速度還快。可以幫我們在很短的時間內,完成成千上萬張照片的分辨結果。

你說分析這麼多張照片,真的有用嗎?

當然有。往遠了說,你可以看看電影《少數派報告》,瞭解一下大規模圖片分析的前景。往近了說,你可以回顧一下新聞,看看那些過馬路闖紅燈的行人,是如何立即連同個人資訊,被展示在大螢幕上的。

這就是人和機器的區別。我們懶,我們喜歡精彩,不喜歡重複。發明機器,讓它們替我們做自己不願意從事的工作。哪怕機器做的,不如自己做得好,我們也能忍受。或者說,也得選擇忍受。

你現在做的這個研究,是通過機器學習的方法,來輔助使用者判斷,他即將釋出的資訊是否包含隱私,並且進行提醒,防患於未然。

一個主流社交媒體平臺,每天要有多少人發信息?每一條資訊都讓人來幫你判斷是否包含隱私,來得及嗎?靠譜嗎?誰又能來支付這麼龐大的成本?

而且,你立即想到了一個更大的不妥吧。

對,你要釋出的內容,如果包含了隱私,卻已經被平臺僱傭的稽核人員一覽無餘,預先看了去。那還何談隱私保護呢?

所以你看,這個任務,交給計算機來做,比交給人來做,靠譜許多。

因此,在你的研究中,把分類效果與人工水準進行對比,沒有必要,也沒有道理。

但是人工分類水準卻不可不提,它應該出現在你的資料標註環節。

監督學習是需要訓練資料的,即資料要有標籤。這些標籤,是人打上去的。人標註的準確率,直接關係到你的資料質量。馬虎不得。

你訓練的模型,分類效果如果不跟人比,那跟誰比呢?

跟別人的模型比嗎?

要對比別人的模型,前提有兩個:

  • 別人的模型已存在

  • 你的模型效果優於別人的

假設別人的模型,準確率做到了70%,那麼你即便做到69%,也別寫了。因為沒有價值

但是,每一個學科領域,甚至是具體的研究問題,如果要應用機器學習監督分類,都會有第一篇文獻,對吧?這可算作是探索性研究

這樣的研究,該跟誰去比呢?

通例是,跟一個空模型(null model)去對比。

什麼是空模型?

還記得許多教科書裡面,告訴你對資料要做平衡分類嗎?就是二元分類任務,訓練集和測試集裡面,都是50%貓,50%狗。

你可能一直約定俗成也這樣做。但是為什麼?

現在原因就呼之欲出了。

這麼做,你可以很容易構造空模型。

所謂空模型,就是在貓狗分類中,不分青紅皁白,也不去分析圖片特徵,把所有的樣本都猜測成“貓”(或者全都猜成“狗”)。這就是一本正經地亂猜

想想看,這樣的空模型,準確率是多少?

當然一定是50%了。不會更高,卻也不會更低。穩定得很啊。這個數值,也稱作隨機基線準確率(Random Baseline Accuracy)。

好了,你就跟它比。

只要比空模型好,就意味著你的模型存在意義,因為看起來,它從樣本的特徵中把握到了有用的資訊,比瞎猜強。

注意,這裡你要通過完整的規範論述流程,排除隨機性的影響。後文會有詳細說明。

看到沒有,只要你的模型,是這個細分領域中的第一個,那你就不需要跟別人的模型,錙銖毫釐去爭短長。

這也是為什麼,我一直對你的拖延症有意見。

科研活動不是一次散步,可以讓你從容遊覽把玩。它是一場賽跑。跑到第一個,你只需要跟空模型比。你的研究,會被賦予開創性探索性的標籤。而且很有可能,因為這種先發優勢,被後續許多研究引用,讓你獲得與自己的實際投入並不相稱的學術聲譽。這是典型的“低垂果實”,也叫做“甜買賣”。

而一旦跑慢了,成了第二名進入者。那不好意思,你就只能淪落到和別人去比了。如果你研究的,是一個很有價值的問題,那即便你拼盡全力,讓自己的結果短暫領先。人們也幾乎可以斷言,你很快就會被後來者超越和淹沒。而且這些後來者會不會記得引用你的成果?難說。

你做的到底是開創性,還是探索性研究?

這個問題,只有你自己才能回答。因為你係統梳理過文獻啊。在中文社交媒體文字上進行隱私分類,別人做過了嗎?

你當時告訴我說,沒有。

我相信你,認為你說的是事實。

然而,我必須提醒你注意,事實是在不斷變化的。

一年前,你開題的時候,沒人做;並不代表一年後的今天,也沒人做。所以,你得不斷跟蹤研究進展。萬一很不妙,因為你手慢,已經有人做了。那你的研究,就不是探索性研究了。和空模型對比,就不再合適。你必須轉而正面迎戰,和別人的結果去對比。想盡一切辦法提升模型效果,形成競爭優勢。

如果遇到這種情況,你大概會嘆息自己的運氣糟糕。但是,那也是沒有辦法的事。誰讓你拖延呢?你不該做的,是“選擇性失明”,假裝視而不見。要知道掩耳盜鈴,可是大錯特錯,直接會影響別人對你學術品德的判斷。

必要

因為被批評後信心不足,於是你開始懷疑自己。你說雖然自己做的是中文文字隱私分類,之前文獻回顧中,沒見到有人做。但是英文文字隱私分類不僅有人做過,而且你還參考了人家的流程步驟。那麼自己的研究是否有必要性

如果你在這一點上,質疑自己的研究,我只能說,你對機器學習的本質,還沒有充分領悟。你對資料分類的理解,還停留在 software 1.0 階段。

什麼叫做 software 1.0 ?這是 Andrej Karpathy 提出的概念。

解決一個問題,software 1.0的手段,是人來設計演算法,機器照章執行。

所以,它即便再高妙,也不可能超越人的思維侷限。它的複雜度,也就到那兒了。

例如前幾天有個刷屏的遊戲,據說是中文系畢業的人做的。因為程式設計師跑路,這位仁兄不得不親自上陣。因為缺乏演算法基礎知識,所以他自己手寫了幾十萬個 if 語句。這樣居然還沒有 bug !聽起來非常勵志。

勵志歸勵志,但是所有 software 1.0 程式的複雜度,和基於機器學習的 software 2.0 一比,差距高下立判。

software 2.0的定義,是以不斷積累的資料作為約束,在演算法空間搜尋,利用優化器,自動構建軟體模型。

這麼說有些抽象,給你舉個例子。

曾經,人造出來的下棋程式,根本打不過人類頂尖高手。

然而,一旦用上了機器學習,圍棋大師也只好黯然神傷。

因為機器是自己從資料中嘗試挖掘規律,自己構造模型。這樣,它可以通過大規模增長見識,迅速提升表現,甚至是超越人類。因為“人為設定演算法”這個玻璃天花板,已經被悄悄移除了。

因此,對於機器學習來說,你用的模型越複雜,就越需要高質量、大規模的資料支援。

聽明白我在說什麼了吧?

資料的地位,空前提高。特別是那些大規模標註資料。

你做這個研究的時候,有現成資料嗎?

沒有吧。

雖然社交媒體的資料,可以通過爬蟲來便捷獲取。但是對這些資料的分類標註,才是重點。

你組織人力,付出時間和經濟成本,才獲取了有標註的資料集合。這個過程中,你實際上已經解決了很多問題。

例如說,怎麼把資料標註樣本進行拆分,讓若干標註者有序並行工作?怎麼把任務描述得清晰無歧義,讓個體的標註具備穩定性和一致性?標註結果該如何取信,如何評估,如何驗證?什麼才算做足夠多的資料?……

對機器學習來說,如此重要的環節和內容,被你一筆帶過。彷彿你用的,不過又是一個別人早已採集、清理和釋出的公共資料集而已。因此,讀者誤解你的實際工作,把全部注意力,放到你模型的準確率評判上面。

你這麼寫論文,就叫做暴殄天物。

要知道,現在有的期刊,已經可以刊載“資料論文”了。你構造了一個好的資料集,本身就可以看做科研成果。是可以跟研究論文獲得同等貢獻對待,也是可以被引用的。

例如上圖這篇論文中,3位作者利用 Zalando 影象資料庫,構建了一個機器視覺分類的資料集 Fashion-MNIST,並公開發布。論文發表1年,已經被引用了154次。

另外,你真的只是構建了一個數據集而已嗎?

然後,你就拿著那篇英文文獻的方法,開心地套用到這個中文文字資料集了?

開玩笑!

你不用分詞嗎?你不需要構建和迭代停用詞表嗎?你不需要選擇模型結構嗎?

該重點寫的,研究裡面的獨特內容和實際工作,你都不好好寫。不該寫的,你反倒寫了個不亦樂乎。說你不會討論,不冤枉吧?

討論

我之前為你寫的教程,很多都會結束在“做出結果”。我給你推薦的 Coursera 平臺的 MOOC 裡面,專案作業也只會要求到這一步。

這沒有錯啊。教程的目的,是讓你會用方法和工具。

但是不要忘了,你現在撰寫的,不是教程,也不是作業,而是論文。

什麼是論文?

它是你和學術共同體溝通的資訊單元,反映的是你做的研究。寫作的目的,是讓他人相信接受你的研究。

論文要被別人接受和採信,得靠能自圓其說

你提出了一個問題,找到了資料,應用了方法,做出了結果。但是結果本身,是不是能夠讓人信服,說你解決了問題呢?

這可不一定。即便你的結果很顯著,也不一定。做到這一步,只能叫做演示

因為這個世界上,存在著一種叫做小概率事件的東西。中彩票頭獎概率很低,但時常也有人會中。俗話說得好,誰家過年不吃頓餃子?

所以你寫論文的時候,腦子中時刻要有一根弦兒,就是得說服別人,你的模型達到這種效果,不是巧合

查科同學前幾天在咱們團隊群裡,分享了一篇自然語言處理最新進展的論文。我希望你認真讀一下,看看該文的作者,是如何討論結果的。

僅從結果來看,模型效果已經是非常顯著了。因為按照表格中資料對比,這種模型,已經超越了人工水平。

然而,你會看到作者是在非常認真細緻地討論這種結果取得的途徑。他嘗試了各種排列組合,在多個數據集上進行了對比……最終,讀者會被說服,這個模型確實由於設計的精妙,達到了目前最高水準(state of the art)。

別誤會,我不是讓你照搬該論文的討論流程和敘述方式。因為人家就是在跟別人的模型比;而你,是在跟空模型比較。

而你做出來結果之後,其實是在亂比較。居然用隨機森林和決策樹模型,對比效果。

你討論的重點該是什麼呢?並不是你的模型最優(不論是決策樹,還是隨機森林這模型,都不是你提出的),或者你的工具最好(scikit-learn的研發你也沒有參與),而是機器學習方法,適合於解決中文文字隱私分類問題。

你不覺得很奇怪嗎?隨機森林模型的效果,在大多數情形下,就應該優於決策樹模型。那在咱們討論分類模型選擇的時候,為什麼二者都保留了下來呢?

因為你不應滿足於演示模型分類效果優於空模型,關鍵是說服讀者,這種優勢不是隨機獲得的。

怎麼辦呢?

我在《如何有效溝通你的機器學習結果?》一文中給你講過,視覺化是一種非常好的結果溝通手段。而在《貸還是不貸:如何用Python和機器學習幫你決策?》一文中,我曾經給你展示過,決策樹模型的一大優勢,就是可以做出這樣的視覺化圖形:

想想看,你用的方法,是基於關鍵詞的特徵。那麼如果能夠描繪決策判斷過程中,哪些詞會導向隱私分類結果,哪些詞能導向非隱私分類結果,是不是就可以幫助讀者瞭解,你的模型是否真正抓住了自然語言中蘊含的資訊表徵(representation)?

另外,演示了一個決策樹視覺化圖形,你又覺得完事大吉,不知道後面該討論什麼了?

注意,模型自身演算法並不重要。重要的是,它是怎麼被訓練出來的。

莫非你對於每個分類模型,都滿足於直接呼叫預設引數了?

有沒有進行超引數(hyper parameter)的調整?

有沒有遇到過擬合(over-fitting)或者欠擬合的(under-fitting)問題?你是如何處理的?

有沒有繼續採集更多資料?有沒有嘗試更換不同模型結構?

優化器(optimizer)你是如何選取的,為什麼?

學習速率(learning rate)你是怎麼設定的?會不會導致模型學習太慢?或是難以收斂?亦或陷落到區域性最優中,難以自拔?

你在特徵工程(feature engineering)上做了哪些努力?要知道,你做的並不是深度學習,所以特徵的有效提取和轉化,是非常必要的。

如果你把上圖的例子都忘了,請務必複習回顧我在《如何用機器學習處理二元分類任務?》為你做的詳細解讀和說明。

工具

雖然我一直鼓勵你學習機器學習和深度學習這樣的方法,用好 Keras 和 scikit-learn這樣的優秀框架工具。但是你真的不應該因為掌握了它們,而沾沾自喜。現在看你的論文,就彌散著這種味道。似乎你會用機器學習,所以很了不起。

這種驕傲的態度,也會讓讀者和評閱專家反感。

說句讓你不那麼開心的話——你能夠如此快速地掌握和應用這些前沿技術,主要是因為門檻越來越低。

以影象處理為例。2012年以前,如果你要讓計算機對貓狗照片分類,並且獲得很高的準確率,幾乎所有前沿學者都會告訴你:

那是不可能的!

因為他們用的方法,是手工提取特徵。然後再讓機器,對手工提取後的特徵,進行分類操作。

上圖來自這裡。它介紹了手工特徵提取的不足。不難看到,為了給“熊貓”圖片有效提取特徵,你需要考慮多少種情況。特別是看到熊貓打滾的時候,你會有怒火中燒的感覺,恨不得勒令它保持一個姿勢,不要動。

因此,當時的分類演算法,特別“勞動密集型”。如果你想在國際大賽中取得佳績,真是得“一分耕耘,一分收穫”。

可是現在呢?

假如你用 fast.ai 深度學習框架,進行貓狗分類,那你根本不需要考慮任何特徵提取的問題。寫以下幾行程式碼就可以了: