新智元專欄
作者:鄧侃
【新智元導讀】 昨天, 新智元介紹了谷歌的全新搜索工具「 Talk to Books 」 , 基於自然語言文本理解, 用戶能夠憑語義而非關鍵詞來實現搜索功能。谷歌搜索的「AI化」令人眼前一亮, 谷歌是否即將從當今的搜尋引擎,革命性地進化到了回答引擎? 本文作者,大數醫達創始人、CMU 博士鄧侃對谷歌的這個新搜索工具的技術原理進行了解讀。
今天讀到一則新聞,「 谷歌發大招:搜索全面AI化,不用關鍵詞就能輕鬆撩書 」。
這篇新聞的內容,來源於谷歌的官方博客前天(2018/04/13)發的一篇博文 [2],題目是 「Introducing Semantic Experiences with Talk to Books and Semantris」,內容是介紹兩個新產品。作者是谷歌未來學家 Ray Kurzweil 和一位產品經理。
介紹產品 Talk to Books 時,作者放了一張產品截圖。
當用戶提問 「 What is fun about computer programming? 」 Talk to Books 自動回答,
「... has been beneficial on many levels. First, computer programming provides a palette with a virtually unlimited potential for creative expression; the thrill of bringing a useful porgram to life rivals the thrill of hearning a new composition being performed for the fist time. Second, a knowledge of computer ...」
from Arduino for Musicians: A complete Guide to Arduino and Teensy Microcontrollers by Brent Edstrom.
這個例子很震撼,幾個原因:
1. 從搜索到回答:
谷歌當今的搜索結果,只是給出文章的連結。而 Talk to Books 的搜索結果,雖然是書的摘要,但是摘要摘得如此精當,幾乎是問題的回答。這篇博文是不是在暗示, 谷歌即將從當今的搜尋引擎,革命性地進化到了回答引擎 ?
2. 語義理解:
長期擔任過谷歌搜索業務主管,Amit Singhal,在其任內,曾經親自領銜主持谷歌知識圖譜的實現。在介紹知識圖譜的價值時,Amit Singhal 說, 谷歌將不再搜索關鍵詞表面上的字符串 「string」,而將直接搜索關鍵詞的內涵語義 「thing」。
在 Talk to Books 的這個例子中,提問中包含 「fun」,而答案中與之呼應的詞,包括 「beneficial」、「palette」、「thrill」 等等。注意,是呼應,是相關詞,但不是同義詞近義詞。
如何迅速找到同義詞、近義詞、相關詞?不難猜測,一定與 詞向量 有關。如果僅僅用詞向量,取代文字表述的詞彙,那麼基於詞向量的搜尋引擎,最多是模糊匹配的搜尋引擎,但是並非是截圖暗示的那種回答引擎。
3. 文章張量樹:
Talk to Books 先把提問的整個語句,用論文 [3] 的算法,翻譯成一個定長的數值張量,然後用論文 [4] 的算法,在各種書籍的各個章節段落語句中,尋找答案。
論文 [4] 的具體做法是,先把每一篇文章中的每一個詞彙,翻譯成詞彙張量。然後從每一個語句的一連串詞彙張量中,提煉出語句張量。再然後把每一個段落的一連串語句張量中,提煉出段落張量。最後從段落張量中,提煉出整個文章的文章張量。
這樣 , 每篇文章,就構成一個樹狀的張量集合。 根節點是整個文章的中心思想的文章張量,上層中間節點是段落張量,下層中間節點是語句張量,每個葉子節點是詞彙張量。
4. 問答匹配:
輸入一個提問語句,Talk to Books 先把提問語句,翻譯成一個定長的數值張量,然後在眾多文章的張量森林中,尋找最貼切的詞彙張量,也就是某棵樹的葉子節點。如果不行,就尋找最貼切的語句張量,也就是某棵樹的下層中間節點。如果不行,就尋找最貼切的段落張量,也就是某棵樹的上層中間節點。如果還不行,就尋找最貼切的文章張量,也就是某棵樹的根節點。
難題在於,當文章數量很多,一棵樹一棵樹地逐個找一遍,計算量太大。所以需要一個辦法,快速地從提問匹配到回答。
谷歌博文引薦了論文 [4],它用分類器,把提問匹配到數量固定的回答。分類器的辦法,似乎不太可行,原因有二:
a. 當回答的數量非常龐大時,分類器勢必非常複雜。 分類器越複雜,越需要的訓練數據就越多。收集海量的訓練數據,幾乎是無法辦到的事情。
b. 無論是書籍還是網文,數量每天都在快速增多。 分類類目數量增多,分類器的結構就必須隨之改變,就必須重新訓練分類器。
分類器似乎不可行,倒排索引是否可行呢?原理上似乎可行,但是佔用的存儲空間會非常龐大,因為倒排索引的 term,已經不再是每篇文章中出現的所有詞彙了,而是,詞彙張量 + 語句張量 + 段落張量 + 文章張量,組合爆炸的節奏。
除了索引以外,另外一個匹配提問和回答的辦法,是用尋址函數,類似於 Amazon Dynamo 那樣的 Hash 尋址函數 [5]。但是論文 [4] 中沒有提及。
5. 答案生成:
答案的生成,有兩種方式,一個是摘要,如前所述。另外一個是把諸多段落語句,通過推理,串連在一起,更智能地生成答案。
譬如提問是 「孕婦是否能吃海鮮」,推理的辦法是,先找到孕婦子宮中,羊水最重要的營養成分是什麼。然後查找破壞羊水的營養成分,會有哪些物質。再然後檢查海鮮中,是否富含這些破壞物質。
推理的辦法,往往需要把跨段落,甚至跨文章的諸多語句,按邏輯順序,串連在一起,組合成答案。看樣子這次 Talk to Books,並沒有涉及推理的難題。
總之,Talk to Books 的截圖很震撼,但是兩篇論文,似乎並沒有滿足我們所有的好奇心。
# 參考文獻:
1. 谷歌發大招:搜索全面AI化,不用關鍵詞就能輕鬆「撩書」
2. Introducing Semantic Experiences with Talk to Books and Semantris
3. Universal Sentence Encoder
4. Efficient Natural Language Response for Smart Reply
5. Dynamo: amazon's highly available key-value store
本文來自新智元,創業家系授權發布,略經編輯修改,版權歸作者所有,內容僅代表作者獨立觀點。