用人機對話系統設計邏輯探究人工智能產品經理

用人機對話系統設計邏輯探究人工智能產品經理

1、人工智能概述

        在1956年的達特茅斯會議上,麥卡錫、明斯基、香農等科學家首次提出人工智能。在這之後,一種叫做感知機的神經網絡模型被提出來,一些具有邏輯推理能力的程序被開發出來。由於早期的人工智能程序只能處理一些特定領域的簡單問題,所以人工智能發展遇到了停滯。
        上世紀80年代,一種叫做專家系統的人工智能應用的商業價值被認可,人工智能又迎來了一波大發展,但是隨着數據的發展,硬件水平和維護代價越來越大,使得人工智能的發展又遇到了停滯。
        21世紀,隨着大數據和雲計算的發展,人工智能能在數據和計算能力的需求上有了突破的進步,人工智能又會有一個發展的好機會。在能夠遇到機遇的時候迎接挑戰,才能在風雲變幻的時代成爲弄潮兒。

Deep Mind 和強化學習

        2013年底,一家名爲Deep Mind的公司發表了一篇名爲Playing Atariwith Deep Reinforcement Learning的文章。在其中描述了一個有自主學習多個遊戲玩法、隨着遊戲的不斷增多不斷優化遊戲表現的深度強化學習模型。之後Deep Mind開發的alpha go擊敗了圍棋世界冠軍。之後發佈的Alpha Go Zero從零開始自學,不適用任何人類棋譜,更是戰勝了之前的Alpha Go。
    強化學習的特點:通過自身行爲影響環境,再通過環境反饋調整自身行爲。

週期三段論和週期中的產品經理

三個週期:
1)技術先於產品。新技術誕生的初期,企業開始佈局,挖人才進行研究或者技術儲備,這階段技術決定產品的有無。
2)產品先於技術。新方向下技術積累完成,商業化、產品化成爲公司關注的方向。
3)運營先於產品。產品逐漸成熟,運營能力和資源的競爭成爲主要問題。
週期中的產品經理:
第一階段:其他產品經理開始佈局人工智能。
第二階段:將人工智能與公司現有業務結合,提升用戶體驗。
第三階段:從細節中挖出改善用戶體驗的需求,形成競爭差異化。

現在人工智能已經進入第二週期。

2、產品經理和系統設計

2.1、產品經理和技術

1、產品經理的層次

產品經理需要了解目前的人工智能技術,提高決策水平和溝通能力。產品經理對技術的理解能力一般劃分爲三個層次:
    1)什麼能做,什麼不能做。對應現在產品經理崗位需求中的“瞭解技術邊界”,產品的設計和需求終究還是要再解決問題和技術實現之間找到平衡點,瞭解技術邊界就可以提出可以落地的用戶需求解決方案,有效高效的跟研發人員溝通。
    2)什麼好做,什麼不好做。產品經理能夠對自己方案所需的開發量進行初步估計。產品經理需要知道系統分爲哪幾個模塊,每個模塊的角色,能夠將產品需求根據模塊進行任務分解,推動產品落地。
    3)什麼該做,什麼不該做。明確系統中每個模塊的定位和意義,以業務爲導向,與研發推動系統架構的優化和改造。
總結,第一層:確保需求的可行性;第二層:實現方案按模塊拆解,對各個模塊進行工作量評估;第三層:協助開發人員從業務角度保障系統架構的合理性。

2、技術型產品經理的定位

        技術型產品經理就是有較深技術背景的產品經理,其應該與研發之間有清晰的分工邊界。研發需要解決提出的問題,產品經理負責需求並提出問題。
        產品經理提出問題的質量決定了產品的質量,產品經理的佈局決定了產品的佈局。問題的質量由兩方面衡量:深度、全面性
    問題的深度和產品經理提出需求的具體程度正相關。反映了產品經理對原始抽象問題的加工能力。比如,我想做一個機器人,能回答用戶的問題。產品經理要定義,“問題”包含哪些,“回答”的方式有哪些。
    問題的全面性和問題的深度正相關。產品經理需要對產品的設計有一定的預見性。

