閱讀684 返回首頁    go iPhone_iPad_Mac_apple


如何讓Cortana像人一樣交流

抱歉我對人工智能、深度學習這些課題並沒有什麼研究,所以以下說的可能很粗淺可笑。

---------------------------------------

顯然,Cortana一定具有學習能力。但它是如何運作的呢?我猜應該是默默的在後台、甚至在微軟的數據庫中進行。但為什麼不把學習同時也放到前台,讓用戶通過交流、像教一個孩子一樣去教Cortana呢?

Cortana是一個人工智能而不是語音助手,這意味著她的靈魂不在於有多麼豐富的功能、有多少API權限,而在於如何像人一樣交流、思考,如何理解人類。而了解一個人最好的方式,我想是通過交流,而不是默默閱讀死板的資料。

如果要像對一個人類小孩一樣,通過交流讓Cortana學習和理解,我認為大概有以下關鍵點:

1、詢問

目前Cortana也有詢問功能,但僅僅針對一個可理解、但不完整的指令。她並不會對一句無法理解的話進行詢問。實際上,我必須得說設計者太執著於傳統的人機交互流程,太執著於對每個輸入都有明確結果——true or false。

舉例:

“打電話給老婆”——Cortana能理解這個指令;

但如果我說“電我老婆”呢?

這是個簡單的動賓短語。Cortana能理解賓語,但無法理解動詞。但她可以簡單的問:“電是什麼?”或者“怎麼電?”

聽起來其實很簡單。但這需要從本質上改變Cortana的響應流程。除非我明確說搜索,否則不要用網頁搜索來終止交流;保持詢問,直到能明確理解完整指令,或是用戶明確要求放棄;除非可理解的短語比例實在太低,否則也不要回應”沒聽清楚“。

相信我,在用戶沒有要求搜索的時候啟動一個網頁搜索是最蠢的響應。沒有Cortana這麼多年我也活下來了,我不需要她一定得做點什麼。

P.S.我們會喜歡一個不太善解人意、但會反複詢問確認以便把事情做對的助理;但我們很難喜歡一個自以為是、不問清楚就把事做錯的助理

2、糾錯

這實際上是詢問的補充機製,同樣是為了充分交流和理解。如上所述,Cortana可以用反複詢問直到明確理解指令,但她也可能錯誤理解指令。因此,在她執行指令的過程中,應該始終保持一個糾錯監聽;事實上,哪怕執行完了也應該允許糾錯。

舉例:

”我今晚要去北京“

”正為你查找到北京的導航路線“

”不對“

”(中止)哦?我應該怎麼做?“

“我坐飛機去,查查航班”

3、學習模式

學習模式是個很簡單的功能,本質上就是try&catch的沙盒模式,讓用戶和Cortana相互熟悉。在這個過程中,實際上仍然是對”詢問“和”糾錯“的反複應用。

舉例:

"小娜,學習模式”

“學習模式已開啟”

“短信”

“我會問你要發短信給誰”

“不對,我隻說“短信”的意思是我想看看有什麼新短信“

”我不太理解。請告訴我“短信”這個命令等同於什麼?“

”所有未讀短信“

”記住了“

”很好,我們試一次。短信“

”我會為你列出所有未讀短信。我做的對嗎?“

”對,真棒“

4、語境,連貫性。

OK,我們逐漸談到了核心。我之前提到”像人一樣交流、思考“,其中最核心的是像人一樣思考。我非常相信微軟在這方麵有著更加深入的理解和研究,不過我還是想稍詳細的談談我的理解——

**********************

人的大腦工作方式很多時候就像是簡單的”匹配、關聯“。我們通過感官接收信息,分解信息,然後把信息的每一部分用各種方式去和”數據庫“做匹配。這個數據庫異常龐大,因此它有一套複雜的索引機製,某些內容會更加容易被匹配到。

這個索引機製其中之一,就是時間。時間越近、匹配命中率越高。而這就是所謂”語境“的成因。當我們聽到意味不明的話,我們優先從最近的對話中——而非久遠的記憶中、權威的資料中——進行匹配並嚐試詮釋它的含義;甚至我們聽到意味明確的話,我們仍然會根據最近的對話去豐富它的含義,嚐試探尋是否可以有不同的理解。

