Transformer_ASR_demo

Transformer結(jié)構(gòu)

模型結(jié)構(gòu)如下:


論文地址:https://arxiv.org/abs/1706.03762

這里只用到了Encoder的部分:


1.1 subsample

用兩層卷積進(jìn)行降采樣:

測試:

結(jié)果:

輸入維度:(2,1,28浩村,28)

輸出維度:(2拂共,2,6嗽元,6)$$PE_{(pos,2i)} = sin(pos / 10000^{2i/d_{\text{model}}})$$$$PE_{(pos,2i+1)} = cos(pos / 10000^{2i/d_{\text{model}}})$$

1.2?PositionalEncoding

位置編碼

為了使模型能夠有效利用序列的順序特征,我們需要加入序列中各個Token間相對位置或Token在序列中絕對位置的信息。在這里彤避,我們將位置編碼添加到編碼器和解碼器棧底部的輸入Embedding。由于位置編碼與Embedding具有相同的維度d_{\text{model}}夯辖,因此兩者可以直接相加琉预。其實這里還有許多位置編碼可供選擇,其中包括可更新的和固定不變的蒿褂。

  在此項工作中圆米,我們使用不同頻率的正弦和余弦函數(shù):

PE_{(pos,2i)} = sin(pos / 10000^{2i/d_{\text{model}}}),   PE_{(pos,2i+1)} = cos(pos / 10000^{2i/d_{\text{model}}})

其中pos是位置,i是維度啄栓。 也就是說娄帖,位置編碼的每個維度都對應(yīng)于一個正弦曲線,其波長形成從2π到10000?2π的等比級數(shù)昙楚。我們之所以選擇了這個函數(shù)近速,是因為我們假設(shè)它能讓模型很容易學(xué)會Attend相對位置,因為對于任何固定的偏移量k, PEpos+k可以表示為PEpos的線性函數(shù)堪旧。

此外削葱,在編碼器和解碼器堆棧中,我們在Embedding與位置編碼的加和上都使用了Dropout機(jī)制崎场。在基本模型上佩耳,我們使用P_{drop}=0.1的比率。


如下所示谭跨,位置編碼將根據(jù)位置添加正弦曲線干厚。曲線的頻率和偏移對于每個維度是不同的。

輸出結(jié)果:

1.3?MultiHeadedAttention

Attention

  Attention函數(shù)可以將Query和一組Key-Value對映射到輸出螃宙,其中Query蛮瞄、Key、Value和輸出都是向量谆扎。 輸出是值的加權(quán)和挂捅,其中分配給每個Value的權(quán)重由Query與相應(yīng)Key的兼容函數(shù)計算。

我們稱這種特殊的Attention機(jī)制為"Scaled Dot-Product Attention"堂湖。輸入包含維度為dk的Query和Key闲先,以及維度為dv的Value状土。 我們首先分別計算Query與各個Key的點積,然后將每個點積除以 \sqrt{dk}伺糠,最后使用Softmax函數(shù)來獲得Key的權(quán)重蒙谓。


在具體實現(xiàn)時,我們可以以矩陣的形式進(jìn)行并行運(yùn)算训桶,這樣能加速運(yùn)算過程累驮。具體來說,將所有的Query舵揭、Key和Value向量分別組合成矩陣Q谤专、K和V,這樣輸出矩陣可以表示為:

? ? ? ? ? ? ? ? ? ?\mathrm{Attention}(Q, K, V) = \mathrm{softmax}(\frac{QK^T}{\sqrt{d_k}})V

兩種最常用的Attention函數(shù)是加和Attention和點積(乘積)Attention午绳,我們的算法與點積Attention很類似置侍,但是\frac{1}{\sqrt{d_k}}的比例因子不同。加和Attention使用具有單個隱藏層的前饋網(wǎng)絡(luò)來計算兼容函數(shù)拦焚。雖然兩種方法理論上的復(fù)雜度是相似的墅垮,但在實踐中,點積Attention的運(yùn)算會更快一些耕漱,也更節(jié)省空間,因為它可以使用高效的矩陣乘法算法來實現(xiàn)抬伺。

