1. 程式人生 > >美團大腦:知識圖譜的建模方法及其應用

美團大腦:知識圖譜的建模方法及其應用

作為人工智慧時代最重要的知識表示方式之一,知識圖譜能夠打破不同場景下的資料隔離,為搜尋、推薦、問答、解釋與決策等應用提供基礎支撐。美團大腦圍繞吃喝玩樂等多種場景,構建了生活娛樂領域超大規模的知識圖譜,為使用者和商家建立起全方位的連結。我們美團希望能夠通過對應用場景下的使用者偏好和商家定位進行更為深度的理解,進而為大眾提供更好的智慧化服務,幫大家吃得更好,生活更好。

近日,美團 AI 平臺部 NLP 中心負責人、大眾點評搜尋智慧中心負責人王仲遠博士受邀在 AI 科技大本營做了一期線上分享,為大家講解了美團大腦的設計思路、構建過程、目前面臨的挑戰,以及在美團點評中的具體應用與實踐,其內容整理如下:

知識圖譜的重要性

近年來,人工智慧正在快速地改變人們的生活,可以看到各家科技公司都紛紛推出人工智慧產品或者系統,比如說在 2016 年,谷歌推出的 AlphaGo ,一問世便橫掃整個圍棋界,完勝了人類冠軍。又比如亞馬遜推出的 Amazon Go 無人超市,使用者只需下載一個 App,走進這家超市,就可以直接拿走商品,無需排隊結賬便可離開,這是人工智慧時代的“新零售”體驗。又比如微軟推出的 Skype Translator,它能夠幫助使用不同語言的人群進行實時的、無障礙的交流。再比如說蘋果推出的 Siri 智慧助理,它讓每一個用蘋果手機的使用者都能夠非常便捷地完成各項任務。所有這些人工智慧產品的出現都依賴於背後各個領域技術突飛猛進的進展,包括機器學習、計算機視覺、語音識別、自然語言處理等等。

作為全球領先的生活服務電子商務平臺,美團點評在人工智慧領域也在積極地進行佈局。今年 2 月份,AI 平臺部 NLP 中心正式成立,我們的願景是用人工智慧幫大家吃得更好,生活更好。語言是人類智慧的結晶,而自然語言處理是人工智慧中最為困難的問題之一,其核心是讓機器能像人類一樣理解和使用語言。

我們希望在不久的將來,當用戶發表一條評價的時候,能夠讓機器閱讀這條評價,充分理解使用者的喜怒哀樂。當用戶進入大眾點評的一個商家頁面時,面對成千上萬條使用者評論,我們希望機器能夠代替使用者快速地閱讀這些評論,總結商家的情況,供使用者進行參考。未來,當用戶有任何餐飲、娛樂方面的決策需求的時候,美團點評能夠提供人工智慧助理服務,幫助使用者快速的進行決策。

所有這一切,都依賴於人工智慧背後兩大技術驅動力:深度學習知識圖譜。我們可以將這兩個技術進行一個簡單的比較:

我們將深度學習歸納為隱性的模型,它通常是面向某一個具體任務,比如說下圍棋、識別貓、人臉識別、語音識別等等。通常而言,在很多工上它能夠取得非常優秀的結果,同時它也有非常多的侷限性,比如說它需要海量的訓練資料,以及非常強大的計算能力,難以進行任務上的遷移,而且可解釋性比較差。

另一方面,知識圖譜是人工智慧的另外一大技術驅動力,它能夠廣泛地適用於不同的任務。相比深度學習,知識圖譜中的知識可以沉澱,可解釋性非常強,類似於人類的思考。

我們可以通過上面的例子,來觀察深度學習技術和人類是如何識別貓的,以及它們的過程有哪些區別。

2012 年,Google X 實驗室宣佈使用深度學習技術,讓機器成功識別了圖片中的貓。它們使用了 1000 臺伺服器,16000 個處理器,連線成一個 10 億節點的人工智慧大腦。這個系統閱讀了 1000 萬張從 YouTube 上抽取的圖片,最終成功識別出這個圖片中有沒有貓。

我們再來看看人類是如何做的。對於一個 3 歲的小朋友,我們只需要給他看幾張貓的圖片,他就能夠很快識別出不同圖片中的貓,而這背後其實就是大腦對於這些知識的推理。

