眾所周知,人工智能的測試具有相當大的難度,不論是以前在互聯(lián)網(wǎng)就經(jīng)??吹降膬?nèi)容推薦系統(tǒng),還是金融領域常用的信息分類系統(tǒng)。測試介入的都不多。那么如何測試人工智能相關的產(chǎn)品。
我們最常做的測試其實就是直接看模型效果,效果不好就慢慢調(diào)。 為了改變這種現(xiàn)狀,我們希望測試人員也能做一些事情,參與到人工智能服務的質(zhì)量保證當中來。在日常工作中總結了一些經(jīng)驗跟大家討論一下。
什么是人工智能
簡而言之,現(xiàn)階段的人工智能就是:人工智能=大數(shù)據(jù)+機器學習。
現(xiàn)階段的人工智能是使用機器學習算法在大量的歷史數(shù)據(jù)下進行訓練,從歷史數(shù)據(jù)中找到一定的規(guī)律并對未來做出的預測行為。舉例說明,就好比銀行做過的反欺詐項目。
在銀行里有一群專家,他們的工作就是根據(jù)經(jīng)驗向系統(tǒng)中輸入一些規(guī)則。例如某一張卡在一個城市有了一筆交易,之后1小時內(nèi)在另一個城市又有了一筆交易。這些專家根據(jù)以前的經(jīng)驗判斷這種情況是有盜刷的風險的。
他們在系統(tǒng)中輸入了幾千條這樣的規(guī)則,組成了一個專家系統(tǒng)。 這個專家系統(tǒng)是建立在人類對過往的數(shù)據(jù)所總結出的經(jīng)驗下建立的。 后來我們引入了機器學習算法,對過往所有的歷史數(shù)據(jù)進行訓練,最后在25億個特征中抽取出8000萬條有效特征。
我們把這些特征就暫且當成是專家系統(tǒng)中的規(guī)則。8000萬對不到1萬,效果是可以預想的。當時對第一版模型上線后的數(shù)據(jù)做統(tǒng)計,反欺詐效果提升了7倍, 這就是二分類算法典型的業(yè)務場景。
為什么叫機器學習呢,因為它給人一種感覺,機器能像人類一樣從過去的數(shù)據(jù)中學習到經(jīng)驗,只不過機器的能力更強。 如果想再稍微深究一下機器學習訓練出來的模型到底是什么,那大家可以暫且理解為一個二分類的模型主要是就是一個key,value的數(shù)據(jù)庫。
key就是在數(shù)據(jù)中抽取出來的特征,value就是這個特征的權重。 當我們想要預測一個用戶的行為的時候,就會從用戶的數(shù)據(jù)中提取特征并在模型中查找對應的權重。 最后根據(jù)這些特征的權重算出一個分,也可以說是一個概率。 如果大家看過最強大腦這個節(jié)目的話。
應該記得第一次人機大戰(zhàn)項目是人臉識別,第三回合的時候機器給出了兩個答案。因為當時做人臉識別項目的志愿者中有一對雙胞胎。所以機器計算出的這兩個人的概率只差了0.1%,最后為了謹慎起見機器輸出兩個答案出來。以至于吳恩達先生也很糾結到底該選哪一個答案。
再之后的人機對戰(zhàn)項目里我們也能看到雖然小度一路高歌,毫無敗績。但是其中是有選錯過幾次的。所以大家可以看到我們得到的答案其實是一個概率,是一個根據(jù)以往的數(shù)據(jù)進行總結并作出預測的一個行為。并不是100%準確的。即便是阿爾法狗當初也是輸過一局的。所以其實我們測試的痛點也就來了,你怎么測試一個概率呢。
這個圖就是一個人工智能服務的略縮圖。 在歷史數(shù)據(jù)上訓練出模型,并發(fā)布一個預測服務,這個預測服務可能就是一個http的接口。 然后新的數(shù)據(jù)過來以后,根據(jù)模型算出一個預測值。經(jīng)過剛才的說明,我們看到數(shù)據(jù)是人工智能的根本。擁有的數(shù)據(jù)越多,越豐富,越真實,那么訓練出的模型效果越好。
測試思路
·數(shù)據(jù)測試
·分層測試
·訓練集與測試集對比
數(shù)據(jù)測試
根據(jù)我們之前對人工智能的定義,我們發(fā)現(xiàn)數(shù)據(jù)是人工智能的根據(jù)。 保證數(shù)據(jù)的正確定是非常必要的。 而且?guī)缀跛械臋C器學習算法對數(shù)據(jù)的容錯能力都很強,即便數(shù)據(jù)稍有偏差,它們也能通過一次一次的迭代和對比來減少誤差。 所以即便我們的數(shù)據(jù)有一點問題最后得出的模型效果可能還不差, 但是這個時候我們不能認為模型就沒問題了。 因為很可能在某些特定場景下就會出現(xiàn)雪崩效應。