如何讓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
上一篇:
Win10不支持添加小米5
下一篇:
我的電腦裝了係統後,忘了密碼了,有恢複密鑰,恢複不了
你的設備已過期,並缺少重要的安全和質量更新,因此存在風險。讓我們帶你重回正軌,這樣
Microsoft store 無法聯網,顯示Microsoft Store需要聯網,你似乎沒有聯網
設備以遷移 由於僅部分匹配或匹配不明確,因此無法遷移設備
由於在創建轉儲期間出錯,創建轉儲文件失敗。
發生臨時 DNS 錯誤
應用商店,在我們這邊發生問題,無法使你登陸,錯誤代碼: 0xD000000D
照相機不可用,錯誤代碼:0xA00F4244(0xC00DABE0)
應用商店打開異常提示“清單中指定了未知的布局”
自定義掃描Windows defender裏麵的設備性能和運行狀況 黃色感歎號問題
windows預口體驗成員內口版本遇到問題需要重啟
熱門內容
windows10 點開此電腦後,有兩個顯示硬盤盤符的目錄是怎麼回事?
windows 10 專業版無法下載中文語言包
KB4056892
win10不能共享文件夾
在Surfacebook上用Windows to go 1703版本,更新後重啟藍屏,無法進入係統
windows10 1709版本更新失敗,錯誤0x8007001f
microdoft visual c++ 2015 redistributable
WIN10 Insider Preview 17025更新失敗,錯誤代碼0x80096004
計算機管理服務 出現一個內部錯誤(INVALID
關於控製麵板中的安全和維護內提示Windows defender 防病毒已關閉的問題