3、技術型產品經理的價值

        技術型產品經理偶從兩個角度發揮自己的差異化價值:充分利用現有技術、推動新技術研究

        充分利用現有的技術:在方案設計時,利用對“技術邊界的認知”,找到業務和技術的結合點。在方案落地式,利用技術常識評估對需求的開發量,並對任務進行拆解,將一個抽象目標轉化成各個模塊所需要求解的具體問題。
        推動新技術研究:預見性和解決未來問題的能力。在正確理解公司業務發展方向的基礎上,對支撐業務發展所需的技術有一個明確的認知。對需求有明確的優先級,協助研發推動新技術向解決業務問題的方向發展。

4、技術型產品經理的思維能力

對於產品經理有兩項重要的思維能力:
        抽象能力:分析問題是能透過現象看本質和關鍵因素。
        歸納能力:將抽象結果進行重組,從中得到規律和經驗。

2.2、系統和思維

1、系統中的槓桿點

槓桿點就是系統中施加一個極小的變化,就能對整個系統行爲產生巨大影響的點。在系統中的槓桿點就是解決問題的核心,產品經理在解決問題核心的時候應該做長遠的打算,不能只看眼前,應該注重問題方案是否正確而不是方案的細節是不是完善。

2、優秀軟件系統的特徵

        1)高內聚、低耦合:一個模塊僅負責一項任務,不同功能的模塊在邏輯上保持獨立性,模塊間的聯繫儘可能的抽象。
        2)高通用性:方案設計對原始業務進行抽象,提供一類抽象問題對解決方案,解決一類問題而不是一個問題。
        3)可拓展性:強調抽象時對預見性,隨着業務對增加,在出現需要解決對新類型問題時,對系統可能發生對改變提前做好兼容性準備。

面向對象中對開閉原則:對模塊對拓展是開放的,對模塊的修改是關閉的。就是說,系統系統模塊的行爲可以被擴展,能夠根據具體業務需求作出改變,,從而具備改變的新行爲;系統在進行拓展時,不能對模塊對原有部分進行修改。

3、系統設計對基本問題

        1)爲了解決當下業務需求所屬的通用問題,需要哪些模塊的協同工作?哪些模塊已有,哪些需要新增?
        2)設計業務解決的模塊其定位和職責是什麼?相互的耦合關係?
        3)每個模塊的輸入輸出是什麼?
        4)整體模塊的調用順序是什麼?
        5)整個系統的行爲和輸出是否穩定?是否符合業務需求?

2.3、平臺設計通用工作流程

平臺設計的業務需求從最初的想法到最終落地的通用化過程。主要有8個階段:
        1)方向階段:分析用戶行爲數據和與客戶詳談,初步得到用戶需求,得到平臺的實現目標。
        2)聯想階段:在得到設計目標的同時給出目標對應的典型場景。
        3)定義階段:結合前兩個階段的設計目標和業務場景,明確什麼樣的系統能承擔這樣的任務。如,系統的模塊組成、各個模塊的功能、每個模塊的輸入輸出、模塊的上下位關係、系統調用順序。
        4)推演階段:利用聯繫階段得到的業務場景,結合定義階段產出的系統設計方案進行方案推演,假定系統開發已經完成,應當如何對業務邏輯進行配置,及其與固化對非業務邏輯相結合之後,是否能夠滿足業務場景需求。
        5)抽象階段:對原始業務抽象化,解決一類問題而不是一個問題。
        6)規劃階段:根據各類業務對優先級,確定平臺的落地方案,根據業務發展趨勢對後續平臺的迭代方案進行初步規劃。
        7)驗證階段:落地方案及後續平臺優化迭代計劃和研發覈對,保證方案可行性。
        8)落地階段:任務拆解、任務分配、時間評估、確定上線計劃等。

核心是定義和抽象,定義階段明確了系統框架,決定了系統未來發展的可能性;抽象階段決定了系統能否如預期般返回價值的重要階段,也是將平臺設計目標抽象實體轉換爲可行方案過程中的重要轉折點。

3、人工智能技術

3.1、機器學習

    k-近鄰算法(KNN)、ID3決策樹、樸素貝葉斯算法、邏輯迴歸、支持向量機SVM、Ada Boost算法、線性迴歸和樹迴歸、K-means算法、Apriori和FP-Growth、PCA和SCD、主題模型LDA等。具體分析和介紹看以前博客

    通過組合多個弱分類器,構建一個強分類器。在集成學習中,主要有兩種基本算法:bagging、boosting
    bagging:自匯聚法,比如原訓練數據集有N個樣本,每次從原數據集中有放回的重複抽取N次,就得到一個新的包含N個樣本的新數據集。重複抽取S個N次,就得到S個包含N個樣本的數據集,使用S個數據集分別訓練不同的分類器,同時使用訓練出來的分類器進行分類,最後選擇多數分類器的分類結果作爲最終結果。
    boosting:通過組合多個弱分類器來構建強分類器,將多個弱分類器的分類結果進行加權綜合,最終得到正確率遠高於單一弱分類器的強分類器。
    兩者區別:
    bagging,用自舉的方式創造來新的數據集,構建多個分類器並行訓練,沒有分類器權重概念。
    boosting,用原數據集,串行訓練,每個新分類器的訓練都會受到之前分類器的影響,每個分類器都有權重,代表分類器在上一輪分類中的成功度。

    LDA模型中,每一篇文檔都有一個主題向量,主題向量決定來這篇文檔中單詞的主題分佈,文檔中每個單詞都先經過主題向量確定主題,然後根據主題生成。爲了使每次生成的文檔不同,LDA模型額外引進來兩個參數:一個用於生成每篇文檔的主題向量,另一個與主題一起決定每個單詞的生成。
    LDA模型是通過EM算法(期望最大化算法)實現的,利用訓練語料,最終使LDA收斂到一個合理的分佈上。LDA可以合理的將單詞歸類到不同的隱含主題中,得到單詞之間的語義相近關係,如果文檔的主題向量類似,即文檔之間的主題分佈類似,則兩篇文檔具有較高的相似度。廣泛用於個性化推薦/社交網絡、廣告預測等領域。

