前面的博客進行了總述,這篇博客細化深刻,主要結合知識圖譜,KB_QA,語義表示的豐富性方面來論述,可是仍然會很寬泛,由於講具體的技術細節,會有不少人蒙圈的,沒有太大意義。git
前面提到,語義理解,一方面要獲取豐富,靈活的語義表示,另外一方面要與知識圖譜融合。要想獲取精準的語義理解,好比誰是第一個爲紙牌屋裏的xx角色配音的人?這類問題的回答,在前面的基礎上還要融合語言的邏輯,語言的邏輯通常分爲五類:一元,二元,joint,intersection,aggregate,用語義解析的方式構造知識圖譜的查詢語法樹。而中文的語義理解,80%是靠人類的對話的上下文來理解的。這個過程涉及到用戶畫像,日程表,用戶的情緒,所處的環境等因素。因此,深度學習在語義理解中的角色是與這些場景結合,從而輔助提高語義理解。下面以一篇論文做爲切入點:github
■ 論文 | A Structured Self-attentive Sentence Embedding
■ 連接 | https://www.paperweekly.site/papers/1081
■ 源碼 | https://github.com/ExplorerFreda/Structured-Self-Attentive-Sentence-Embedding
本文發表於 ICLR 2017,做者提出一個新的自注意力模型,能提取句子中的重要部分進行 embedding,是一篇能夠直接看公式理
解做者思路的論文。
本文最大的亮點在於提出了自注意力機制,無需外部信息便可對自身進行 attention。此外,本文還提出用二維矩陣表示句子,
矩陣的不一樣行表示句子不一樣層面的信息,使句子表達信息更豐富,解決了句子被壓縮成一維向量時的信息損失問題。學習
這篇論文具備很是高的商業應用價值!由於他解決了前篇博客中提到的siamese lstm計算語義類似度的提高問題。把他們倆個融合在一塊兒,能夠大大提高語義理解的能力。這篇論文提出的自注意力模型,用以獲取句子語義的多向量維度,也就是用矩陣來表示句子的語義,而後碾平,解決了本人以前提出的語義表示的豐富性問題。由於一個句子,尤爲是一個長句子,他的語義表示單純地用一個稠密的向量來表示,確實會丟失不少語義信息。目前這個語義表示的方法,超越了以前的BiLSTM+attention,CNN等方法,應該做爲之後語義表示的一個baseline。設計
本人之因此反覆強調語義表示的問題,是由於語義理解的第一步就是要獲取豐富的語義表示,不然後面的語義解析,與知識圖譜融合等工做,是沒法繼續的。語義表示的好壞,關係着整個語義理解的準確率。繼承
傳統的KB_QA(不一樣於chatbot)的方法主要有:①語義解析②信息抽取③向量建模。第一種難度是最大的,目前工業界,只有微軟研發出來一個融合多種方法的以語義解析爲主的並在此基礎之上用深度學習改進的核心推導鏈技術,這個系統設計的複雜程度使人驚訝,準確率也是很是高的。大多數的公司,仍是青睞於向量建模的方法,由於他的門檻低一些,可是對於時序性的推理問題,好比誰是第一個等等之類的問題,是無能爲力的。而向量建模這種方法,其核心:①question的語義表示②question 與 answer的語義類似度計算。固然構建loss function的時候,是必須考慮負樣本的。傳統的方法是抽取出question中的主題詞,而後考慮答案的multi-hot(知識圖譜中的entity種類數目,relation數目,是one-hot的擴展)表示,用一個矩陣抽取出稠密向量表示,注意,這個向量是把entity和relation融合在一塊兒的,並無分開,是不合理的,而後與question的語義進行類似度運算。深度學習改進它,方向就是quesion的豐富的語義表示,answer語義表示的分開考慮,改進score公式。能夠用CNN抽取出question的三個方向的語義表示,而後答案考慮:答案類型,答案在知識圖譜中的路徑,答案的上下文,而後求和表示score公式。這是改進的方向,差很少能提高2個以上的百分點,word2vector的預訓練改進的話,能提高更多(改進w2v也是其中一個方向,第一篇博客提到過)。源碼
前面提到了深度學習與知識圖譜融合,在考慮答案的類型時,已經考慮到了知識圖譜的多hot表示,除此以外,深度學習與知識圖譜融合,還能夠在其上直接訓練模型。(h,r,t)三元組,能夠訓練出這樣一個數學公式:h + r =t。固然,知識圖譜的異構性和不平衡性給深度學習訓練帶來了很大的困難。h + r = t僅僅考慮了1 to 1的狀況,對於N_1 or 1_N,以及relation的多義場景,須要TransD模型。訓練他的目的很簡單,當遇到推理性的問題,好比:梁啓超的兒子的太太的情人是誰這類的問題,能夠迎刃而解。(不建議用知識圖譜的圖搜索這種方案!!) 深度學習
接下來須要突破的就是多輪對話環境下的語義理解了。前面的問題解決了,DM和DST就是核心中的核心了。由於對於AI第一梯度的公司來講,本人前面提到的根本不算是什麼核心技術,事實上本人一直認爲,深度學習歷來都不是語義理解的核心。DM這塊兒,也就是結合上下文理解句子的語義,slot填充策略,slot槽位的優先級制定策略,曹組的關係制定,曹組構成的樹的准入條件,還有槽繼承或者槽記憶,狀態切換,這些纔是語義理解的核心。博客
因爲每一個人專一的領域不一樣,語義表示的豐富性,不只體如今多維度,還體如今上下文交叉以及捕捉到詞語的情感色彩,這些都是須要突破的地方。但願2018年在多輪對話以及kB_QA上,會有一些進展。數學
總結起來,本人認爲,深度學習與語義理解的關係,深度學習是輔助提高,將來強化學習有機會,應該同時兼顧如下幾點:①語義表示的豐富性,自適應性。豐富性不只體如今語義表示的多維度(self_attention,用矩陣碾平表示,捕捉語義的多個維度),還體如今語義自己的上下文交叉(歧義表示),感情色彩,而自適應性體如今out of context,語義平滑,可以應對不一樣的環境②與語言邏輯的結合。微軟的核心推導鏈兒提供了一個借鑑思路,估計普及難度有點兒大③與知識圖譜的融合,這是大勢所趨④與多輪對話,上下文的結合,這也是大勢所趨。理解一句話,更可能是依靠說話者所處環境,好比slot填充時,能夠依靠用戶畫像或者日程表,不必定非得是上下文,說話者的情緒。深度學習只有與上述情景融合,纔會發揮做用,有不少東西須要研發突破。it