會打電話的 AI 背後:谷歌 Duplex 技術解析

 2018-05-09 19:58:00.0

谷歌昨晚在加州召開了 2018 年度的開發者大會(Google I/O 2018)。在大會介紹的 Android P、Gmail、Gboard、TPUv3 等衆多新產品和功能中,尤爲亮眼的無疑是個人助理 Google Assistant 中新增加的 Duplex,它可以自己給飯館、髮廊等商業店面打電話,幫用戶預約時間

具體效果可以先看看 I/O 大會現場的演示視頻:

在這兩則真實電話錄音中,Duplex 不僅用自然流暢的語音和電話另一頭的人類完成了交流,對方根本沒有意識到打電話來的居然是個「AI」,而且第二則錄音中它還成功地處理了意料之外的發展狀況,不僅理解了「無需預定」,還主動詢問了等位的時間。根據谷歌 CEO Sundar Pichai 介紹,他們未來還計劃進一步拓展 Duplex 的詢問營業時間的能力,有一個用戶的 Google Assistant 打電話詢問了某家店面的營業時間,就可以把這個詢問結果同步給更多別的用戶,不僅節省了用戶/消費者自己查詢的時間,也爲店家節省了時間。實際上,這也是谷歌對 Google Assistant 的設計宗旨:爲用戶節省時間,爲用戶把事情搞定(get things done)

谷歌也同步在 Google AI 博客上更新了 Duplex 的技術細節,編譯如下。

Google Duplex:能打電話完成真實世界任務的 AI 系統

長期以來,人類和計算機之間交互的目標都是希望兩者之間可以進行自然的對話,就像兩個人之間講話那樣。近幾年來,計算機理解和生成自然語音的能力出現了革命性的提高,谷歌語音搜索、WaveNet 之類基於深度神經網絡的技術功不可沒。

即便如此,當前最先進的人機對話系統仍然只有生硬的電子聲音,而且也不理解人類的自然語言。具體來說,自動呼叫系統即便只是識別簡單的單詞和控制指令都不令人滿意,更不用說跟人進行自然的對話了。打電話的人需要調整自己的說法方式來適應系統,系統卻沒辦法適應打電話的人。

而今天發佈的 Google Duplex 就包含了新的技術,它可以打電話給人類,通過自然的對話完成一系列真實世界的任務。這項技術目前針對的是執行一些特定的任務,比如爲某幾類活動約定時間。在這些任務中,Duplex 能讓對話過程儘可能地自然,電話另一頭的人類可以像和另一個人說話一樣自然地交流,無需做任何調整(實際上對方可能根本就沒有發現這通電話不是人類打來的)。

在這項技術的研究中,一個重要的研究要點是把 Duplex 的功能限制在封閉的場景中,這些場景涵蓋的內容足夠少,以至於 AI 系統可以充分地探索學習。相對應地,Duplex 經過這些場景的深入訓練後,也就只能執行這些場景內的自然對話任務,還不能和人進行一般的對話。

不過,根據開頭的視頻我們已經感受到了,在這些任務中 Duplex 帶來了令人驚喜的表現,對話過程對人類來說非常舒適。

如何展開自然對話

展開一段自然的對話有這麼幾個難點:自然語言難以理解,人類的自然行爲很難建模,人類對延遲的耐受性很低所以需要高處理速度,以及生成聽起來自然的語音,其中還要適當地夾雜一些語氣詞

當人類和人類之間對話的時候,相比於與計算機對話,他們會使用更多的複雜句子。他們經常一個句子說到一半然後更正一部分表述,會囉囉嗦嗦的,會依賴上下文然後省略一些單詞,還有時候會在一個句子裏表達好多個意思。比如:「星期二到星期四我們從上午 11 點開門到下午 2 點,然後下午 4 點到 9 點重新開門,然後星期五六日我們,哦不對,星期五星期六我們 11 點開門到 9 點,星期天 1 點到 9 點。」

在天然的、自發的對話中,相比與計算機講話,人類會講得更快、講得更不清晰一些,這時候的語音識別也更難,單詞錯誤率更高。在打電話的時候這個問題會更明顯,經常會遇到背景噪音,通話質量也不好。

會打電話的 AI 背後:谷歌 Duplex 技術解析

在較長的對話中,根據上下文的不同,同樣的句子也可以有不同的含義。比如,「ok for 4」在預訂座位的時候就有可能指人的數目,也有可能指時間。相關的上下文句子可能會在好幾個句子之前,而受到電話中單詞錯誤率的影響,這個問題又會變得愈發難解。

識別了對方的語義之後,AI 系統要說的內容就是由當前要執行的任務和對話進行的狀況共同決定的。除此之外,自然語言的對話中還有一些常見的語言習慣;這些約定俗成的句法模式包括:重複時說得更詳細一些(-「時間是下週五。」-「什麼時候?」-「下週五,18 號。」),同步語句(「你聽得清嗎」),打斷(-「數字是 212…」-「對不起你能重新說一遍嗎」),以及停頓(「你可以稍等一下嗎 [停頓] 謝謝!」,1 秒的停頓和 2 分鐘的停頓又有不同的含義)。

認識 Duplex

藉助語言理解、交互、時間控制、語音生成方面的最近技術發展,Google Duplex 的對話聽起來相當真實自然。

爲了處理上面提到的挑戰,Duplex 的核心是一個 RNN 網絡,它是由 TensorFlow Extended(RFX)構建的。爲了達到高精度,谷歌用匿名的電話對話數據訓練了 Duplex 的 RNN 網絡。這個網絡會使用谷歌自動語音識別(ASR)的識別結果文本,同時也會使用音頻中的特徵、對話歷史、對話參數(比如要預訂的服務,當前時間)等等。谷歌爲每一種不同的任務分別訓練了不同的理解模型,不過不同任務間也有一些訓練語料是共享的。最後,谷歌還利用 TFX 的超參數優化進一步改進了模型。

會打電話的 AI 背後:谷歌 Duplex 技術解析

輸入語音先經過自動語音識別系統(ASR)處理,生成的文本會與上下文數據以及其它輸入一起輸入 RNN 網絡,生成的應答文本再通過文本轉語音(TTS)系統讀出來。

生成自然的語音

谷歌聯合使用了一個級聯 TTS 引擎和一個生成式 TTS 引擎(其中使用了 Tacotron 和 WaveNet),根據不同的情境控制語音的語調。

這個系統還可以生成一些語氣詞(比如「hmmm」、「uh」),這也讓語音變得更自然。當級聯 TTS 需要組合變化很大的語音單元,或者需要增加生成的停頓時,語氣詞就會被添加到生成的語音中,這就讓這個系統可以以一種自然的方式向對方示意「是的我聽着呢」或者「我還在考慮」(人類說話的時候就經常在思考的同時發出一些語氣詞)。谷歌的用戶調查也確認了人類覺得帶有語氣詞的對話更熟悉、更自然。

另一方面,系統的延遲也要能夠符合人類的期待。比如,當一個人在電話裏講了「你好」這樣的簡單句子之後,他們會希望很快聽到一個簡短的回覆,這種時候會對延遲更加敏感一些。當 AI 系統檢測到了需要短延遲的情境時,就會使用更快但精度也更低的模型來處理。在某些極端情況下,系統甚至都不會等待 RNN 運行,而是直接使用快速逼近模型(通常也會和更慢的正式迴應搭配起來使用,就像人類不完全理解另一方的時候會猶豫一樣)。這樣的做法就可以讓系統達到 100ms 之內的極短延遲。有趣的是,谷歌發現在某些情況下要增加一些延遲來讓對話聽起來更自然,比如回覆一個很複雜的句子的時候。

系統運行

Google Duplex 系統可以進行復雜的對話,它可以完全自動地完成大多數任務,不需要任何人類參與。系統也有一個自動監控機制,不僅成功完成一個任務後可以給用戶彈出提醒,也可以識別出沒能成功完成的任務(比如處理某個異常複雜的預訂)。在這種情況下,它會給一個人類操作員發出指令,轉交給人類完成任務。

爲了在訓練系統處理新的情境,谷歌也使用了實時監督訓練。這種訓練方式和許多事情的教學方法類似,都有一個教學者指導一個學生,邊做邊提供必要的指導,確保任務的執行效果達到了教學者的質量要求水平。在 Duplex 系統中,有經驗的人類操作員就可以作爲這樣的教學者,當系統打電話處理新的、不熟悉的情境時,人類操作員就可以實時影響系統的行爲。這樣的邊做邊學的過程可以一直持續到系統達到了理想的表現爲止,然後系統就可以全自動地打電話了。

有益於用戶,也有益於商家

許多商戶並沒有自己的在線預定系統,仍然使用的是在線預定。Duplex 就可以幫助他們,無需改變每日的行爲慣例或者培訓員工,就可以讓用戶通過 Google Assistant 輕鬆完成預定。Duplex 也可以減少用戶放鴿子的情況,可以在手機上自動提醒用戶預訂事項,以及幫助用戶輕鬆地取消或者重新安排時間。

也有一些情況下,用戶會打電話向商戶詢問營業時間,比如節假日期間的營業時間,一般在店鋪的在線信息頁面是看不到的。Duplex 打電話詢問之後可以通過谷歌服務把這個信息公開出去,省去了其它用戶打同一個電話、問同樣的問題的精力,也幫商戶節省了人力。同時,商戶自己就像往常一樣正常營業就行,這項新技術並不需要他們學習任何技能或者做任何改變就可以享受到便利。

對用戶來說,Google Duplex 當然可以幫助用戶輕鬆地完成它支持的各種任務。用戶只需要和 Google Assistant 做簡單的互動,Duplex 就會自動在後臺打電話,並且自動補全所需的用戶信息。

會打電話的 AI 背後:谷歌 Duplex 技術解析

用戶讓 Google Assistant 做個預約,Google Assistant 接下來就會通過 Duplex 打電話與商戶完成預約

Duplex 還能給用戶增加一項便利,那就是可以非同步地作爲服務提供商的代理,比如在非營業時間給商戶打電話,或者手機信號不好的時候,Duplex 在這種情況下就成爲了一條額外的信息獲取途徑。它也可以幫助殘障人士或者語言不通的用戶,替聽力受損的用戶打電話完成預約,或者替用戶用另一種語言完成任務。

今年夏天,谷歌就會開始基於 Google Assistant 測試 Duplex,就從預訂餐館、預訂髮廊、詢問節假日的營業時間這樣的事項開始。

會打電話的 AI 背後:谷歌 Duplex 技術解析

Google Duplex 團隊負責人 Yaniv Leviathan 和 項目工程主管 Matan Kalma 在餐廳吃飯,這頓飯就是 Duplex 打電話爲他們預訂的。

一直以來,讓人們可以「像人與人互動一樣自然地與科技互動」都是谷歌的目標。Google Duplex 就是邁向這個方向的一步,在特定場景下以自然的對話讓人和科技互動。谷歌希望這些具體技術的發展也可以爲人類和計算機的日常互動帶來更有有意義的改進。

via GoogleBlog

相關文章:

你可能還不知道,WaveNet 爲了進駐 Google Assistant 做出了這些重大變化

Deepmind語音生成模型WaveNet正式商用:效率提高1000倍


文章來源:雷鋒網