什么是人工智能,人工智能是怎么測試的。可能是大家一開始最想了解的。 大家看圖中關(guān)于人工智能的定義。通俗點來說呢,就是讓機(jī)器實現(xiàn)原來只有人類才能完成的任務(wù);比如看懂照片,聽懂說話,思考等等。 很多人測試的同學(xué)會問,那人工智能是怎么測試的?其實這個問題本身問的不太對。 舉個例子,把人工智能比做水果。如果有人問你 “水果是怎么吃的”,你可能不知道怎么回答。 在不知道是什么類型的水果,或者具體是什么水果的時候,恐怕不能很好的回答這個問題。 那正確的問法是什么,可以從具體的人工智能應(yīng)用的來問:
目前應(yīng)用最廣泛的人工智能也是這四個類型。 剛剛把人工智能比作水果,我們知道,吃水果的方法有很多。可以把機(jī)器學(xué)習(xí)比作 一種吃水果的方法。如果用刀切這種方法。深度學(xué)習(xí)又是機(jī)器學(xué)習(xí)的一個分支。大概的關(guān)系圖如圖中顯示。 一般這些項目都要測試什么,要進(jìn)行什么類型的測試。 1. 模型評估測試 模型評估主要是測試 模型對未知新數(shù)據(jù)的預(yù)測能力,即泛化能力。 泛化能力越強(qiáng),模型的預(yù)測能力表現(xiàn)越好。而衡量模型泛化能力的評價指標(biāo),就是性能度量(performance measure)。性能度量一般有錯誤率、準(zhǔn)確率、精確率、召回率等。 2. 穩(wěn)定性/魯棒性測試 穩(wěn)定性/魯棒性主要是測試算法多次運行的穩(wěn)定性;以及算法在輸入值發(fā)現(xiàn)較小變化時的輸出變化。 如果算法在輸入值發(fā)生微小變化時就產(chǎn)生了巨大的輸出變化,就可以說這個算法是不穩(wěn)定的。 3. 系統(tǒng)測試 將整個基于算法模型的代碼作為一個整體,通過與系統(tǒng)的需求定義作比較,發(fā)現(xiàn)軟件與系統(tǒng)定義不符合或與之矛盾的地方。 系統(tǒng)測試主要包括以下三個方面:
4. 接口測試 接口測試是測試系統(tǒng)組件間接口的一種測試。接口測試主要用于檢測外部系統(tǒng)與系統(tǒng)之間以及內(nèi)部各個子系統(tǒng)之間的交互點。測試的重點是要檢查數(shù)據(jù)的交換,傳遞和控制管理過程,以及系統(tǒng)間的相互邏輯依賴關(guān)系等。 5. 文檔測試 文檔測試是檢驗用戶文檔的完整性、正確性、一致性、易理解性、易瀏覽性。 在項目的整個生命周期中,會得到很多文檔,在各個階段中都以文檔作為前段工作成果的體現(xiàn)和后階段工作的依據(jù)。為避免在測試的過程中發(fā)現(xiàn)的缺陷是由于對文檔的理解不準(zhǔn)確,理解差異或是文檔變更等原因引起的,文檔測試也需要有足夠的重視。 6. 性能測試 7. 白盒測試–代碼靜態(tài)檢查 8. 競品對比測試 如果有涉及時,可針對做競品對比測試,清楚優(yōu)勢和劣勢。比如AI智能音箱產(chǎn)品。 9. 安全測試 發(fā)布上線后,線上模型監(jiān)控 不管是機(jī)器學(xué)習(xí),推薦系統(tǒng),圖像識別還是自然語言處理,都需要有一定量的測試數(shù)據(jù)來進(jìn)行運行測試。 算法測試的核心是對學(xué)習(xí)器的泛化誤差進(jìn)行評估。為此是使用測試集來測試學(xué)習(xí)器對新樣本的差別能力。然后以測試集上的測試誤差作為泛化誤差的近似。測試人員使用的測試集,只能盡可能的覆蓋正式環(huán)境用戶產(chǎn)生的數(shù)據(jù)情況。正式環(huán)境復(fù)雜多樣的數(shù)據(jù)情況,需要根據(jù)上線后,持續(xù)跟進(jìn)外網(wǎng)數(shù)據(jù)。算法模型的適用性一定程度上取決于用戶數(shù)據(jù)量,當(dāng)用戶量出現(xiàn)大幅增長,可能模型會隨著數(shù)據(jù)的演化而性能下降,這時模型需要用新數(shù)據(jù)來做重新訓(xùn)練。 上線只是完成了一半測試,并不像APP或者WEB網(wǎng)站測試一樣,測試通過后,發(fā)布到正式環(huán)境,測試工作就完成了。 測試集如何選取很關(guān)鍵,一般遵循兩個原則:
測試數(shù)據(jù)的數(shù)量和訓(xùn)練數(shù)據(jù)的比例合理
不能使用訓(xùn)練數(shù)據(jù)來做為測試數(shù)據(jù),此為獨立。 測試數(shù)據(jù)需要和訓(xùn)練數(shù)據(jù)是同一個分布下的數(shù)據(jù),此為分布。 舉個例子,訓(xùn)練數(shù)據(jù)中正樣本和負(fù)樣本的分布為7:3,測試數(shù)據(jù)的分布也需要為7:3,或者接近這個分布,比較合理 測試數(shù)據(jù)的數(shù)量和訓(xùn)練數(shù)據(jù)的比例合理 當(dāng)數(shù)據(jù)量比較小時,可以使用 7 :3 訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù) (西瓜書中描述 常見的做法是將大約 2/3 ~ 4/5 的樣本數(shù)據(jù)用于訓(xùn)練,剩余樣本用于測試) 或者 6: 2 : 2 訓(xùn)練數(shù)據(jù),驗證數(shù)據(jù)和測試數(shù)據(jù)。 如果只有100條,1000條或者1萬條數(shù)據(jù),那么上述比例劃分是非常合理的。 如果數(shù)據(jù)量是百萬級別,那么驗證集和測試集占數(shù)據(jù)總量的比例會趨向于變得更小。如果擁有百萬數(shù)據(jù),我們只需要1000條數(shù)據(jù),便足以評估單個分類器,并且準(zhǔn)確評估該分類器的性能。假設(shè)我們有100萬條數(shù)據(jù),其中1萬條作為驗證集,1萬條作為測試集,100萬里取1萬,比例是1%,即:訓(xùn)練集占98%,驗證集和測試集各占1%。對于數(shù)據(jù)量過百萬的應(yīng)用,訓(xùn)練集可以占到99.5%,驗證和測試集各占0.25%,或者驗證集占0.4%,測試集占0.1%。 一般算法工程師會將整個數(shù)據(jù)集,自己劃分為訓(xùn)練集、驗證集、測試集。或者訓(xùn)練集、驗證集 等等。(這里的測試集是算法工程師的測試數(shù)據(jù)) 算法工程師提測時,寫明自測時的準(zhǔn)確率或其他指標(biāo)。測試人員另外收集自己的測試集。 測試數(shù)據(jù)可以測試人員自己收集。或者公司的數(shù)據(jù)標(biāo)注人員整理提供。或者爬蟲。外部購買。 測試人員可以先用算法工程師的測試集進(jìn)行運行測試查看結(jié)果。再通過自己的測試集測試進(jìn)行指標(biāo)對比。 |
|