更多文章歡迎關註:
我的專欄:數學·數據·電腦
我的公眾號:CS的陋室
欄目說明:本欄目主要和大家一起討論近期自己學習的心得和體會,與大家一起成長。具體介紹:倉頡專項:飛機大炮我都會,利器心法我還有。
準招分治是什麽
我們在解決很多演算法問題的時候,都會要求準招都比較高,而準確率和召回率其實是兩個相對矛盾的概念,召回提升一般會導致準確率下降,而準確率提升則很可能會讓召回率下降,當我們要尋求準確和準確同時提升時,方法就會很受限,一個比較常用的方式,就是準招分離,與其說這是一個方法不如說是一個思路,因為這只是一個指導我們去最佳化的一個方向而已。
所謂準招分離,其實就是我們把準招提升的這個問題拆解為兩個問題,分別是提升準確和提升召回,我們往往會分別使用特定方案來解決準確問題和召回問題,說白了,就是我用一個方案來專註解決準確問題,一個方案專註解決排序問題。
舉例1:推薦系統
我對這個方案的理解就來源於推薦系統,因為推薦系統整體的架構設計就體現了這個思想。
推薦系統整體結構就是召回-排序的結構。召回階段負責從多角度召回大量的結果,這裏其實能夠很大程度的保證了推薦系統的召回率,而準確率的保證則來源於後面的排序,透過使用者偏好等資訊對召回的大量內容進行精準的排序,從而讓使用者能更大程度的看到他喜歡的內容,從而保證了所謂的準確率。
但是我們仔細想,召回和排序對準確和召回的要求並非完全分離的,而只是各有側重而已,召回階段是為了保召回,但是並沒有準確率完全漠視,因為我們有的放矢的召回,我們其實也是在過濾那些「使用者一定不喜歡」的東西,從而對準確率有了共現,而排序階段雖然有CTR預估之類的方式來保證了準確,但是排序階段還是有打散的操作來保證使用者能看到的東西具有多樣性,對召回率同樣有貢獻的。
舉例2:阿裏小蜜的數據量分級機制
來自於我之前的一篇文章:
這篇文章的核心在於根據對無樣本、少樣本、多樣本進行了不同操作的處理,而這裏其實也用了這個思想,這個思想的體現在於這幾個無樣本、少樣本、多樣本問題下的方案——正則規則、向量召回、分類學習。
正則規則一般具有很高的準確性,但是召回率較低;向量召回則一定程度會更註重召回率;精準的學習尤其是分類學習,相比正則規則而言還是比較難擊敗的,因此準確率相對較低,但是泛化能力是很大提升的,因此召回率是比較高的,但是準確率整體是高於向量召回的。
從這裏看,其實這3個方案的有機結合能讓準招都有比較穩定的保證。當然在搜尋領域也是類似的,規則+詞典用覆蓋絕大多數高頻場景,能有較高的準確性,召回率靠分類模型來兜,向量召回的。
該怎麽實施
說了這幾個例子後,大家應該有所理解了,然後就是具體的實施了。
大部份情況,其實不太建議大家一上來就整準招分離,其實這是一個效果最佳化的產物,從有到優地逐步搭建起來。首先,我們需要確認當前方案的現狀:
在此基礎上,開始找另一個方向效果比較好的方案。
舉個例子,現在我們用模型完成了一個比較簡單的文本分類方案,但是受限於一些原因效果不太好,我們知道模型方案的泛化能力比較高,但隨之而來的是準確率可能受限,因此我們需要有一個準確性較高的方案,那就是規則和詞典了。
另外,要記得處理好兩者的關系,上下遊、並列merge等都是合並的方式。
於是,我們就把準招的任務給分開了,由規則和詞典保證準確,然後模型來提升泛化能力,保召回,兩者結合,完成一個完整的結構,加上規則高準低召回以及高效能的優點,我們可以把規則詞典放在上遊,召回不來的交給模型,就成了一個分級結構,就和阿裏小蜜一樣:。
此後,我們逐步提升規則和詞典的覆蓋面從而提升召回,模型層面我們也逐步完成效果的最佳化,此後這個文本分類方案的效果能夠得到更穩定的提升。
小結
從某種程度上說,這個分治其實類似模型融合的思想,集多個方案的優勢於一體完成一個完整的方案,而這個分治不代表了完全割裂,而是兩者有機融合,發揮各自的優勢從而完成這個專案的優勢,實作效果提升,糾結於一個小模組就能完成整個效果的提升,天花板肯定會低一些了。