3.2、深度學習

    深度學習的概念起源於對人工神經網絡的研究,基本的學習模型是深度神經網絡。深度學習和傳統機器學習不一樣的地方在於原始數據不需要經過特徵工程,直接可以作爲深度神經網絡模型的輸入,不需要預先利用人類的各領域知識對原始數據進行抽象來提供樣本的關鍵特徵。

    人類的神經細胞有,細胞體、軸突、樹突和突觸,神經細胞的狀態取決於這個細胞從其他細胞所得到的信號量及突觸強度,當信號量超過某個閾值的時候,神經細胞興奮,產生電脈衝,電脈衝沿着軸突、樹突、突觸傳遞到其他神經細胞。
    最簡單的神經網絡叫做感知機。爲了模擬人類的神經系統,在感知機模型中,權重概念對應突觸、偏置代表閾值、激活函數對應細胞體。不同維度的輸入與對應的權重乘積相加,再加上偏置,得到的結果傳入激活函數中,激活函數處理後得到輸出。
    多個感知機就構成來人工神經網絡。

    卷積神經網絡CNN

    1984年日本學者福島所提出的神經認知機,被視作CNN的第一個實現。將一個視覺模式分解爲若干個子特徵,然後進入分層遞階相連的特徵平面進行處理,即使物體有輕微的變形或位移,也能保證識別的正確性。
    卷積神經網絡由卷積層、池化層和全連接層組成。
    全連接層是網絡的最後幾層,其中的每個神經元都與上層中的所有神經元連接。
    卷積層和池化層所起的作用是將原始數據中的特徵進行抽象,最後的全連接層是利用這些抽象出的特徵對樣本數據進行分類,併爲樣本打上標籤。
    卷積層和池化層是CNN的核心。
    卷積層由若干特徵圖構成。特徵圖由卷積和對輸入數據卷積後得到,卷積核可以看作是對特定特徵非常敏感的探測器。卷積覈對輸入數據進行卷積對過程實際就是一種嘗試發現輸入數據中某一個特定特徵的過程,而特徵圖會記錄卷積核在原輸入數據不同部位的激活程度(特徵越契合,激活程度越高)。每個卷積核負責識別一種特定特徵,卷積後產生一張對應該特徵的特徵圖,由於卷積核不止一個,所以會有很多個特徵圖與之對應。
    池化層是用來縮減輸入數據的規模,將特徵圖中若干個激活值合併爲新特徵圖中的一個激活值。合併的方法有很多種,比如最大值合併、平均值合併、隨即合併。

    卷積神經網絡中,卷積核的寬和高,以及卷積核的個數由人工預先定義得到。卷積覈對什麼特徵敏感是隨機初始化後經過不斷訓練逐步確定下來的。卷積核是卷積神經網絡中需要被訓練的主要部分,訓練的目的是使其對輸入數據中的關鍵特徵敏感,從而最大限度地幫助後序卷積層中的卷積核抽取更高級的特徵,以及最終幫助後續全連接層更好的進行類別判斷。

    相對與傳統的前饋神經網絡,CNN的優勢在於通過“局部感知野”和“權值共享”大大減少來網絡中的連接個數,即減少了需要訓練的參數個數,極大降低了模型訓練所需的計算量。
    局部感知野:每個卷積核跟圖像中較小的連接部分。
    權值共享:卷積覈定義是特徵識別和探測器,特徵出現在原始輸入數據中的位置並不會對特徵本身對識別產生影響,即對輸入特徵中任意部分的同一特徵都可以採用相同的卷積核來識別。

    池化層的輸入是卷積後的特徵圖,在池化時,需要將卷積後的特徵圖劃分爲相等的若干局部,然後取這個局部中激活值的平均值或最大值等,最爲池化後新特徵位置上的激活值。

卷積神經網絡可以被用來識別具有位移、縮放、旋轉及其他形式扭曲不變性的二維圖形。

    遞歸神經網絡(RNN)和LSTM

遞歸神經網絡是兩種人工神經網絡的總稱,一種是時間遞歸神經網絡,另一種是結構遞歸神經網絡。目前說的遞歸神經網絡通常是指時間遞歸神經網絡。
遞歸神經網絡的優勢在於對序列數據的處理,對於前饋神經網絡,由於不相鄰的兩層之間節點沒有連接,在處理有上下文關係的時候無能爲力。遞歸神經網絡可以記憶前序輸入對隱層的影響,並用在當前輸出的計算中,這相當於建立了當前輸入和過去輸入的關係,在當前輸入完全相同的情況下根據不同上下文輸出不同結果。

兩個隱層之間的連接是遞歸神經網絡具有記憶能力的關鍵,前序隱層的輸出可以被作爲後序隱層的輸入的一部分使用,所以可以在當前詞相同的情況下,根據前序詞的不同給出不同的輸出。

由於遞歸神經網絡無法處理由於不斷遞歸導致的梯度消失問題,也難以捕捉更長時間的時間關聯,所以提處理LSTM--長短期記憶神經網絡。標準的遞歸神經網絡由重複模塊組成的鏈式結構,其中的重複模塊是間隔的結構,例如tanh(雙曲正切函數)層。
LSTM同樣存在鏈式結構,但是模塊要複雜的多。

LSTM的神經元由四部分組成:輸入門、輸出門、遺忘門、記憶細胞。每個神經元接受四種輸入,提供一種輸出。輸入門、輸出門、遺忘門各自接受一種信號,輸入門接受信號的同時額外接受上一個神經元的輸入,輸出門額外輸出到下一個神經元的輸出。輸入門、輸出門、遺忘門被用來保護和控制神經元狀態,且都具有開啓和關閉兩種狀態。若輸入門是關閉狀態,則LSTM神經元不再接受輸入門輸入;若輸出門關閉,LSTM神經元無法產生有效輸出;若遺忘門關閉,記憶細胞過去的記憶將被忘記,LSTM輸出完全獨立,不受過去影響。

