當前位置:
首頁 > 科技 > 蘋果最新機器學習研究,詳解「嘿Siri」語音觸發器背後的深度神經網路

蘋果最新機器學習研究,詳解「嘿Siri」語音觸發器背後的深度神經網路

原文來源:machinelearning.apple.com

作者:Apple Siri Team

「雷克世界」編譯:BaymaxZ、嗯~阿童木呀

「嘿Siri」功能允許用戶利用Siri實現免提。一個非常小的語音識別器一直在運行,而且只聽這兩個單詞。當它檢測到「嘿Siri」時,Siri會將接下來的語音解析為命令或查詢。「嘿Siri」檢測器使用深度神經網路(DNN),它將聲音聲學模式轉換成語音的概率分布。然後,它使用時間整合過程計算你所發出的短語為「嘿Siri」的置信度分數。如果得分足夠高,Siri就會被喚醒。本文將介紹Siri的基礎技術。

Siri的免提方式

要獲得Siri的幫助,我們一般會說「嘿Siri」。我們沒有必要按下按鈕,使用「嘿Siri」語音就能使Siri開免提。這看起來很簡單,但是在簡單的表面背後,想要快速有效地喚醒Siri還需要很多操作。硬體、軟體和互聯網服務必須無縫協作,才能提供很好的體驗。

圖1:iPhone的「嘿Siri」流程圖

當你的手正處於忙碌狀態,例如正在烹飪或駕駛,或正在使用Apple Watch而無暇做其他事情的時候,能夠使用Siri而不需要按按鈕就變得尤為重要了。如圖1所示,整個系統有幾個部分。Siri的大部分操作「在雲中」,包括主要的自動語音識別、自然語言解釋和各種信息服務。還有可以為檢測器使用的聲學模型提供更新的伺服器。本文主要介紹本地設備上運行的部分,例如iPhone或Apple Watch。特別要說明的是,它主要集中於檢測器上:一個專門的語音識別器,它聽聲音始終只是為了找到喚醒語句(在最近的iPhone上啟用的「嘿Siri」功能)。

檢測器:聽「嘿Siri」

iPhone或Apple Watch中的麥克風將你的聲音轉換成瞬時波形採樣流,速率為每秒16000。頻譜分析階段將波形採樣流轉換成幀序列,每個幀描述大約0.01秒的聲譜。將這些幀中的大約二十個(0.2秒的音頻)饋送到聲學模型,然後深度神經網路(DNN)便會將這些聲學模式中的每一個轉換成一組語音聲音類的概率分布:這些類主要用於「嘿Siri」短語,加上靜音,以及其他語音等,大約共有20個聲音類。見圖2:

圖2:深度神經網路用來檢測「嘿,Siri」,隱藏層實際上是完全連接的,上面的層執行時間整合,實際上DNN是由虛線框表示的。

DNN主要由矩陣乘法和邏輯非線性組成。每個「隱藏」層是DNN在訓練期間發現的將過濾器組輸入轉換為聲音類的中間表示。最終的非線性本質上是一個Softmax函數(也就是通用邏輯或歸一化指數),但是由於我們要的是對數概率,所以實際的數學更簡單一些。

我們選擇DNN的每個隱藏層中的單位數,以適應「嘿Siri」檢測器運行時可用的計算資源。我們所使用的網路通常具有五個隱藏層,大小全部相同:32、128或192個單位,具體取決於內存和功率限制。在iPhone上,我們使用兩個網路——一個用於初始檢測,另一個用作輔助檢查器。初始檢測器使用的單位數要比輔助檢查器少一些。

聲學模型的輸出提供了每個幀的語音分類的分數。一個語音類通常是像「一個較高前母音和一個前母音中間的/s/的第一部分」。

如果聲學模型的輸出對於目標短語的正確序列高度一致,我們就會檢測到「嘿Siri」。為了產生每個幀的單個分數,隨著時間,我們以有效的順序累積那些本地值。這在圖2的最後(頂部)層中表示為具有連接到相同單位並且順序連接的循環網路。每個單位內都有一個最大化操作和一個加法:

其中:

?Fi,t是模型狀態i的積分

?qi,t是聲學模型的輸出——在時間t周圍的給定聲學模式的與第i個狀態相關聯的語音類的對數分數

?si是與狀態i相關聯的成本

?mi是從狀態i開始的成本

