人工智能和機(jī)器學(xué)習(xí)的質(zhì)量保證
譯文【51CTO.com快譯】人工智能幾年來一直是人們關(guān)注的焦點(diǎn)。盡管有關(guān)“機(jī)器人為您工作”的廣泛宣傳和聳人聽聞的頭條新聞,很明顯,人工智能創(chuàng)造了價(jià)值,即使收益微乎其微, 但它在各個(gè)行業(yè)中都有多種應(yīng)用。
盡管人工智能、機(jī)器學(xué)習(xí)和其他智能技術(shù)在各個(gè)行業(yè)中迅速獲得關(guān)注,但“生產(chǎn)化”進(jìn)程卻相對(duì)滯后。人工智能的質(zhì)量保證完美地證明了這一點(diǎn)。
就其本身而言,不存在人工智能開發(fā)人員或人工智能測試人員。所有工作都是由負(fù)責(zé)ML生命周期各個(gè)階段的數(shù)據(jù)科學(xué)家和ML工程師完成的。與軟件開發(fā)相比,人工智能工程依賴于“測試最佳實(shí)踐”,而不是每個(gè)人都遵循的具體規(guī)則。
但是,人工智能和機(jī)器學(xué)習(xí)的QA正在快速發(fā)展。醫(yī)療保健、銀行和金融、保險(xiǎn)、物流和通信等安全且對(duì)數(shù)據(jù)敏感的行業(yè)需要不斷測試和微調(diào)AI/ML解決方案,以確保其數(shù)據(jù)、基礎(chǔ)設(shè)施和關(guān)鍵系統(tǒng)受到保護(hù)。
本文是我對(duì)如何進(jìn)行AI / ML的質(zhì)量檢查的看法。正如我發(fā)現(xiàn)的那樣,我在普羅維克斯的同事們對(duì)這個(gè)過程有自己的看法。這只能證明,對(duì)于所有想測試人工智能的人來說,還有多少工作要做。
機(jī)器學(xué)習(xí)模型的生命周期與檢驗(yàn)
幾句基礎(chǔ)知識(shí)。
圖片由作者提供
從質(zhì)量檢查的角度來看,機(jī)器學(xué)習(xí)模型的生命周期包括三個(gè)主要階段:
1、準(zhǔn)備。收集、過濾和整理數(shù)據(jù),以便于后期處理和分析。
2、實(shí)驗(yàn)。功能經(jīng)過精心設(shè)計(jì),模型經(jīng)過設(shè)計(jì)、構(gòu)建、訓(xùn)練、測試和微調(diào),為部署做準(zhǔn)備。
3、部署。一旦對(duì)模型進(jìn)行了打包和驗(yàn)證,就可以將其部署到生產(chǎn)環(huán)境中供客戶使用。對(duì)模型進(jìn)行監(jiān)控,保證了模型的高精度和可靠性。
這意味著在生命周期的每個(gè)階段都要測試非常不同的屬性,從數(shù)據(jù)和特性到模型組件和人工智能解決方案本身。這給質(zhì)量檢查工程師帶來了一個(gè)重大挑戰(zhàn)。
數(shù)據(jù)測試
我們不能低估干凈、準(zhǔn)備充分的數(shù)據(jù)在機(jī)器學(xué)習(xí)中的重要性。俗話說“垃圾進(jìn),垃圾出”,如果將低級(jí)數(shù)據(jù)推入高質(zhì)量的機(jī)器學(xué)習(xí)模型中,它將提供低價(jià)結(jié)果,反之亦然。
例如,在2016年,加州大學(xué)伯克利分校(UC Berkeley)的一組研究人員就得出結(jié)論說,“ [檢測和修復(fù)臟數(shù)據(jù)]失敗可能會(huì)導(dǎo)致ML模型的分析不準(zhǔn)確且決策不可靠。”
我們?cè)谄樟_維克斯證明了同樣的事情。
我們的一個(gè)客戶GoCheck Kids希望通過機(jī)器學(xué)習(xí)增強(qiáng)其兒科照片篩選應(yīng)用程序的圖像分類組件。在回顧視覺篩選模型的結(jié)果后,發(fā)現(xiàn)用于訓(xùn)練模型的相當(dāng)一部分圖像必須重新標(biāo)記。完成后,團(tuán)隊(duì)發(fā)現(xiàn)ML模型的召回率提高了3倍,同時(shí)保持了它的精確性。
那么,可以測試什么呢?
我們可以將數(shù)據(jù)集作為一個(gè)整體進(jìn)行測試,并單獨(dú)測試每個(gè)數(shù)據(jù)點(diǎn)。
從數(shù)據(jù)質(zhì)量的角度來看,檢查重復(fù)、缺少值、語法錯(cuò)誤、格式錯(cuò)誤和語義錯(cuò)誤非常重要。如果要檢測統(tǒng)計(jì)質(zhì)量問題,則應(yīng)在數(shù)據(jù)中查找異常和異常值。
但是請(qǐng)記住,檢查重復(fù)、缺少值、語法錯(cuò)誤、格式錯(cuò)誤和語義錯(cuò)誤非常重要一般來說,數(shù)據(jù)測試仍然是手工完成的。
需要提及的一些工具: Deequ、GreatExpectations、Tensorflow數(shù)據(jù)驗(yàn)證。
注:我在這里詳細(xì)介紹了數(shù)據(jù)質(zhì)量檢查的過程-數(shù)據(jù)質(zhì)量突出顯示系統(tǒng)。
模型測試
ML模型測試的主要原則是將模型視為一個(gè)應(yīng)用程序,包括它的所有特性、輸入和輸出。從概念上講,如果您以這種方式查看模型,則測試它們會(huì)容易得多。
任何應(yīng)用程序的測試都從單元測試開始。您應(yīng)該具有許多高質(zhì)量的單元測試,以涵蓋盡可能多的場景。盡管許多ML工程師并沒有遵循這種最佳實(shí)踐,但是我認(rèn)為單元測試對(duì)于確保模型的高精度和高性能至關(guān)重要。
數(shù)據(jù)集測試是模型測試的關(guān)鍵階段。您的首要任務(wù)是確保訓(xùn)練集和測試集在統(tǒng)計(jì)上是等效的;也就是說,集合之間的差異小于被認(rèn)為有意義的差異,并且統(tǒng)計(jì)上落在等價(jià)邊界指示的區(qū)間內(nèi)。下圖顯示了統(tǒng)計(jì)上不等價(jià)的數(shù)據(jù)集。
數(shù)據(jù)也很重要,因?yàn)閼?yīng)該使用它來編寫用例?;旧希瑪?shù)據(jù)集表示用于檢查模型健壯性的測試用例。例如,根據(jù)您的模型和用例,您可以使用Golden UAT數(shù)據(jù)集、安全性數(shù)據(jù)集、生產(chǎn)流量重播數(shù)據(jù)集、回歸數(shù)據(jù)集、偏差數(shù)據(jù)集、邊緣情況數(shù)據(jù)集等。
您還應(yīng)該測試功能。具體來說,您的目標(biāo)是找出哪些特性對(duì)模型生成預(yù)測的影響最大。如果管線中有多個(gè)模型并且必須完成模型以選擇更準(zhǔn)確的模型,則功能測試至關(guān)重要。
模型必須經(jīng)過安全性測試。這本身就是一個(gè)廣泛的話題,我只會(huì)稍微介紹一下。與其他軟件一樣,模型也可以被病毒(所謂的線蟲)感染。線蟲可能導(dǎo)致模型錯(cuò)誤識(shí)別對(duì)象并生成錯(cuò)誤的預(yù)測。例如,被線蟲感染的模型可以“看到”長臂猿,而不是熊貓圖像中的熊貓。
最后,您需要測試模型是否存在偏差。偏差是對(duì)一個(gè)想法或事物的傾向或偏見。它以多種形式存在,但是從模型測試的角度來看,最有影響力的偏差類型是:
- 選擇偏差—選擇數(shù)據(jù)的方式使樣本不能反映真實(shí)世界的分布。
- 框架偏見—信息的呈現(xiàn)方式會(huì)改變?nèi)藗儗?duì)等價(jià)選擇問題的決策方式。
- 系統(tǒng)偏差—由各種因素導(dǎo)致的值一致且可重復(fù)的數(shù)值誤差,這些因素使數(shù)據(jù)向特定方向傾斜。
- 個(gè)人感知偏見—傾向于關(guān)注(并為之分配更多價(jià)值)確認(rèn)某人的先入之見的信息的傾向。
仔細(xì)檢查異常數(shù)據(jù)和密切檢查缺失值以在偏差和方差之間找到一個(gè)平衡點(diǎn)是至關(guān)重要的。盡量避免過度擬合和擬合不足,并盡可能客觀地過濾數(shù)據(jù)。
不過,消除數(shù)據(jù)和模型中的偏差比說起來容易做起來難。
首先,作為人類,我們天生就有偏見,沒有一個(gè)人是百分之百客觀的。其次,偏差測試幾乎都是手動(dòng)完成的,從長遠(yuǎn)來看,這只會(huì)給數(shù)據(jù)增加更多的錯(cuò)誤。
幸運(yùn)的是,有幾種服務(wù)可以幫助您更有效地處理偏見。一個(gè)是Pymetrics,一個(gè)面向通用ML應(yīng)用程序的開源偏差測試工具。另一個(gè)是Amazon SageMaker Clarify,這是一個(gè)完全管理的服務(wù),它使開發(fā)人員更容易查看他們的培訓(xùn)數(shù)據(jù)和模型,以識(shí)別和限制偏差并解釋預(yù)測。
Amazon Sagemaker Clarify于2020年12月在AWS re:Invent 2020上宣布。要斷言該服務(wù)的有效性和實(shí)用性還為時(shí)過早,但如果AWS能夠兌現(xiàn)承諾,SageMaker Clarify可以徹底改變偏差測試的方式。
在復(fù)雜的IT系統(tǒng)中測試模型
機(jī)器學(xué)習(xí)模型通常被設(shè)計(jì)和構(gòu)建為離線解決方案。也就是說,它們是由ML工程師開發(fā)的,他們并不十分擔(dān)心這些模型在實(shí)際應(yīng)用中的使用。
隨著可重現(xiàn)的機(jī)器學(xué)習(xí),MLOps和功能存儲(chǔ)的發(fā)展,這種情況正在快速變化,這對(duì)于QA專業(yè)人員來說是非常棒的。由于現(xiàn)在可以將ML模型作為綜合IT系統(tǒng)的一部分進(jìn)行開發(fā)(和測試),因此測試人員可以更快,更輕松地進(jìn)入該領(lǐng)域。
當(dāng)模型在IT系統(tǒng)中作為整個(gè)應(yīng)用程序或解決方案的一部分進(jìn)行測試時(shí),可以應(yīng)用QA工程師習(xí)慣的所有類型的測試。例如,您可以運(yùn)行集成測試以檢查所有組件是否均按預(yù)期工作。或者,您可以進(jìn)行系統(tǒng)測試,以確保整個(gè)系統(tǒng)是否按預(yù)期工作。
此外,編寫集成測試以測試API(可以使用Postman),在系統(tǒng)中運(yùn)行不正確的數(shù)據(jù)集來檢查容錯(cuò)能力,以及檢查與不同版本環(huán)境的兼容性,這一點(diǎn)很重要。
系統(tǒng)測試應(yīng)該涵蓋配置測試、安全性測試、性能測試和UI測試之類的領(lǐng)域。它們既可以手動(dòng)執(zhí)行,也可以自動(dòng)執(zhí)行。
簡單地說,在這個(gè)階段,您將測試整個(gè)系統(tǒng)和系統(tǒng)中的模型—您不會(huì)將任何模型視為系統(tǒng)的脫機(jī)組件
部署到生產(chǎn)后進(jìn)行測試
軟件測試和ML測試之間的主要區(qū)別在于,AI / ML解決方案(以及ML模型作為這些解決方案的一部分)在部署到生產(chǎn)環(huán)境后必須重復(fù)進(jìn)行測試。
當(dāng)您部署模型時(shí),它將繼續(xù)發(fā)展和降級(jí)。許多模型在生產(chǎn)中會(huì)降級(jí),實(shí)際上,它們?cè)?jīng)反映出的情況已經(jīng)發(fā)生了變化。這些過程可能會(huì)受到以下因素的影響:
- 改變客戶習(xí)慣。
- 自然異常和災(zāi)難。
- 一次性事件。
換句話說,隨著模型處理的數(shù)據(jù)發(fā)生變化,其準(zhǔn)確性和性能也會(huì)發(fā)生變化。此過程稱為數(shù)據(jù)漂移。
為了確保跟蹤模型降級(jí),您應(yīng)該有一個(gè)日志記錄和監(jiān)視系統(tǒng)。當(dāng)模型的準(zhǔn)確性和性能受數(shù)據(jù)(其他因素)影響時(shí),它將幫助您確定關(guān)鍵點(diǎn),并主動(dòng)調(diào)整模型。
為了補(bǔ)充您在測試方面的工作,您應(yīng)該運(yùn)行A / B測試以比較不同的模型,選擇可以部署到生產(chǎn)中的champion和challenger模型。當(dāng)然,應(yīng)該有一個(gè)自動(dòng)化的連續(xù)測試系統(tǒng)來順利,高效地完成所有這些工作。
結(jié)論
機(jī)器學(xué)習(xí)的質(zhì)量保證仍處于起步階段。對(duì)于愿意探索AI和ML提供的東西(而且他們提供了很多東西)的QA工程師來說,這是一件好事。
在本文中,我討論了機(jī)器學(xué)習(xí)質(zhì)量保證的主要階段,并簡要介紹了質(zhì)量保證進(jìn)入該領(lǐng)域需要了解的內(nèi)容。到目前為止,我已經(jīng)總結(jié)了自己的經(jīng)驗(yàn),非常感謝社區(qū)的反饋。(我很確定我在這里提到的一些最佳做法值得商)。)
總結(jié)一下,主要的收獲是:
- 專注于數(shù)據(jù)。您必須確保用于訓(xùn)練和測試模型的數(shù)據(jù)是高質(zhì)量的。為此,請(qǐng)確保對(duì)其進(jìn)行可視化并檢查是否存在異常,異常值和統(tǒng)計(jì)問題。
- 看一下您的模型,就好像它是一個(gè)普通的應(yīng)用程序一樣。作為復(fù)雜IT系統(tǒng)的一部分,測試您的AI解決方案并測試您的模型。也就是說,運(yùn)行通常會(huì)測試軟件的所有類型的測試,但要記住偏差和適合性。
- 部署后繼續(xù)測試模型。考慮數(shù)據(jù)漂移和其他可能影響模型性能的因素。添加監(jiān)視和日志記錄以跟蹤更改;使用適當(dāng)?shù)腃I / CD可以快速測試,調(diào)整和部署新模型。
我希望本文能幫助您開始ML測試的職業(yè)。請(qǐng)?jiān)谠u(píng)論部分分享您的反饋和想法。
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】