遺忘門的設計可以避免梯度消失的問題出現,其梯度計算的方式和反向傳播不同,只要遺忘門不關閉,LSTM就可以一直保持過去輸入和輸出的影響,即擁有長期的記憶能力。

3.3、自然語言處理

自然語言處理是研究人與人交際和人與計算機交際中的語言問題的一門學科。

熵H(X):又叫做自信息,是描述隨機變量不確定性的大小,描述消除隨機變量X不確定性需要的信息量。
聯合熵H(X,Y):消除X和Y這兩個隨機變量不確定性需要的信息量。
互信息I(X;Y):反應兩個隨機變量X,Y之間的相關性,即已知X後,Y不確定性的減少量,即熵H(Y)的減少量;X,Y的相關性越大,互信息I(X;Y)越大。
條件熵H(X|Y):已知X的條件下,Y的熵。互信息I(X;Y)越大,條件熵H(X|Y)和熵H(Y)的差值越大,如果互信息爲零,條件熵等於原熵。
相對熵(KL距離):衡量兩個概率分佈的差異,當兩個概率分佈完全相同時,相對熵爲0,差異越大,相對熵越大。
交叉熵:用於衡量預測模型和真是概率分佈之間的差異情況,交叉熵的計算可以被用作損失函數來度量模型輸出結果與標註結果之間的差異。

馬爾可夫模型(MM):如果一個系統包含哪個有限狀態,隨着時間推移,該系統將隨機從某一個狀態轉換到另一個狀態。如果在特殊情況下,系統在t時刻的狀態只在與t-1時刻的狀態i相關,則該系統構成來一個一階的馬爾可夫鏈。如果在t時刻的狀態與之前n個時刻的狀態均相關,則該系統就構成來一個n階馬爾可夫鏈。如果上面提到的隨機過程獨立於時刻t,則該隨機過程就叫做馬爾可夫模型。
馬爾可夫模型包含任意兩個狀態之間的轉移概率aij,aij需要大於0,且從一個狀態i出發到達所有可能的其他系統狀態的概率和爲1。一個馬爾可夫模型狀態序列的概率可以通過計算形成該狀態序列的所有狀態之間的轉移概率乘積得出。

隱馬爾可夫模型(HMM)
    
HMM被廣泛應用於語音識別、詞性標註、音字轉換、概率文法等各個自然語言處理領域,是一個概率圖模型。
在馬爾可夫模型中,每個狀態都對應者一個可觀察的事件,但是隱馬爾可夫模型是一個雙重隨機過程,包含兩個序列:狀態序列、觀察序列。狀態隨機轉移生成狀態序列,是HMM中的第一個隨機過程。狀態序列經過隨機函數得到觀察序列,這是HMM中的第二個隨機過程,觀察序列是可見序列。
HMM由五部分組成:
1)不同狀態的數量
2)每個狀態所產生的不同符號的數量
3)狀態轉移概率矩陣
4)狀態輸出可觀察符號的概率分佈矩陣
5)初始狀態概率分佈
觀察序列是這樣產生的:首先根據初始狀態概率分佈選擇第一個系統狀態,在根據系統狀態的輸出概率分佈觀察序列中的第一個符號,之後根據狀態的轉移概率分佈選擇下一個狀態,最後重複執行前面步驟,直到達到指定的狀態轉移次數。
HMM有三個重要的假設:
1)有限歷史性假設:設定t時刻的系統狀態只與t-1時刻的系統狀態有關,獨立與之前的系統狀態。
2)齊次性假設:系統的狀態與具體時間無關。
3)輸出獨立性假設:假定觀察序列中某一個時刻的輸出符號只與該時刻的系統狀態有關。
HMM被用來解決三類基本問題:
1)估計問題:給定一個觀察序列和隱馬爾可夫模型,可以快速計算出這個觀察序列由給定模型輸出的概率。
2)解碼問題:給定一個觀察序列和隱馬爾可夫模型,求解最有狀態序列,使得該狀態序列能夠最好的解釋觀察序列。
3)訓練問題:給定一個觀察序列,可求解使這個觀察序列輸出概率最大的隱馬爾可夫模型。

