算法測試探索與實踐

開篇介紹

=======

本篇將分享,算法測試團隊在日常的測試工作中,探索與積累的算法測試經驗。將會按照以下目錄結構進行分享介紹。

機器學習基礎簡介

大家在學習算法測試之前,首先需要對機器學習基礎知識,有一個初步的瞭解,在此將從機器學習分類,哈囉算法應用場景,關鍵術語,算法研發步驟,四個維度進行介紹

機器學習分類

機器學習算法,一般分爲:監督學習,無監督學習和深度學習。

監督學習

監督學習,從給定的一組輸入 x 輸出 y 的訓練集中,學習將輸入映射到輸出的函數(如何關聯輸入和輸出),且訓練集中的數據樣本都有標籤( Label)或目標( Target),這就是監督學習。

監督學習一般使用兩種類型的目標變量:標稱型和數值型。標稱型目標變量的結果只在有限目標集中取值,如真與假、動物分類集合 {爬行類、魚類、哺乳類、兩棲類};數值型目標變量則可以從無限的數值集合中取值,如 0.100、42.001、1000.743 等。數值型目標變量主要用於迴歸分析。

無監督學習

無監督學習,無監督學習和監督學習最大的區別就是無監督學習的訓練數據沒有標籤。

在無監督學習中,將數據集合分成由類似的對象組成的多個類的過程被稱爲聚類;將尋找描述數據統計值的過程稱之爲密度估計。

深度學習

深度學習,是一種試圖使用由多重非線性變換構成的多個處理層,對數據進行高層抽象的算法。它的特徵提取並不依靠人工,而是機器自動提取的。

哈囉算法應用場景

在哈囉,算法基本應用在公司的所有業務場景中,如:

關鍵術語

特徵:

下面測量的這四種值(weight 重量,wingspan 翅展長度,webbed feet 腳蹼,back color 後背顏色)稱之爲特徵,也可以稱作屬性。

目標變量:

目標變量是機器學習算法的預測結果,在分類算法中目標變量的類型通常是標稱型的,而在迴歸算法中通常是連續型的。

訓練樣本:

特徵或者屬性通常是訓練樣本集的列,它們是獨立測量得到的結果,多個特徵聯繫在一起共同組成一個訓練樣本

知識表示:

假定這個鳥類分類程序,經過測試滿足精確度要求,是否我們就可以看到機器已經學會了如何區分不同的鳥類了呢?這部分工作稱之爲知識表示,某些算法可以產生很容易理解的知識表示,而某些算法的知識表示也許只能爲計算機所理解。知識表示可以採用規則集的形式,也可以採用概率分佈的形式,甚至可以是訓練樣本集中的一個實例。

分類:

它的主要任務是將實例數據劃分到合適的分類中

迴歸:

它主要用於預測數值型數據。大多數人可能都見過迴歸的例子——數據擬合曲線:通過給定數據點的最優擬合曲線。

聚類:

是否需要將數據劃分爲離散的組。如果這是唯一的需求,則使用聚類算法

算法研發步驟

(1)收集數據:我們可以使用很多方法收集樣本數據;
(2)準備輸入數據:得到數據之後,還必須確保數據格式符合要求;
(3)分析輸入數據:此步驟主要是人工分析以前得到的數據,這一步的主要作用是確保數據集中沒有垃圾數據;
(4)訓練算法:機器學習算法從這一步才真正開始學習。根據算法的不同,第 4 步和第 5 步是機器學習算法的核心,如果使用無監督學習算法,由於不存在目標變量值,故而也不需要訓練算法,所有與算法相關的內容都集中在第 5 步;
(5)測試算法:這一步將實際使用第 4 步機器學習得到的知識信息。爲了評估算法,必須測試算法工作的效果。對於監督學習,必須已知用於評估算法的目標變量值;對於無監督學習,也必須用其他的評測手段來檢驗算法的成功率。無論哪種情形,如果不滿意算法的輸出結果,則可以回到第 4 步,改正並加以測試。問題常常會跟數據的收集和準備有關,這時你就必須跳回第 1 步重新開始;
(6)算法預測:將機器學習算法轉換爲應用程序,執行實際任務,以檢驗上述步驟是否可以在實際環境中正常工作;

算法測試能力建設四大維度

從算法研發步驟中,可知,在算法測試質量保障領域,主要涉及:數據 & 依賴服務質量保障,模型效果質量保障,系統工程質量保障和基礎能力支撐建設。四大維度的建設。我們將在下面逐一鋪開介紹。

數據質量保障

在數據質量保障領域,基於公司當前的數據質量保障能力建設,尚缺乏業務數據質量監控的能力,在業界稱之爲 “業務數據覈對平臺”。而算法研發流程對數據質量要求非常高,業界將算法對數據質量的依賴形象的總結成一句話:“數據和特徵決定了機器學習的上限,而模型和算法只是逼近這個上限而已”。

因此,算法測試團隊,從數據比對的方式出發,針對不同的數據存儲介質,不同的應用服務,開發出針對多數據源比對的數據質量監控服務。

截止 6 月底,已經接入多條業務線。數據質量監控任務數 19 個,累計發現問題數 25 個以上,其中線上問題佔比超過 70%。形成常態化的線上數據質量監控能力,有效的提高數據質量保障能力和效率。

依賴服務質量保障

算法研發過程,依賴非常多的上下游服務來獲取關鍵數據,特徵或參數。比如客服的 ASR 服務,21 年 6 月之前,一直依賴外部的 ASR 語音轉換服務,但是由於語音轉換服務是外部的軟件包內部調用的方式提供服務而且返回結果正確與否也很難通過響應內容做分析,因此,既無法通過埋點,也無法通過響應內容來判斷外部 ASR 服務的可用性。一直依賴客服人工報障的方式來感知服務的可用性。

因此,算法測試團隊,借鑑線上服務撥測系統的設計思路,開發了服務可用性探測平臺,事先準備好測試語音,如 “你好” 的語音文件,定時主動向 ASR 服務發起探測請求,對響應結果做監控。當響應結果非文本 “你好” 時,主動告警通知相關責任同學。基於這套方案的落地,ASR 服務問題處理時效從 2020 平均 2.5 天,降低到 2021 平均 30 分鐘,同比下降 99%

服務可用性探測平臺,能夠滿足不同的服務類型:Web 服務,RPC 服務,消息服務,存儲服務。監控場景也可以滿足:可用性監控,響應時間監控,語義正確性監控等。目前已有客服平臺,供應鏈,2 條業務線接入,2021 年上半年累計新增發現 11 個線上問題。通過及時感知服務可用性,幫助研發同學快速定位解決,避免產生線上故障。

模型效果質量保障

模型效果質量保障,主要分爲兩個維度:模型性能評估和模型效果評估。以下將逐個介紹

模型性能評估

模型性能評估,是我們算法測試團隊與一站式 AI 平臺共建的項目,由算法測試團隊獨立研發提供模型性能評估能力,然後在一站式 AI 平臺的模型平臺內,爲所有的模型,提供自助的模型性能測試服務。

整個流程如下:算法研發同學,在一站式 AI 平臺的模型平臺內上傳模型,在測試頁面,可以提交模型性能測試請求。模型平臺會將性能測試請求發送給算法團隊提供的模型性能測試服務,在性能測試服務上做性能壓測排隊,配置解析,壓測數據準備的操作之後,會將壓測請求提交到公司的性能壓測平臺,由性能壓測平臺發起對特定模型的壓測請求,在壓測結束後,由性能壓測平臺返回本次性能壓測結果給到模型性能測試服務,模型性能測試服務將保存本次壓測結果及詳細報告鏈接,供後續模型平臺查看。

預計模型性能評估能力上線後,將爲模型平臺內近 300 個模型提供性能壓測能力,前置的模型性能評估,能夠有效解決線上模型性能問題,同時提前進行模型資源調配,優化資源分佈。

模型效果評估

模型效果評估,是模型效果質量保障中,非常重要的一環,依託模型效果評估,能夠幫助業務方和研發同學及時瞭解模型的效果質量,並進行後續的優化迭代。

目前,算法測試團隊規劃落地監督學習模型的效果評估能力建設。整個流程主要涉及 3 個環節:數據預處理,模型數據服務,模型效果評估。

數據預處理

主要指,對 3 種類型的數據進行處理:

  1. 人工構造數據,如 ASR 語音識別所需要的語料,NLP 識別所需的文本數據,均可通過人工製作,人工標註後,提供給模型進行訓練和測試使用。

  2. 線上離線數據,如保存在 hive 內的模型埋點數據,電動車用戶語音喚醒語料等。這些數據,數據量龐大,數據參數繁雜,因此需要離線數據 ETL 任務,來完成數據的提取,轉換,加載的處理過程。

  3. 線上實時數據,如實時的模型埋點消息,通過實時數據計算任務(Flink 任務),我們可以採樣獲取線上模型的埋點數據,並實時計算出模型效果的評測結果,供業務方和算法研發同學及時感知模型上線後的效果質量,並進行後續的優化迭代。

模型數據服務

經過數據預處理後,這些經過加工的數據,將會轉換成可供模型訓練和測試使用的特徵和標註數據。對於涉及到人工標註環節的數據,我們建設標註平臺來支持人工標註,算法預標註,標註質量評估,標註數據輸出等能力。規劃 21 年下半年,標註平臺支持 ASR 語料標註和 NLP 文本標註的能力。而對於不需要人工干預,可通過外部服務調用自動獲取參照結果的數據,我們提供特徵計算平臺,對特徵數據,參照結果等進行自動化計算封裝和數據輸出的能力。

模型效果評估

在完成模型數據準備之後,我們就可以通過模型調用服務,獲取被測模型的返回結果,通過模型評測服務的各項計算指標,如 ASR 語音識別的指標涉及:字正確率,詞正確率,句正確率,模型調用性能等指標。對於地圖限行模型,涉及與參照結果一致性的指標。依託模型評測服務計算的結果,將會輸出 Bad Case 和評測報告。對於 Bad Case 將會存儲到 Bad Case 管理平臺中,進行後續的 Bad Case 優化測試,迴歸集補充,Bad Case 狀態管理等等工作。

系統工程質量保障

對於算法測試的系統工程質量保障,與業務線的質量保障體系相比,除了算法相關的模型測試,上線前算法模型空跑外,基本一致。在此不做贅述。

基礎能力支撐

基礎能力支撐,亦和業務線的基礎能力支撐相一致。在此不做贅述。

結尾

最後,感謝大家的耐心閱讀,算法測試在哈囉依然處於持續建設,持續完善的階段。我們期望能夠借鑑業內的經驗,在哈囉落地,幫助業務方,研發等同學共同提高質量和效率。爲哈囉軟件質量的質效提升,貢獻我們的綿薄之力。也期待有志之士,和我們一起共建共創。謝謝。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/i6l89p3fVRNJ848dcohrgQ