由于機(jī)器學(xué)習(xí)是靈丹妙藥,你的公司應(yīng)該能夠有利地使用它,對(duì)嗎?也許是;也許不是。好吧,我只是拿靈丹妙藥開(kāi)玩笑,這只是營(yíng)銷炒作。我們來(lái)討論一下你是否擁有利用人工智能所需要的東西——如果你還沒(méi)有達(dá)到這個(gè)地步你該如何達(dá)到。
首先,你知道你想預(yù)測(cè)或發(fā)現(xiàn)的是什么嗎?你有足夠的數(shù)據(jù)來(lái)分析以建立預(yù)測(cè)模型嗎?你有需要定義和訓(xùn)練模型的人和工具嗎?你是否已經(jīng)有統(tǒng)計(jì)模型或物理模型為你提供預(yù)測(cè)的基準(zhǔn)?
在此,我們將分解你讓你的人工智能(AI)和機(jī)器學(xué)習(xí)(ML)項(xiàng)目成功所需要的東西,討論其衍生后果,以幫助你確定貴組織是否真正準(zhǔn)備好利用機(jī)器學(xué)習(xí)、深度學(xué)習(xí)和人工智能。
你有很多數(shù)據(jù)
充分的相關(guān)數(shù)據(jù)是預(yù)測(cè)和特征識(shí)別的必要條件。有了它,你可能會(huì)成功;沒(méi)有它,你不能成功。你需要多少數(shù)據(jù)?你考慮的因素越多,你需要的數(shù)據(jù)就越多,無(wú)論你進(jìn)行普通的統(tǒng)計(jì)預(yù)測(cè)、機(jī)器學(xué)習(xí)或深度學(xué)習(xí)。
以預(yù)測(cè)銷售的常見(jiàn)問(wèn)題為例,比如你下個(gè)月將在邁阿密銷售多少件海軍藍(lán)短袖上衣,以及在不擱死太多錢和倉(cāng)儲(chǔ)空間的情況下,你在邁阿密商店和亞特蘭大倉(cāng)庫(kù)需要多少庫(kù)存以避免欠交訂單。零售銷售季節(jié)性很強(qiáng),因此你需要多年來(lái)積累的具有重要統(tǒng)計(jì)意義的月度數(shù)據(jù),以便能夠糾正月度變化并建立年度趨勢(shì)——這只是針對(duì)標(biāo)準(zhǔn)時(shí)間序列分析。機(jī)器學(xué)習(xí)需要的數(shù)據(jù)比統(tǒng)計(jì)模型要多很多,而深度學(xué)習(xí)模型需要的數(shù)據(jù)量更是多得翻幾翻。
你可能構(gòu)建的一個(gè)統(tǒng)計(jì)模型將分析你的連鎖店在全國(guó)超過(guò)五年的每月上衣銷售情況,并使用該匯總來(lái)預(yù)測(cè)下個(gè)月的總上衣銷售情況。這個(gè)數(shù)字可能在幾十萬(wàn)(假設(shè)它是30萬(wàn))。那么你可以預(yù)測(cè)邁阿密的女襯衫銷售額占全國(guó)銷售額的百分比(假設(shè)為3%),并獨(dú)立預(yù)測(cè)藍(lán)色短袖上衣的銷售額占總襯衫銷售額的百分比(比如說(shuō)是1%)。該模型指出下個(gè)月在邁阿密約售出90件藍(lán)色短袖襯衫。你可以通過(guò)查看各種產(chǎn)品的同店銷售情況,對(duì)該預(yù)測(cè)進(jìn)行合理性檢查,特別要注意與模型的預(yù)測(cè)有多大的差異。
現(xiàn)在,假設(shè)你想把天氣和時(shí)尚趨勢(shì)這樣的外部因素考慮進(jìn)去。短袖襯衫在炎熱或暖和的日子是不是比涼爽和多雨的日子賣得更好?可能吧。你可以通過(guò)在模型中包含歷史天氣數(shù)據(jù)來(lái)測(cè)試,盡管使用時(shí)間序列統(tǒng)計(jì)模型可能有點(diǎn)笨拙,因此你可以嘗試使用決策森林回歸(decision forest regression),當(dāng)你嘗試使用其它7 種用于回歸的機(jī)器學(xué)習(xí)模型(見(jiàn)上面的截圖),然后比較每個(gè)模型的“成本”(歸一化誤差函數(shù)),與去年的實(shí)際結(jié)果進(jìn)行比較,以找到最佳模型。
海軍藍(lán)軍下個(gè)月的銷量會(huì)好于去年同期嗎?你可以查看海軍藍(lán)色服裝的每月銷售量,并預(yù)測(cè)年度時(shí)尚趨勢(shì),也許可以將其納入到你的機(jī)器學(xué)習(xí)模型中。或者你可能需要根據(jù)你從時(shí)尚媒體所聽(tīng)到的內(nèi)容,將手動(dòng)更正(亦稱“瞎猜”)應(yīng)用到你的模型。(“以防萬(wàn)一,讓我們將預(yù)測(cè)提高20%,”)
也許你想通過(guò)為這個(gè)預(yù)測(cè)創(chuàng)建一個(gè)深度神經(jīng)網(wǎng)絡(luò)來(lái)做更好的事情。你可能會(huì)發(fā)現(xiàn)你添加的每一個(gè)隱藏層的都能將回歸誤差提高幾個(gè)百分點(diǎn),直到無(wú)助于提高的程度。報(bào)酬遞減的原因可能是因?yàn)樵谀P椭袥](méi)有更多的特征可以識(shí)別,或者更有可能是因?yàn)闆](méi)有足夠的數(shù)據(jù)來(lái)支持更多的細(xì)化。
你有足夠的數(shù)據(jù)科學(xué)家
你可能已經(jīng)注意到,一個(gè)人必須構(gòu)建上面討論的所有模型。不,這不是將數(shù)據(jù)傾倒到料斗中并按下按鈕的問(wèn)題。不管你使用什么工具,這需要經(jīng)驗(yàn)、直覺(jué)、編程的能力以及玩轉(zhuǎn)機(jī)器學(xué)習(xí)的過(guò)硬的統(tǒng)計(jì)學(xué)背景——盡管供應(yīng)商可能會(huì)這樣宣稱。
某些供應(yīng)商特別傾向于聲稱“任何人”或“任何企業(yè)角色”都可以使用其預(yù)先訓(xùn)練的應(yīng)用機(jī)器學(xué)習(xí)模型。如果模型完全適于手頭的問(wèn)題,例如將正式的書(shū)面的魁北克法文翻譯成英文,這可能是真的,但是更常見(jiàn)的情況是,你的數(shù)據(jù)不適合現(xiàn)有的訓(xùn)練有素的機(jī)器學(xué)習(xí)(ML)模型。由于你必須訓(xùn)練該模型,你將需要數(shù)據(jù)分析師和數(shù)據(jù)科學(xué)家來(lái)指導(dǎo)培訓(xùn),而這種培訓(xùn)比工程或科學(xué)更像是一門藝術(shù)。
關(guān)于招聘數(shù)據(jù)科學(xué)家的最奇怪的事情之一就是公布的要求,特別是與受聘者的實(shí)際技能相比。廣告經(jīng)常這么寫道“招聘:數(shù)據(jù)科學(xué)家。科技工數(shù)類博士(STEM Ph.D.),加上20年的經(jīng)驗(yàn)。”第一個(gè)奇怪的地方是,該領(lǐng)域還沒(méi)有真正存在超過(guò)20年。第二個(gè)奇怪的地方是,公司要雇用26歲的畢業(yè)生——也就是說(shuō),沒(méi)有任何在學(xué)術(shù)界以外的工作經(jīng)驗(yàn),更不用說(shuō)20年了——而他們優(yōu)先于已經(jīng)知道如何做這些事情的人,因?yàn)樗麄兒ε沦Y深人士太貴了,盡管他們要求20年的經(jīng)驗(yàn)。是的,這是虛偽的,很可能是非法的年齡歧視,但這就是一直發(fā)生的事情。
你追蹤或獲取重要的因素
即使你有大量的數(shù)據(jù)和很多數(shù)據(jù)科學(xué)家,你可能沒(méi)有所有相關(guān)變量的數(shù)據(jù)。用數(shù)據(jù)庫(kù)的話來(lái)說(shuō)就是,你可能有很多行,但缺少幾列。統(tǒng)計(jì)上你可能有不明原因的方差。
諸如天氣觀測(cè)的一些自變量的測(cè)量很容易獲得并合并到數(shù)據(jù)集中,甚至在事后也行。其它因素可能在測(cè)量或獲取上很困難、不切實(shí)際或昂貴,即使你知道它們是什么。
我們用一個(gè)化學(xué)的例子來(lái)說(shuō)明。當(dāng)你將鉛電鍍到銅上時(shí),你可以測(cè)量氟硼酸電鍍槽的溫度和濃度,并記錄陽(yáng)極上的電壓,但是除非槽中含有足夠的肽(但不能太多),否則不能獲得良好的附著力。如果你沒(méi)有對(duì)放入槽中的肽進(jìn)行稱重,你就不知道這個(gè)關(guān)鍵催化劑的劑量,你就無(wú)法用其它變量來(lái)解釋電渡質(zhì)量的變化。
你有清理和變換數(shù)據(jù)的辦法
數(shù)據(jù)幾乎總是很嘈雜的。測(cè)量可能缺少一個(gè)或多個(gè)值,單個(gè)值本身可能超出范圍或與同一測(cè)量中的其它值不一致,電子測(cè)量可能由于電氣噪聲而不準(zhǔn)確,回答問(wèn)題的人可能無(wú)法理解或編造答案等等。
任何分析過(guò)程中的數(shù)據(jù)過(guò)濾步驟通常需要盡最大的努力來(lái)設(shè)置——在我的經(jīng)驗(yàn)中,占總分析時(shí)間的80%到90%。一些工場(chǎng)在其ETL(extract, transform, and load;提取,轉(zhuǎn)換和加載)過(guò)程中清理數(shù)據(jù),以便分析人員永遠(yuǎn)不會(huì)看到錯(cuò)誤的數(shù)據(jù)點(diǎn),但是其它工場(chǎng)用ELT流程數(shù)保留了據(jù)倉(cāng)庫(kù)或數(shù)據(jù)湖中的所有數(shù)據(jù)(最后的轉(zhuǎn)換步驟)。這意味著,即使是明顯的臟數(shù)據(jù)也被保存了,所依據(jù)的理論是過(guò)濾器和變換隨時(shí)間的推移需要被細(xì)化了。
即使精確的過(guò)濾數(shù)據(jù)也可能需要進(jìn)一步轉(zhuǎn)換才能很好地分析。像統(tǒng)計(jì)學(xué)方法一樣,當(dāng)每個(gè)可能的狀態(tài)有相似行數(shù)時(shí),機(jī)器學(xué)習(xí)模型最有效,這可能意味著通過(guò)隨機(jī)抽樣來(lái)減少最流行狀態(tài)的數(shù)量。與統(tǒng)計(jì)學(xué)方法一樣,當(dāng)所有變量的范圍已經(jīng)被歸一化時(shí),機(jī)器學(xué)習(xí)模型最有效。
例如,由小娜機(jī)器學(xué)習(xí)(Cortana ML)完成的特朗普和克林頓競(jìng)選獻(xiàn)金的分析顯示如何通過(guò)創(chuàng)建標(biāo)簽、處理數(shù)據(jù)、設(shè)計(jì)附加功能和清理數(shù)據(jù)來(lái)準(zhǔn)備機(jī)器學(xué)習(xí)數(shù)據(jù)集;該分析在微軟的博文中有討論。該分析在SQL和R中進(jìn)行了幾次變換,以發(fā)現(xiàn)與克林頓或特朗普相關(guān)聯(lián)的各種委員會(huì)和活動(dòng)資金、根據(jù)姓名識(shí)別捐助者的身份可能是男性或女性、糾正拼寫錯(cuò)誤、并修正類偏斜(數(shù)據(jù)集中有94%是克林頓事務(wù),主要是小額捐款)。我在Azure ML Studio的“入門”教程中展示了如何獲取此樣本的輸出并將其提供給兩類邏輯回歸模型。
你已經(jīng)對(duì)數(shù)據(jù)進(jìn)行了統(tǒng)計(jì)分析
數(shù)據(jù)分析和問(wèn)題解決的一大罪惡之一就是引起爭(zhēng)議。在你可以弄清楚發(fā)生了什么和為什么之前,你需要退后一步去看看所有變量及其相關(guān)性。
探索性數(shù)據(jù)分析可以快速顯示所有變量的范圍和分布,無(wú)論變量對(duì)是否應(yīng)變或自變,集群所在的位置以及可能存在異常值的地方。當(dāng)你具有高度相關(guān)的變量時(shí),從分析中丟棄一個(gè)或另一個(gè)變量往往是有用的,或者執(zhí)行類似于逐步多重線性回歸(stepwise multiple linear regression)的某些特征來(lái)確定變量的最佳選擇。我的意思并不是說(shuō)最終的模型是線性的,但在引入復(fù)雜性之前,嘗試簡(jiǎn)單的線性模型總是有用的;如果你的模型中有太多的項(xiàng),那么你最終可能會(huì)得到一個(gè)超定系統(tǒng)。
你測(cè)試了很多方法來(lái)找到最佳模型
只有一種方法可以找到給定數(shù)據(jù)集的最佳模型:試遍它們。如果你的目標(biāo)是一個(gè)經(jīng)過(guò)深思熟慮但具有挑戰(zhàn)性的領(lǐng)域,例如感光特征識(shí)別和語(yǔ)言識(shí)別,你可能會(huì)試圖從比賽中嘗試“最佳”模型,但不幸的是,這些模型通常是計(jì)算密集型的深度學(xué)習(xí)模型,這些模型在圖像識(shí)別和用于語(yǔ)音識(shí)別的長(zhǎng)短期記憶(long short-term memory,LSTM)層的情況下具有卷積層。如果你需要訓(xùn)練這些深層神經(jīng)網(wǎng)絡(luò),那么你可需要的計(jì)算能力遠(yuǎn)超你現(xiàn)在所具備的。
你有訓(xùn)練深度學(xué)習(xí)模式的計(jì)算能力
你的數(shù)據(jù)集越大,你的深度學(xué)習(xí)模型中的層就越多,訓(xùn)練神經(jīng)網(wǎng)絡(luò)所需的時(shí)間就越多。擁有大量數(shù)據(jù)可幫你訓(xùn)練更好的模型,但也會(huì)因?yàn)橛?xùn)練時(shí)間的增加而傷害你。擁有大量層可幫助你識(shí)別更多功能,同時(shí)也會(huì)因?yàn)橛?xùn)練時(shí)間的增加而傷害你。你可能不能等待一年來(lái)訓(xùn)練每個(gè)模型;一周更合理,特別是因?yàn)槟愫芸赡苄枰{(diào)整你的機(jī)型數(shù)十次。
避免訓(xùn)練時(shí)間問(wèn)題方法之一是使用通用圖形處理單元(general purpose graphics processing unit,GPGPU),如英偉達(dá)(Nvidia)出品的那些,用它們來(lái)執(zhí)行神經(jīng)網(wǎng)絡(luò)層下面的向量和矩陣計(jì)算(也稱為線性代數(shù))。一個(gè)K80 GPU和一個(gè)CPU一起通常比只用CPU在訓(xùn)練速度上要快5到10倍的,如果你可以將網(wǎng)絡(luò)的整個(gè)“內(nèi)核”置入GPU的本地內(nèi)存,并且使用一個(gè)P100 GPU,你可以得到比只用CPU快100倍的訓(xùn)練速度。
除了單GPU,你可以設(shè)置CPU和GPU的協(xié)作網(wǎng)絡(luò),用更少的時(shí)間解決更大的問(wèn)題。除非你全年訓(xùn)練深度學(xué)習(xí)模型,并且擁有巨大的資本預(yù)算,否則你可能會(huì)發(fā)現(xiàn)在具有GPU的云端租用時(shí)間是你最具成本效益的選擇,包括CNTK、MXNet和TensorFlow在內(nèi)的幾個(gè)深度學(xué)習(xí)框架支持與CPU和GPU進(jìn)行并行計(jì)算,并且對(duì)于具有強(qiáng)大GPU的非常大型的虛擬機(jī)(VM)實(shí)例的網(wǎng)絡(luò),已經(jīng)展示了合理的縮放系數(shù)(一次測(cè)試結(jié)果約為85%)。你可以在主要云提供商中發(fā)現(xiàn)這些框架已經(jīng)被安裝到具有GPU支持的VM實(shí)例中。
你的機(jī)器學(xué)習(xí)模型優(yōu)于統(tǒng)計(jì)模型
你的簡(jiǎn)單統(tǒng)計(jì)模型為你的工作設(shè)置了機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的門檻。如果你不能用給定的模型提高門檻,那么你應(yīng)該調(diào)整它或嘗試不同的方法。一旦你知道自己在做什么,你可以在超參數(shù)調(diào)整算法(hyperparameter tuning algorithm)的控制下并行設(shè)置多個(gè)模型的訓(xùn)練,并使用最好的結(jié)果來(lái)指導(dǎo)你的進(jìn)程的下一個(gè)階段。
你可以部署預(yù)測(cè)模型
最終,你想要實(shí)時(shí)地應(yīng)用經(jīng)過(guò)培訓(xùn)的模型。根據(jù)應(yīng)用的不同,預(yù)測(cè)可以在服務(wù)器、云、個(gè)人電腦或電話上運(yùn)行。深度學(xué)習(xí)框架提供了將模型嵌入網(wǎng)絡(luò)和移動(dòng)應(yīng)用程序的各種選項(xiàng)。亞馬遜、谷歌和微軟已經(jīng)通過(guò)制作理解語(yǔ)音的消費(fèi)設(shè)備和智能手機(jī)應(yīng)用程序來(lái)展示其實(shí)用性。
你可以定期更新模型
如果你已經(jīng)在自己的數(shù)據(jù)上訓(xùn)練了自己的模型,你可能會(huì)發(fā)現(xiàn)模型的錯(cuò)誤率(誤報(bào)和漏報(bào))隨時(shí)間的推移而增加。這主要是因?yàn)閿?shù)據(jù)隨著時(shí)間的推移而偏移:你的銷售模式發(fā)生了變化,競(jìng)爭(zhēng)對(duì)手在變化,風(fēng)格在變化和經(jīng)濟(jì)在變化。為了適應(yīng)這種效應(yīng),大多數(shù)深入學(xué)習(xí)框架都有重新訓(xùn)練新數(shù)據(jù)中的舊模型并用新模型替代預(yù)測(cè)服務(wù)的選擇。如果你每個(gè)月都這樣做,你應(yīng)該能夠控制偏差。如果你不能,你的模型最終將變得過(guò)時(shí)而不可靠。
回到我們的開(kāi)始的問(wèn)題,你知道你想預(yù)測(cè)或檢測(cè)的是什么嗎?你有足夠的數(shù)據(jù)來(lái)分析以建立預(yù)測(cè)模型嗎?你有需要定義和訓(xùn)練模型的人和工具嗎?你是否已經(jīng)有統(tǒng)計(jì)模型或物理模型為你提供預(yù)測(cè)的基準(zhǔn)?
如果是這樣的話,你還在等什么?