最大熵模型(MEM)
    在只掌握關於未知分佈的部分信息的前提下,契合已知信息的概率分佈會有多個,其中熵值最大的概率分佈真實的反應來事件的分佈情況。

最大熵馬爾可夫模型(MEMM)和條件隨機場(CRF)
    最大熵馬爾可夫模型結合來隱馬爾可夫模型和最大熵模型的特點,隱馬爾可夫模型具有輸出獨立性假設,即認爲觀察序列中的某個時刻的輸出只取決與這個時刻的系統狀態,而與觀察序列中的其他符號無關,觀察符號之間相互獨立。最大熵馬爾可夫模型捨棄來這個假設,不再認爲觀察序列中各個時刻的輸出符號僅取決於該時刻的系統狀態且取值獨立。最大熵馬爾可夫模型認爲某個時刻的系統狀態同時取決於前一個狀態與當前時刻的輸出符號,並利用最大熵模型來學習這個條件概率。相對與隱馬爾可夫模型,最大熵馬爾可夫模型有能力描述觀察符號之間的關聯關係。
    隱馬爾可夫模型還存在一個不合理假設:有限歷史假設。認爲某個時刻的系統狀態只與前一個時刻的狀態有關,獨立於其他歷史狀態。條件隨機場CRF在最大熵隱馬爾可夫模型捨棄獨立性輸出假設的基礎上,一併捨棄來有限歷史性假設。條件隨機場不再像隱馬爾可夫模型那樣,在輸出獨立性假設和有限歷史性假設的基礎上對各類條件概率進行建模,而是整體地去做函數擬合,採用期望最大化的方法得到擬合程度最高的判別模型。

4、智能交互技術

直接的就是搜索引擎的進化,從人工排序到Google的page link,到現在的分析用戶行爲偏好和所在當地的地理位置等等。

語義相關性可以用卷積神經網絡,通過將以爲的文本二維化成一個詞文矩陣,再進行類似處理圖像像素的卷積和池化操作得到句子的特徵向量。注意,這類詞進行卷積的時候需要卷積核的寬度和句子二維矩陣相同。RNN也是同樣的道理。

對話交互分爲:
       1、任務型:幫我訂票
       2、問答型:密碼忘了怎麼辦
       3、閒聊型:今天心情不好,好像找人聊天

具體使用最多的要再參考LSTM或者Bi-LSTM和CRF等相關文章,再次不過多贅述。

5、Bot Framework

對話系統有5部分組成:
1)語音識別
2)自然語言理解:分佈語義、框架語義、模型論語義
3)對話管理
4)自然語言生成
5)語音合成

任務型問題一般採取框架語義:
分層三層:
1)領域:火車票、酒店......(做什麼)
2)框架:訂票、退票、訂房間、退房間......(一系列動作)
3)參數:出發點、目的地、入住、退房(具體的參數)

具體的流程是:用戶表述、意圖識別、參數抽取、意圖排序、Bot Framework(雲小蜜等)

Bot Framework組成:意圖、實體、訓練
1、意圖:用戶希望執行的任務或操作。
1)迴應:意圖的優先級要高,會得到迴應
2)動作:關鍵參數
3)用戶表述:定義被識別的用戶意圖,以及抽取用戶問句中的關鍵信息進行參數值填寫。
4)上下文:語境
2、實體:進行參數抽取的基礎,約定了參數的取值範圍
3、訓練:持續提高意圖識別、排序、參數識別的準確率。在線服務和離線標註。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章