2011 年,Science 上有一篇非常出名的論文叫《How to Grow a Mind》。這篇論文的作者來自於 MIT、CMU、UC Berkeley、Stanford 等美國名校的教授。在這篇論文裡,最重要的一個結論就是:如果我們的思維能夠跳出給定的資料,那麼必須有 Another Source Of Information 來 Make Up The Difference

這裡的知識語言是什麼?對於人類來講,其實就是我們從小到大接受的學校教育,報紙上、電視上看到的資訊,通過社交媒體,通過與其他人交流,不斷積累起來的知識。

近年來,不管是學術界還是工業界都紛紛構建自家的知識圖譜,有面向全領域的知識圖譜,也有面向垂直領域的知識圖譜。其實早在文藝復興時期,培根就提出了“知識就是力量”,在當今人工智慧時代,各大科技公司更是紛紛提出:知識圖譜就是人工智慧的基礎

全球的網際網路公司都在積極佈局知識圖譜。早在 2010 年微軟就開始構建知識圖譜,包括 Satori 和 Probase。2012 年,Google 正式釋出了 Google Knowledge Graph,現在規模已經達到 700 億左右。目前微軟和 Google 擁有全世界最大的通用知識圖譜,Facebook 擁有全世界最大的社交知識圖譜,而阿里巴巴和亞馬遜則分別構建了商品知識圖譜。

如果按照人類理解問題和回答問題這一過程來進行區分,我們可以將知識圖譜分成兩類。我們來看這樣一個例子,如果使用者看到這樣一個問題,“Who was the U.S. President when the Angels won the World Series?”相信所有的使用者都能夠理解這個問題,也就是當 Angels 隊贏了 World Series 的時候,誰是美國的總統?

這是一個問題理解的過程,它所需要的知識通常我們稱之為 Common Sense Knowledge(常識性知識)。另外一方面,很多網友可能回答不出這個問題,因為它需要另外一個百科全書式的知識。

因此,我們將知識圖譜分成兩大類,一類叫 Common Sense Knowledge Graph(常識知識圖譜),另外一類叫 Encyclopedia Knowledge Graph(百科全書知識圖譜)。這兩類知識圖譜有很明顯的區別。針對 Common Sense Knowledge Graph,通常而言,我們會挖掘這些詞之間的 Linguistic Knowledge;對於 Encyclopedia Knowledge Graph,我們通常會在乎它的 Entities 和這些 Entities 之間的 Facts。

對於 Common Sense Knowledge Graph,一般而言我們比較在乎的 Relation 包括 isA Relation、isPropertyOf Relation。對於 Encyclopedia Knowledge Graph,通常我們會預定義一些謂詞,比如說 DayOfbirth、LocatedIn、SpouseOf 等等。

對於 Common Sense Knowledge Graph 通常帶有一定的概率,但是 Encyclopedia Knowledge Graph 通常就是“非黑即白”,那麼構建這種知識圖譜時,我們在乎的就是 Precision(準確率)。

Common Sense Knowledge Graph 比較有代表性的工作包括 WordNet、KnowItAll、NELL 以及 Microsoft Concept Graph。而 Encyclopedia Knowledge Graph 則有 Freepase、Yago、Google Knowledge Graph 以及正在構建中的“美團大腦”。

這裡跟大家介紹兩個代表性工作:1)Common Sense Knowledge Graph:Probase;2)Encyclopedia Knowledge Graph:美團大腦。

常識性知識圖譜(Common Sense Knowledge Graph)

Microsoft Concept Graph 於 2016 年 11 月正式釋出,但是它早在 2010 年就已經開始進行研究,是一個非常大的圖譜。在這個圖譜裡面有上百萬個 Nodes(節點),這些 Nodes 有Concepts(概念),比如說 Spanish Artists(西班牙藝術家);有 Entities(實體),比如說 Picasso(畢加索);有 Attributes(屬性),比如 Birthday(生日);有 Verbs(動詞),有 Adjectives(形容詞),比如說 Eat、Sweet。也有很多很多的邊,最重要的邊,是這種 isA 邊,比如說 Picasso,還有 isPropertyOf 邊。對於其他的 Relation,我們會統稱為 Co-occurance。

