大資料&人工智慧學習總結(二)· 知識圖譜
序:把鏡頭拉遠一點看人工智慧
上一篇總結了大資料&人工智慧的知識地圖,在地圖中,我只選擇“深度學習”作為具體的落地技術,實際上有些偏頗。這一篇,我們先從實現細節中跳出來,把鏡頭拉遠一點,重新認識一下人工智慧領域的三個重要學派,因為這次我想總結的是另外一個學派的技術,所以故事還是得從頭講起。
認知:人工智慧的三大學派其實各有所長

若從1956年正式提出人工智慧學科算起,人工智慧的研究已有50多年的歷史。這期間,不同學科背景的學者對人工智慧做出了各自的理解,由此產生了不同的學術流派。對人工智慧研究影響較大的的主要有三大學派:
- 模擬人的思維方式的 “符號主義”
(symbolicism) - 模擬人的大腦結構的 “連線主義”
(connectionism) - 模擬人的行為的 “行為主義”
(actionism)
1.符號主義
又稱為邏輯主義或心理學派,“人工智慧”這個術語就是這一派首次提出的。它的理論基礎就是人們從人的思維規律中提煉、總結出的 “形式邏輯” (上一篇我已在基礎理論中做過總結)。
符號主義認為,人類的認知過程,就是對“知識”進行“邏輯推理”的過程,對映到計算機裡,“知識”可以用“符號”表示,而“邏輯推理”就是對各種符號進行搜尋、計算。 所以這個學派的思路是想辦法實現“知識表示”、“知識推理”和“知識運用”。
他們的代表成果是1957年的數學定理證明程式“TL”,它成功的證明了38條數學定理,後來又發展出了啟發式演算法、專家系統、知識工程理論與技術,以及當前最常用的技術—— “知識圖譜”(Knowlage Graph) 。
當然,它的問題也明顯,正如上一篇提到的,它在理論層面上已經被“哥德爾不可能定理”鎖死,一個僅僅依靠知識和邏輯的系統,只能比較“傻”的解決某類專有問題,不可能具有通用性,若想實現廣義上的“人工智慧”,這個學派很可能已無路可走。
2.連線主義
又稱為仿生學派或生理學派,它的理論基礎是 人腦的物理結構和執行機制 。
連線主義發現,人腦的每個神經元細胞具有樹突、軸突和細胞體。樹突可以接收訊號,軸突用於輸出訊號,不同細胞的樹突和軸突之間是神經突觸,不同的突觸具有不同的權重。樹突傳入的訊號強度與相應的突觸權重相乘,經由細胞體設定的非線性閾值檢驗,觸發軸突的興奮或抑制。數目龐大的神經元連線成結構複雜的網路,從而實現靈活多樣的功能。 所以,這個學派的思路是模仿神經網路及神經網路間的連線機制構造學習演算法,即人工神經網路(Artifical Neural Nework)。
它的代表性成果是1943年由生理學家麥卡洛克和數理邏輯學家皮茨創立的腦模型(MP模型),它開創了用電子裝置模仿人腦結構和功能的新途徑。近些年來,隨著計算能力的突飛猛進,特別是圖形處理單元(GPU)的大規模普及,發展出了更具有通用性、一掃過去所有經典演算法的技術—— “深度學習”(Deep Learning) 。
深度學習有很多優點,一方面,它可以用相同的演算法訓練不同的功能,比如人臉檢測和語音識別,就可以做到演算法相同,只是訓練資料不同。另一方面,它的演算法很簡單,對應的數學理論只是初等,其準確性主要還是依賴訓練資料的數量和完備性。
當然,這個方向也有比較致命的缺陷,就是缺乏理論基礎,偏實踐層面。雖然深度學習演算法能夠將圖片中的貓辨識出來,卻無法詳細地解釋為什麼會做出這樣的判斷,其判定方法是否具備普適性也無從知曉,究其本質,它只能根據經驗揭示事物的“相關性”而非“因果性”。同時,又因為它計算所消耗的空間和時間代價過大,因此很多觀點認為它是現代的“鍊金術”,不能算是科學。
3.行為主義
又稱為進化主義或控制論學派,它的理論基礎則是 “控制論” 。
控制論是一個跨領域的理論,它把神經系統的工作原理與資訊理論、控制理論、邏輯以及計算機聯絡起來。 行為主義的思路是構建一個“感知-動作型控制系統”,這個系統能自動感知環境變化,根據外部的持續反饋實現自適應、自尋優、自組織。
它的代表作者首推布魯克斯的六足行走機器人,它被看作是新一代的“控制論動物”,是一個基於感知-動作模式模擬昆蟲行為的控制系統。發展到現在,最主要是實現技術叫做 “增強學習(Reinforcement Learning) ”。
知識地圖擴充套件
這一期補充一個和“深度學習”並列又經常關聯使用的技術——“知識圖譜”。
一.知識圖譜(knowledge graph)

知識圖譜自上世紀60年代從語義網路發展起來以後,分別經歷了1980年代的專家系統、1990年代的貝葉斯網路、2000年代的OWL和語義WEB,直至2012年Google提出了“知識圖譜”的概念。當時,Google主要是為了將傳統的keyword-base搜尋模型升級到基於語義的搜尋。**“知識圖譜”技術可以更好的查詢複雜的關聯資訊,從語義層面“理解”使用者意圖,改進搜尋質量。Google目前的知識圖譜已經包含了數億個條目,並廣泛應用於搜尋、推薦等領域。
知識圖譜本質上是一種大型的語義網路,它以現實世界中事物的概念為節點,稱之為“實體”,以實體之間的關係為邊,提供了一種以實體-關係來描述世界的方式。某種程度上,它類似於今天備受推崇的思維導圖,但是具有更加規範的層次結構和更加強大的知識表示能力。
它是怎麼實現的呢?下面,就按照它的的三個實現步驟來總結,分別是:知識表示、知識推理和知識運用。
1.知識表示
“阿里巴巴成立於1999年”
“阿里巴巴是一種科技公司”
“阿里巴巴是一個數據驅動的公司”
以上是3條知識,用什麼結構來表示它們,才能確保人和機器都能理解呢?人們最終找到的結構就是 “三元組”(triple),它由實體(Entity)、屬性(Attribute)和關係(Relation)組成。 它足夠的簡單,既容易被人類解讀,又容易被計算機來處理和加工。你可能會問,這也太簡單了吧?事實上,人們也嘗試過擴充成四元組、五元組,但是發現整個結構會變得複雜,最終,綜合複雜性、人的易理解性、計算機的易處理性,還是選擇了用三元組。順便一提,“三”真的一個黃金數字,科學發現,人類的天生數感就能到“三”,也就是說人能一眼識別三以內的數量,而對超過三的數量只有模糊數感,這也能很好的解釋了為什麼中國漢字和羅馬數字中“一”、“二”、“三”都具有數字性和連續性,而從“四”之後就只剩下語義了。
那怎麼把知識轉換為三元組呢?舉一個例子:
“阿里巴巴是一個數據驅動的公司”
其實就可以表示成<實體,關係,實體>:
<阿里巴巴,is-a,資料驅動的公司>
“阿里巴巴是一種科技公司”
也是一樣
<阿里巴巴,subclass,科技公司>
“阿里巴巴成立於1999年”
則可以表示成<實體,關係,屬性>:
<阿里巴巴,start-time,1999年>
有了這些結構化的知識,機器就可以按照邏輯得到一個新知識:
<資料驅動的公司,subclass,科技公司>
這樣一來,以後如果再錄入一條這樣的知識:
<Google,is-a,資料驅動的公司>
機器就可以自動得到一個新知識:
<Google,subclass,科技公司>
以此類推,隨著新知識的錄入和機器的自動推理,把這些結構化的知識儲存起來,會得到一個龐大、豐富的資料庫,這個資料庫就叫做 “知識庫”(Knowledge Base)。
從結構化的資料型別上看,知識庫有兩種類:Curated KBs和Extracted KBs。
Curated KBs由標準的、結構化的三元組所表達的知識組成的知識庫,每條知識的結構和剛才的例子很像,每個關係都是標準定義好的。以freebase(一個創作共享類的網站)為代表,它從維基百科和WordNet等知識庫抽取了大量的實體及實體關係,相當於實現了一種結構化的維基百科。
Extracted KBs則是是直接從網頁中抽取實體關係三元組所組成的知識庫,它的實體和關係更多是自然語言的形式表達的。與freebase相比,這樣得到的知識更具有多樣性,但也會存在一定的噪聲,其精確度低於Curated KBs。所以目前行業內使用的比較多的還是簡單、易構建的Curated KBs。
再從結構化所使用的演算法上看,“實體”的提取主要是用的傳統機器學習演算法或者“條件隨機場” (conditional random field, CRF);“關係”的提取則是即可以用有監督的分類演算法也可以用無監督的聚類演算法。
最後從知識的儲存上看,圖資料庫、NoSQL資料庫,關係型資料庫都可以,不過通常情況下,如果知識圖譜的結構非常複雜、關係非常多,建議使用圖資料庫,目前業內主流是Titan、Graph Engine、Neo4J三款。
2.知識推理
知識推理和人類的邏輯是一樣,可以分為“歸納”和“演繹”兩類。所謂歸納(induction)是指從某類事物的大量例項出發,推理出關於這類事物的一般性結論。將歸納的過程調轉方向,得到的就是演繹。演繹(deduction)指的是從一般性的前提出發,推匯出個別結論或者具體陳述的過程。
歸納推理能夠從已知知識中獲取未知知識,是知識的增殖過程。而演繹推理可以用來解決複雜的問題,但它只是將已有事實揭示出來,而不能夠產生新知識。回憶一下上面三元組例子中的推理過程,用的其實是演繹推理,雖然產生了新的知識記錄,但是隻是揭示了已有的事實,並沒有推理出未知。
ofollow,noindex">邏輯補課連結:《思維的地圖·演算法篇》
在知識推理的實現技術上,歸納和推理分別對應兩種演算法:
歸納推理對應的演算法叫 路徑排序演算法(path ranking algorithm) 。在知識圖譜中,實體是由二元關係相連線的,因而現實世界中的規則在知識圖譜中就體現為不同實體之間的關係路徑。路徑排序演算法正是以實體之間的路徑為依據,在不完全的知識庫中學習目標關係的分類器。路徑排序演算法的實現包括特徵抽取、特徵計算和分類器訓練三個步驟。
- 特徵抽取:生成路徑特徵的集合並加以篩選,篩選出的特徵被應用在訓練資料集上。
- 特徵計算:對每個訓練樣本都計算出其對應的特徵取值。
- 分類器訓練:根據訓練樣本為每個目標關係訓練出一個分類器。
最後,將分類器應用在知識圖譜上,就可以自動挖掘並篩選出可靠的規則。
演繹推理對應的演算法叫做 馬爾可夫邏輯網 (Markov logic network)和 概率軟邏輯 (probabilistic soft logic)。前者是將無向概率圖模型和一階謂詞邏輯相結合得到的統計關係學習模型,這個網路是一階邏輯公式的集合,其中的每個邏輯規則都被分配一個實數作為權重係數,以此實現規則的程式化。利用馬爾可夫邏輯網對知識圖譜建模後,就可以利用已有的規則和權重係數來推斷未知事實成立的概率。如果對馬爾可夫邏輯網加以擴充套件,給網路中每個頂點所代表的原子事實賦予一個連續分佈的真值,得到的就是概率軟邏輯,它能夠對不確定的事實和規則同時建模,因而具有更強的不確定性處理能力。
3.知識運用
知識圖譜的應用場景非常廣泛,比如搜尋、問答、推薦系統、反欺詐、不一致性驗證、異常分析、客戶洞察等等。下面重點整理三個場景:
(1)搜尋:在搜尋引擎的右側,以知識卡片的形式來呈現跟搜尋資訊結構化的資訊,包括比如地圖、圖片、描述等等,甚至還會出現相關資訊,可以讓使用者在搜尋引擎裡面能夠不斷的去進行知識的關聯和發現。
(2)智慧推薦:比如購物網站,使用者買了牛肉卷或者羊肉卷,假設他實際上是要為了做一頓火鍋,這時候系統可以給他推薦火鍋底料或者是電磁爐。
(3)客戶洞察:知識圖譜能夠比較全面的記錄客戶的非常詳細的資訊,包括名字,住址,經常和什麼樣的人進行互動,還認識其它什麼樣的人,網上的行為習慣、行為方式是什麼樣的,這樣就可以挖掘出更多的使用者的屬性標籤和興趣標籤,以及社會的屬性標籤,形成全面的使用者洞察。
二.自然語言處理(NLP)

