那么在人工智能和大數(shù)據(jù)的開發(fā)過程中,有哪些特別需要注意的要點(diǎn)?人工智能領(lǐng)域的算法大師、華盛頓大學(xué)教授Pedro Domingos對此進(jìn)行了深入思考。《智能Web算法》(第2版)中,對Pedro Domingos教授的觀點(diǎn)進(jìn)行了高度的概括,提煉出12個注意點(diǎn),為行業(yè)開發(fā)實(shí)踐提供了重要參考。
在實(shí)際應(yīng)用中,有很多原因會導(dǎo)致你的數(shù)據(jù)是不可靠的。因此,當(dāng)你將數(shù)據(jù)用于解決問題前,必須經(jīng)常留心來檢查數(shù)據(jù)是否值得信賴。如果基于糟糕的數(shù)據(jù)來挖掘,無論多么聰明的人也永遠(yuǎn)只會獲得糟糕的結(jié)果。下面列舉了一些常見的可導(dǎo)致數(shù)據(jù)可靠性問題的因素:
用于開發(fā)的數(shù)據(jù),往往和實(shí)際情況下的數(shù)據(jù)分布不同。
例如也許你想把用戶按照身高劃分為“高”、“中等”、“矮”三檔,但如果系統(tǒng)開發(fā)時使用的數(shù)據(jù)集里最低用戶的身高是6英尺(184cm),那么很有可能你開發(fā)出來的系統(tǒng)里會把一個“僅有6英尺”的用戶稱為“矮”用戶
你的數(shù)據(jù)集中存在很多缺失數(shù)據(jù)。
事實(shí)上,除非是人為構(gòu)造的數(shù)據(jù)集合,否則很難避免缺失數(shù)據(jù)問題的發(fā)生,如何處理數(shù)據(jù)缺失的問題是很有技巧的事情。實(shí)踐中我們要么是干脆丟棄一部分殘缺的數(shù)據(jù),要么就是想辦法計(jì)算一些數(shù)值去填補(bǔ)這些缺失值。無論哪種方法都可能導(dǎo)致應(yīng)用結(jié)果的不穩(wěn)定
你的數(shù)據(jù)可能隨時在變化。
數(shù)據(jù)庫的表結(jié)構(gòu)可能會變,數(shù)據(jù)定義也可能會變。
你的數(shù)據(jù)可能沒有被歸一化。
假設(shè)你可能在觀察一組用戶的體重,為了能夠獲得有效的結(jié)論,首先需要對每個體重的衡量單位進(jìn)行歸一化,是英鎊還是公斤,不能混淆著用。
你的數(shù)據(jù)可能并不適用于相應(yīng)的算法。
數(shù)據(jù)存在著各種各樣的形式和規(guī)范,或者叫數(shù)據(jù)類型(data types),有些是數(shù)值化的數(shù)據(jù),有些則不是。有些數(shù)據(jù)集合能被有序排列,有些則做不到。有些是離散化的數(shù)據(jù)(例如房間里的人數(shù)),另一些則是連續(xù)化的(例如氣溫或者氣壓等數(shù)據(jù))。
完成任何一個人工智能解決方案的計(jì)算,都需要一定的時間,方案的響應(yīng)速度,對商業(yè)應(yīng)用的成功與否起到十分關(guān)鍵的作用。不能總是盲目假設(shè)任何算法在所有數(shù)據(jù)集上都一定能在規(guī)定時間內(nèi)完成,你需要測試下算法的性能是否在可接受的應(yīng)用范圍內(nèi)。
以搜索引擎為例,用戶對結(jié)果返回的時長是有忍耐的限度的。如果用戶等待的時間超過10秒,50%的用戶會流失,如果等待時間超過1分鐘,90%以上的用戶會流失。在開發(fā)智能應(yīng)用系統(tǒng)時,不能為了達(dá)到更好的算法精度而忽略系統(tǒng)運(yùn)算和等待的時間,否則會導(dǎo)致整個產(chǎn)品的失敗。
當(dāng)我們考慮智能應(yīng)用時,數(shù)據(jù)規(guī)模是很重要的因素。數(shù)據(jù)規(guī)模的影響可以分為兩點(diǎn)來考察:第一點(diǎn)是規(guī)模會影響應(yīng)用系統(tǒng)的響應(yīng)速度,上一節(jié)我們剛提過;第二點(diǎn)是在很大的數(shù)據(jù)集上挖掘出有價值結(jié)果的能力會受到考驗(yàn)。例如為100個用戶開發(fā)的電影或音樂推薦系統(tǒng)可能效果很好,但是同樣的算法移植到有著100000個用戶的環(huán)境里,效果可能就不盡如人意了。
其次,使用更多的數(shù)據(jù)來訓(xùn)練的簡單算法,比受制于維度詛咒(Dimension Curse)的復(fù)雜算法往往有好得多的效果。類似Google這樣擁有海量數(shù)據(jù)的大型企業(yè),優(yōu)秀的應(yīng)用效果不僅來自于精妙復(fù)雜的算法,也來自于其對海量訓(xùn)練數(shù)據(jù)的大規(guī)模分析挖掘。
我們不能假設(shè)智能應(yīng)用系統(tǒng)都可以通過簡單增加服務(wù)器的方法來擴(kuò)展性能。有些算法是有擴(kuò)展性的,而有些則不行。
例如如果我們要從數(shù)億的文章標(biāo)題里,找出標(biāo)題相似的各個組的文章,注意并不是所有的聚類算法此時都能并行化運(yùn)行的,你應(yīng)該在設(shè)計(jì)系統(tǒng)的同時就考慮可擴(kuò)展性。有些情況下你需要將數(shù)據(jù)切分成較小的集合,并能夠讓智能算法在各個集合上并行運(yùn)行。設(shè)計(jì)系統(tǒng)時所選擇的算法,往往需要有并行化的版本,而在一開始就需要將其納入考慮,因?yàn)橥ǔ@著算法還會有很多相關(guān)聯(lián)的商業(yè)邏輯和體系結(jié)構(gòu)需要一并考慮。
你可能聽說過一句諺語“當(dāng)你有了把榔頭的時候,看什么東西都像釘子”,這里想表達(dá)的意思是:并不存在能夠解決所有智能應(yīng)用問題的萬能算法。
智能應(yīng)用軟件和其他所有軟件類似——具有其特定的應(yīng)用領(lǐng)域和局限性。當(dāng)面對新的應(yīng)用領(lǐng)域時,一定要充分的驗(yàn)證原有方法的可行性,而且你最好能嘗試用全新的視角來考察問題,因?yàn)椴煌乃惴ㄔ诮鉀Q特定的問題時才會更有效和得當(dāng)。
根本上看,機(jī)器學(xué)習(xí)算法并不是魔法,它需要從訓(xùn)練數(shù)據(jù)開始,逐步延伸到未知數(shù)據(jù)中去。
例如假設(shè)你已經(jīng)對數(shù)據(jù)的分布規(guī)律有所了解,那么通過圖模型來表達(dá)這些先驗(yàn)的知識會非常有效。除了數(shù)據(jù)以外,你還需要仔細(xì)的考慮,該領(lǐng)域有哪些先驗(yàn)知識可以應(yīng)用,這對開發(fā)一個更有效的分類器會很有幫助。數(shù)據(jù)和行業(yè)經(jīng)驗(yàn)結(jié)合往往能事半功倍。
在特定應(yīng)用中,可能某些參數(shù)的微小變化就會讓模型的訓(xùn)練時間出現(xiàn)很大的差異。例如在深度神經(jīng)網(wǎng)絡(luò)訓(xùn)練時就會有各種各樣的參數(shù)調(diào)節(jié)的情況發(fā)生。
人們往往會直觀的覺得調(diào)整參數(shù)時,訓(xùn)練時間是基本穩(wěn)定不變的。例如假設(shè)有個系統(tǒng)是計(jì)算地球平面上任意兩點(diǎn)之間的距離的,那么任意給出兩個點(diǎn)的坐標(biāo)時,計(jì)算時間差不多都是相同的。但在另一些系統(tǒng)里卻并非如此,有時細(xì)微的調(diào)整會帶來很明顯的時間差異,有時差異甚至可以大到數(shù)小時,而不是數(shù)秒。
機(jī)器學(xué)習(xí)實(shí)踐中最普遍存在的一個誤區(qū)是陷入處理細(xì)節(jié)中而忘了最初的目標(biāo)——通過調(diào)查來獲得處理問題的普適的方法。
測試階段是驗(yàn)證某個方法是否具備泛化能力(generalization ability)的關(guān)鍵環(huán)節(jié)(通過交叉驗(yàn)證、外部數(shù)據(jù)驗(yàn)證等方法),但是尋找合適的驗(yàn)證數(shù)據(jù)集不容易。如果在一個只有幾百個樣本的集合上去訓(xùn)練有數(shù)百萬維特征的模型,試圖想獲得優(yōu)秀的精度是很荒唐的。
在特征空間膨脹的時候,輸入信息間形成的組合關(guān)系會快速增加,這讓人很難像對中等數(shù)據(jù)集合那樣能夠?qū)ζ渲幸徊糠謹(jǐn)?shù)據(jù)進(jìn)行抽樣觀察。更麻煩的是,特征數(shù)量增加時人類對數(shù)據(jù)的直覺會迅速降低。
例如在高維空間里,多元高斯分布并不是沿著均值分布,而是像一個扇貝形狀圍繞在均值附近,這和人們的主觀感受完全不同。在低維空間中建立一個分類器并不難,但是當(dāng)維度增加時,人類就很難直觀的理解了。
你很可能聽說過諺語“進(jìn)來的是垃圾,出去的也是垃圾”(garbage in, garbage out),在建立機(jī)器學(xué)習(xí)應(yīng)用中這一點(diǎn)尤其重要。為了避免挖掘的效果失控,關(guān)鍵是要充分掌握問題所在的領(lǐng)域。通過調(diào)查數(shù)據(jù)來生成各種各樣的特征,這樣的做法會對提升分類的準(zhǔn)確率和泛化能力有很大的幫助,僅靠把數(shù)據(jù)扔進(jìn)分類器就想獲得優(yōu)秀結(jié)果的幻想是不可能實(shí)現(xiàn)的。
模型的組合(Ensemble)技術(shù)正變得越來越流行了,因?yàn)榻M合方法,僅需要付出少許偏見(bias)的代價,就能大大的減少算法的不確定性。在著名的Netflix算法競賽中,冠軍隊(duì)以及成績優(yōu)異隊(duì)伍們?nèi)际褂昧私M合模型方法,把超過100個模型合并在一起(在模型上疊加高層的模型形成組合)以提升效果。在人工智能用于實(shí)際應(yīng)用時,從業(yè)者普遍都認(rèn)為,未來的算法一定時會通過模型組合的方法來獲得更好精度,但是這也會抬高非專業(yè)人員理解系統(tǒng)機(jī)制的門檻。
這一點(diǎn)值得反復(fù)強(qiáng)調(diào),我們可以通過一句調(diào)侃的話來解釋:“地球變暖、地震、龍卷風(fēng),以及其他自然災(zāi)害,都和18世紀(jì)以來全球海盜數(shù)量的減少有直接關(guān)系”。這兩個變量的變化有相關(guān)性,但是并不能說存在因果關(guān)系,因?yàn)橥嬖诘谌悾ㄉ踔恋?、5類)未被觀察到的變量在起作用。相關(guān)關(guān)系應(yīng)該看作是潛在的因果關(guān)系的一定程度的體現(xiàn),但需要進(jìn)一步研究。
在開發(fā)人工智能與大數(shù)據(jù)應(yīng)用系統(tǒng)時,把握好以上十二個注意點(diǎn),才能避免出現(xiàn)各種實(shí)戰(zhàn)問題,讓技術(shù)走出實(shí)驗(yàn)室,走向?qū)嶋H應(yīng)用時,能更加健壯、發(fā)揮更大的作用!
來源:北京市電子科技情報(bào)研究所
網(wǎng)上經(jīng)營許可證號:京ICP備18006193號-1
copyright?2005-2022 3dtdv.cn all right reserved 技術(shù)支持:杭州高達(dá)軟件系統(tǒng)股份有限公司
服務(wù)熱線:010-59231580