這是我們在微軟亞洲研究院期間對 Common Sense Knowledge Graph 的 Research Roadmap(研究路線圖)。當我們構建出 Common Sense Knowledge Graph 之後,重要的是在上面構建各種各樣的模型。我們提出了一些模型叫 Conceptualization(概念化模型),它能夠支援 Term Similarity、Short Text Similarity 以及 Head-Modifier Detection,最終支援各種應用,比如 NER、文字標註、Ads、Query Recommendation、Text Understanding 等等。

到底什麼是 Short Text Understanding?常識怎麼用在 Text Understanding 中?下面我們可以看一些具體的例子:

當大家看到上面中間的文字時,相信所有人都能夠認出這應該是一個日期,但是大家沒辦法知道這個日期代表什麼含義。但如果我們再多給一些上下文資訊,比如 Picasso、Spanish等等,大家對這個日期就會有一些常識性的推理。我們會猜測這個日期很可能是 Picasso 的出生日期,或者是去世日期,這就是常識。

比如說當我們給定 China 和 India 這兩個 Entity 的時候,我們的大腦就會做出一些常識性的推理,我們會認為這兩個 Entity 在描述 Country。如果再多給一個 Entity:Brazil,這時候我們通常會想到 Emerging Market。如果再加上 Russia,大家可能就會想到“金磚四國”或者“金磚五國”。所有這一切就是常識性的推理。

再比如,當我們看到 Engineer 和 Apple 的時候,我們會對 Apple 做一些推理,認為它就是一個 IT Company,但是如果再多給一些上下文資訊,在這個句子裡面由於 eating 的出現,我相信大家的大腦也會一樣地做出常識推理,認為這個 Apple 不再是代表 Company,而是代表 Fruit。

所以,這就是我們提出來的 Conceptualization Model,它是一個 Explicit Representation。我們希望它能夠將 Text,尤其是 Short Text,對映到 Millions Concepts,這樣的 Representation 能夠比較容易讓使用者進行理解,同時能夠應用到不同場景當中。

在這一頁 PPT 中,我們展示了 Conceptualization 的結果。當輸入是 Pear 和 Apple 的時候,那麼我們會將這個 Apple 對映到 Fruit。但是如果是 iPad Apple 的時候,我們會將它對映到 Company,同時大家注意這並不是唯一的結果,我們實際上是會被對映到一個 Concept Vector。這個 Concept Vector 有多大?它是百萬級維度的 Vector,同時也是一個非常 Sparse 的一個 Vector。

通過這樣的一個 Conceptualization Model,我們能夠解決什麼樣的文字理解問題?我們可以看這樣一個例子。比如說給定一個非常短的一個文字 Python,它只是一個 Single Instance,那麼我們會希望將它對映到至少兩大類的 Concept 上,一種可能是 Programming Language,另外一種是 Snake。當它有一些 Context,比如說 Python Tutorial 的時候,那麼這個時候 Python 指的應該是 Programming Language,如果當它有其他的 Adjective、Verb,比如有 Dangerous 時,這時候我們就會將 Python 理解為 Snake。

同時如果在一個文本里麵包含了多個的 Entity,比如說 DNN Tool、Python,那麼我們希望能夠檢測出在這個文本里面哪一個是比較重要的 Entity,哪一個是用來做限制的 Entity。

下面我們將簡單地介紹一下,具體應該怎麼去做。當我們在 Google 裡搜一個 Single Instance 的時候,通常在右側會出現這個 Knowledge Panel。對於 Microsoft 這樣一個 Instance,我們可以看到這個紅色框所框出來的 Concept,Microsoft 指向的是 Technology Company,這背後是怎麼實現的?

我們可以看到,Microsoft 實際上會指向非常非常多的 Concept,比如說 Company,Software Company,Technology Leader 等等。我們將它對映到哪一個 Concept 上最合適?

如果將它對映到 Company 這個 Concept 上,很顯然它是對的,但是我們卻沒辦法將 Microsoft 和 KFC、BMW 這樣其他型別的產品區分開來。另外一方面,如果我們將 Microsoft 對映到 Largest Desktop OS Vendor 上,那麼這是一個非常 Specific 的 Concept,這樣也不太好,為什麼?因為這個 Concept 太 Specific,太 Detail,它可能只包含了 Microsoft 這樣一個 Entity,那麼它就失去了 Concept 的這種抽象能力。