總結完知識圖譜,不得不再加一點經常和知識圖譜配對使用的技術——NLP (Natural Language Processing),即自然語言處理。 NLP是人工智慧的一個子領域,它的目標是讓機器具有理解並解釋人類寫作、說話方式的能力,最終彌補人類交流(自然語言)和計算機理解(機器語言)之間的差距。
它常和知識圖譜配對運用也很好理解,比如實現一個問答機器人,輸入的是自然語言,處理則需要用機器能理解的基於三元組的知識,而輸出則也需要是自然語言,也就是說輸入輸出都需要用到NLP技術。那麼對於這個系統來說至少就需要有如下三個層次:
1. 知識庫:包含客戶可能的提問知識和對應的回答知識。
2. NLP 層:將使用者的問題(任何形式)轉譯為知識,待知識庫處理完成後,再將回應轉譯為恰當的自然語言。
3. 應用層:用來與使用者互動的應用介面。
在這裡面,NLP層必然包含兩個核心技術:
1. 自然語言理解(NLU):理解給定文字的含義,文字內每個單詞的特性與結構需要被理解,相當於把自然語言翻譯成機器語言。
2. 自然語言生成(NLG):從結構化資料中以可讀地方式自動生成文字的過程,相當於把機器語言翻譯成自然語言。
三. 小結
知識圖譜和自然語言處理這兩種技術本身都還在發展成長過程中,同時也在逐步的和深度學習進行融合。在實際應用中可以觀察到,一個問題的解決,通常是多種技術的配合使用,所以在這個領域中,無論是對應用場景還是技術都需要有一個廣度上的瞭解,有時候,答案可能並不在演算法細節裡,只需要把鏡頭拉遠一點,視野放寬一些,最優解就在那裡。
寫在最後

這次我沒有放參考書,主要是因為我是利用碎片化的時間學習的,很多資料都比較零散,我是按照自己的學習習慣整理的:在大量的泛讀後把資訊整理成結構,再逐一提出問題,自問自答,最後從零碎的資料裡抽絲剝繭找到每個問題的答案,用自己的語言寫出來,所以這篇文章即是總結,也是我的學習過程。當然,其中肯定有不全或者不詳盡的地方,請見諒,留著我日後再慢慢迭代重新整理。