智能定義客服,六十年技術之大變遷
其次是網路技術的發展,從14.4kbps的小水管到今天的萬兆光纖,從GPRS到4G網路:開放式的網路體系結構,使不同軟硬體環境、不同網路協議的網可以互連,真正達到資源共享;
然後還有計算機軟體技術的發展,從彙編語言到Go語言,從單機運行到跨IDC的大規模計算集群,從只能操作字元串到計算機聽覺、視覺、自然語言理解。
簡單來說,我們可以將客服技術進化的過程分為以下三個階段:
1基於規則的自然語言處理
二十世紀六十年代,技術的不斷發展使人們對於傳統商業的有了全新的認識,出現了運用邏輯學和模擬心理活動的一些通用專家系統問題求解程序,根據某領域一個或多個專家提供的知識和經驗,進行推理和判斷,模擬人類專家的決策過程,以便解決那些需要人類專家處理的複雜問題。1965年,第一個專家系統研製成功。 緊接著的20多年來,知識工程的研究,專家系統的理論和技術不斷發展,專家系統的應用滲透到幾乎各個領域。
那時候學術界對於人工智慧和自然語言理解的普遍認識是這樣的:要讓及其完成翻譯或者語音識別這種只有人類才能做得事情,就必須先讓計算機理解自然語言。當時普遍的認識是要做好兩件事,即分析語句和獲取語義。
以電商中的售後常見的問題「取消訂單」為例。我們看到「取消訂單」這幾個字時,能識別到用戶的意圖,知道用戶的問題。那要讓計算機也知道這個問題,最簡單的方法,就是字元串匹配,當用戶的問題中出現「取消訂單」這幾個字時,回答設定好的答案。
但用戶並不都是按這個套路走的,他們更加有創意,同一問題,問法可多了:「取消剛剛下的這個訂單」、「我想把這個訂單取消了」、「下單了,想取消」、「衣服買錯了,能取消嗎?」、「這個訂單怎麼取消?」、「貨不想要了,取消吧。」、「剛才買的能退嗎?」。若嚴格按照這種匹配,用戶加一個語氣詞、一個標點、換一個順序,計算機就不認識了。
使用正則表達式一定程度上可以解決這種問題。也就是說,使用一種約定的規則,將多個問題「濃縮」成一個表達。如「取消這個訂單」、「取消那個拼團的單」,兩個問題可以用一個正則表達式表達「取消*單」。中間的「*」就是正則表達式的一個規則,表示的是「任意長的字元」。使用正則表達式的目標是,使用盡量少的表達式來表述儘可能多的問法。在客服領域,我們常常把這種正則表達式及其組合稱之為模板。模板都是要人去配置、管理的。
但問題若有這麼簡單就好了。同樣出現「取消訂單」,用戶表達的可不一定是這個意思:「不要取消這個訂單」、「剛剛我取消那個訂單,現在我後悔了」、「訂單取消了,錢為啥沒到賬?」使用這種方法,會導致要不斷要添加表達式,還得注意表達式之間的優先順序與衝突問題。當業務複雜到一定程度,管理與修改模板可就成了大工程。據說,使用了這種方法的小i機器人,聘用這麼一個能熟練配置模板的人員,付出的人工成本不低於30萬。
除了配置模板需要專業熟悉業務的專業人員,模板還有個問題就是領域不通用,跨領域需要重新維護,需要不同行業的專家來維護,也給這一技術築起了更高的壁壘。
總的來說,在這一時期,自然語言處理是基於規則之上的,指的是對自然語言的語法規則、詞性和構詞法等,使用計算機語言進行描述。
然而,這種基於規則的句法分析(包括文法分析或者語義分析)很快遭遇了瓶頸,而對於語義的處理則遇到了更大的麻煩。首先,自然語言中詞的多義性很難用規則來描述,而是嚴重依賴於上下文,甚至是常識。這就需要不斷的增加新的語法規則,而且即使寫出了涵蓋所有自然語言現象的語法規則集合,通過計算機來解析也非常的困難。在20世紀70年代,基於規則的自然語言處理走到了盡頭,這麼多年的努力最終也被認為是失敗的。
2基於統計的自然語言處理
1970年以後,統計語言學的出現使得自然語言處理重獲新生,並取得了今天的非凡成就。推動此技術轉變的關鍵人物是弗里德里克賈里尼克和他領導的IBM Watson實驗室。採用基於統計的方法,IBM將當時的語音識別比率從70%提升到90%,同時語音識別的規模從幾百單詞上升到幾萬單詞,這樣就使得語音識別有可能從實驗室走向實際應用。90年代以後,基於規則的自然語言處理逐漸成為主流。
2011年,IBM基於搜索技術和傳統機器學習技術構建的問答機器人Wason挑戰美國娛樂節目危險邊緣(Jeopardy)得了冠軍,一舉成名,成為IBM賣客服服務的宣傳招牌。
賈里尼克的出發點很簡單:譬如說,一個句子是否合理,就看看它的可能性大小如何。至於可能性就用概率來衡量。假如有三個句子,經過計算機系統的統計,第一個句子出現的概率是10
-20
,第二個句子出現概率是10
-25
,第三個句子出現的概率是10
-70
,因此,第一個句子最有可能。他的可能是第二個句子的十萬倍,是第三個句子的一百億億億億億億倍。
我們拿客服中常見的「問答」為例子,介紹下「統計派」是怎麼應用到客服領域的:
搜索的輸入(query)常常是一個句子,包含了用戶關心的問題。就如上面所說的「取消訂單」。輸出通常是一個由超鏈接所指的「文檔(doc)」,在客服領域,就是該問題的答案,可以看成一個短的文檔。
系統拿到了這個句子,先做分詞。分詞的過程與目的,跟上面人工提取正則表達式有點類似,將句子切分為多個詞的序列,再做詞性分析和命名實體識別。如「取消剛剛下的這個訂單」這個句子中,「取消」「訂單」兩個詞是最重要的,其他的「剛剛」、「下」、「這個」只是修飾「訂單」的,「取消」是動詞,「訂單」是交易中特定實體表示。
分詞過程中,有兩個問題:
第一,如何將句子切分。最簡單的方法,就是查字典,把句子從左到右掃描一次,遇到字典里有的詞標識出來。這種問題能解決多數問題,但當遇到二義性的分割就無能為力了。
如「發展中國家」,是「發展-中-國家」,而不是「發展-中國-家」;「上海大學城書店」,是「上海-大學城-書店」,而不是「上海大學-城-書店」(兩個例子引用自吳軍著的《數學之美》)。
方法是引入一種機制,來評估分詞的質量。這種機制就是根據現在所有能找到的文檔,計算出每一種分詞方法的概率,概率大的認為更正確。至於怎麼計算,那就要用到大量的「統計」了,涉及到馬爾可夫鏈、貝葉斯公式、先驗概率統計等複雜過程,以後再表。
完成分詞後,那就要跟文檔對比,找出最相關的N篇並排序。這裡面也涉及到一些複雜的計算,比如快速查找。互聯網網頁數量是千億級別,甚至更多,而用戶都是要求在幾秒內給出答案。在特定領域的客服上,數量遠小於傳統的互聯網搜索,但要完成實時的計算,在計算上也要做相關的優化。
顯然如果要一個一個的查找,幾乎是不可能的。為了加快查找,一種叫「倒排」的技術便可以派上用場:先將用爬蟲抓到的文檔(即網頁)分詞,建立一個從詞到文檔的表,統計出每個詞都在哪些文檔里出現過及出現的次數。這樣查找時就能知道這個詞出現在哪些文檔里,出現了多少次。 若找出了與詞語相關的很多文檔,判斷哪個文檔最相關。最直接的統計方式是詞在文檔里出現的次數,出現次數越多越相關。但這個想法有漏洞:「的」這個詞幾乎在每個文檔里都出現多次,但它對確定文檔幾乎沒有什麼用處。聰明的計算機學家用了一種叫IDF的演算法來確定,簡單來說,假定一個詞在N個文檔中出現過,那麼N越大,這個詞的權重越小,反之亦然。要實現這個演算法,我們要統計每個詞在所有文檔里出現的次數。這些統計常涉及到海量數據的收集、存儲、處理。
為了將這些數據應用到實際應用中,還要從這些數據學習到「規律」。如前面例子中,分詞之後,很多時候要做詞性標註,它是自然語言處理(NLP)中很重要的一步。
對於「取消訂單」,人腦海里有了學習過的語法知識,一眼就能看出「取消」是動詞,「訂單」是名詞。而計算機處理過程中,也有相似之處,需要先去學習「語法」。人工先將一堆人工標註好的數據輸入到計算機里,計算機最後會學習到類似這樣的知識:動詞後接著一個長度不大於2的詞,這個詞是名詞的可能性是60%。若這個詞之後還接著「的」,這個詞是形容詞的可能性是70%。
計算機的這個學習過程,就是我們常說的機器學習。一般過程如下:
首先,我們需要在計算機中存儲歷史的數據。接著,我們將這些數據通過機器學習演算法進行處理,這個過程在機器學習中叫做「訓練」,處理的結果可以被我們用來對新的數據進行預測,這個結果一般稱之為「模型」。對新數據的預測過程在機器學習中叫做「預測」。「訓練」與「預測」是機器學習的兩個過程,「模型」則是過程的中間輸出結果,「訓練」產生「模型」,「模型」指導 「預測」。
如果把機器學習的過程與人類對歷史經驗歸納的過程做個比對,大致如下圖:
機器學習中的「訓練」與「預測」過程可以對應到人類的「歸納」和「推測」過程。通過這樣的對應,我們可以發現,機器學習的思想並不複雜,僅僅是對人類在生活中學習成長的一個模擬。由於機器學習不是基於編程形成的結果,因此它的處理過程不是因果的邏輯,而是通過歸納思想得出的相關性結論。
傳統機器學習方法包括邏輯回歸LR、樸素貝葉斯Naive Bayes、支持向量機SVM、決策樹等等一些技術,這些技術大都是基於統計的方法,所以也叫統計機器學習方法。他們各自都有自己的優缺點和適用範圍,其中的許多至今仍然發揮中重要作用。
3基於深度學習的自然語言處理
本質上,深度學習也是前面提到的機器學習演算法之一,思想早在20世紀60年代就誕生,幾經起落,直到近年,才再一次煥發出勃勃生機。
2016年3月,谷歌公司出產的阿爾法圍棋(AlphaGo)與圍棋世界冠軍、職業九段選手李世石進行人機大戰,並以4:1的總比分獲勝,AlphaGo自此聲名大噪,人工智慧一時也被頂上風口浪尖;2016年末2017年初,該程序在中國棋類網站上以「大師」(Master)為註冊帳號與中日韓數十位圍棋高手進行快棋對決,連續60局無一敗績。這一驚人戰績讓眾人瞠目結舌,似乎昭示著人工智慧全面戰勝人類的可能性。
AlphaGo本質上是一套為了圍棋優化的設計周密的深度學習引擎,使用了神經網路加上MCTS,並且用上了巨大的谷歌雲計算資源,使用了GPU的通用計算能力。AlphaGo的特點在於充分利用現在的機器學習技術,可擴張的架構,它不僅僅是用一台超級計算機,而是可以利用谷歌龐大的計算資源來做這個深度學習,提升學習能力。
智能時代的深度學習是構建多層的神經網路,包括卷積神經網路CNN,循環神經網路RNN(還有一個遞歸神經網路也叫RNN,業界主流主要是指前者)。在這兩個神經網路的基礎上又有很多變種出來。神經網路是一種模仿動物神經網路行為特徵,進行分散式並行信息處理的演算法數學模型。這種網路依靠系統的複雜程度,通過調整內部大量節點之間相互連接的關係,從而達到處理信息的目的。它的基本特點,是試圖模仿大腦的神經元之間傳遞,處理信息的模式。
神經網路的好處第一個就是端到端,輸入是原始的圖片、語音和文本,輸出可以直達我們想要的目標。最好的例子就是CNN,最底層看到的是像素,往上一級,它可以抽象出紋理,再往上,可能抽象出輪廓,一直往上。而傳統的機器學習方法需要對問題進行分析,提取特徵後在送入機器學習演算法進行學習,需要非常有經驗的工程師提取的特徵來構建有效的模型,提高了解決問題的門檻。
另外,神經網路的表達能力很強,簡單說就是它的學習能力更強,它能解決基本上所有問題,只要數據足夠。而比如LR模型只能學習線性的公式,複雜一點的問題就無法學習了,SVM能解決一些非線性的問題,但實際它也是神經網路的一種特殊情況,可以用神經網路替代。
具體說來,神經網路的學習機理是什麼?簡單來說,就是分解與整合。
比方說,一個正方形,分解為四個折線進入視覺處理的下一層中。四個神經元分別處理一個折線。每個折線再繼續被分解為兩條直線,每條直線再被分解為黑白兩個面。於是,一個複雜的圖像變成了大量的細節進入神經元,神經元處理以後再進行整合,最後得出了看到的是正方形的結論。這就是大腦視覺識別的機理,也是神經網路工作的機理。
假設你想買房,已知以下的數據:
現在想判斷:
傳統的方法,計算方法大概如下:
地點在星海名城,那均價是 4.5萬/平。面積89,適合一般家庭,那要貴一點,現階段3房更受歡迎,又貴一點,(4.5 + 0.2 + 0.2) * 89 = 約436萬。
但神經網路不需要這麼做,它假定每種因素,房型、面積、地段對最後的結果都會有影響,影響的程度稱之為「權重」。假設計算出:價錢 = 房型 * 8.7654321 + 面積 * 2.345678 + 地段 * 9.12345678 +12.345678(深圳的溢出價)。
這一組數據就是神經網路里的一組模型,可以用來預測房價了。
當然,上面只是舉了一個簡單的例子,實際上,不但數據會更多,而且不同因素對最終價錢的影響不一定是簡單線性疊加的,可能房型與面積是此消彼漲相互影響的。由此可見神經網路具有以下幾種特徵:
- 需要很多用來學習模型的數據,而且多數情況下是越多越準確。
- 模型複雜,映射關係更複雜。神經網路定義了「中間層」來計算、定義這些映射關係。
- 計算複雜。定義好中間層後,要找出一組數值,能最好的擬合所有的訓練數據,需要非常複雜的計算。
早在1960年神經網路就誕生了,為什麼到今天煥發了難以想像的生機呢?因為這個時代正好解決了上面提到的幾個問題:首先是信息時代極其豐富的數據讓神經網路有了需要的訓練數據。其次,經過多年來專家的研究,逐漸產生很多強大的「演算法」,CNN、RNN就是其中的典型。最後,硬體、雲計算技術、演算法優化的發展,例如將GPU用於模型的計算(如backpropagation演算法的應用),大大加快了模型的計算速度。
只要設置好「數學映射」,輸入訓練數據,就能輸出高精度的預測模型——神經網路的這個特點,使得它對於用戶來說使用門檻大大降低。用戶不需要關心模型是如何計算出來的,模型本身有什麼含義,也不需要對學習事先添加規則,只需要知道模型能做什麼就行。
這樣一來,神經網路不僅可以解決前兩個時代困擾著人們的模型學習複雜、模型維護複雜的問題,還為語言交互、圖像識別、人臉識別、語言翻譯等領域帶來了全新的突破。以此為代表而開啟的「新時代」,能處理更多的問題,準確率更高,維護成本更低,也就是說,更加智能了。
歡迎關注我們的微信公眾號:zhuiyikeji
推薦閱讀:
※論文筆記 - 從神經圖靈機 NTM 到可微分神經計算機 DNC
※強化學習在關係抽取、QA場景的應用
※SQLnet 代碼閱讀筆記
※使用 torchtext 做 Toxic Comment Classification 比賽的數據預處理
※NLP選題:6大研究方向助你開啟科研之路