也談 機器學習到底有沒有用 ?

jopen 10年前發布 | 25K 次閱讀 機器學習

今天看到@52CS 文字化了@老師木談機器學習的一系列文章,其中有一篇我很感興趣的文章《機器學習有沒有用?》,文字版連接:http://php-52cs.rhcloud.com/?p=87

作為一個機器學習愛好者,也想談一下自己目前對機器學習的看法。但事先聲明,本人對機器學習研究不多,知之甚少,實踐也有限,文章觀點難免有狹隘之處。

1. 機器學習是有用的。

對于這個問題,其實大家都心知肚明了。看看鋪天蓋地的機器學習相關的論文,新聞,再看看工業界招聘的需求,動不動都會寫上:有機器學習背景者優先,甚至在去年預測的十大改變未來的技術中為列第一位的就是深度學習技術。為什么這么多人關注機器學習呢?或許正是因為它有用吧。具體到自己從事的互聯網行業,眼睜睜看著機器學習技術的不斷改進對產品收益的不斷提升,沒有比這個事實更能讓人信服的機器學習有用了。當然,也有一些其他領域的項目聲稱用了機器學習技術之后沒有帶來明顯的變化,原因可能有二:1)這個項目不適合用機器學習技術;2)沒有用對機器學習技術。

2. 機器學習的優勢在哪里?

這個問題要從機器學習的具體應用方式來講,以我看來,當前有兩種大的應用方式:1)組織和擬合參數;2)學習特征表示。(這里可能有人不太贊同,如果你把特征表示也視為參數的話,第二種其實也算是第一種的特殊案例吧)。在機器學習發展不算長也不算短的幾十年里,可以說第一種方式是占主導和統治地位的。而且這種思想更嚴重影響了機器學習的主要應用領域,如自然語言處理,圖像分類等等。甚至你現在問這些領域的教授,他們解決一個具體問題時依然是這種思維。為什么這種思維影響這么大?原因有二:1)這種解決問題的思路簡單但有效,看看NLP領域的paper就知道,對于不同的問題,抽象成一個機器學習可解決的問題,然后就同一個套路來求解了,而且效果往往不錯。2)機器學習自身的發展過于強調實際應用和算法,理論研究相對滯后。這方面其實我沒有發表意見的權利,吃過的鹽太少。但聽到過一些大家談論過相關的話題,我想這個說法也不算為過。一個突出的具體事實你可以讀機器學習領域的一些論文,你會發現只要實驗結果好,算法能不能證明,甚至最終能不能收斂都不是大問題。就連當前最最火的深度學習,99%的人也只是看到它work,為什么work,能不能更 work都沒有詳細的理論分析。

回到機器學習的優勢這個話題。我目前狹義地認為機器學習只不過是起到了自動調節各因素權重,綜合學習出來一個組合而已。它為什么有作用?不在于它比人更聰明,僅僅在于它能處理的數據量更大,超過了單個人的處理能力,也超過了多個人協作處理的能力。在當前全民大數據的背景下,機器學習也會被吵得更火,捧的更高。但目前深度學習的操作中,領軍人物是一般是從第二個應用方式(學習特征表示)來發展機器學習的,這或許是思維的一個大轉變。

3. 要不要深入專研機器學習技術?

說機器學習是計算機領域最為火熱的topic應該沒有太多人反對吧,接踵而來的就是各種相關的學習材料,書、論文、技術報告、視頻,甚至大牛的對話都成為人們關注的焦點。也有一大群比我還有興趣的愛好者來參與其中,呵呵。不過坦率的講,我已經慢慢回歸理性,對該領域的成果和人物沒有之前那么崇拜了。就個人而言,我非常認同@老師木的觀點,機器學習學多學深了沒有太大用處,還不如多提高自己的編程能力實用。如果非要說出了子丑寅卯來,我覺得有以下幾個原因:1)實踐是檢驗真理的唯一標準,研究者給我們那些條條框框還有所謂的經驗,不一定完全正確,至少某些情況下是不太對的,唯一永恒正確的就是不斷的去試,好了就好了,壞了就壞了;2)機器學習是一個很跨界,很四不像的東西,你要真想想明白背后的原理,做到融匯貫通,沒有概率、矩陣、統計、信息方面的大量儲備以及還不錯的智商和記憶力的話,想把一個很簡單的東西用稍微理論的方式說明白很難。而且這個領域的新東西太多,你先要識別出哪些是灌水的,哪些是老生常談的,哪些是真正有用的也需要花一些時間的。3)只需要熟悉幾個常用的算法,然后結合你的領域知識用好他們就能做到90分。這個可以看百度少帥@李沐的那篇關于大數據特征工程的文章,機器學習的應用是否成功,很大程度上取決于特征,而不是算法。(現在在圖像和語音領域,這一說法似乎可以稍微放松些,因為最近deep learning確實做了一些能對特征處理不那么依賴的工作)。