所以我們希望將 Microsoft 對映到一個既不是特別 General(抽象),又不是一個特別 Specific(具體)的 Concept 上。在語言學上,我們將這種對映稱之為 Basic-level,我們將整個對映過程命名為 Basic-level Conceptualization。

我們提出了一種計算 Basic-level Conceptualization 的方法,其實它非常簡單而且非常有效。就是將兩種的 Typicality 做了一些融合,同時我們也證明了它們跟 PMI 和 Commute Time 之間的一些關聯。並且在一個大規模的資料集上,我們通過 Precision 和 NDCG 對它們進行了評價。最後證明,我們所提出來的 Scoring 方法,它在 NDCG 和 Precision 上都能達到比較好的結果。最重要的是,它在理論上是能夠對 Basic-Level 進行很好的解釋。

下面我們來看一下,當 Instance 有了一些 Context 之後,我們應該怎麼去進行處理。我們通過一個例子,來簡單地解釋一下這背後最主要的思想。

比如說 iPad、Apple,其中 iPad 基本上是沒有歧異的,它會對映到 Device、Product。但是對於 Apple 而言,它可能會對映到至少兩類的 Concept 上,比如說 Fruit、Company。那麼我們怎麼用 iPad 對 Apple 做消歧呢?

方法其實也挺直觀的。我們會通過大量的統計去發現像 iPad 這樣的 Entity,通常會跟 Company、Product 共同出現。比如說 iPad 有可能會跟三星共同出現,有可能會跟 Google 共同出現,那麼我們就發現它會經常跟 Brand、Company、Product共同出現。於是我們就利用新挖掘出來的 Knowledge 對 Apple 做消歧,這就是背後最主要的思想。

除了剛才這樣一個 General Context 以外,在很多時候這些 Text 可能還會包含很多一些特殊的型別,比如說 Verb、Adjective。具體而言,我們希望在看到 Watch Harry Potter 時,能夠知道 Harry Potter 是 Movie,當我們看到 Read Harry Potter 時,能夠知道 Harry Potter 是 Book。同樣的,Harry Potter 還有可能是一個角色名稱,或者是一個遊戲名稱。

那麼我們來看一看應該怎樣去解決這樣一件事情。當我們看到 Watch Harry Potter 時,我們首先要知道,Harry Potter 有可能是一本 Book,也有可能是一部 Movie。我們可以算出一個先驗概率,這通常要通過大規模的統計。同時我們要知道,Watch 它有可能是一個名詞,同時它也有可能是一個動詞,並且我們還需要去挖掘,當 Watch 作為動詞的時候,它和 Movie 有非常緊密的關聯。

所以我們本質上是要去做一些概率上的推理,不僅要將條件概率做非常細粒度的分解,最後還要做概率計算。

通過概率計算的方法,我們實際上就可以構建出一個非常大的離線知識圖譜,那麼我們在這個上面,就可以有很多的 Term,以及它們所屬的一些 Type,以及不同 Term 之間的一些關聯。

當我們用這樣一個非常大的離線知識圖譜來做 Text Understanding 的時候,我們可以首先將這個 Text 進行分割處理,在分割之後,我們實際上是可以從這個非常大的離線知識圖譜中截取出它的一個子圖。最後我們使用了 Random Walk With Restart 的模型,來對這樣一個線上的 Subgraph 進行分類。

我們再來看一下,如果一個文本里包含了 Multiple Entities,要怎樣處理?我們需要做知識挖掘,怎麼做?首先我們可以得到非常多的 Query Log,然後我們也可以去預定一些 Pattern,通過這種 Pattern 的定義,可以抽取出非常多 Entity 之間 Head 和 Modifier 這樣的 Relation,那麼在接下來我們可以將這些 Entity 對映到 Concept 上,之後得到一個 Pattern。

在這個過程之中,我們要將 Entity 對映到 Concept 上,那麼這就是前面所提到的 Conceptualization。我們希望之後的對映不能太 General,避免 Concept Pattern 衝突。

