機(jī)器學(xué)習(xí)轉(zhuǎn)化為生產(chǎn)力,警惕這4個(gè)常見陷阱!
大數(shù)據(jù)文摘出品
來源:topbots
編譯:武帥
在一場(chǎng)科技會(huì)議上,演講者詢問觀眾,“有誰為自己的業(yè)務(wù)開發(fā)過機(jī)器學(xué)習(xí)或者人工智能模型?”80%到90%的人都舉起了手。
“那么,你們當(dāng)中有誰將它投入生產(chǎn)了呢?”演講者繼續(xù)發(fā)問。幾乎所有的人都放下了手。顯而易見,幾乎每個(gè)人都想在他們的業(yè)務(wù)中引入機(jī)器學(xué)習(xí),但是這些人也遇到了一個(gè)大問題:讓模型可持續(xù)發(fā)展十分困難,尤其是在云架構(gòu)的基礎(chǔ)上。
medium上一位博主也指出了這個(gè)問題,并提出了將機(jī)器學(xué)習(xí)模型投入生產(chǎn)的4個(gè)常見陷阱。
不要重新造輪子
大家對(duì)這句話早已耳熟能詳,卻并沒有什么改進(jìn),我們可以看到過太多因?yàn)榫芙^使用已有的解決方案而失敗的案例。
比如,Amazon Web Services(AWS)和Google Cloud有著性能強(qiáng)大的機(jī)器學(xué)習(xí)套件和產(chǎn)品,且簡(jiǎn)單易用,雖然他們不適用于每個(gè)案例,但是它們絕對(duì)是很好的一個(gè)入門平臺(tái),特別是當(dāng)公司員工沒有豐富的機(jī)器學(xué)習(xí)經(jīng)驗(yàn)的時(shí)候。
使用Google Vision API進(jìn)行情感檢測(cè),圖片來自TheNextWeb
上面就是可以利用Google Cloud的Vision API提取信息的一個(gè)示例。假設(shè)有顧客對(duì)產(chǎn)品的反映的圖片或者視頻的數(shù)據(jù),并且想根據(jù)他們的面部表情來了解他們對(duì)產(chǎn)品的態(tài)度。那么就可以簡(jiǎn)單地將圖片或者視頻作為數(shù)據(jù)提交給Google Vision進(jìn)行處理,從而得到每張臉?biāo)尸F(xiàn)的大致情緒。
通常,AWS和Google Cloud上的產(chǎn)品的性價(jià)比就已經(jīng)不錯(cuò)了。此外,由于平臺(tái)會(huì)處理版本更新,功能添加等問題,因此維護(hù)工作也十分簡(jiǎn)單。
解決方案不是一成不變的
對(duì)于較小的項(xiàng)目,這種簡(jiǎn)單易行的方法可能足矣。但是對(duì)于更大的項(xiàng)目而言,要么成本過于昂貴,要么需要更多的自定義功能。
這種項(xiàng)目通常需要定制解決方案。就像之前提到的,有許多項(xiàng)目因?yàn)樽龅锰喽?,同樣地,也有許多項(xiàng)目因?yàn)樽龅锰俣?。我們需要保?ldquo;增量收益”的心態(tài),即在不犧牲長(zhǎng)期目標(biāo)的前提下從我的產(chǎn)品中盡可能多地提取短期價(jià)值,但有時(shí)這種行為會(huì)破壞產(chǎn)品設(shè)計(jì)。
可以通過下述途徑來解決這個(gè)難題:
- 確保足夠了解當(dāng)前問題以及期望的業(yè)務(wù)價(jià)值
- 進(jìn)行必要的研究。
對(duì)于第一種途徑,如果團(tuán)隊(duì)一開始就在技術(shù)細(xì)節(jié)上陷入困境,那么很可能見樹不見林。你必須時(shí)刻提醒自己“我真正想要完成的是什么?”
第二種途徑稍微有點(diǎn)復(fù)雜??梢韵仍诠雀鑼W(xué)術(shù)上進(jìn)行研究,梳理一下相關(guān)的學(xué)術(shù)出版物或博客文章,看看別人是如何解決我遇到的問題的。如果沒有滿意的結(jié)果,那么接下來試著找下相似的問題(可能是不同領(lǐng)域),直到找到一個(gè)不錯(cuò)的線索。屆時(shí),再尋找現(xiàn)成的解決方案,看看它們能否滿足需求。
如果滿足的話就實(shí)施該方案。如果不能,就需要構(gòu)建更多的自定義項(xiàng)。
沒有適當(dāng)?shù)卮_定風(fēng)險(xiǎn)
在開發(fā)出一個(gè)很棒的解決方案之后,很多時(shí)候我們忘了這些模型固有的風(fēng)險(xiǎn)。當(dāng)人們說“我們并不真正理解模型是如何工作的”,某種程度上來說確實(shí)如此??山忉尩腁I是一個(gè)快速發(fā)展的領(lǐng)域,致力于確切地回答這類問題:“為什么這個(gè)模型是這樣運(yùn)行的?”
但是當(dāng)我們能夠確切解釋模型是怎樣運(yùn)行這個(gè)問題之前,我們不得不采取一些必要的預(yù)防措施。
1. 了解模型之間的特征和相關(guān)性
通常,我們不希望我們的模型基于種族、性別、收入水平等因素進(jìn)行決策,所以我們不將它們作為輸入。這樣就萬事大吉了吧?不一定。我們必須確保這些因素不會(huì)滲入到我們正在使用的其他特征中。例如,郵政編碼是一個(gè)很強(qiáng)的人口統(tǒng)計(jì)指標(biāo),據(jù)此可以推斷其所在區(qū)域。因此,在每個(gè)項(xiàng)目開始之前,我們必須花大力氣來探索數(shù)據(jù)。
2. 是否允許模型在生產(chǎn)中不斷發(fā)展?
當(dāng)我向一些人提到“機(jī)器學(xué)習(xí)”時(shí),他們通常認(rèn)為那就是說模型會(huì)隨著人機(jī)交互而實(shí)時(shí)變動(dòng)。雖然有些模型做到了這一點(diǎn)(改天撰文詳談),但是也有很多模型并沒有做到,而且理由很充分。即使缺少必要的檢查和監(jiān)控,在輸入數(shù)據(jù)急劇變化的情況下,模型也不會(huì)失控。
但事實(shí)并非如此。假設(shè)你有一個(gè)根據(jù)市場(chǎng)趨勢(shì)動(dòng)態(tài)更新的股票交易模型。在正常的市場(chǎng)中,它的效果很好,但是如果發(fā)生了某些不可預(yù)測(cè)的事(通常會(huì)在最糟糕的時(shí)候發(fā)生),模型可能會(huì)為了適應(yīng)新環(huán)境而過度補(bǔ)償,從而完全放棄了原先訓(xùn)練的策略。
3. 你打算多久重新訓(xùn)練或更新一次模型?
這個(gè)問題并沒有標(biāo)準(zhǔn)答案。它完全取決于你的問題和建模技術(shù),但是盡早弄清這一點(diǎn)還是很重要的。你應(yīng)該有一個(gè)標(biāo)準(zhǔn)的更新方法和策略,原因很簡(jiǎn)單:你怎么知道你的模型是在提升還是在下滑?
假設(shè)我有一個(gè)75%準(zhǔn)確率的模型投入了生產(chǎn)。我怎么確定準(zhǔn)確率是75%呢?通常,我會(huì)使用部分歷史數(shù)據(jù)作為驗(yàn)證集(通常是20%)進(jìn)行驗(yàn)證。
現(xiàn)在假設(shè)我一個(gè)月后更新了模型,發(fā)現(xiàn)我的準(zhǔn)確率居然達(dá)到了85%(多棒,快夸夸我)!于是我很開心地將更新推送到了平臺(tái)上。但是,我突然發(fā)現(xiàn)結(jié)果大幅度下降了,我的客戶也不停地抱怨。到底啥情況?
原因很簡(jiǎn)單:如果我沒有保存我的驗(yàn)證集(用來測(cè)試準(zhǔn)確率的原始數(shù)據(jù)),那么我就不是拿蘋果和蘋果進(jìn)行對(duì)比了。我不能確定更新后的模型性能是否比初始模型要好,這就會(huì)引起很多麻煩。
剛開始時(shí)并不需要用到機(jī)器學(xué)習(xí)
盡管這么說有點(diǎn)傷人,但是這很可能是你閱讀本文后的最大收獲。盡管機(jī)器學(xué)習(xí)被認(rèn)為是當(dāng)今計(jì)算機(jī)科學(xué)最酷的領(lǐng)域之一,但人們往往會(huì)忽略這樣一個(gè)事實(shí):它只是皮帶上的工具,并不是皮帶本身。
你不會(huì)用手提鉆來釘釘子,所以當(dāng)你能用基本的Python腳本完成任務(wù)時(shí),不要使用機(jī)器學(xué)習(xí)。能夠使用尖端技術(shù)對(duì)我們來說誘惑力太大了,我也深知這一點(diǎn),但是如果沒有必要的專業(yè)知識(shí),你可能會(huì)造成不必要的失敗。
我見過太多這樣的例子了,人們?cè)谠O(shè)計(jì)產(chǎn)品之前往往進(jìn)行這樣的頭腦風(fēng)暴:“我們?cè)鯓邮褂靡粋€(gè)聊天機(jī)器人?”,“你認(rèn)為我們可以用面部識(shí)別做些什么?”……但是事實(shí)是,這些想法基本上都沒啥用。
鏈接:https://www.topbots.com/pitfalls-in-putting-ml-model-in-production/
【本文是51CTO專欄機(jī)構(gòu)大數(shù)據(jù)文摘的原創(chuàng)譯文,微信公眾號(hào)“大數(shù)據(jù)文摘( id: BigDataDigest)”】