我們這樣思考,然後這樣交流。而後我們進一步在交流中鞏固”語境“的使用。我們教別人根據語境來理解對話,我們在寫作中根據上下文設計情境,我們根據語境省略一些措辭,營造出人類獨有的交流中的默契。

***********************

人與人之間的交流總是連貫的,上一句話和下一句話互相聯係——除非我們強行說“forget it,我們來開始一個全新的話題”。這是因為人的思維本來就具有連貫性。但在與Cortana交流時,激活語、點擊話筒、時間間隔,這些設定生硬的分隔了一切。這還是與傳統的機器交流的方式——指令、響應,指令、響應。

作為人工智能,Cortana必須嚐試理解“語境”,必須根據時間相關性把所有對話(還包括操作)聯係起來。人是不精確的生物,自然語言是不精確的指令。隻有嚐試像人一樣思考、根據語境去補充這種不精確,Cortana才能真的像人一樣和人交流。

舉例1——現有的“關聯上下文”功能:

“Cortana,明天的天氣如何?”

“明天天氣(...)”

“後天的呢?”

“後天天氣(...)”

看上去,Cortana已經做到了關聯上下文。但根據我的測試,這隻是表象。這種“關聯”實際上隻是對現有指令的快捷修改,並不是“理解”。請看下一個例子:

舉例2——關聯理解,補充含義:

“Cortana,明天杭州的天氣如何?”

“明天杭州天氣(...)”

”查查過去的航班“

(無法理解)

兩句話是兩個不同指令,因此”快捷修改指令“就無法實現。但如果使用”理解“機製,就可以這樣:

a) 指令類型是”查航班“

b) ”過去“是指從所在地出發

c) 缺少目的地信息。但上文提到杭州,而杭州並不是當前所在地,因此可以猜測杭州為目的地

P.S. Cortana也可以嚐試確認:”你是指北京到杭州嗎?“

*******************

舉例3——關聯理解進階版:

“Cortana,打電話給我老婆”

(電話...)

“Cortana,幫我訂張機票”

我沒有說明時間、目的地,那麼此時優先應該考慮語境。

a) 最優先能關聯到的對象是“老婆”,而”老婆“具有”所在地“屬性,因此可以猜測要前往“老婆”的所在地

b) “老婆”是重要的人,因此越快越好

因此Cortana應該“推論”我想要查找最早的前往“老婆”所在城市的航班。她可以向我詢問是否理解正確、並詢問“老婆”的所在城市。

********************

舉例4——修正含義:

”Cortana,終結者5上映了嗎?“

”已經在本地各大影院上映“

”幫我在萬達影院買張今晚的電影票“

”今晚的場次有19:00、20:00、21:00,請問要買哪一場?“

”我19點到20點要去科技園“

如果按照傳統的指令模式,Cortana要麼會為我導航到科技園,要麼會為我創建提醒——因為最後一句話幾乎是個非常明確的指令。當我是人類,人類幾乎不會完全拋開語境進行交流。

應該如何理解呢?

a) 之前的對話並沒有結束,因此最後一句話必定(極大概率)和上文相關

b) 上下文都提到了”時間“,因此關聯性在於”時間“。由於連續提到”時間“,時間升級為主要內容,”要去科技園“變為次要內容

c)”要去科技園“和”看電影“無法建立關聯,因此我所描述的這個計劃和看電影無關

d) 因此,我是在否定19點到20點這個時間段

因此,Cortana應當回答我:“那麼選擇21:00的場次嗎?”

*************************

這個話題繼續談下去可以有很多很多,通過語境,我們可以理解情緒、理解反話、理解雙關……嗯不過作為一篇社區發言我已經寫得太囉嗦了。

上麵我所舉的例子裏,Cortana總是在不斷的推論、猜測,也許有人會覺得怪怪的。但這就是人類交流的方式。不斷的猜測、不斷的通過交流去證實。企圖一步到位的精確執行命令,這並不是人類的思維方式。

我非常理解人工智能是條漫長困難的路。如果說這隻是起步,那麼我更希望Cortana像個蹣跚學步的孩子,優先去掌握良好的學習方式,而不是急急忙忙去開車做飯。



最後更新:2017-11-18 18:05:14

  上一篇:go Win10不支持添加小米5
  下一篇:go 我的電腦裝了係統後,忘了密碼了,有恢複密鑰,恢複不了