Amazon 首席科學家:如何煉成 Alexa 背後的深度學習技術?

作為2017開年最紅的人工智慧之星Alexa計畫的領導者,亞馬遜首席科學家Nikko Strom為大家帶來了一次精彩的演講,詳細闡述了Alexa的大規模深度的基本架構、語音識別、語音合成等內容。
評論
評論

本文來自合作媒體 雷鋒網 ,INSIDE 授權轉載

2016 年 1 月 11 日-12 日,美國加州聖克拉拉市,AI Frontier 大會召開,這次大會聚集了美國人工智慧公司中最強悍的明星人物,包括 Google 大腦負責人 Jeff Dean、微軟 AI 首席科學家鄧力、亞馬遜首席科學家 Nikko Strom、百度 AI 實驗室主管 Adam Coates、Facebook 科學家賈楊清等 20 多位業界大咖,堪稱 AI 業界領域的一場盛事。

作為 2017 開年最紅的人工智慧之星 Alexa 計畫的領導者,亞馬遜首席科學家 Nikko Strom 為大家帶來了一次精彩的演講,詳細闡述了 Alexa 的大規模深度的基本架構、語音識別、語音合成等內容,尤其提到了 Alexa 為「雞尾酒派對難題」找到了有效的解決方法。

Nikko Strom,亞馬遜首席科學家。1997 年於瑞典工學院獲得博士學位,之後擔任 MIT 電腦科學實驗室研究員,2000 年加入新創公司 Tellme Networks,2007 年加入微軟,推進商業語音識別技術的前沿研究。2011 年加入亞馬遜,並擔任首席科學家,領導語音識別及相關領域的深度學習計畫,是如今炙手可熱的亞馬遜 Echo 和 Alexa 計畫的創始成員。

以下是根據 Nikko Strom 現場演講整理而成,在不改變願意的基礎上做了刪減和補充。

這是 Amazon Echo,內置了一個 Alexa 系統,提供語音服務,你可以把它放到你的家裡,你可以跟它對話,並不需要拿遙控器來控制。這個 Holiday Season,我們加入了新的白色 Echo 和 Dot,你們當中應該有很多人比較偏愛白色的電子產品。其它的一些產品,並沒有內置 Alexa 系統,但是可以與其連接,比如家裡的燈具、咖啡機、恆溫器等,你只需要語音,就可以讓它們執行一些命令。另外,開發者們通過「Skills」來給 Alexa 增加更多的功能應用。

如今數百萬的家庭中放置了 Echo,而它真正地在被使用著,由此我們得到的數據多到瘋狂(insane),可能會超出你的想像。我無法告訴你確切的數字,但可以盡可能往大方向去想。

大規模深度學習

人的耳朵並非每時每刻都在蒐集語音資訊,「聽」的時間大約佔 10%,所以一個人成長到 16 歲的年紀,他/她所聽到的語音訓練時間大概有 14016 小時,關於這個數據,我後面會提到一個對比。

回到 Alexa,我們把數千個小時的真實語音訓練數據存儲到 S3 中,使用 EC2 雲上的分布式 GPU 集群來訓練深度學習模型。

在訓練模型的過程中,用 MapReduce 的方法效果並不理想,因為節點之間需要頻繁地保持同步更新,不能再通過增加更多的節點來加速運算。我們可以這樣理解,那就是 GPU 集群更新模型的計算速度非常之快,每秒都有幾次更新,而每次更新大約是模型本身的大小。也就是說,每一個線程(Worker)都要跟其它線程同步更新幾百兆的量,而這在一秒鐘的時間中要發生很多次。所以,MapReduce 的方法效果並不是很好。

我們在 Alexa 中的解決方法就是,使用幾個逼近算法(Approximations)來減少這些更新的規模,將其壓縮 3 個量級。這裡是我們一篇 2015 年論文的圖表,我們可以看到,隨著 GPU 線程的增加,訓練速度加快。到 40 個 GUP 線程時,幾乎成直線上升,然後增速有點放緩。80 GPU 線程對應著大約 55 萬幀/秒的速度,每一秒的語音大約包含 100 幀,也就是說這時的一秒鐘可以處理大約 90 分鐘的語音。前面我提到一個人要花 16 年的時間來學習 1.4 萬小時的語音,而用我們的系統,大約 3 個小時就可以學習完成。

這就是我們大致的深度學習基礎架構。

Alexa 的語音識別

我們知道語音識別系統框架主要包括四大塊:訊號處理、聲學模型、解碼器和後處理。

首先我們將從麥克風收集來的聲音,進行一些訊號處理,將語音訊號轉化到頻域,從每 10 毫秒的語音中提出一個特徵向量,提供給後面的聲學模型。聲學模型負責把音頻分類成不同的音素。接下來就是解碼器,可以得出概率最高一串詞串,最後一步是後處理,就是把單詞組合成容易讀取的文本。

在這幾個步驟中,我們或多或少都會用到機器學習和深度學習的方法。但是我今天主要講一下聲學模型的部分。

聲學模型就是一個分類器(classifier),輸入的是向量,輸出的是語音類別的概率。這是一個典型的神經網絡。底部是輸入的資訊,隱藏層將向量轉化到最後一層中的音素概率。

這裡是一個美式英語的 Alexa 語音識別系統,所以就會輸出美式英語中的各個音素。在 Echo 初始發佈的時候,我們錄了幾千個小時的美式英語語音來訓練神經網絡模型,這個成本是很高的。當然,世界上還有很多其它的語言,比如我們在 2016 年 9 月發行了德語版的 Echo,如果再重頭來一遍用幾千個小時的德語語音來訓練,成本是很高的。所以,這個神經網絡模型一個有趣的地方就是可以「遷移學習」,你可以保持原有網絡中其它層不變,只把最後的一層換成德語的。

兩種不同的語言,音素有很多是不一樣的,但是仍然有很多相同的部分。所以,你可以只使用少量的德語的訓練數據,在稍作改變的模型上就可以最終得到不錯的德語結果。

雞尾酒派對難題

在一個充滿很多人的空間中,Alexa 需要弄清楚到底誰在說話。開始的部分比較簡單,用戶說一句喚醒詞「Alexa」,Echo 上的對應方向的麥克風就會開啓,但接下來的部分就比較困難了。比如,在一個雞尾酒派對中,一個人說「Alexa,來一點爵士樂」,但如果他/她的旁邊緊挨著同伴一起交談,在很短的時間中都說話,那麼要弄清楚到底是誰在發出指令就比較困難了。

這個問題的解決方案來自於 2016 年的一份論文《錨定語音檢測》(Anchored Speech Detection)。一開始,我們得到喚醒詞「Alexa」,我們使用一個 RNN 從中提取一個「錨定嵌入」(Anchor embedding),這代表了喚醒詞中包含語音特徵。接下來,我們用了另一個不同的 RNN,從後續的請求語句中提取語音特徵,基於此得出一個端點決策。這就是我們解決雞尾酒派對難題的方法。

語音合成

Alexa 中的語音合成技術,也用在了 Polly 中。語音合成的步驟一般包括:

第一步,將文本規範化。如果你還記得的話,這一步驟恰是對「語音識別」中的最後一個步驟的逆向操作。

第二步,把字素轉換成音素,由此得到音素串。

第三步是關鍵的一步,也是最難的一步,就是將音素生成波形,也就是真正的聲音。

最後,就可以把音頻播放出來了。

Alexa 擁有連續的語音合成。我們錄下了數小時人的自然發音的音頻,然後將其切割成非常小的片段,由此組成一個數據庫。這些被切割的片段被稱為「雙連音片段」(Di-phone segment),雙連音由一個音素的後半段和另一個音素的前半段組成,當最終把語音整合起來時,聲音聽起來的效果就比較好。

當你建立這個數據庫時,要高度細緻,確保整個資料庫中片段的一致性。另外一個重要的環節是演算法方面的,如何選擇最佳的片段序列結合在一起形成最終的波形。首先要弄清楚目標函數是什麼,來確保得到最合適的「雙連音片段」,以及如何從龐大的數據庫中搜索到這些片段。比如,我們會把這些片段標籤上屬性,我今天會談到三個屬性,分別是音高(pitch)、時長(duration)和密度(intensity),我們也要用 RNN 為這些特徵找到目標值。之後,我們在數據庫中,搜索到最佳片段組合序列,然後播放出來。


精選熱門好工作

平台營運專員

樂購蝦皮股份有限公司
臺北市.台灣

獎勵 NT$15,000

Software Manual Test 手動測試工程師

樂購蝦皮股份有限公司
臺北市.台灣

獎勵 NT$15,000

(Backend)Senior Software Engineer

ShopBack 回饋網股份有限公司
臺北市.台灣

獎勵 NT$15,000

評論