和傳統(tǒng)模式說再見,看機器學習如何走向深度學習?
摘要:告別傳統(tǒng)模式,科技公司搞機器學習需要哪些必備技能?
主流的科技公司已在積極地把自己定位成AI或者機器學習公司:谷歌把“AI先行”作為公司戰(zhàn)略,Uber自帶機器學習的血統(tǒng),而各種AI研究實驗室更是層出不窮。
這些公司都在想盡辦法說服世界,“機器智能的革命時代正在到來”。它們尤其強調(diào)深度學習,因為這些都在推動自駕汽車、虛擬助手等概念的發(fā)展。
盡管現(xiàn)在這些概念很流行,然而當下的實踐卻沒那么樂觀。
現(xiàn)在,軟件工程師和數(shù)據(jù)科學家仍在使用許多幾年前的算法和工具。
這也意味著,傳統(tǒng)的機器學習模式仍在支撐著大多數(shù)AI的應(yīng)用,而不是深度神經(jīng)網(wǎng)絡(luò)。工程師仍然用傳統(tǒng)工具來處理機器學習,但是這并不起作用:采用數(shù)據(jù)建模的流水線最終由零散、不兼容的片段構(gòu)成。這種情況在逐漸變化,因為大型科技公司正在研發(fā)具有端到端功能的特定機器學習平臺。
機器學習“三明治”中夾了什么?
機器學習構(gòu)建有三個階段——數(shù)據(jù)處理階段、模型建構(gòu)階段、部署及監(jiān)控階段。在中間階段是最美味的,就像三明治中夾的肉,這也是機器學習算法是怎么學習預測輸入數(shù)據(jù)的。
這個模型同樣是“深度學習”的模型。深度學習是機器學習算法的一個子類別,它使用多層神經(jīng)網(wǎng)絡(luò)來學習輸入和輸出之間的復雜關(guān)系。神經(jīng)網(wǎng)絡(luò)中的層次越多,其復雜性就越高。
傳統(tǒng)的數(shù)據(jù)式機器學習算法(即那些不用深度神經(jīng)網(wǎng)絡(luò)的算法)僅能有限地捕捉信息和訓練數(shù)據(jù)。大多應(yīng)用僅采用更基本的機器學習算法就可以有效的運作,相比之下深度學習的復雜性往往顯得是多余。所以我們?nèi)匀豢吹杰浖こ處熢诖笠?guī)模地使用這些傳統(tǒng)模式,即使是在深度學習領(lǐng)域。
但是這個“三明治”流程也能將機器學習訓練前后的結(jié)果連接在一起。
***階段把涉及到清理和格式化之前的大量數(shù)據(jù)放入模型。***一個階段是對模型進行仔細的部署和監(jiān)控。我們發(fā)現(xiàn)大部分AI的工作時間并未放在構(gòu)建機器學習模型上,而是在準備和監(jiān)控這些模型。
- 機器學習“三明治”里的肉:避免異國風味
盡管現(xiàn)在大型科技公司AI研究實驗室的焦點都是深度學習,大多數(shù)機器學習的應(yīng)用卻并不依賴深度神經(jīng)網(wǎng)絡(luò),而仍采用傳統(tǒng)機器學習的模式。最常見的包括線性/邏輯回歸模型,組合樹算法和增強決策樹模型。這些模型背后,蘊含著其他科技公司的應(yīng)用、朋友的建議、市場定位、用戶興趣預測,需求/供應(yīng)模型和搜索結(jié)果排名等。
而工程師訓練這些模型的工具也十分老舊。最常用的機器學習庫是十年前發(fā)行的scikit-learn(盡管谷歌TensorFlow的使用者越來越多)。
人們用更簡單的模型而非采用深度學習是有原因的。因為深度神經(jīng)網(wǎng)絡(luò)很難訓練,他們需要大量的時間和計算能力(通常需要不同的硬件,特別是GPU)。想讓深度學習起作用是很難的——它仍然需要大量的人工調(diào)整、直覺、實驗以及試錯。
在傳統(tǒng)的機器學習模型中,工程師用于訓練和調(diào)整的時間相對較短,往往只有幾個小時。***,就算深度學習精準度的小幅提高,用于拓展和開發(fā)所花費的時間也遠超過精準度提高的價值。
- 怎么把三明治粘在一起?從數(shù)據(jù)到部署的工具
所以當人們想培養(yǎng)機器學習模式的時候,傳統(tǒng)的方式很有效。但是這不適用于機器學習的基礎(chǔ)設(shè)施,傳統(tǒng)方式不能將機器學習三部分粘合起來,很容易埋下犯錯的隱患。
數(shù)據(jù)收集和處理解釋了機器學習的***階段。大公司一定有大量數(shù)據(jù),數(shù)據(jù)分析師和工程師必須處理數(shù)據(jù)并利用數(shù)據(jù),從而能驗證和鞏固多源的副本,將算法標準化,設(shè)計并證明各種功能。
大多數(shù)公司內(nèi),工程師使用SQL或Hive queires和Python腳本來聚集和格式化多源數(shù)據(jù)。這往往要耗費大量的人力。由于很多大公司的數(shù)據(jù)科學家或者工程師常常使用各種本地化的腳本或者Jupyter Notebook來工作,使過程分散化,導致重復性工作出現(xiàn)。
此外,哪怕大型高科技公司也會犯錯誤,必須生產(chǎn)過程中仔細地部署和監(jiān)測模型。正如一名工程師所說:“在大型公司,80%的機器學習都由基礎(chǔ)建設(shè)組成。”
然而,傳統(tǒng)的單元測試,也算傳統(tǒng)軟件測試的主干,并不適合機器學習模式,因為事先并不知道機器學習模型的正確輸出。畢竟,機器學習的目的是讓模型學習從數(shù)據(jù)中進行預測,而不需要工程師專門編寫任何規(guī)則。因此,工程師采用較少的結(jié)構(gòu)化方式來代替單元測試,他們可以手動監(jiān)控儀表盤,并為新模型提供報警程序。
而實時數(shù)據(jù)的轉(zhuǎn)變可能會讓訓練有素的模型出現(xiàn)偏差,所以工程師會根據(jù)不同應(yīng)用,每天或每月寫入新數(shù)據(jù)來校準模型。但是,現(xiàn)有的工程基礎(chǔ)設(shè)施缺乏特定機器學習的支持,可能會導致開發(fā)時的模型與生產(chǎn)時的模型之間斷開連接,因為一般代碼的更新頻率更低。
很多工程師仍然依賴于原始的設(shè)計模型和產(chǎn)品生產(chǎn)的方式,例如工程師有時候需要重建原型,而有些數(shù)據(jù)是用其他語言或結(jié)構(gòu)展現(xiàn)的,所以他們只能使用基礎(chǔ)結(jié)構(gòu)來開發(fā)產(chǎn)品。從數(shù)據(jù)整理階段到訓練階段再到部署產(chǎn)品結(jié)構(gòu)階段,任何機器學習發(fā)展階段中的不兼容都能產(chǎn)生錯誤。
- 如何呈現(xiàn)?前進的道路
為了解決這些問題,擁有定制化資源的幾家大公司,一直在努力創(chuàng)造屬于自己的機器學習工具。他們的目標是有一個無縫銜接、終端對終端的機器學習平臺,能夠與計算機完全兼容。
Facebook的FBLearner Flow和Uber的Michelangelo的內(nèi)部機器學習平臺都做到了這些。他們允許工程師在一個原始用戶界面構(gòu)造機器訓練和驗證數(shù)據(jù)集,從而能減少該階段的開發(fā)時間。然后,工程師們只要點擊一下鼠標,就可以訓練學習模式。最終,他們可以輕松地監(jiān)控和升級產(chǎn)品模式。
像Azure 的機器學習和Amazon的機器學習服務(wù)都公開發(fā)表過可選擇的方案,提供類似端對端的功能,但只能和Amazon或微軟的服務(wù)平臺兼容。
盡管這些大公司都在使用機器學習來提升自己的產(chǎn)品,但多數(shù)仍然面臨巨大挑戰(zhàn),并且效率低下。他們?nèi)韵胗脗鹘y(tǒng)機器學習模式而不是更先進的深層學習模式,而且仍依賴于傳統(tǒng)基礎(chǔ)工具來匹配機器學習。
幸運的是,現(xiàn)在AI是這些公司的研究焦點,他們也在努力讓機器學習變得更有效。有了這些內(nèi)部工具,或者其它第三方機器學習平臺的參與,能夠讓大家認識到AI的潛力。




























