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