4. 深度學習還能火多久?

雖然讀了一些相關的材料,但回過頭來想一想,什么sparse coding、autoencoder、Word2vec、cnn、rnn等等,和最基礎的聚類和分類算法也沒太大的不同,唯一的不同可能就是所謂的 “Deep”嗎?其實這里我真想再說一下我對word2vec的理解,單從作者發布的幾篇論文來講,這個模型連Deep都稱不上,嚴格來說跟深度學習半毛錢關系都沒有。對于Deep Learning在NLP上的應用,我已經從起初的樂觀到現在回歸理性了,不管Hinton還是什么Bengio再寄希望于Deep Learning在NLP上取得類似語音和圖像上的勝利,我至少目前和未來的一段時間內不會太盲目迷信他們的說法的。NLP的問題如@老師木所說,本質是結合上下文的消歧。最最重要的就是如何利用上下文,如何表示上下文。當前的研究工作說白了就是在這個方面折騰來折騰去,換換結構,換換粒度,其他的就是融進更多數據或者知識,僅此而已。再回頭看看深度學習在圖像上取得的成功,是真的達到了人類的水平了嗎?張鈸院士在一次講座中曾經指出過這個問題,不是深度學習太牛逼,是之前的技術太差,深度學習技術(如經典CNN)相對之前是好了不少,但準召的絕對值也才達到剛剛能看的地步。

回答這個問題,可能跟回答統計學習在機器翻譯上還能火多久有太多的相似之處,甚至就是同樣一個問題。在之前十年或者更長的時間里,IBM為首的一幫人的工作讓人們認識到統計學習的重要性,然后大批統計學習的東西引入到自然語言處理的各個領域,現在來看結果如何呢?NLP的那些難題解決了幾個?很不幸,至少目前來看也僅僅是多收了三五斗而已。

5. 如何學機器學習?

上面的3只是說你不用太專研機器學習,但多知道點常用的算法是無害的。所以這里的學僅僅是指多學習一些能立馬提升你應用機器學習技術的東西。(更多的我也不知道,我也只能算是機器學習實踐者,而且還是初級的)。學習任何東西,都是因人而異,因目的而已。就看你自身是怎么樣一個狀態,想達到怎么樣一個狀態了。對于沒有任何經驗的同學來說,其實是最好辦的,不要去跟什么最新的文章,最新的會議的,就老老實實的讀一本機器學習教材,中英文的都無所謂,能讀懂就行。選好一本教材,然后認真讀,中途不要說什么適合不適合的東西,第一遍也不要想著完全讀懂,先順一遍下來有個印象,知道些基本概念就行。然后再對第一遍中不太懂的章節再讀第二遍。這樣完成一本教材之后,你知道了一些常用的算法了,然后就可以著重學習一些常用的經典的能用的算法了,不要永遠只停留在 K-Means和K-NN上面,好歹咱也知道點經典的SVM、RF、BP算法吧。再然后呢就看你是想做一個實踐者還是研究者了,如果只是想做實踐者呢,最好能動手寫一兩個算法,然后用它解決幾個經典的實際問題,再對比著找一些這些實際問題的解決方法,看看自己的差在什么地方,別人的好在什么地方就更好了。舉個實際例子來講,你可能同樣是用NB算法來識別一個垃圾郵件,別人的效果可能比你要好很多,一般兩個常見的原因:1)算法的假設;2)特征的優劣。對于后者,一般就是所謂的領域知識吧,多看看別人設計的特征就知道人家對這個問題的理解程度了。對于前者呢,80%的人一般都是用非0即1的VSM,你可以假設對于每個類每個詞都是一個(條件)獨立的變量,服從伯努利分布,這樣就有M(詞的個數)只有兩面的骰子。每個郵件用這些骰子來產生,產生哪個詞就用哪個骰子。而20%的人會用更合理的假設,所有的詞是一個multi-nominal的分布,每個郵件只是用同一個這樣的骰子來產生。對于很多場景來說,后者往往是有效的。至于為什么有效?理論上我也沒太明白,但實際效果是被不少人驗證過的。

來自:http://1.guzili.sinaapp.com/?p=234

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!