演算法測試,怎樣才能收斂?

feifeihuanming發表於2020-12-26

對 AI 演算法進行測試時,有一個很重要的問題就是測的越多越覺得測試難以收斂。

舉個例子,比如說人臉檢測演算法,一般情況下我們在準備 testcase 的時候,需要考慮光線、距離、角度、表情、遮擋、背景等各種因素。
假如說應用場景是手機後置攝像頭,就單拿背景這個影響因素來說,覆蓋到所有的背景都是做不到的。

但是對演算法的測試還是要進行下去,具體操作起來可以這樣操作:
在不確定中尋找確定性
先廣度再深度

首先思想上要有準備,我們就是在不確定性中尋找確定性。這有點像 TCP 協議,TCP 協議就是在不穩定的網路環境下找到一個方法,可以實現穩定的網路傳輸。對於演算法測試來說,我們就是要透過設計更加科學的測試用例、測試方案,在這麼多會對演算法的效果產生影響的因素中,找到演算法的邊界,即確定性。透過測試,我們需要達到一個目標,就是明白演算法在哪些情況演算法是有效的,哪些情況下演算法是失效的。這樣我們對演算法的表現就會有一個總體的認識,也能夠對演算法同學提出更加專業的意見。

為了達到上面的效果,在測試的時候我們可以先廣度後深度。比如說新來了一個演算法需要測試,首先需要對演算法進行一次摸底測試。這時候就讓測試集的範圍儘可能的廣。
還拿上面的人臉檢測來說,測試集可以分兩類:有人臉和無人臉。其中有人臉的素材要儘量豐富,這裡說的豐富不是說數量多,而是說要覆蓋儘可能多的情況。

對於有人臉素材來說,可以是包含了大小臉、包含了不同背景、包含了不同光線 (如背光、側光、頂光、暗光等)、包含了不同角度等。
對於無人臉素材來說,範圍就更廣了,比如說草地、車庫、動物、風景、商場等等。

有了一定的廣度之後,就大致瞭解演算法的邊界在哪裡。接下來再結合相應的業務場景,重點關注演算法誤檢和漏檢的場景,就可以逐步收斂測試範圍。

當然,即使做了廣度測試,也不可能覆蓋到所有的場景。而且隨著演算法的不停迭代,之前一些出問題的場景可能已經解決了,這時候就需要不定期的進行廣度測試,一方面是儘可能覆蓋更加多的場景,另一方面對於演算法的最新表現也會有一個更加清晰的認識。

相關文章