做爲人工智能時代最重要的知識表示方式之一,知識圖譜可以打破不一樣場景下的數據隔離,爲搜索、推薦、問答、解釋與決策等應用提供基礎支撐。美團大腦圍繞吃喝玩樂等多種場景,構建了生活娛樂領域超大規模的知識圖譜,爲用戶和商家創建起全方位的連接。咱們美團但願可以經過對應用場景下的用戶偏好和商家定位進行更爲深度的理解,進而爲大衆提供更好的智能化服務,幫你們吃得更好,生活更好。算法
近日,美團 AI 平臺部 NLP 中心負責人、大衆點評搜索智能中心負責人王仲遠博士受邀在 AI 科技大本營作了一期線上分享,爲你們講解了美團大腦的設計思路、構建過程、目前面臨的挑戰,以及在美團點評中的具體應用與實踐,其內容整理以下:服務器
近年來,人工智能正在快速地改變人們的生活,咱們能夠看到各家科技公司都紛紛推出人工智能產品或者系統,好比說在 2016 年,谷歌推出的 AlphaGo ,一問世便橫掃整個圍棋界,完勝了人類冠軍。又好比亞馬遜推出的 Amazon Go 無人超市,用戶只需下載一個 App,走進這家超市,就能夠直接拿走商品,無需排隊結帳即可離開,這是人工智能時代的「新零售」體驗。又好比微軟推出的 Skype Translator,它可以幫助使用不一樣語言的人羣進行實時的、無障礙的交流。再好比說蘋果推出的 Siri 智能助理,它讓每個用蘋果手機的用戶都可以很是便捷地完成各項任務。全部這些人工智能產品的出現都依賴於背後各個領域技術日新月異的進展,包括機器學習、計算機視覺、語音識別、天然語言處理等等。dom
做爲全球領先的生活服務電子商務平臺,美團點評在人工智能領域也在積極地進行佈局。今年 2 月份,AI 平臺部 NLP 中心正式成立,咱們的願景是用人工智能幫你們吃得更好,生活更好。語言是人類智慧的結晶,而天然語言處理是人工智能中最爲困難的問題之一,其核心是讓機器能像人類同樣理解和使用語言。機器學習
咱們但願在不久的未來,當用戶發表一條評價的時候,可以讓機器閱讀這條評價,充分理解用戶的喜怒哀樂。當用戶進入大衆點評的一個商家頁面時,面對成千上萬條用戶評論,咱們但願機器可以代替用戶快速地閱讀這些評論,總結商家的狀況,供用戶進行參考。將來,當用戶有任何餐飲、娛樂方面的決策需求的時候,美團點評可以提供人工智能助理服務,幫助用戶快速的進行決策。ide
全部這一切,都依賴於人工智能背後兩大技術驅動力:深度學習和知識圖譜。咱們能夠將這兩個技術進行一個簡單的比較:佈局
咱們將深度學習概括爲隱性的模型,它一般是面向某一個具體任務,好比說下圍棋、識別貓、人臉識別、語音識別等等。一般而言,在不少任務上它可以取得很是優秀的結果,同時它也有很是多的侷限性,好比說它須要海量的訓練數據,以及很是強大的計算能力,同時它也有很是多的侷限性,好比說難以進行任務上的遷移,並且可解釋性比較差。學習
另外一方面,知識圖譜是人工智能的另一大技術驅動力,它可以普遍地適用於不一樣的任務。相比深度學習,知識圖譜中的知識能夠沉澱,可解釋性很是強,相似於人類的思考。網站
咱們能夠經過上面的例子,來觀察深度學習技術和人類是如何識別貓的,以及它們的過程有哪些區別。ui
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:美團大腦。
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 等等。
在介紹完 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 集羣,來支持海量數據的深度學習算法。將來,當全部的這些技術都成熟以後,咱們還但願可以爲全部用戶提供「智慧餐廳」和「智能助理」的體驗。