雖然對于較小的dk螟够,這兩種機(jī)制的表現(xiàn)相似,但在不放縮較大的dk時峡钓,加和Attention要優(yōu)于點積Attention妓笙。我們懷疑,對于較大的dk能岩,點積大幅增大寞宫,將Softmax函數(shù)推向具有極小梯度的區(qū)域(為了闡明點積變大的原因,假設(shè)q和k是獨立的隨機(jī)變量拉鹃,平均值為 0辈赋,方差 1,這樣他們的點積為?q \cdot k = \sum_{i=1}^{d_k} q_ik_i 膏燕,同樣是均值為 0 方差為dk)钥屈。為了抵消這種影響,我們用\frac{1}{\sqrt{d_k}}來縮放點積坝辫。

“多頭”機(jī)制能讓模型考慮到不同位置的Attention篷就,另外“多頭”Attention可以在不同的子空間表示不一樣的關(guān)聯(lián)關(guān)系,使用單個Head的Attention一般達(dá)不到這種效果近忙。

\mathrm{MultiHead}(Q, K, V) = \mathrm{Concat}(\mathrm{head_1}, ..., \mathrm{head_h})W^O \\ \text{where}~\mathrm{head_i} = \mathrm{Attention}(QW^Q_i, KW^K_i, VW^V_i)

其中參數(shù)矩陣為 W^Q_i \in \mathbb{R}^{d_{\text{model}} \times  d_k} ,W^K_i \in \mathbb{R}^{d_{\text{model}} \times  {d_k}} ,  W^V_i \in \mathbb{R}^{d_{\text{model}} \times d_v} ,W^O \in \mathbb{R}^{hd_v \times d_{\text{model}}}竭业。

這里使用h=8個Head并行的Attention智润,對每一個Head來說有 d_k=d_v=d_{\text{model}}/h=40,總計算量與完整維度的單個Head的Attention很相近未辆。

????1.不同的head得到多個特征表達(dá)

????2.將所有特征拼接在一起

????3.再一層全連接來降維

代碼:

這里用了8個頭窟绷,d_{model}=320,結(jié)果:


1.4?feedforward

全連接將多頭拼接到一起,保證輸入輸出維度相同:

隱藏層有1280個神經(jīng)元鼎姐,驗證結(jié)果:


1.5 models

Subsample降采樣\rightarrow MultiHeadedAttention多頭注意力?\rightarrow FeedForward全連接\rightarrow LayerNorm層歸一化\rightarrow Dropout\rightarrow 殘差連接

結(jié)果:

model = speech_model()

12個blocks參數(shù)個數(shù):

1個blocks參數(shù)個數(shù):

2?demo

特征提燃佤铩:

結(jié)果:

12個blocks計算之后

結(jié)果

將輸出結(jié)果對應(yīng)到詞典:

得到最終的結(jié)果:

代碼參考:https://github.com/yang123qwe/end2end_chinese_speech_recognition

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市炕桨,隨后出現(xiàn)的幾起案子饭尝,更是在濱河造成了極大的恐慌,老刑警劉巖献宫,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件钥平,死亡現(xiàn)場離奇詭異,居然都是意外死亡姊途,警方通過查閱死者的電腦和手機(jī)涉瘾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來捷兰,“玉大人立叛,你說我怎么就攤上這事」泵” “怎么了秘蛇?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長顶考。 經(jīng)常有香客問我赁还,道長,這世上最難降的妖魔是什么驹沿? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任艘策,我火速辦了婚禮,結(jié)果婚禮上渊季,老公的妹妹穿的比我還像新娘朋蔫。我一直安慰自己,他們只是感情好梭域,可當(dāng)我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布斑举。 她就那樣靜靜地躺著,像睡著了一般病涨。 火紅的嫁衣襯著肌膚如雪富玷。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天,我揣著相機(jī)與錄音赎懦,去河邊找鬼雀鹃。 笑死,一個胖子當(dāng)著我的面吹牛励两,可吹牛的內(nèi)容都是我干的黎茎。 我是一名探鬼主播,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼当悔,長吁一口氣:“原來是場噩夢啊……” “哼傅瞻!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起盲憎,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤嗅骄,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后饼疙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體溺森,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年窑眯,在試婚紗的時候發(fā)現(xiàn)自己被綠了屏积。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡磅甩,死狀恐怖炊林,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情卷要,我是刑警寧澤铛铁,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站却妨,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏括眠。R本人自食惡果不足惜彪标,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望掷豺。 院中可真熱鬧捞烟,春花似錦、人聲如沸当船。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽德频。三九已至苍息,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背竞思。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工表谊, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人盖喷。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓爆办,卻偏偏與公主長得像,于是被迫代替她去往敵國和親课梳。 傳聞我的和親對象是個殘疾皇子距辆,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,941評論 2 355