si和mi都是基於訓練數據中具有相關標籤的片段的持續時間的分析。(此過程是動態編程的應用,可以基於隱馬爾可夫模型HMM的想法導出。)

圖3:以圖形描述方程式

每個累積分數Fi,t與具有狀態的先前幀的標籤相關聯,如給定的最大操作的決策序列。每個幀的最終得分為Fi,t,其中短語的最後狀態是狀態I,並且在導致該分數的幀序列中存在N個幀。(N可以通過追溯最大決定的順序找到,但實際上是通過傳播轉發數量的幀來完成的,因為路徑進入了短語的第一個狀態)。

「嘿Siri」檢測器中幾乎所有的計算都在聲學模型中。時間積分計算相對簡單,所以在評估大小或計算資源時,我們將它忽略。

圖4.穿過檢測器時的聲學圖案

假設我們使用最小的DNN,你可以通過查看圖4更好地了解檢測器的工作原理,圖4顯示了各個階段的聲信號。最底端是麥克風波形的波形圖。在這種情況下,有人在說「嘿Siri什麼...」時,更亮的部分就是這句話中最響亮的部分。嘿Siri圖案是垂直的藍線之間的部分。

從底部開始的第二個水平條帶顯示了用mel濾波器組(mel filter bank)分析相同波形的結果,該濾波器組基於感知測量給予對頻率的權重。這種轉換還能使光譜圖中可見的細節平滑,並且由於聲道激發的精細結構——隨機的周期性的——看作垂直條紋。

標記為H1至H5的交替綠色和藍色水平條顯示五個隱藏層中每個隱藏層中的單位的數值(激活)。已經安排了每一層的32個隱藏單元,以將具有相似輸出的單元放在一起。

下一張(黃色對角線)顯示聲學模型的輸出。在每個幀上,短語中的每個位置都有一個輸出,另外還有一個輸出用於靜音和其他語音。根據方程1,通過將沿著明亮對角線的局部分數相加來獲得頂部顯示的最終得分。注意,在整個短語進入系統之後,得分上升到峰值。

我們將分數與閾值進行比較,以決定是否激活Siri。實際上閾值不是固定值。我們建立了一些靈活性,使其更容易在困難的條件下激活Siri,而不會顯著增加虛假激活的數量。有一個主要或正常的門檻和一個通常不會觸發Siri的下限閾值。如果分數超過下限,但不是上限,那麼可能是我們錯過了一個真正的「嘿Siri」事件。當分數在此範圍內時,系統進入更敏感的狀態幾秒鐘,這樣,如果用戶重複該短語,即使沒有做出更多的嘗試,Siri也會觸發。這種第二次機會機制顯著提高了系統的可用性,而不會由於在短時間內處於這種非常敏感狀態而不會增加虛假警報率。(稍後我們討論測試和調整準確性。)

響應性和電力:雙通道檢測

「嘿Siri」探測器不但要準確,而且需要快速而且不會對電池壽命產生重大影響。我們還需要盡量減少內存使用和處理器需求,特別是峰值處理器需求。

為避免運行主處理器整天只是為了聽觸發短語,iPhone的Always On Processor(AOP)(一個小型的低功耗輔助處理器,即嵌入式運動協處理器)可以訪問麥克風信號6S及更高版本)。 我們使用一小部分AOP的有限處理能力來運行具有小型聲學模型(DNN)的檢測器。當分數超過閾值時,運動協處理器喚醒主處理器,主處理器使用較大的DNN分析信號。在支持AOP的第一個版本中,第一個檢測器使用具有5層32個隱藏單元的DNN,第二個檢測器具有5層192個隱藏單元。

圖5 雙通道檢測

Apple Watch提出了一些特殊的挑戰,因為電池電量要小得多。Apple Watch使用單通「嘿Siri」檢測器,其聲學模型的尺寸介於其他iOS設備上的第一次和第二次通道之間。「嘿Siri」檢測器只有在手錶運動協處理器檢測到手腕提起手勢時才會運行,這會打開屏幕。在這一點上,WatchOS有很多功能,準備屏幕等,所以系統分配「嘿Siri」只有相當有限的計算資源的一小部分(約5%)。及時啟動音頻捕獲是一個挑戰,以捕獲觸發短語的開始,因此我們以初始化檢測器的方式對可能的截詞進行限制。

個性化「嘿Siri」

