文科生用機器學習做論文,該寫些什麼?

從“價值、必要、討論和工具”這四個角度,把一些容易踩的坑提示給你,助你順利完成研究論文撰寫。

挫折

我的一個三年級研究生,最近比較焦慮。

焦慮的原因,是預答辯的效果不理想。

最重要的原因,你肯定能猜到,是他拖延症犯了。不到最後一刻,也不肯交出初稿,說要繼續修改(其實是一直沒寫完)。最後一行字剛落筆,就直接去預答辯了。裝備都沒配齊全,就衝入了槍林彈雨的戰場,後果可想而知。

但是,他的焦慮,目前主要來自於另外一個方面,就是面對批評意見,一時有些懵。

我在文中不止一次描述過這種“文科生”——沒有IT技術背景,本科專業屬於文科類,碩士畢業論文用技術手段解決應用問題。

他的研究中,就使用了機器學習中的監督式方法,對社交媒體文本是否包含隱私內容,進行了分類訓練。在驗證集上,準確率和F1分數,都爲60%多。

這幾年,他在我的鼓勵下,不斷學習數據科學相關教程。

他看到了自己的進步,信心越來越強。從前認爲永遠無法企及的機器學習方法,現在會用了;從前面對數據無從下手,想不到解決思路,現在水到渠成。而且因爲學習MOOC,英文和數學能力也有了提升。所以,預答辯之前,他對自己論文的評價預期很高。

他沒有想到,自己的論文居然存在這麼多的嚴重問題。一時感到很是沮喪和挫折。

我把老師們給他提出的意見,在這裏列出來:

  1. 你使用了機器學習的方法,但只是調用了已經標準化的工具(scikit-learn)而已。文中對工具本身和使用方法做了過於細緻的描述,卻並沒有體現出自己的技術改進;
  2. 你對機器學習的使用,滿足於做出一個分類的結果,就如同做了一個項目作業一樣,缺乏深入的討論;
  3. 你的分類效果,只有60%多的準確率,遠不及人工水平。這樣的結果,是否有價值?
  4. 你的流程參考了一篇英文文獻對Twitter文本的隱私分類。人家已經探索了,在英文文本上自然語言處理可以分類隱私曝露程度。那你這份研究,無非是從英文換成了中文而已,是否還有必要性?

老師們的說法,是委婉而剋制的。我翻譯了一下,就是說這篇論文“工具化、缺討論、無價值、沒必要”。

現在,你明白爲什麼他要焦慮了吧?

這樣下去,連畢業都堪憂。

對於拖延,他很愧疚。給我寫了一份長長的檢查,讀來還算實事求是。

亡羊補牢,爲時未晚。

我於是幫他分析了目前存在的問題,以及對應的修改策略。下文我會一併分享給你。

你可能會奇怪——老師,這東西針對你學生問題寫的,爲什麼要分享出來呢?

因爲自從我開始在網上寫數據科學教程以來,收穫了許多讀者的反饋。從這些反饋中,我看到了來自許多專業的同學,特別是那些“文科生”,都在努力掌握機器學習方法,並且應用到自己的研究,甚至是畢業論文中。

而與此同時,從指導研究生,參加開題答辯、學術論壇,以及給期刊審稿的過程裏,我也發現,許多這樣應用了數據科學,特別是機器學習方法的研究,做出來的結果,也多會存在同類問題,讓人有類似的質疑。

很多時候,問題並非來自於研究本身缺乏價值。而在於作者在寫作的過程中,抓不住重點,不知道應該着重彙報和討論哪些東西,導致了很多的誤解

如果你也有計劃,把機器學習應用在自己的研究論文裏,我覺得後面的內容,可能會對你有幫助。

下面針對他論文裏面存在的問題,我分別談以下4個方面:

  • 價值
  • 必要
  • 討論
  • 工具

細心的你,一定注意到了,咱們這裏的內容,和老師們提出問題是相呼應的,但是順序並不一致

爲什麼呢?

希望讀完全文之後,你能自己體悟到這個順序的意義。

價值

咱們先說說價值。

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

更爲詳細的論述,請你參考我那篇《什麼樣的開題報告會被斃掉?》。

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

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

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

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

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

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

且慢。

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

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

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

他扭頭就跑了,對不對?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

跟別人的模型比嗎?

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

  • 別人的模型已存在
  • 你的模型效果優於別人的

假設別人的模型,準確率做到了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 深度學習框架,進行貓狗分類,那你根本不需要考慮任何特徵提取的問題。寫以下幾行代碼就可以了:

from fastai import *
from fastai.vision import *
from fastai.docs import *

untar_data(DOGS_PATH)

data = image_data_from_folder(DOGS_PATH, ds_tfms=get_transforms(), tfms=imagenet_norm, size=224)
img,label = data.valid_ds[-1]

learn = ConvLearner(data, tvm.resnet34, metrics=accuracy)
learn.fit_one_cycle(1)

好了,從數據獲取,到模型構建,甚至是結果分析,全都做完了。

這幾行代碼構建的模型,能有多高的準確率呢?

答案是這樣的:

對,你沒看錯,即便是這幾行代碼,只把數據跑了一個來回(epoch),貓狗分類準確率就已經超過 99% 了。

正是 Scikit-learn, Tensorflow, Keras, fast.ai 這樣的開源框架不斷涌現,大批優質教程擴散傳播,機器學習才能在幾年的時間裏,從高不可攀的“祕密武器”,變成了每個人觸手可及的研究工具。

你要明白,能讓你這麼簡單使用如此強大的工具,是千千萬萬人協作的結果。而你,是這一張協作網絡中的一份子。

你應用機器學習工具,做有意義的研究,就是在給這張網絡做出回饋。

嘗試擴大機器學習的應用領域,讓更多的人意識到新工具的特點和功能,並且一起來學習使用它。這些,都會給你論文的意義和價值加分。

既然沒有門檻,大家都能用,那你這麼強調它幹嘛?

我在《如何選研究題目?》一文中,也給你談到了信息科學界一流學者的共識,即千萬不要工具導向

當你手裏只有一把錘子的時候,看什麼都像釘子。但是當你擁有豐富的工具箱時,你會實事求是,用合適的工具處理對應的問題。

時刻記住,你的研究,無論如何應該是從問題出發的。機器學習恰好適合解決這個問題,那就用它。否則,該用什麼適合的方法,就用什麼。

小結

針對預答辯的反饋意見,我從“價值、必要、討論和工具”這四個角度,幫你分析了論文中問題產生的原因,以及具體的對策。

小結一下,就是:

首先,一定要把握價值。根據研究的特殊性,選擇合適的評價體系,加以合理闡釋;

其次,說明必要性的時候,一定要了解機器學習和傳統算法解決問題的本質差異。尤其是不要忽視數據這個重要維度;

第三,論文不是演示,不能缺乏討論。通過讀文獻,掌握討論、比較的具體方法,利用可視化的方法提升證據說服力,要着重強調模型是如何被訓練出來的,而不是模型自身的算法;

第四,千萬不要踩進“工具導向”的坑。要看清楚簡單易用的機器學習框架背後,這個巨大的、快速進化的協作網絡。既要隨時跟蹤最新進展,站在巨人肩膀上前進,又要時刻告誡自己不要高估自己個體的作用。

另外,就是我希望你也能夠通過自己的研究,給學術界和機器學習技術社區以正向反饋。

寫得內容有點兒多,希望你能認真讀完。抓緊時間修改完善論文吧,力爭順利畢業。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章