但是它也不能太 Specific,因為如果太 Specific,可能就會缺少表達能力。最壞的情況,它有可能就會退化到 Entity Level,而 Entity 至少都是百萬的規模,那麼整個 Concept Patterns 就有可能變成百萬乘以百萬的級別,顯然是不可用的。

所以我們就用到了前面介紹的 Basic-Level Conceptualization 的方法,將它對映到一個既不是特別 General,也不是特別 Specific 的 Concept 上。

大家可以看一下我們能夠挖掘出來的一些 Top 的 Concept Patterns,比如說 Game 和 Platform,就是一個 Concept 和一個 Pattern。它有什麼用?舉一個具體的例子,當用戶在搜 Angry Birds、iOS 的時候,我們就可以知道使用者想找的是 Angry Birds 這款遊戲,而 iOS 是用來限制這款遊戲的一個 Platform。蘋果公司每年都會推出新版本的 iOS,那麼我們挖掘出這樣的 Concept Pattern 之後,不管蘋果出到 iOS 15或者 iOS 16,那麼我們只需要將它們對映到 Platform,那麼我們的 Concept Patterns 就仍然有效,這樣可以很容易地進行知識擴充套件。

所以 Common Sense Knowledge Mining 以及 Conceptualization Modeling,可以用在很多的應用上,它可以用來算 Short Text Similarity,可以用來做 Classification、Clustering,也可以用來做廣告的 Semantic Match、Q/A System、Chatbot 等等。

美團大腦——百科全書式知識圖譜(Encyclopedia Knowledge Graph)

在介紹完 Common Sense Knowledge Graph 之後,給大家介紹一下 Encyclopedia Knowledge Graph。這是美團的知識圖譜專案——美團大腦。

美團大腦是什麼?美團大腦是我們正在構建中的一個全球最大的餐飲娛樂知識圖譜。我們希望能夠充分地挖掘關聯美團點評各個業務場景裡的公開資料,比如說我們有累計 40 億的使用者評價,超過 10 萬條個性化標籤,遍佈全球的 3000 多萬商戶以及超過 1.4 億的店菜,我們還定義了 20 級細粒度的情感分析。

我們希望能夠充分挖掘出這些元素之間的關聯,構建出一個知識的“大腦”,用它來提供更加智慧的生活服務。

我們簡單地介紹一下美團大腦是如何進行構建的。我們會使用 Language Model(統計語言模型)、Topic Model(主題生成模型) 以及 Deep Learning Model(深度學習模型) 等各種模型,希望能夠做到商家標籤的挖掘,菜品標籤的挖掘和情感分析的挖掘等等。

為了挖掘商戶標籤,首先我們要讓機器去閱讀評論。我們使用了無監督和有監督的深度學習模型。

無監督模型我們主要用了LDA,它的特點是成本比較低,無需標註的資料。當然,它準確性會比較不可控,同時對挖掘出來的標籤我們還需要進行人工的篩選。至於有監督的深度學習模型,那麼我們用了 LSTM,它的特點是需要比較大量的標註資料。

通過這兩種模型挖掘出來的標籤,我們會再加上知識圖譜裡面的一些推理,最終構建出商戶的標籤。

如果這個商戶有很多的評價,都是圍繞著寶寶椅、帶娃吃飯、兒童套餐等話題,那麼我們就可以得出很多關於這個商戶的標籤。比如說我們可以知道它是一個親子餐廳,它的環境比較別緻,服務也比較熱情。

下面介紹一下我們如何對菜品進行標籤的挖掘?我們使用了 Bi-LSTM 以及 CRF 模型。比如說從這個評論裡面我們就可以抽取出這樣的 Entity,再通過與其他的一些菜譜網站做一些關聯,我們就可以得到它的食材、烹飪方法、口味等資訊,這樣我們就為每一個店菜挖掘出了非常豐富的口味標籤、食材標籤等各種各樣的標籤。

下面再簡單介紹一下,我們如何進行評論資料的情感挖掘。我們用的是 CNN+LSTM 的模型,對於每一個使用者的評價我們都能夠分析出他的一些情感的傾向。同時我們也正在做細粒度的情感分析,我們希望能夠通過使用者短短的評價,分析出他在不同的維度,比如說交通、環境、衛生、菜品、口味等方面的不同的情感分析的結果。值得一提的是,這種細粒度的情感分析結果,目前在全世界範圍內都沒有很好的解決辦法,但是美團大腦已經邁出了非常重要的一步。

