2015年,Quora的工程主席Xavier Amatriain非常精彩地回答了Quora上的一個(gè)問題:“Quora在2015年將如何應(yīng)用機(jī)器學(xué)習(xí)”。從那個(gè)時(shí)候開始,機(jī)器學(xué)習(xí)在Quora的應(yīng)用得到了長足的發(fā)展。他們不僅更加深入地為已有的機(jī)器學(xué)習(xí)應(yīng)用構(gòu)建更大更好的模型,而且將機(jī)器學(xué)習(xí)技術(shù)應(yīng)用到更多領(lǐng)域。而在今年,Quora的工程經(jīng)理Nikhil Dandekar在Quora上回答了類似的問題:“Quora在2017年將如何應(yīng)用機(jī)器學(xué)習(xí)”。以下譯文翻譯自Nikhil的回答內(nèi)容,并已獲得作者的授權(quán),查看原文 “How does Quora use machine learning in 2017”。
機(jī)器學(xué)習(xí)在Quora的五大應(yīng)用場景
下面將介紹Quora平臺(tái)各個(gè)部分的功能,以及我們是如何在每一個(gè)功能上應(yīng)用機(jī)器學(xué)習(xí)的。
1. 查找信息
Quora通過問答的形式實(shí)現(xiàn)知識(shí)的分享。分享從用戶提出問題(或者叫“信息需求”)開始。在用戶提問之后,我們的機(jī)器學(xué)習(xí)系統(tǒng)開始進(jìn)行問題理解,例如,從問題中抽取信息,便于后續(xù)的處理。
我們十分關(guān)注內(nèi)容的質(zhì)量,不過好的內(nèi)容是從好的問題開始的。我們的機(jī)器學(xué)習(xí)系統(tǒng)對(duì)問題進(jìn)行質(zhì)量分類,幫助我們識(shí)別出高質(zhì)量和低質(zhì)量的問題。除了問題的質(zhì)量,我們還把問題分成不同的類型,這樣我們?cè)诤罄m(xù)流程中就知道該如何處理這些問題。
最后,我們給每個(gè)問題打上主題標(biāo)簽,用于標(biāo)記某個(gè)問題是屬于哪個(gè)主題的。大多數(shù)主題建模系統(tǒng)會(huì)處理大量的文本和少量的主題,而我們需要處理簡短的文本和超過百萬的潛在主題,所以這個(gè)對(duì)于我們來說更加具有挑戰(zhàn)性。
我們提取問題和上下文的特性,例如,問題的提問者、提問的地點(diǎn),等等。
另外一種可以滿足提問用戶需求的方式是讓他們搜索已有的問題,從而找到可以解答他們疑問的內(nèi)容。我們有兩個(gè)這樣的系統(tǒng),一個(gè)是提問框,一個(gè)是全文檢索。前者在Quora主頁頂部提供了一個(gè)提問框,可以列出排名靠前的匹配問題;后者則提供了更加深入的內(nèi)容匹配,可以通過點(diǎn)擊提問框里的“搜索”按鈕來查看匹配的內(nèi)容。這兩個(gè)系統(tǒng)使用了不同的排名算法,這些算法具有不同的搜索速度、匹配度以及搜索的深度和廣度。
2. 為問題尋找答案
“問題理解”系統(tǒng)的產(chǎn)出成為下一步處理的重要輸入:從專家那里獲得答案。在這一步,我們?nèi)匀皇褂脵C(jī)器學(xué)習(xí)系統(tǒng)來幫我們解決問題。
Request Answers(之前叫Ask To Answer)是Quora的一個(gè)產(chǎn)品特性,用戶可以向其他人發(fā)送請(qǐng)求,請(qǐng)求他們來回答指定的問題。我們把這個(gè)特性歸結(jié)為一個(gè)機(jī)器學(xué)習(xí)問題,我們的另一篇博文“Ask To Answer as a Machine Learning Problem”對(duì)這個(gè)問題進(jìn)行了詳細(xì)的描述。
除了A2A,我們主要通過主頁的問題種子(feed)來對(duì)未解答的問題和專家進(jìn)行匹配。種子的問題排名對(duì)我們來說是一個(gè)非常重要的機(jī)器學(xué)習(xí)問題。我們要考慮問題本身的屬性、用戶的屬性,以及其他一系列原始屬性,并將它們作為排名模型的輸入,為用戶生成具有主題化、相關(guān)性和定制化的種子。下面的截圖展示了幾天前我的種子當(dāng)中包含了哪些問題。
3. 閱讀內(nèi)容
從上圖可以看到,種子里不僅包含了問題,還包含了答案。種子的答案排名是我們的另一個(gè)非常重要的機(jī)器學(xué)習(xí)問題。問題排名和答案排名使用的是相似的底層系統(tǒng),不過因?yàn)橐_(dá)成的目的不一樣,所以在底層模型里使用的特征是不一樣的。我們會(huì)向用戶發(fā)送Email Digests,這也是另外一個(gè)機(jī)器學(xué)習(xí)的使用場景。以上這些排名問題都是通過高級(jí)的機(jī)器學(xué)習(xí)系統(tǒng)來解決的,這些系統(tǒng)通過多種模型和大量特征來完成最終的排名。
對(duì)于找到感興趣問題的用戶,我們要確保Quora能夠?yàn)樗麄兲峁┳罴训拈喿x體驗(yàn)。問題答案排名也是一個(gè)非常重要的機(jī)器學(xué)習(xí)問題,它可以確保與問題具有最高相關(guān)度的答案排在最前面。我們?cè)?ldquo;A Machine Approach to Ranking Answers on Quora”這篇文章里解釋了答案排名的細(xì)節(jié)。我們還對(duì)評(píng)論進(jìn)行排名,確保讀者可以看到相關(guān)度最高的評(píng)論排在最前面。這些排名系統(tǒng)遠(yuǎn)遠(yuǎn)超出了普通的upvote和downvote,它們通過相關(guān)的用戶特征、內(nèi)容質(zhì)量、參與度等信息來完成最終的排名。
我們還希望用戶在閱讀完問題的答案之后,能夠找到更多相關(guān)的內(nèi)容。于是,找出相關(guān)問題就成為了機(jī)器學(xué)習(xí)要為我們提供的另一個(gè)特性。我們?cè)趩栴}頁面上展示了相關(guān)的問題列表,方便用戶瀏覽問題。相關(guān)主題(Related Topics)和趨勢(shì)主題(Trending Topics)也可以幫助讀者更好地瀏覽Quora。我們還在主頁上放置了一些板塊,比如可關(guān)注的主題和可關(guān)注的用戶,它們也都是基于我們對(duì)用戶的了解程度而定制的推薦系統(tǒng)。
以上的機(jī)器學(xué)習(xí)系統(tǒng)最為重要的元素就是個(gè)性化。個(gè)性化意味著產(chǎn)品和底層的系統(tǒng)需要與Quora的每一個(gè)用戶相關(guān)。我們的用戶理解組件是個(gè)性化系統(tǒng)的一個(gè)重要組件,我們抽取了用戶的各種特征,比如他們喜歡和不喜歡的主題、他們?cè)诟鱾€(gè)領(lǐng)域的專長,以及他們的社交網(wǎng)絡(luò)屬性。我們還有各種“用戶實(shí)體”關(guān)系系統(tǒng),比如用戶與主題之間的關(guān)系、用戶和用戶之間的關(guān)系,等等。這些個(gè)性化的信息不僅可以作為“閱讀”應(yīng)用的輸入,還可以用于為問題尋找匹配的專家。
4. 保持高質(zhì)量的內(nèi)容
在用戶體驗(yàn)方面,Quora的內(nèi)容質(zhì)量是一個(gè)非常關(guān)鍵的因素。我們要確保我們的問題、答案、主題和其他內(nèi)容都是以高質(zhì)量為起點(diǎn),并且一直保持很高的質(zhì)量。為了做到這一點(diǎn),我們使用了一些機(jī)器學(xué)習(xí)系統(tǒng)來保證網(wǎng)站內(nèi)容的質(zhì)量。
重復(fù)問題檢測:我們檢測具有相同目的的問題,并把它們合并成單個(gè)問題。我們已經(jīng)就該問題展開過討論,并發(fā)布了一個(gè)重復(fù)問題的數(shù)據(jù)集,我們還開展了Kaggle競賽。惡意內(nèi)容檢測: Quora有一個(gè)口號(hào)——“Be Nice, Be Respectful”,不過對(duì)于一個(gè)網(wǎng)絡(luò)社區(qū)來說,這是一個(gè)很大的挑戰(zhàn)。我們同時(shí)使用機(jī)器學(xué)習(xí)和人工審查來識(shí)別具有侵犯性的內(nèi)容,這樣就可以保護(hù)我們的用戶,確保他們擁有良好的體驗(yàn)。垃圾檢測:對(duì)于大多數(shù)由用戶生成內(nèi)容的應(yīng)用來說,垃圾檢測是一個(gè)無法回避的問題,我們也不例外。我們有一些機(jī)器學(xué)習(xí)系統(tǒng)專門解決這個(gè)問題。我們還有其他很多機(jī)器學(xué)習(xí)系統(tǒng)用于維持高質(zhì)量的網(wǎng)站內(nèi)容,不過這里不一一例舉了。
5. 廣告優(yōu)化
我們?cè)?016年啟動(dòng)了貨幣化(monetization)。我們?cè)趩栴}頁面上展示與問題相關(guān)的廣告。我們通過機(jī)器學(xué)習(xí)進(jìn)行廣告CTR預(yù)測,確保所展示的問題與用戶具有最高的相關(guān)度,同時(shí)能夠?yàn)閺V告投放者帶來最高的收益。不過,我們?cè)谪泿呕矫娌艅倓偲鸩?,在未來,我們?huì)繼續(xù)擴(kuò)展機(jī)器學(xué)習(xí)在這方面的應(yīng)用。
除了上述的五個(gè)應(yīng)用場景,我們還使用了其他機(jī)器學(xué)習(xí)系統(tǒng),不過就不在這里一一累述了。
模型和庫
我們的團(tuán)隊(duì)使用了最好的模型和工具,同時(shí)也進(jìn)行了標(biāo)準(zhǔn)化,并能夠重用這些工具。以下列出了一些我們使用的模型(排名不分先后)。
Logistic RegressionElastic NetsGradient Boosted Decision TreesRandom Forests(深度)神經(jīng)網(wǎng)絡(luò)LambdaMART矩陣因子分解 (SVD、BPR、Weighted ALS,等)向量模型和其他NLP技術(shù)k-means及其他聚類技術(shù)其他我們也支持很多開源和內(nèi)部的庫,比如TensorFlow、sklearn、xgboost、RankLib、nltk、QMF(Quora自己的矩陣因子分解庫)以及其他一些內(nèi)部的庫。
機(jī)器學(xué)習(xí)平臺(tái)
自2015年以來,我們組建了自己的機(jī)器學(xué)習(xí)平臺(tái)團(tuán)隊(duì)。組建該團(tuán)隊(duì)的目標(biāo)是為了簡化機(jī)器學(xué)習(xí)工程師的工作,包括離線的工作(訓(xùn)練模型)和在線的工作(提供服務(wù))。在在線工作方面,平臺(tái)團(tuán)隊(duì)為機(jī)器學(xué)習(xí)工程師們提供了可靠和高可用的構(gòu)建和部署系統(tǒng),工程師們?cè)谶@個(gè)平臺(tái)上可以構(gòu)建和部署高性能、低成本的實(shí)時(shí)機(jī)器學(xué)習(xí)應(yīng)用。在離線工作方面,機(jī)器學(xué)習(xí)工程師們可以基于這個(gè)平臺(tái)構(gòu)建數(shù)據(jù)管道,以可重用和標(biāo)準(zhǔn)化的方式快速地抽取特征和訓(xùn)練模型。
感謝郭蕾對(duì)本文的審校。