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