下面介紹一下我們的知識圖譜是如何進行落地的。目前業界知識圖譜已經有非常多的成熟應用,比如搜尋、推薦、問答機器人、智慧助理,包括在穿戴裝置、反欺詐、臨床決策上都有非常好的應用。同時業界也有很多的探索,包括智慧商業模式、智慧市場洞察、智慧會員體系等等。

如何用知識圖譜來改進我們的搜尋?如果大家現在開啟大眾點評,搜尋某一個菜品時,比如說麻辣小龍蝦,其實我們的機器是已經幫大家提前閱讀了所有的評價,然後分析出提供這道菜品的商家,我們還會根據使用者評論的情感分析結果來改進這些搜尋排序。

此外,我們也將它用在商圈的個性化推薦。當大家開啟大眾點評時,如果你現在位於某一個商場或者商圈,那麼大家很快就能夠看到這個商場或者商圈的頁面入口。當用戶進入這個商場和商戶頁面時,通過知識圖譜,我們就能夠提供“千人千面”的個性化排序和個性化推薦。

在這背後其實使用了一個“水波”的深度學習模型,關於這個深度學習模型更詳細的介紹,大家可以參見我們在 CIKM 上的一篇論文。

所有的這一切,其實還有很多的技術突破等待我們去解決。比如整個美團大腦的知識圖譜在百億的量級,這也是世界上最大的餐飲娛樂知識圖譜,為了支撐這個知識圖譜,我們需要去研究千億級別的圖儲存和計算引擎技術。我們也正在搭建一個超大規模的 GPU 叢集,來支援海量資料的深度學習演算法。未來,當所有的這些技術都成熟之後,我們還希望能夠為所有使用者提供“智慧餐廳”和“智慧助理”的體驗。

文章轉載自 AI 科技大本營(rgznai100),部分內容有修正。

作者簡介

仲遠,博士,美團點評高階研究員、高階總監,美團 AI 平臺部 NLP 中心負責人、大眾點評搜尋智慧中心負責人。加入美團點評前,擔任美國 Facebook 公司 Research Scientist,負責 Facebook 產品級 NLP Service。在 Facebook 之前,擔任微軟亞洲研究院的主管研究員,負責微軟研究院知識圖譜專案和對話機器人專案。多年來專注於自然語言處理、知識圖譜及其在文字理解方面的研究,在國際頂級學術會議如 VLDB、ICDE、IJCAI、CIKM 等發表論文30餘篇,獲得 ICDE 2015 最佳論文獎,並是 ACL 2016 Tutorial “Understanding Short Texts”的主講人,出版學術專著3部,獲得美國專利5項。在 NLP 和 KG 研究領域及實際產品系統中均有豐富經驗,研究領域包括:自然語言處理、知識圖譜、深度學習、資料探勘等。

招聘資訊

美團點評 NLP 團隊招聘各類演算法人才,Base 北京上海均可。NLP 中心使命是打造世界一流的自然語言處理核心技術和服務能力,依託 NLP(自然語言處理)、Deep Learning(深度學習)、Knowledge Graph(知識圖譜)等技術,處理美團點評海量文字資料,打通餐飲、旅行、休閒娛樂等各個場景資料,構建美團點評知識圖譜,搭建通用 NLP Service,為美團點評各項業務提供智慧的文字語義理解服務。我們的團隊既注重AI技術的落地,也開展中長期的NLP及知識圖譜基礎研究。目前專案及業務包括美團點評知識圖譜、智慧客服、語音語義搜尋、文章評論語義理解、美團點評智慧助理等。真正助力於“幫大家吃得更好,生活更好”企業使命的實現,優化使用者的生活體驗,改善和提升消費者的生活品質。歡迎各位朋友推薦或自薦至 [email protected]

演算法崗NLP演算法工程師/專家/研究員知識圖譜演算法工程師/專家/研究員

工程崗C++/Java研發專家/工程師AI平臺研發工程師/專家

產品崗AI產品經理/專家(NLP、資料方向)

在這裡插入圖片描述