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