我們設計了永遠在線的「嘿Siri」檢測器,以響應每當有人在附近說觸發短語。為了減少錯誤觸發的煩惱,我們邀請用戶進行簡短的登入會話。在登入期間,用戶說出每個以「Hey Siri」開頭的五個短語。我們將這些例子保存在設備上。

我們比較任何可能的新的「嘿Siri」話語與存儲的例子如下。(第二遍)檢測器產生定時信息,用於將聲學圖案轉換成固定長度的向量,通過取得與每個狀態對齊的幀上的平均值。一個獨立的、經過特別訓練的DNN將該向量轉換成「揚聲器空間」,其中通過設計,來自同一揚聲器的圖案傾向於接近,而來自不同揚聲器的圖案傾向於進一步分開。我們將與登入期間創建的參考模式的距離與另一個閾值進行比較,以確定觸發檢測器的聲音是否可能是登入用戶所說的「嘿Siri」。

這個過程不僅降低了另一個人所說的「嘿Siri」會觸發iPhone的可能性,而且降低了其他類似聲音的短語觸發Siri的速度。

進一步檢查

如果iPhone上的各個階段都已通過,那麼波形就會到達Siri伺服器。如果主語音識別器聽到了除了「嘿Siri」之外的一些其他聲音(例如「Hey Seriously」),那麼伺服器將會向手機發送一個取消信號,使其恢復睡眠狀態,如圖1所示。在某些系統上,我們會在設備上運行一個主識別器的精簡版本,以便在更早的時候提供額外的檢查。

聲學模型:訓練

DNN聲學模型是「嘿Siri」檢測器的核心。所以來看看我們是如何訓練它的。在嘿Siri功能初出現之前,有一小部分用戶在開始請求時就會說「嘿Siri」,這是通過按下按鈕開始的。我們使用這種「嘿Siri」的話語來進行美國英語檢測器模型的初始訓練。我們還使用了一些用於訓練主語音識別器的通用語音示例。在這兩種情況下,我們在訓練短語上使用自動轉錄。 Siri團隊成員出於準確度的考慮,對錄音進行了檢查。

我們創建了一個用於「嘿Siri」短語特定語言的語音規範。在美式英語中,我們有兩個變體,即在「Siri」中存在兩個不同的第一母音,一個是「serious」中的那樣,另一個是「Syria」中的那樣。我們還試圖在這兩個詞之間短暫的停頓,特別是當這個短語經常用逗號寫的時候:「Hey, Siri」,每一個語音音標都會產生三個語音類(開始、中間、結束),且每個語音類都會有各自的來自聲學模型的輸出。

我們用語料庫來對DNN進行訓練,因為它的主Siri識別器為每一幀提供了一個聲音類標籤,主識別器會用到數千個聲音類,但只有約20%會用於描述目標短語(包括最初的靜音模式),以及一個可以用於其他所有內容的大型類。該訓練過程試圖生成幀接近為1的DNN輸出,且會根據當地的聲音模式,標記有相關的國家和電話。訓練過程採用標準的反向傳播和隨機梯度下降法對權重進行調整。我們使用了各種各樣的神經網路訓練軟體工具包,包括Theano、Tensorflow和Kaldi。

在給定本地聲學觀察的基礎上,該訓練過程產生了相關電話和國家概率的估計值,但是這些估計值包括訓練集(先驗)中的電話頻率,這可能非常不均勻的,並且幾乎與檢測器使用的環境沒有什麼關聯。所以在聲學模型的輸出被投入使用之前我們會對先前結果進行補償。

訓練一個模式大概需要一天的時間,並且在任何一個時間中通常都會有一些模型在進行訓練。我們通常會訓練三個版本:一個是第一次通過移動處理器的小模型,另一個是第二次通過的較大尺寸的模型,而第三個是用於Apple Watch的中型模型。

對於Siri所支持的所有語言,「嘿Siri」都是可以進行很好的工作的,目標「嘿Siri」不一定是Siri最開始聽的句子。講法語的用戶需要說「Dis Siri」,而講韓語的用戶說「Siri ?」(聽起來像「Siri Ya」),在俄羅斯它是「привет Siri」(聽起來像「Privet Siri」),在泰國是「??????Siri」(聽起來像「Wadi Siri」)。

測試和調優

一個理想的檢測器是什麼樣的呢?只要當用戶說「嘿Siri」時,它就啟動,而不是在其他時間啟動。我們用兩種錯誤來描述檢測器的準確性:在錯誤的時間啟動,和在正確的時間未啟動。錯誤接受率(FAR或假警報率)是每小時(或激活期間的平均小時數)的虛假激活次數,而假拒絕率(FRR)是嘗試激活但失敗的比例。(請注意,我們用於測量FAR的單位與FRR所使用的單位不同。甚至連維度也是不同的,所以沒有相等的錯誤率這樣的概念。)

對於給定的模型,我們可以通過改變激活閾值來改變兩種錯誤之間的平衡。圖6顯示了這種權衡的例子,對於兩種早期開發模型。沿曲線移動改變閾值。

在開發過程中,我們嘗試通過使用大型測試集來估計系統的準確性,而這種測試集的手機個準備是相當昂貴的,但卻是必不可少的。裡面包含「正」數據和「負」數據。「正」數據裡面包含了目標短語。你可能會認為我們可以使用來自「嘿Siri」系統提取的語音,但遺憾的是系統並沒有捕捉到這種觸發失敗的嘗試,我們希望改進系統以盡量地包含儘可能多的失敗嘗試。

起初我們使用的是來自「嘿Siri」的一些用戶在按下Home鍵時說下的語音,但是這些用戶並不試圖抓住Siri的注意,按鈕和麥克風一樣,都只能是在一臂之內的範圍才可以使用。而我們希望「嘿Siri」的工作範圍能夠涵蓋一個房間。我們在不同的條件下製作了特別的錄音,比如在廚房裡(不管是近距離的還是遠的),汽車,卧室,餐館等,這些都是由各種語言的母語使用者錄的。

我們使用「負」數據來測試虛假激活(和假醒)。這些數據代表了數千個小時的錄音,來源也是千奇百怪的,包括播客和非「嘿Siri」輸入到Siri的多種語言,以及用來表示背景聲音(尤其是語音)和可能是一個用戶與他人對話時所說的短語等。我們之所以需要這麼多的數據,是因為我們正試圖將假警報率的評估值儘可能的降低,直到為一周一次。(如果在負數據中出現了目標短語,我們將其標記為如下這樣,這樣我們就不會將其響應視為錯誤)

圖6探測器的精度 針對小的和大的DNN檢測器閾值的權衡折中

調優很大程度上是決定使用什麼閾值的問題。在圖6中,較大型模型的較低的折中曲線上的兩個點顯示了正常的和第二次機會閾值。較小的(第一次通過的)模型的操作點在右邊。這些曲線只適用於檢測器的兩個階段,不包括個性化的階段或後續檢查。

雖然我們相信在測試集中表現更好的模型可能真的更好,但是我們真的很難將離線測試結果轉化為關於用戶體驗的有用的預測結果。所以除了先前描述的離線測量外,我們還每周通過從最新的iOS設備上和Apple Watch的生產數據抽樣,評估了錯誤報警率(即當Siri在沒有用戶說「嘿Siri」時便自主啟動)和冒名接受率(imposter-accept rates)(即當除用戶之外的其他人在訓練檢測器說「嘿Siri」時,Siri便正常啟動)。這個評估不會給出拒絕率(即當系統無法響應有效的「嘿Siri」時),但是我們可以從有效的閾值之上的激活率評估出拒絕率,以及從開發人員攜帶的設備上剛剛低於閾值的事件中採樣。

我們不斷地對「嘿Siri」進行評估和改進,以及通過使用本文描述的各種方法對其進行訓練和測試以強化它的能力。我們用多種語言進行訓練並在一系列條件下進行測試。

下次你說「嘿Siri」時,你可能會想到它會對那個短語所作出所有可能回應,但我們所希望只不過是它能夠「正常工作」就好了。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雷克世界 的精彩文章:

任何機器學習分類器都可以被欺騙!一文解析對抗性攻擊是如何工作的
谷歌keras作者推薦:使用「風格遷移」合成高解析度多尺度神經紋理
雙十一大戰即將打響!科沃斯和蘇寧聯手推出的機器人能為智慧零售帶來什麼?
Autodesk提出機器學習新演算法:使用「自動編碼器網路」探索生成3D形狀
神經網路中的「注意力」是什麼?怎麼用?這裡有一篇詳解

TAG:雷克世界 |