好產品, 或許你已見得不少。 但好產品背後的探索和思考, 恐怕沒有太多人知道。
獲得授權翻譯系列文章, 告訴你 Google 如何調教人工智慧, 讓 Google Play 為你精准推薦 app。 系列文章共有 3 篇, 本文第 1 篇。
這些按主題的模糊搜索佔據 Play Store 接近一半的搜索量, 所以幫助人們找到最想要的應用十分重要。
通過主題搜索不僅是按關鍵字找出應用, 搜尋引擎還需瞭解一個 app 所屬的主題類別。 通過機器學習已經可以解決類似問題, 但這種方式產生結果的好壞, 取決於某個主題類別的學習樣本大小。
![](/images/lazyload.gif)
對於「社交應用」這類熱門的話題, 許多已知的 app 樣本可以用來學習(這個從樣本中學習的過程通常稱為「訓練」), 而大多數主題類別的學習樣本卻屈指可數。
我們此項研究的挑戰, 便是從一個十分有限的學習樣本, 和上百萬個橫跨數千個主題類別的 app 中進行機器學習, 這迫使我們調校機器學習技術。
![](/images/lazyload.gif)
我們剛開始打算建立一個深層神經網路(DNN), 訓練它根據 app 名稱含有的字詞和 app 的內容提要去預測搜索的主題。 例如, 如果一個 app 的內容提要提到「非常嚇人」或者「可怕」, 那關聯的主題便是「恐怖遊戲」。
通俗但不嚴謹地講, 神經網路這一電腦演算法, 便是類比人類大腦思考時的判斷與試錯過程, 它可以用來分辨貓狗、識別手寫字母等等。 一旦給予這個演算法的學習樣本越大, 它學習的結果越精確, 正如人類嬰兒見過的貓狗越多, 相應的神經刺激越多, 分辨貓狗的能力越準確。 然而, 鑒於深層神經網路所需的學習容量,
![](/images/lazyload.gif)
為了有效地解決這個問題, 我們需要更多的樣本給機器學習, 於是我們把思路轉向「大眾是如何區分 app 的主題類型」。 相比深層神經網路,
![](/images/lazyload.gif)
為了類比人類區分主題類別的方式, 我們嘗試這種接近語義分析的機器學習方式。 我們訓練了一個神經網路去學習 app 內容摘要所用的描述詞彙。這個過程使用的技術,常用來根據字詞預測詞彙(類似輸入法聯想字詞),例如「分享」可以聯想到「圖片」。
接著我們開發了一個分類器,利用上一流程總結的詞彙,分辨出一個 app 的所屬主題類別。現在我們只需少量樣本,便能學習一個 app 的主題類別,因為機器學習的重心基本放在語義分析上。
![](/images/lazyload.gif)
利用單一的分類器為所有主題分類,帶來的結果是它在流行的主題上學得更多,忽視了小眾主題。為了解決這一問題,我們為每個主題類別開發了單獨的分類器進行隔離調試。我們的技術產出了合理的結果,但有時候也會過度判斷。例如,它會把 Facebook 歸為「約會」類別或者把植物大戰僵屍歸到「教育遊戲」。為了產生更精准的分類器,我們需要更高容量和品質的學習資料。
![](/images/lazyload.gif)
於是我們把上述的系統視為一個泛篩選的分類器,把數十億個應用主題搭配,縮減到一個更易處理的小樣本清單。接著我們搭建了一個流程,讓人類評審員評估分類器的學習成果,然後把評審員認為正確的答案作為樣本,回饋到學習過程中。這個流程讓我們從現有的學習樣本中自給自足,使得分類器的結果更令我們滿意。
![](/images/lazyload.gif)
在糾結什麼才是正確答案這個問題上,我們會提前讓評審員一起討論「某某主題與某某應用是否搭配」,然後讓他們為匹配程度打分,例如「相關性強」,或者「基本相關」,或者「主題不符」。
對於分歧較大的一些答案,我們發現了這些原因:可選答案相似、評審員用過的 app 不多、主題太寬泛以致于適用大多數應用。
![](/images/lazyload.gif)
在我們解決這些難題後,評審員的意見變得較為一致,評審員選擇答案的理由也更加確切。儘管效果顯著,我們有時也需接受意見不合,放棄意見始終不一的答案。根據上文的技術,我們實現了 Google Play 應用商城的搜索和發現功能。雖然搜索功能迄今為止令人滿意,但與此同時我們也利用更多樣本、架構改進以及新演算法,不斷地探索改進的技術。在續篇文章中,我們將討論用戶的個性化應用推薦。
致謝。
以上研究是 Google Play 團隊與 Liadan O'Callaghan、Yuhua Zhu、Mark Taylor 和 Michael Watson 的合作成果。譯者李煜陽、徐廣宇
我們訓練了一個神經網路去學習 app 內容摘要所用的描述詞彙。這個過程使用的技術,常用來根據字詞預測詞彙(類似輸入法聯想字詞),例如「分享」可以聯想到「圖片」。接著我們開發了一個分類器,利用上一流程總結的詞彙,分辨出一個 app 的所屬主題類別。現在我們只需少量樣本,便能學習一個 app 的主題類別,因為機器學習的重心基本放在語義分析上。
![](/images/lazyload.gif)
利用單一的分類器為所有主題分類,帶來的結果是它在流行的主題上學得更多,忽視了小眾主題。為了解決這一問題,我們為每個主題類別開發了單獨的分類器進行隔離調試。我們的技術產出了合理的結果,但有時候也會過度判斷。例如,它會把 Facebook 歸為「約會」類別或者把植物大戰僵屍歸到「教育遊戲」。為了產生更精准的分類器,我們需要更高容量和品質的學習資料。
![](/images/lazyload.gif)
於是我們把上述的系統視為一個泛篩選的分類器,把數十億個應用主題搭配,縮減到一個更易處理的小樣本清單。接著我們搭建了一個流程,讓人類評審員評估分類器的學習成果,然後把評審員認為正確的答案作為樣本,回饋到學習過程中。這個流程讓我們從現有的學習樣本中自給自足,使得分類器的結果更令我們滿意。
![](/images/lazyload.gif)
在糾結什麼才是正確答案這個問題上,我們會提前讓評審員一起討論「某某主題與某某應用是否搭配」,然後讓他們為匹配程度打分,例如「相關性強」,或者「基本相關」,或者「主題不符」。
對於分歧較大的一些答案,我們發現了這些原因:可選答案相似、評審員用過的 app 不多、主題太寬泛以致于適用大多數應用。
![](/images/lazyload.gif)
在我們解決這些難題後,評審員的意見變得較為一致,評審員選擇答案的理由也更加確切。儘管效果顯著,我們有時也需接受意見不合,放棄意見始終不一的答案。根據上文的技術,我們實現了 Google Play 應用商城的搜索和發現功能。雖然搜索功能迄今為止令人滿意,但與此同時我們也利用更多樣本、架構改進以及新演算法,不斷地探索改進的技術。在續篇文章中,我們將討論用戶的個性化應用推薦。
致謝。
以上研究是 Google Play 團隊與 Liadan O'Callaghan、Yuhua Zhu、Mark Taylor 和 Michael Watson 的合作成果。譯者李煜陽、徐廣宇