我們可以將最佳實(shí)踐抽象為實(shí)際的設(shè)計(jì)模式嗎?機(jī)器學(xué)習(xí)
機(jī)器學(xué)習(xí)中的設(shè)計(jì)模式
根據(jù)其定義,設(shè)計(jì)模式是對(duì)常見問題的可重用解決方案。在軟件工程中,這一概念可以追溯到1987年,當(dāng)時(shí)Beck和Cunningham開始將其應(yīng)用到編程中。到2000年代,設(shè)計(jì)模式(尤其是面向OOP的SOLID設(shè)計(jì)原則)被認(rèn)為是程序員的常識(shí)??爝M(jìn)15年,我們進(jìn)入了Software 2.0的時(shí)代:機(jī)器學(xué)習(xí)模型開始在越來(lái)越多的代碼位置取代經(jīng)典功能。今天,我們將軟件視為傳統(tǒng)代碼,機(jī)器學(xué)習(xí)模型和基礎(chǔ)數(shù)據(jù)的融合。這種融合需要這些組件的無(wú)縫集成,考慮到這些領(lǐng)域通常不同的歷史和演變,這通常并非易事。
今天,我們將軟件視為傳統(tǒng)代碼,機(jī)器學(xué)習(xí)模型和基礎(chǔ)數(shù)據(jù)的融合。
但是,尚未擴(kuò)展設(shè)計(jì)模式以應(yīng)對(duì)這個(gè)新時(shí)代的挑戰(zhàn)。在Software 2.0中,常見的挑戰(zhàn)不僅出現(xiàn)在代碼級(jí)別,而且還出現(xiàn)在問題定義,數(shù)據(jù)表示,訓(xùn)練方法,擴(kuò)展以及支持AI的系統(tǒng)設(shè)計(jì)的道德方面。這為實(shí)踐機(jī)器學(xué)習(xí)反模式創(chuàng)造了沃土。不幸的是,今天,即使是博客文章和會(huì)議,有時(shí)也會(huì)采用反模式:被認(rèn)為可以改善但實(shí)際上卻使情況更糟的做法。由于反模式也需要技能,因此其從業(yè)人員通常不會(huì)認(rèn)識(shí)到這種技能。因此,在下文中,我將給出兩個(gè)常見的ML挑戰(zhàn)示例,但我將首先介紹其解決方案反模式,而不是從設(shè)計(jì)模式入手。
該模型在評(píng)估指標(biāo)上顯示出較差的性能
在常見情況下,在收集,清理和準(zhǔn)備數(shù)據(jù)之后,工程師會(huì)訓(xùn)練第一個(gè)模型,并發(fā)現(xiàn)該模型在測(cè)試數(shù)據(jù)上顯示出較差的性能。常見的反模式是用更復(fù)雜的模式(例如,通常是梯度增強(qiáng)樹)替換第一個(gè)模型,并以此來(lái)提高性能。通過(guò)例如通過(guò)模型平均來(lái)組合多個(gè)模型,該反模式的變型可以跟隨該步驟。
這些方法的問題在于它們僅關(guān)注問題的一部分,即模型,并選擇通過(guò)增加模型的復(fù)雜性來(lái)解決問題。這一步迫使我們接受過(guò)度擬合的高風(fēng)險(xiǎn),并以可解釋性換取其他預(yù)測(cè)能力。盡管有一些有效的方法可以減輕這種選擇的副作用(例如LIME),但我們無(wú)法完全消除它們。
設(shè)計(jì)模式是錯(cuò)誤分析。實(shí)際上,這意味著通過(guò)評(píng)估模型在不同測(cè)試集上的擬合度,甚至通過(guò)查看模型錯(cuò)誤的個(gè)別情況,來(lái)查看模型出錯(cuò)的地方。盡管我們都聽到過(guò)“垃圾進(jìn),垃圾出去”的說(shuō)法,但即使數(shù)據(jù)存在一點(diǎn)點(diǎn)不一致,也很少有人意識(shí)到這是正確的。標(biāo)簽可能來(lái)自不同的評(píng)分者,每個(gè)評(píng)分者對(duì)標(biāo)簽指南的解釋都略有不同。也許收集數(shù)據(jù)的方式已經(jīng)隨著時(shí)間而改變。對(duì)于小數(shù)據(jù)問題,錯(cuò)誤分析的效果尤其明顯。但是,我們還應(yīng)記住,在大比例的大數(shù)據(jù)情況下,我們還會(huì)處理長(zhǎng)尾事件(例如,通過(guò)入學(xué)考試確定稀有人才)。
錯(cuò)誤分析的真正威力來(lái)自于這樣一個(gè)事實(shí),即我們不通過(guò)應(yīng)用它來(lái)交換可解釋性或過(guò)度擬合的風(fēng)險(xiǎn),實(shí)際上僅應(yīng)用它就可以得出有關(guān)數(shù)據(jù)分布的關(guān)鍵知識(shí)。此外,錯(cuò)誤分析使我們能夠選擇以模型為中心的解決方案(例如,更復(fù)雜的模型)和以數(shù)據(jù)為中心的解決方案(例如,進(jìn)一步的清潔步驟)。
部署模型的性能隨時(shí)間下降
該模型經(jīng)過(guò)廣泛的驗(yàn)證,并被部署到生產(chǎn)中。用戶很高興,并給出了積極的反饋。然后,一個(gè)月/一個(gè)季度/一年之后,就會(huì)出現(xiàn)有關(guān)預(yù)測(cè)缺陷的報(bào)告。這通常是概念漂移的體現(xiàn),模型在輸入和輸出之間學(xué)習(xí)的聯(lián)系已隨時(shí)間而改變。在某些地方,這種概念漂移是眾所周知的(單詞語(yǔ)義,垃圾郵件檢測(cè)器),但“概念”漂移可能發(fā)生在任何領(lǐng)域。例如,口罩和社會(huì)疏遠(yuǎn)法規(guī)也挑戰(zhàn)了許多先前部署的計(jì)算機(jī)視覺模型。
常見的反模式是將這些示例歸因于噪聲,并希望情況隨著時(shí)間的推移而趨于穩(wěn)定。這不僅意味著缺乏行動(dòng),而且還包括錯(cuò)誤的歸因,在數(shù)據(jù)驅(qū)動(dòng)的業(yè)務(wù)中通常應(yīng)避免這種歸因。稍微好一點(diǎn)的反模式是通過(guò)快速重新培訓(xùn)和部署新模型來(lái)對(duì)報(bào)告做出反應(yīng)。即使在團(tuán)隊(duì)假設(shè)他們遵循敏捷軟件開發(fā)原則并因此選擇對(duì)變化做出快速反應(yīng)的情況下,這也是一種反模式。問題在于該解決方案可以解決癥狀,但不能解決系統(tǒng)設(shè)計(jì)中的缺陷。
設(shè)計(jì)模式是對(duì)性能的連續(xù)評(píng)估,這意味著您預(yù)計(jì)會(huì)發(fā)生漂移,因此,請(qǐng)?jiān)O(shè)計(jì)系統(tǒng)以使其盡快注意到。這是一種完全不同的方法,因?yàn)橹攸c(diǎn)不是反應(yīng)速度而是檢測(cè)速度。這使整個(gè)系統(tǒng)處于更加受控的過(guò)程中,從而為任何反應(yīng)的優(yōu)先級(jí)分配了更大的空間。持續(xù)評(píng)估意味著建立流程和工具,以不斷為一小部分新數(shù)據(jù)生成基本事實(shí)。在大多數(shù)情況下,這涉及手動(dòng)標(biāo)簽,通常使用眾包服務(wù)。但是,在某些情況下,我們可以使用其他更復(fù)雜的方法,但是在部署環(huán)境中,不可行的模型和設(shè)備會(huì)生成地面真相標(biāo)簽。例如,在自動(dòng)駕駛汽車的開發(fā)中,一個(gè)傳感器(例如LiDAR)的輸入可用于生成另一傳感器(例如攝像機(jī))的地面真實(shí)情況。
機(jī)器學(xué)習(xí)的SOLID設(shè)計(jì)原則
我之所以寫設(shè)計(jì)模式,是因?yàn)樵擃I(lǐng)域已經(jīng)達(dá)到成熟水平,我們不僅應(yīng)該分享我們的最佳實(shí)踐,而且還應(yīng)該能夠?qū)⑺鼈兂橄鬄閷?shí)際的設(shè)計(jì)模式。幸運(yùn)的是,這項(xiàng)工作已經(jīng)由多個(gè)小組開始。實(shí)際上,最近有兩本關(guān)于主題[ 1 ],[ 2 ]的書出版了。我很喜歡閱讀它們,但我仍然感到,盡管我們朝著正確的方向前進(jìn),但距離為ML從業(yè)人員制定SOLID設(shè)計(jì)原則還差幾步之遙。我相信,雖然已經(jīng)掌握了基礎(chǔ)知識(shí),并已用于構(gòu)建當(dāng)今的支持AI的產(chǎn)品,但設(shè)計(jì)模式和反模式的工作是邁向軟件2.0時(shí)代的重要一步。