第四範式先薦在2050大會上召集了《新媒體結合人工智能後的裂變》主題的新生論壇,第四範式資深科學家王嘉磊博士在論壇上分享瞭如何經過AutoML實現智能推薦系統的自動上線和運維。如下是演講實錄:算法
演講嘉賓簡介:王嘉磊,第四範式資深科學家,負責設計實現第四範式 AutoML 產品算法,美國康奈爾大學運籌學博士,研究方向爲貝葉斯優化及應用於自動化機器學習。數組
智能推薦系統領域出現了一些新技術——自動機器學習,即AutoML。接下來我主要講一下AutoML的概念以及AutoML在智能推薦系統中的應用。網絡
當咱們瀏覽了足夠多的視頻或文字,手機應用就必定會給咱們推薦一些相對符合咱們口味的內容,這個過程稱之爲推薦。運維
如今大多數推薦系統會採用機器學習技術。相較於以前的人工概括數據,機器學習可以從海量的數據中挖掘出數據之間的微妙聯繫,其粒度比人工概括得出的結果高好幾個數量級,推薦的質量和精準度也大幅提升。機器學習
AI在推薦系統中的應用函數
在推薦系統中,機器學習的流程通常以下:性能
最初,用戶想要看手機應用中的某些內容,因而發出請求,打開IP,系統就須要給該用戶推薦一些他比較感興趣的內容。這時首先會通過召回策略階段。這一階段的主要任務是進行粗選。在這一階段,系統中可供候選的內容不少。若是咱們想經過某些較爲簡單或快速的召回策略對內容進行初篩,能夠從如下維度入手:新聞熱點、用戶興趣、新內容分發……學習
接下來兩個階段主要運用機器學習模型完成:粗排和精排。所謂的粗排和精排,兩者之間並沒有嚴格的界限。大體看來,粗排模型通常是指能簡單快速地作出預測的模型,其精準度相對低;精排模型是指一些造價較爲昂貴但精準度高的模型,如今更多的就是關於神經網絡的模型。優化
通過機器學習模型粗排後,接下來就是排序。所謂的排序就是根據候選內容與用戶興趣的相關度,從高到低進行排序,排序最高的內容與用戶的興趣最相關。在排序完成後,後續要作的就是過濾已經推薦過的內容、考慮到多樣性後還須要打散推薦內容。最後一步就是返回給用戶的推薦結果。人工智能
在整個推薦過程當中,除了排序模型中涉及到機器學習以外,召回策略階段也有機器學習的應用。
若是推薦系統中的候選內容是文本內容,那麼須要天然語言處理(NLP)模型來理解文本內容中包含的信息。
若是是圖像或視頻,那麼須要藉助計算機視覺(CV)的技術來理解視頻或圖像中包含的信息,或者給圖像或視頻打相應標籤。
利用機器學習來分析用戶畫像,其實更多的是用在排序模型中。首先要分析用戶歸屬於哪一個用戶羣,這樣才能推薦出用戶比較感興趣的內容,預測點擊率和內容閱讀時長。
內容質量的評估也能夠藉助機器學習模型來實現自動化。若是評估出一部分較爲優質的內容,那就須要分發,大力宣傳。
如何構建模型?
剛纔簡單介紹了咱們可以利用AI、機器學習解決的一些點。在這些點裏面,其實每個要解決的點,均可能須要一個或多個模型。那麼該如何構建模型呢?
在咱們接入數據以後,須要對數據進行清洗。清洗事後,對數據作一些簡單的處理,讓這些數據可以適應某一個訓練模型,從而很好地上線該模型的一個版本。
在推薦場景中,最原始的一個訓練數據就是某一隨機用戶。若是給該用戶推薦一篇文章,文章最終被點擊或未被點擊都是可能產生的行爲。但若是隻有該用戶的ID和給該用戶的推薦內容ID這兩個信息的話,還遠遠不夠。咱們還會收集一些用戶的其餘信息,好比說用戶以前的瀏覽記錄、用戶曾經發表的評論等行爲數據,這些行爲數據會被概括到其餘的表中。
咱們須要把這些表作一個拼接,最後成行,造成一張比較全面的表單。表單中的每一行都是一次行爲事件,這一行的每個數據都是用來描述該事件的具體狀況:內容是什麼樣的?用戶是什麼樣的?用戶是否點擊了內容?多表拼接和特徵工程這兩個操做有必定相關性,作拼接的時候其實也是在作特徵。
接下來就涉及到訓練模型。咱們把一個模型訓練出來,它的產出須要就變成待上線的模型。構建模型的過程很複雜,其中的每個環節都須要人工的參與。一些建模科學家會憑藉本身豐富的背景知識或實戰經驗來作出選擇。
咱們但願能訓練出一個AI模型,讓這個AI模型幫助數據科學家在每一個環節中作出對應的選擇。其實我剛纔介紹的就是用機器學習構建機器學習模型的一個流程。這個模型的具體模式(下圖),其實和剛纔的機器學習流程圖一一對應。兩者基本上是在作同一件事情,只不過咱們但願,由AutoML完成這條鏈中要作的選擇。
在這個鏈條中,Feature爲特徵工程,Model涉及到在多個模型之間的選擇,Optimization涉及到模型的優化。假設如今咱們有一個模型並在其中作出了選擇,那我怎麼才能知道此次選擇的好壞呢?這裏比較關鍵的一個環節,也是人工建模時不必定會用到的一個環節,就是最後的AI模型。
也就是說,在這鏈條中,咱們所作的每一次操做,均可以經過評估這一步來檢驗此次操做。以特徵工程爲例,假設咱們想在已有特徵的基礎上嘗試某個新的特徵,那麼能夠在加了新特徵之後,經過評估這一步驟來檢驗此次操做是不是好的操做。若是咱們還但願給AutoML一些反饋,告訴它此次操做是好是壞,那麼接下來AutoML就能知道咱們以後可能須要的一些其餘操做,什麼樣的操做是較好的操做,或什麼樣的操做是差的操做。
從本質上來說,AutoML是一個搜索的過程
咱們看這幅圖,一開始,這條鏈是一個很是簡單的排列。在拿到數據後,咱們會作一些簡單的特徵工程(包括隨機選取某個模型),等到把模型訓練好後,經過評估即可得知這條機器學習管道目前的效果。
機器學習要達到的目標就是,經過不斷的改變或者增長操做,讓這條鏈最終的效果有所提高。這就是自動機器學習要作的主要工做。咱們能夠把優化的過程也稱爲搜索的過程。
至於搜索,最簡單的方法就是隨機嘗試。無論是選擇模型仍是訓練模型,其中都包含一些已知的、有限的操做。咱們從中隨機挑選,挑選完後進行評估,評估完後繼續去作新的嘗試。最後把作過的全部嘗試進行排序,挑選其中最好的或者次好的一個機器學習管道做爲最終結果。但這樣作存在的問題是,隨着機器學習管道愈來愈長,或是這當中的操做愈來愈複雜,能作的選擇呈指數性增加,並立刻就會變成上萬種或者數十種萬種操做。以後,對每一次操做進行評估還要花費大量時間。這時候就要用到搜索策略。
所謂的搜索策略,就是怎麼樣可以把搜索的過程儘量地加速,儘量作得更快。我總結了四種主要的方法:
第一種搜索策略叫進化算法。這種算法和達爾文進化論較爲類似。假設有一個種羣,所謂的種羣即多個機器學習管道,這些機器學習管道有好有壞。經過不斷的迭代,讓好的機器學習管道和另外一個好的機器學習管道變換或結合,逐步取代壞的,從而產生下一代機器學習管道。評估結果好的機器學習管道會被繼續保留在羣組中,評估結果差的則會被剔出羣組。通過不斷的更新迭代,最終留在這個羣組中的都是好的機器學習管道。
第二種搜索策略叫貪心法。假設你身處一個山谷中,但願以儘快的速度爬出山谷,但你的視線範圍可能就只在附近的10米之內。你能作的事情就是經過目測10米的範圍之內,哪一個方向多是上升最快的方向,等走到以後繼續作下一個選擇。所謂的貪心法就是指在局部環境中不斷地作出咱們認爲最好的決策,經過對局部不斷的迭代,從而找到全局最優解。
第三種搜索策略叫貝葉斯優化。貝葉斯優化是基於數據使用貝葉斯定理估計目標函數的後驗分佈,而後再根據分佈選擇下一個採樣的超參數組合。它充分利用了前一個採樣點的信息,其優化的工做方式是經過對目標函數形狀的學習,並找到使結果向全局最大提高的參數。
最後一種搜索策略叫強化學習。AlphaGo用到的主要策略就是強化學習。它的本質是解決 decision-making 問題,即自動進行決策,而且能夠作連續決策。
自動特徵工程
作出好的特徵工程通常對模型的效果提高比較明顯,所以咱們作自動機器學習的工做也涉及這部分。對於自動特徵工程,咱們要先定義特徵應該怎麼生成,咱們認爲特徵是原始數據通過一系列操做後產出的變換後的數據,咱們將操做大體分爲unary operation, binary, aggregation等幾類操做。
有了這些操做後,咱們經過算法來決策如何經過這些操做生成優質的特徵。這裏面咱們對於特徵重要性評估,也就是評價一個特徵多好或者多壞,以及決策算法都有較深刻的研究。
模型超參數優化
作完特徵工程以後,咱們就到了模型訓練環節。這個過程當中,因模型算法而異,可能會存在一些須要人提早去設置的參數,咱們稱之爲超參數。
這些超參數決定了這個模型訓練過程當中的行爲,而且會直接影響到這個模型最終的效果,並且最優超參數的選擇又是和輸入的數據息息相關的,它的設定須要根據不一樣場景、不一樣數據進行調節。
咱們經過研發自動調參算法來使這個過程自動化,在無人干預的狀況下咱們在多個數據集上發現最終模型效果能和專家至關甚至更好。 方法上咱們一方面把它當作一個黑盒優化問題,經過貝葉斯優化來決策超參數的選擇,另外一方面咱們也顧及到模型訓練自己不是一個黑盒,經過利用訓練過程當中產生的數據來加速超參數優化。
神經網絡結構搜索
在神經網絡結構搜索這個方向上,咱們主要作的工做一方面是如何可以讓搜索變得更加的高效,另外一方面咱們會去考慮專用的硬件和性能的優化。
第一個方面比較清楚,因爲最初的NAS算法動輒須要幾百個GPU運行近一週的時間才能搜索出在某些任務上效果優質的網絡結構,以後通過改進搜索結構的資源消耗依然是巨大的。這使網絡結構搜索很難普遍應用起來。咱們的研究方向但願經過高效的搜索算法和模型參數共享來儘量下降搜索對計算資源的要求。
第二個方面咱們發現實際應用中,之前設計出來的神經網絡,它並不會關心這個模型最終是在什麼樣的機器上運行。然而若是訓練完的模型是放在手機上,或者一些邊緣計算設備上,因爲這些設備的內存和運行速度都有很大限制,未經調試的模型極可能在這些設備上跑不起來或者性能有很大的影響。因此咱們在作神經網絡搜索的時候,但願可以把這些關於性能或者關於硬件的限制加進去,讓它去作一個更加有針對性的優化。
最後,當咱們有了訓練好的模型之後,咱們須要將模型作成一個服務而且不斷爲其餘應用提供預估服務。然而隨着時間推移,模型不可避免地會出現性能衰減這樣一個問題。
爲何呢?由於咱們的數據分佈實際上是不斷變化的。在推薦場景中,用戶的興趣,你們關注的內容是會不斷變化的。對於單一模型,咱們能夠經過不斷使用新的數據訓練和更新模型來保持效果。然而整個推薦系統是一個由不少模型組成的複雜系統,在系統創建之初,專家經過調試各模型之間分配的權重使系統在當時達到較優的狀態。隨着數據和模型的更新,先前的配置再也不是最優狀態,須要花費人力從新調優系統。咱們使用自動化在線調優算法將人力解放了出來。咱們把在線調優看做經典的多臂老虎機問題,並使用兼顧exploration和exploitation的算法實現實時的優化系統配置。
咱們作的另外一個嘗試叫作多任務貝葉斯優化。因爲系統的最優解在不斷地緩慢變化。變化以後,咱們會認爲當前優化目標和以前的優化目標,或者以前一系列的不一樣的優化目標,是一系列相關的任務。那麼咱們能夠在優化當前目標時把以前優化過程當中得到的信息複用過來,以熱啓動的方式實現當前優化任務的加速。
我今天分享的就是這些,謝謝。