缺失何在?當下機器學習教育的短板
大數據文摘出品
來源:thegradient
編譯:Fisher
隨著機器學習的日益流行,網上出現了越來越多的在線課程,個個都說自己在教“開創AI職業生涯”的必備技能。
不過,在注冊一門課之前,你應該了解你將要get的技能究竟能否直接幫你把機器學習玩得更轉。這點不只限于在線課程,也針對很多大學里開設的機器學習課程——學生們趨之若鶩的這些課程,真的能幫他們達成他們的實際目標嗎?
機器學習教育的現狀
在參與過一所AI方面頂尖大學的機器學習基礎課程的主干之后,我發現了大部分此類課程所遵循的大綱:它們傾向以線性分類器開始,在引入回歸和分類兩個概念的同時介紹損失函數和最優化,隨后會有一兩周來細講反向傳播,然后就完全進入到神經網絡。
如果該課程主要關注深度學習,它會用剩下的大部分時間討論各種神經網絡(循環神經網絡RNN,長短期記憶網絡LSTM,卷積神經網絡CNN,等等)和最近發布的重要架構(比如ResNet,BERT)。
反之,如果該課程更關注一般性的機器學習,它會介紹其他的機器學習方法分支,比如無監督學習和強化學習。
我們可以把這些課程的關鍵論題提煉出來:先是對有監督學習作一概覽,再對有監督學習和神經網絡的數學基礎做簡要介紹,繼而或者介紹深度學習的各種方法,或者介紹機器學習的其他領域。
另外,看一看課程作業涵蓋的內容,也有助于我們弄清楚該課程的主要目標。
作業通常被組織成如下形式:
- 學生得到一個結構化良好的數據集;
- 介紹一個機器學習中的模型或者核心概念,然后學生把這個模型的基礎推演一遍;
- 學生實現這個模型;
- 在給定的數據集上跑模型,做一些輕量化的超參數調試;
- 畫出結果來看模型表現如何。
在了解課程內容和作業設計之后,我們基本上知道了這些課程期望學生學到什么。它們希望學生掌握相應領域的關鍵模型,而它們采取的方法就是簡單地涵蓋了所述模型的理論基礎,然后要求學生在作業里實現其主要的關鍵功能。
把機器學習用起來需要的技能
通過跟機器學習工業界的行內人士聊天,我了解到有幾個關鍵技能是成功必備的。首要的技能就是學會如何妥善清洗和分析數據。
我的一位同學非常認同這一點,他在最近的一次實習中花了8周時間來收集和處理數據,然后才能著手把模型用到數據集上。機器學習模型極度依賴數據,因此,掌握這項技能非常重要,它將確保你知道如何利用數據集的關鍵特性。
其次,對工業界的項目而言,大多數任務是找不到大型數據集的。因此,許多深度學習技術無法使用——可能會帶來過擬合以及泛化能力差(poor generalization)的問題。相應地,人們常常用更簡單的、不需要大量數據的模型來作為替代方案,比如隨機森林或者logistic回歸。
這樣一來,能夠用合適的庫(比如sci-kit learn)妥善地使用這些模型就成了很有價值的技能。事實上,一個朋友告訴我,他在微軟公司的機器學習崗位上實習時,整整一個夏天都只是在跟logistic回歸的各種變種打交道。另外,隨著計算機視覺和自然語言處理領域的大型預訓練模型的出現,深度學習有時候只是一個精細調參的過程。這進一步增加了熟悉簡單、基本的模型的重要性。
但是,對學術界的研究來說,大型數據集通常容易得到,時間限制也不是大問題,因此我們可以訓練更大的深度學習模型。例如,Open-AI的GPT3模型足足有1750億個參數。要造出這么大的架構,關鍵是要知道如何從工程上設計和搭建這樣的一個大型深度學習系統。這就需要精通PyTorch和Tensorflow兩者中的一個,這項技能讓研究者能夠快速有效地實現一個理論模型。
把需要的架構造出來很重要,但是大部分模型還需要進行超參數調節才能有良好表現。在搭建實用的機器學習系統時,非常關鍵的一項技能就是對調節過程的設計有直覺把握,而非盲目地去調節。就拿我一個最近在英偉達實習的朋友來說,他有一段時間死活調不好某模型的參數,直到最后發現是他選擇的初始化區間有問題,導致模型中的多數ReLU激活函數處于抑制狀態而使得學習遲滯。
缺失何在
既考察了機器學習教育的現狀,又討論了真正的機器學習實踐所需要的技能,現在我們可以評論一下教育的缺失何在了。對比課程涵蓋的內容和實踐的要求,有一點很清楚,學生們所受的關于如何管理數據的教導是有欠缺的。
一方面課程提供的數據集很干凈,已經做了很好的預處理,另一方面,除了畫出幾個數據點,課程也沒有鼓勵太多的對數據的挖掘。這種對數據集進行清洗和挖掘的一手實踐的缺乏,對學生真正上陣時的實踐能力非常不利。
另外一點,盡管課堂上提供了對關鍵理論框架的數學背景的直覺式的講解,但是為什么特定任務下給定的模型就比其他模型要有更好的表現,這背后的理論給學生們講得不夠。結果就是,盡管學生也熟悉不少模型,他們還是不知道哪些模型最適合給定的數據集和任務。不完全懂得關鍵模型和技術的數學基礎的全部細節,學生沒法在特定情境下快速選對模型。
哪些已經做得不錯了,哪些還能做得更好
通過對課堂知識到實踐技能之間的缺失的分析,我們可以看到大多數課程在傳授基礎知識上做得不錯。課程里講授的概念可以讓你理解一個機器學習算法是如何工作的,它如何才能收斂。課程還讓學生能夠熟悉適用于不同任務的各種最佳算法,并接觸到廣泛的學習材料,可助有志者進一步深入。
但是,提升空間還是很大的。很多課把開始的幾周時間花在同一個地方:線性分類器和反向傳播。這些無疑是關鍵的主題,但是把將近三分之一的課時花在講授預備知識上并非最佳選擇——把本科生和研究生的內容做個區分會很有用。
研究生課程可以要求學生們已經掌握了預備知識,或者指示學生先去修本科生的同類課程。這樣就給課堂留出了充足的時間,可以教授學生們如何處理課堂關注的特定領域的數據,或者進一步細化了解該領域內的關鍵理論框架。
我相信這樣做可以讓機器學習的課堂把課堂知識和實踐技能更好地聯系起來。很明顯,作為系列課程的一部分,一門課的孤立改變是做不到這點的,只有整個社群的協調改進才能保證學生們獲得最新最有用的知識。
學校為何應當重視?
雖然彌合本文提到的缺失對提升學生的實踐能力絕對有用,很多課程還是會表示培養工業界需要的能力不是它們的事。但是,這些技能遠不只是工業界需要的,而是具有可遷移性。
事實上,它們在幾乎任何情境下都有用。例如,在學術研究中開發新模型的時候,也需要知道如何妥善地處理數據,以及哪些技術能帶來更有利的結果。另外,這些技能是如此基本,掌握它們會讓學生成為更好的機器學習實踐者——對于一門課程來說,任何有益學生知識結構的東西都應當重視和教授。
基于目前的課程現狀,我們可以說,AI課程能夠帶你入門,不管你是想從事前沿研究還是找一份業界工作,但是它們不會教授你需要的一切。要彌合缺失的部分,你需要自己付出大量的課外努力。
相關報道:https://thegradient.pub/the-gap-where-machine-learning-education-falls-short/
【本文是51CTO專欄機構大數據文摘的原創譯文,微信公眾號“大數據文摘( id: BigDataDigest)”】