如何看待「機器學習不需要數學,很多算法封裝好了,調個包就行」這種說法?
不抖機靈,想從接觸過機器學習學術圈但已投身工業界的角度來回答。
我認為:大部分機器學習從業者不需要過度的把時間精力放在數學上,而該用于熟悉不同算法的應用場景和掌握一些調參技巧。好的數學基礎可以使你的模型簡潔高效,但絕非必要的先決條件。
原因如下:
1. 即使你有了一定的數學功底,還是不知道怎么調參或者進行優化。
這話說的雖然有點自暴自棄,但捫心自問在座的各位,當你發現 accuracy 不好、loss 很高、模型已經 overfitting 了,你唰唰唰列列公式玩玩矩陣就知道問題出在哪里了嗎?不一定。誠然,懂得更多的統計原理可以幫助推測問題出在了哪里,你可能換了一個 loss function 或者加了新的 regularizer,但結果不一定會更好。
數學基礎之于機器學習從業者很像 debugger 之于碼農,它給了你方向,但不能保證你一定可以解決問題。那怎么能解決問題?只有經驗經驗經驗,別無他法,有時候甚至靠的是直覺。數學基礎是好的內功基礎,但你調包調多了,其實也慢慢能抓到一些感覺,不必看不起 “調包俠”。
2. 工業界可以應用的模型是很有限的,可調的參數也是有限的。
工業界選擇模型非常看重可解釋性,效率,以及和整個系統的整合能力。舉例,在我的工作中,大部分時間都在使用 Regression 和 Decision Tree 相關的算法(如 Random Forests)。是因為這兩個算法***么?不,恰恰是因為這兩個算法穩定及高效,而且容易解釋。對于這樣的模型,你即使數學能力很強,能調整的參數也是有限的。根據網上的例子和經驗,大量的工程師可以在數學基礎稍弱的情況下做到很好的效果。
3. 數學 / 統計知識已經成了既得利益者刻意為外來者建立的一道壁壘。
不知道大家有多少人是從事過 ML 研究的。我個人的觀察是做出成績的 ML 研究人員是有限的,科班出身的 researcher 更是遠遠無法工業界的空缺。所以大家沒有必要擔心會被轉行者搶了飯碗,也沒有必要刻意鼓吹一定要懂矩陣,凸優化,等數學知識才配做機器學習。大家都是出來賣的,不必互相為難。說來慚愧,在工作中我常常跟老板說這個人不能用,你要用我這種科班出身的人,但我內心是不贊同的。
每當我看到知乎上有人問機器學習怎么入門,結果大家立馬推薦***本就看 PRML 和 Statitical Learning 以及一大堆公開課和數學課的時候,我的內心是崩潰的。各位答主的目標是把所有人都嚇回去還是秀一下優越感?
4. 理論模型和實際應用分的是兩塊不同的蛋糕。
承接第 2,3 點,做理論研究的發力于突破,提出新的模型或者優化方法,做應用的致力于把模型應用于數據上,攫取商業價值。這兩者不存在利益沖突,做理論的人有自帶正統光環的優勢,所以更該顯得大度一些。只有 “調包” 的人越來越多,這個行業才會繁榮,因為證明技術落了地,可以帶來實際價值。
5. 行業的發展趨勢是降低工具的使用難度,這讓我們不必反復造輪子。
亞馬、遜谷歌、微軟等各大平臺都開放了他們的機器學習工具。以前人們還需要自己寫各種模型,好一些的調一下 sklearn,但現在 Azure ML Studio 已經方便到零代碼了。年初的時候,我試了一下 ML studio,簡直方便的可怕,完全是圖形拖動連接就可以建立模型,那一刻我仿似看到了自己即將失業。
6. 文藝一點說,我們需要更包容的心態,切勿文人相輕。
想要接觸了解一門學科,應該先有興趣,才有探索的積極性。就像我們***次看到 Hello word 出現的樣子,很多剛入行的人***次看到機器學習能解決實際問題時,會產生濃厚的興趣。
我怕的就是所謂的圈內人都說你必須要會矩陣分解,必須要會用 trace 算導數,必須會優化,才能開始學習機器學習。這個周期太長,很多人連開始的勇氣都沒有~ 我覺得不管怎么樣,要先動手做起來,發現自己的不足,再去補充需要的東西。
既然學術是自由的,我們就打開大門,歡迎大家都進來坐坐。如果他 / 她不喜歡,歡迎到隔壁串門。但我們不要給自己家門壘了高高的臺階,說閑人勿進。久而久之,難免門可羅雀。
綜上,我覺得應用機器學習模型和技巧既不能完全不懂數學,兩眼一抹黑,也不該要求每個從業者都要精通各種數學理論。模型應用者要長存對理論的敬畏之心,不要總想搞個大新聞說 “機器學習也不過如此”,但做理論的也不必覺得高人一等,別人都是二等公民。
好了,不多說了,我去調包了 (滑稽)