計算機是個傻孩子,為了教這小崽子學聰明,人類絞盡腦汁。 2012 年 Google 又給孩子搞了套玩具,叫知識圖譜。這幾年開始大流行,做搜索引擎的,做大數據,做人工智能的,都給自家孩子裝備了一套,內卷啊!
知識圖譜說起來很簡單,黑板上畫一個個圈,代表 “實體”,圈跟圈之間畫線,代表 “關系”。完事齊活。
比如,比爾蓋茨是個 “實體”,美琳達蓋茨是另個 “實體”,之間的關系是 “夫妻”。?
Google 搞這個東東,對它的搜索業務那是真有用。 Google 早年間跟喜鵲一樣,收集全天下的網頁,藏自己家服務器上,用戶想搜比爾蓋茨,呼啦一下砸過去 2.76 億個網頁。
王老五就很痛苦,查查比爾蓋茨老婆的名字,你給我 2.76 億? Google 倒也有個對策,那就是 Page Rank,給網頁一個比重。但這玩意也沒啥鳥用,Page Rank 只是個網頁權重排名,它哪里猜得到王老五查人家老婆的陰暗心理。
Google 也有點不好意思,俺是搜索引擎,盡給用戶一堆 HTML 文件算什么本事。這種傳統搜索,就是個字符匹配,匹配上了,就給一堆 unicode 的 html 文件。所以 Google 搞了知識圖譜,打的口號是: Things, not strings。 要讓計算機理解用戶的語義,給用戶搜出 “東西” 來,而不是給一堆亂字符。
所以,用戶王老五在 Google 搜索框里寫: who is bill gates' wife。 Google 馬上給出美琳達蓋茨。 這背后,就是 Google 的知識圖譜在發揮作用。Google 的知識圖譜,就是在天下事物之間,建立普遍關聯。這種知識圖譜,有點半結構化數據的意思。當然,其實計算機也并非真的理解了語義,只是了解了事物之間的關聯而已。不過,人類自己的字典,也不過是用字詞互相解釋罷了。人類的優勢在于,說起蘋果,人類是摸過、啃過、看過蘋果的,計算機就沒戲了,只能得到一個解釋:蘋果是一種水果。 用水果這個詞來解釋蘋果。
知識圖譜的用途,可就大了,真不是就搜索下蓋茨太太那么簡單。 有了好的知識圖譜,搜索、推理、分析都容易了,尤其是深度發掘,比關系型數據庫效果可好多了。另外,知識圖譜的更新還特容易,關系型數據庫你想改個字段,費老勁了。
更重要的是,知識圖譜這種數據結構,給神經網絡、深度學習做自然語言處理,可謂如虎添翼。沒有知識圖譜之前,深度學習輸入的都是詞向量什么的,仿佛機器沒有潤滑油。有了知識圖譜,詞與詞之間已經帶著語義關系,那深度學習在處理自然語言上,效果突飛猛進。
知識圖譜這個詞啊,最早來自 1972 年,一位叫 Schneider 的教授為了設計一套輔助教學計算機系統,在論文中提及了 Knowledge Graph,在課堂講解的各種概念之間建立關聯。后來,80年代,荷蘭的兩家大學 Groningen 和 Twente 發起了個項目,認真開始開發知識圖譜,但其實,那個不是今天的知識圖譜,而是要算做知識圖譜的祖先,是一種語義網絡 (Semantic Network)。
語義網絡 (Semantic Network)來自一本書,M. Ross Quillian 在 1963 年寫的,名字叫:A Notation for Representing Conceptual Information: an Application to Semantics and Mechanical English Paraphrasing。實在找不到這本書了,也不知道內容是干嘛的,看名字,似乎是關于怎樣表示概念信息的。Robert F. Simmons 在?Synthetic language behavior 一書中也提及過 Semantic Network。
語義網絡看上去跟知識圖譜幾乎一樣,也是在“實體” 之間拉線拉箭頭,然后標上關系。但是語義網絡比較初級,所以就比較自由,不管是節點,還是關系,都是隨意寫的。看上去實現了實體之間的關系,但這種關系依賴自然語言,依然是模糊的。所以,語義網絡用來做查詢和推理,就不大容易。而知識圖譜,在設計的時候,就必須定義好節點類型和關系類型。 例如,如果用語義網絡,那么“比爾蓋茨” 和 “美琳達蓋茨” 就是兩個節點,之間的關系可以寫 “夫妻”,也可以寫 “感情破裂的夫妻”。 而如果用知識圖譜,則必須首先定義一種節點類型叫 “人”,在定義一種關系叫 “夫妻”,然后把比爾夫妻倆給填寫進去。如果用上 OWL 本體,那還可以定義夫妻這種關系是雙向的:比爾哥,你是我的夫啊,美琳姐,你是我的妻呀。推理做起來就更方便了。
語義網絡和知識圖譜,都是知識表示這個大范疇里的。 是不是知識表示,就只能在黑板上畫圈圈,畫線? 當然不是,畫圖是后來人聰明了才想出來的,之前就還是直接用語言,當然用的是一種抽象過的語言,邏輯語言。 這個歷史就悠久了,可追溯到亞里士多德。亞里士多德是邏輯學的祖師爺,他是很多領域祖師爺,簡直可以說,他是所有領域的祖師爺,除了中藥、風水和 Kong Fu。在講解邏輯時,他用自己老師蘇格拉底做了個比喻,這就是著名的三段論: 人皆有一死;蘇格拉底是人;蘇格拉底必死。
后來經過萊布尼茨、布爾的努力,一直到弗雷格手里,現代邏輯學成熟了。羅素厚厚的《數學原理》則用邏輯重建了整個數學體系。有一種說法,指責咱中國人不重視邏輯,這真是胡扯。養生理論里吃什么補什么,吃腰子補腎,這邏輯杠杠的,多么硬啊。這里安利一本書,叫《邏輯的引擎》,一路講萊布尼茨、布爾、弗雷格、康托爾、阿爾伯特、哥德爾、圖靈的故事,看起來很過癮。
用來表述知識的邏輯有命題邏輯、一階邏輯、多階邏輯。 命題邏輯表述能力弱,不能做復雜的推理。我感覺,命題邏輯比較適合亞洲人的思維,Yes 或者 No,跟我扯別的沒用。看看微博還有一些討論群,發言多數都是命題邏輯。一階邏輯可以量化個體,且引入了謂詞函數,但一階邏輯不可判定(為啥不可判定,這個有證明,但看不懂)。多階邏輯則量化了一階關系和謂詞。由于一階邏輯無可判定,后來又出來個描述邏輯,描述邏輯是一階邏輯的子集,其中不使用變量,而是只使用常量。
邏輯可不僅僅用于語言描述,它是計算機和人工智能的基礎。人工智能中的符號派,就是依賴邏輯。符號一派追求真理,他們認定人類思考的方式就是邏輯和符號,所以一門心思要教計算機學會邏輯和符號。
關于思維到底是什么形式,這個問題太詭異。 人人都有腦,也都能思維,但愣是不知道這2斤半是怎么工作的。 要計算機學會人腦思維,符號派認為要模擬思維,要擺弄邏輯、符號;連接派就認為你費那勁干啥,吃腰子補腎,吃腦花補腦,根據腦神經搭個電路不就完了?所以,這幾年連接派占上峰,那也是中醫理論的偉大勝利。
心理學和語言學的學者們,也不甘示弱,怎么知識表示這個領域讓邏輯學家搶占了呢? 認知科學家喬治米勒發明了 WordNet,這個看起來跟個大字典一樣,只是字典是用其他詞句來解釋一個詞,而 WordNet 則在詞與詞之間建立了關系,例如 Bill Gates 的上位詞(就是層次歸類):
喬治米勒是認知科學的創始人,后來IBM把自己的人工智能就稱為認知計算。
人工智能鼻祖之一,馬文明斯基在 1975 年的論文 “A Framework for Representing Knowledge” 中提出框架理論。框架這個詞聽起來莫名其妙,但程序員一看,就得大呼,這不就是面向對象么。 OO來自框架理論,當然看起來面熟。 馬文明斯基的框架理論,影響了眾多領域,包括計算機編程語言、知識表示、人工智能、認知科學,甚至包括新聞傳播。 本質上,框架理論與前面所述的語義網絡是一致的。一個框架,在語義網絡中就是一個節點,代表一個實體,而框架的槽,則是語義網絡的邊。
計算機處理知識的另一個領域是專家系統,這個也是歷史悠久。第一個專家系統是費根鮑姆領導的 Dendral,合作者是李德伯格和卡爾·杰拉西。費根鮑姆是大神,圖靈獎獲得者,他老師就是諾貝爾和圖靈獎的雙料西蒙。李德伯格是諾貝爾獎獲得者。杰拉西雖然沒得圖靈獎和諾貝爾獎,但他是口服避孕藥的發明人,男女歡愉的守護神。Dendral 很像今天的規則引擎,其目的是分析火星物質的質譜數據,以尋找火星生命,正是今天首富 Elon 所喜歡的領域。 Deneral 把化學家們的質譜分析知識寫成代碼規則,然后對實際數據進行分析。
后來,Dendral 項目組成員?Bruce G. Buchanan 布坎南,敏銳認識到,專家系統應該應用到醫學領域,他發起了 MYCIN 項目,用專家系統來幫助診斷細菌感染的疾病。 準確率能夠趕上一般的醫生。 MYCIN 比起 DENDRAL 系統還是有進步的,因為 MYCIN 引入了產生式規則,可用于不精確的規則匹配。 所以今天知識圖譜廣泛的應用于醫療,這也是有傳統的。人們一提起專家,就想起醫生,總盼望著能用計算機替代醫生,然而這件事至今還是前途未卜。 IBM 的 Watson 醫療投入巨大,但最終黯然收場。不止一個醫生對我冷笑:AI 替代程序員了,都替代不了俺們醫生。
第一個大規模商用的專家系統是 DEC 的 Xcon,用來根據訂單配置零部件,有點像 ERP 里的 BOM。專家系統的高峰時期,是 80 年代日本發起的五代機項目。日本當時經濟發展火得一塌糊涂,于是雄心勃勃要在計算機領域當老大,五代機目的是人工智能,邏輯推理和知識是其核心發展目標。 后來,大家都知道,沒搞成,也不可能搞成。但是,日本的計劃也嚇到了美歐等國家,一窩蜂的跟著喊口號、投錢,最后都沒做成,搞得專家系統也跟著冷落下去。
還有個東西,跟語義網絡和知識圖譜都有關系,那就是語義網(Semantic Web),聽上去跟語義網絡很像,容易混淆,但不是一回事。 語義網是 Tim Lee,Web 之父發起的,目的可以理解成,把整個互聯網構造成一個大的知識圖譜。語義網中設計應用了 RDF 語言,這個和知識圖譜用的一樣,用來建模和存儲知識。另外,語義網還設計了 RDFS 和 OWL,對 RDF 加了兩層標準定義,一來呢,讓所有的網站和機器之間交換數據時能夠互相理解,另一個,可以實現復雜的邏輯推理。Tim Lee 一直關注的是數據的自由流動,希望所有網站都能鏈接起來,并且可以互相理解。 這幾年他老人家還搞了個 Solid,就是用RDF、LinkData技術,要讓個人掌握自己的數據,革他媽媽大網站的命。
對于語義網有兩種沖突的評價,一種是批評,例如尼克老師的人工智能簡史中說 “W3C 語義網經過幾次迭代后演化成大雜燴,理論上不嚴謹,實踐上不可用。與 Dendral 和 Mycin 對比,無論理論還是實踐上都不可同日而語。” 尼克老師甚至評價 Tim Lee 的圖靈獎是歷屆中含金量最低的,可謂辛辣;另一種是贊美,例如鮑捷老師在演講中說:“2006年,Tim Berners-Lee(就是我們的神),已經看不慣這種事情了。他說,要有光!(呵呵)不是,要有Linked Data,于是就有了Linked Data。他發了個圣旨之后,大家都開始研究。”,他還說了: “但是很不幸,1998年,它落入了邏輯學家的魔爪。2004年,被一群邏輯學家綁架了一個怪胎在上面,這個怪胎叫RDF語義。”,以及:“我們回過頭來看,向工程妥協的時候,我們就勝利。向教條主義堅持的時候,我們就失敗。”
我是個智商一般的普通從業者,完全迷惑了,不知道該聽那一邊的,知識儲備完全不具備這個判斷能力。得,都聽一下吧。 尼克老師的人工智能簡史成了我的工具書,隨手翻。其中關于學界的八卦逸事讀起來有鹽有甜,滋味十足。 我手頭隨手翻的,還有一套金瓶梅,清河縣翻騰的是哥弟爹爺、姐妹姑婆,計算機學界里翻騰的就是師徒弟子、教授博士,都一樣精彩。
人工智能還在曲折前行,故事瑣碎一郎當。知識表示也好,邏輯推理也好,還在步步向前。知識圖譜生逢其時,數據積累已多,人們需要計算機能夠理解數據的語義關系,深度學習也需要人類給它喂點精料,而不是一堆無意義的字符串讓它啃得口吐白沫。
有了這教具,計算機這孩子會越來越聰明。反過來說,人類也會越來越聰明,畢竟,教孩子的同時,自己也有提高。人類的自然語言,太笨拙了。如果有一天,外星人來造訪,聽了英語中文那模糊不清嘟嘟囔囔的黏糊勁,沒準拋開人類直接對話計算機。計算機就從知識圖譜里推理并檢索出一條知識給外星人: