觸發字檢測Trigger Word Detection

現在你已經學習了很多關於深度學習和序列模型的內容,於是我們可以真正去簡便地描繪出一個觸發字系統(a trigger word system),就像上節中你看到的那樣。

隨著語音識別的發展,越來越多的設備可以通過你的聲音來喚醒,這有時被叫做觸發字檢測系統(rigger word detection systems)。我們來看一看如何建立一個觸發字系統。

吳恩達深度學習筆記(137) | 觸發字檢測Trigger Word Detection

觸發字系統的例子包括Amazon echo,它通過單詞Alexa喚醒;

還有百度DuerOS設備,通過"小度你好"來喚醒;

蘋果的Siri用Hey Siri來喚醒;

Google Home使用Okay Google來喚醒,這就是觸發字檢測系統。

假如你在臥室中,有一臺Amazon echo,你可以在臥室中簡單說一句: Alexa, 現在幾點了?就能喚醒這個設備。它將會被單詞"Alexa"喚醒,並回答你的詢問。

如果你能建立一個觸發字檢測系統,也許你就能讓你的電腦通過你的聲音來執行某些事,我有個朋友也在做一種用觸發字來打開的特殊的燈,這是個很有趣的項目。但我想教會你的,是如何構建一個觸發字檢測系統。

吳恩達深度學習筆記(137) | 觸發字檢測Trigger Word Detection

有關於觸發字檢測系統的文獻,還處於發展階段。

對於觸發字檢測,最好的算法是什麼,目前還沒有一個廣泛的定論。我這裡就簡單向你介紹一個你能夠使用的算法好了。現在有一個這樣的RNN結構,我們要做的就是把一個音頻片段(an audio clip)計算出它的聲譜圖特徵(spectrogram features)得到特徵向量x^(<1>), x^(<2>), x^(<3>)..,然後把它放到RNN中,最後要做的,就是定義我們的目標標籤y。

假如音頻片段中的這一點是某人剛剛說完一個觸發字,比如"Alexa",或者"小度你好" 或者"Okay Google",那麼在這一點之前,你就可以在訓練集中把目標標籤都設為0,然後在這個點之後把目標標籤設為1。

假如在一段時間之後,觸發字又被說了一次,比如是在這個點說的,那麼就可以再次在這個點之後把目標標籤設為1。這樣的標籤方案對於RNN來說是可行的,並且確實運行得非常不錯。不過該算法一個明顯的缺點就是它構建了一個很不平衡的訓練集(a very imbalanced training set),0的數量比1多太多了。

這裡還有一個解決方法,雖然聽起來有點簡單粗暴,但確實能使其變得更容易訓練。比起只在一個時間步上去輸出1,其實你可以在輸出變回0之前,多次輸出1,或說在固定的一段時間內輸出多個1。

這樣的話,就稍微提高了1與0的比例,這確實有些簡單粗暴。在音頻片段中,觸發字剛被說完之後,就把多個目標標籤設為1,這裡觸發字又被說了一次。

說完以後,又讓RNN去輸出1。

我們僅僅用了一張幻燈片來描述這種複雜的觸發字檢測系統。

在這個基礎上,希望你能夠實現一個能有效地讓你能夠檢測出觸發字的算法,不過在編程練習中你可以看到更多的學習內容。

這就是觸發字檢測,希望你能對自己感到自豪。因為你已經學了這麼多深度學習的內容,現在你可以只用幾分鐘時間,就能用一張幻燈片來描述觸發字能夠實現它,並讓它發揮作用。

你甚至可能在你的家裡用觸發字系統做一些有趣的事情,比如打開或關閉電器,或者可以改造你的電腦,使得你或者其他人可以用觸發字來操作它。

這是深度學習課程最後一個技術,所以總結一下我們對序列模型的學習。

我們學了

RNN,包括GRU和LSTM,然後我們學了詞嵌入(word embeddings),以及它們如何學習詞彙的表達(how they learn representations of words)

還學了注意力模型(the attention model)以及如何使用它來處理音頻數據(audio data)

恩達老師的課程到此結束咯,希望對你有所幫助~

期待給你打來更好的知識分享~


分享到:


相關文章: