Conformer
Chú ý: Mọi người nên tìm hiểu kỹ về Transformer và Multi-head Self
Attention trước khi đọc bài này.
Câu hỏi cho người đọc: Có cần thiết áp dụng
Macron-style và Relative Position Encoding cho Conformer trong các bài
toán xử lý tiếng nói hay không?
ASR Conformer
Trước khi đi vào phần chính, chúng ta sẽ lướt qua xem hướng tiếp cận
đang cho hiệu quả cao nhất trong nhận dạng tiếng nói, RNN-Transducer và những
biến thể cải tiến của nó. Mô hình chung của một Neural RNN-Transducer được biểu
diễn trong hình 1.
Trong đó, Predictor và Encoder có thể được xây dựng bởi nhiều kiến trúc
khác nhau như RNNs, LSTM hay Transformer để đưa ra các biểu diễn trung gian của
các chuỗi đầu vào. Với Predictor là biểu diễn của chuỗi văn bản (label), và
Encoder là biểu diễn của chuỗi audio-frame. Cùng với Predictor và Encoder, RNN-T
loss được sử dụng để cực đại hóa tổng xác suất của mọi alignment giữa audio đầu
vào và văn bản đầu ra, từ đó giúp cho mô hình học được alignment tốt nhất giữa
văn bản và âm thanh.
Các kết quả nghiên cứu của [1], [2], [3] và nhiều tác giả khác cho thấy trong nhận dạng tiếng nói thì Transformer Transducer models có sai số Word Error Rate (WER) thấp hơn hẳn so với so với các model RNN-Transducer trước đây dùng LSTM, RNNs,... Transformer Transducer hay các kiến trúc dựa trên Transformer khác đều rất mạnh trong việc lấy các thông tin toàn cục (global context). Tuy nhiên Transformer lại không thực sự mạnh trong việc khai thác các thông tin cục bộ và mối quan hệ giữa chúng (local connection), những thông tin này cũng rất quan trọng trong xử lý tiếng nói. Do đó, Convolutional neural network (CNN) được xem xét để bổ trợ cho Transformer vì có khả năng thu thập các thông tin, đặc trưng cục bộ rất tốt (Local information). Conformer [4] (Convolution-augmented Transformer) đã được đề xuất để tận dụng sức mạnh toàn cục của Transformer trong khi vẫn lấy được thông tin cục bộ thông qua mô đun Convolution. Ta sẽ đi sâu về kiến trúc của mô đun này trong các phần tiếp theo.
Conformer Block
Bên trong Encoder của Transducer các khối Transformer được thay bằng các
khối Conformer, mỗi khối bao gồm bốn mô đun: Một mô đun Feed-forward, một mô
đun Multi-headed Self-Attention, một mô đun Convolution và mô đun Feed-forward
thứ hai. Kiến trúc của một khối Conformer được biểu diễn trong Hình 2.
Hình 2: Conformer Block Architecture [4]
Phỏng theo ý tưởng của Macron-Net (Macron style), thay vì chỉ dùng một mô
đun Feed Forward (FFN), Conformer Block sử dụng hai half-step FFN kẹp trước và
sau mô đun Multi-headed Self-Attention (MHSA) và mô đun Convolution (Conv). Biểu
diễn toán học của một Conformer Block [4] như sau:
Trong đó hệ số ½ trước mỗi FFN
thể hiện trọng số half-step residual của Macron style. Trong bài báo gốc của Conformer
[4] có nói rằng việc áp dụng Macron style đem lại “Cải thiện lớn” (Significant
improvement) về tỷ lệ số từ nhận dạng sai (wer) so với việc chỉ sử dụng một FFN
duy nhất, tuy nhiên kết quả thử nghiệm trong phần Ablation Studies (Table 3 và Table 5) lại không cho thấy
cái sự “Cải thiện lớn” đó, việc áp dụng Macron style không cải thiện so
với việc sử dụng một FFN (trong Transformer) với hầu hết các bài đánh giá, chỉ
cải thiện 0.2% wer so với khi không dùng FFN trong test_other, vì vậy phần cải
tiến của việc áp dụng Macron style đang được đặt dấu hỏi, trong khi nó sẽ làm
tăng chi phí tính toán.
Trên đây là tổng quát các mô đun và cách ghép nối các mô đun của một Conformer block, phần tiếp theo chúng ta sẽ đi cụ thể vào từng mô đun.
Multi-headed Self Attention Module with Relative Positional Encoding
Multi-headed Self Attention (MHSA) trong Conformer có sử dụng một công nghệ từ Transformer-XL [5], đó là
Relative Positional Encoding. Để cho các công thức trong phần này cũng sẽ được
thay đổi một chút để phù hợp với bài Transformer gốc và các bản mã nguồn công cộng
trong thực tế, trong khi vẫn giữ đúng bản chất toán học.
Relative Positional Encoding được sử dụng để biểu diễn các thông tin về
vị trí tương đối của các phần tử trong chuỗi thay cho Absolute Positional Encoding
(biểu diễn thông tin về vị trí tuyệt đối của phần tử) . Câu hỏi đặt ra là tại
sao cần thay Absolute Position Encoding bằng Relative Position Encoding?
Trong Transformer-XL, bài toán đặt ra là với chuỗi đầu vào rất dài cần được
chia thành các chuỗi con để xử lý lần lượt. Khi đó nếu sử dụng Absolute Positional
Encoding sẽ phát sinh vấn đề đó là giá trị biểu diễn thông tin vị trí của các phần
tử trong các chuỗi con sẽ giống nhau. Ví dụ vị trí của phần từ đầu tiên của chuỗi
con thứ nhất và chuỗi con thứ 2 đều là “0”, điều này gây ra nhầm lẫn nghiêm trọng.
Do đó Relative Positional Encoding mang thông tin về vị trí tương đối giữa các
phần tử được sinh ra để thay thế khi tính Attention Score (trọng số chú ý của các
phần tử). Ngoài ra, Relative Positional Encoding được tích hợp trực tiếp vào
Attention Score chứ không phải là cộng vào chuỗi đầu vào như Transformer gốc.
Với Transformer gốc, đầu ra của mô đun MHSA khi sử dụng sẽ được tính như sau:
Trong đó E là đầu vào content embedding (có thể là word embedding chẳng hạn, hoặc đầu ra của attention layer trước,…) của MHSA, f là hàm biến đổi MHSA, Ui là absolute positional embedding tương ứng với vị trí i∈{1,…,L}, L là chiều dài của chuỗi đầu vào. Phân tích sâu hơn trong MHSA, query q và key k được tính như sau:
Trong đó Wq, Wk là các ma trận tham số, x là chuỗi đầu vào. Khi đó Attention Score giữa query qi và key kj được phân tách ra như sau:
Ở công thức cuối cùng (công thức Attention thứ 3), Attention Score được chia làm bốn cấu phần tương ứng (a), (b), (c), (d). Trong đó (b), (c), (d) nhận đầu vào chứa Uj mang thông tin về absolute positional encoding. Ý tưởng chính của Relative Positional Encoding là sử dụng khoảng cách tương đối về vị trí giữa query qi và key kj để model có thể biết được cần chú ý vào đâu và thu thập thông tin như thế nào. Trong thực tế, một ma trận sinusoid encoding [6] R ∈ ℝ^(L_max×d) được sử dụng để lưu trữ thông tin về khoảng cách tương đối giữa các phần tử trong chuỗi, hàng thứ i của ma trận chứa thông tin về khoảng các tương đối của vị trí i với các vị trí của các phần tử trong chuỗi đầu vào. Để thay thế các thông tin về vị trí tuyệt đối trong Attention Score bằng các thông tin về vị trí tương đối, các thay đổi sau được thực hiện:
- Đầu tiên thì để hiện thực hóa việc thay thế thông tin về vị trí tuyệt đối, các giá trị Uj trong cấu phần (b), (d) được thay bằng Ri-j chứa các thông tin về khoảng cách tương đối giữa i và j.
- Theo cơ chế của Self-Attention, khi xem xét vị trí i thì query qi là giống nhau với mọi kj, do đó, giá trị “bias” của sự chú ý đối với các vị trí query khác nhau nên được giữ nguyên. “Bias” của query trong công thức Attention thứ 2 là WqUi và giá trị này phụ thuộc vào vị trí i, do đó để giữ giá trị “bias” của query không thay đổi theo vị trí thì trong công thức Attention score cuối cùng: WqUi ở hai cấu phần (c) và (d) lần lượt được thay bằng hai ma trận tham số u,v ∈ ℝ^d.
- Cuối cùng, Wk được chia tách thành Wk,E và Wk,R để tạo ra các véc tơ key độc lập chứa thông tin về nội dung của chuỗi đầu vào và vị trí tương đối.
Attention Score sau khi thực hiện các thay đổi trên được tính bởi công
thức mới dưới đây:
Như các bạn thấy, trong công thức cuối toàn bộ giá trị biểu diễn vị trí
tuyệt đối đã được thay bằng các giá trị biểu diễn vị trí tương đổi giữa i
và j.
Discussion
- Trong bài toán ASR, đầu vào không bị chia thành các chuỗi con nên không gây ra vấn đề với Absolute Positional Encoding khi chuyển từ chuỗi con này qua chuỗi con khác như trong Transformer-XL. Vậy việc áp dụng Relative Positional Encoding có thực sự tốt hơn Absolute Positional Encoding không? Đặc biệt là khi áp dụng Absolute Positional Encoding vào từng khối trong Encoder.
- Trong trường hợp streaming ta chia chuỗi đầu vào thành các chuỗi con, ta cũng có thể cộng phần bù vị trí của chuỗi con trong chuỗi lớn vào vị trí của từng phần tử trong chuỗi con đó khi tính Absolute Positional Encoding, như vậy có thể giải quyết vấn đề nêu trên.
- Bài báo chưa có đánh giá kỹ về sự khác biệt khi sử dụng Relative Positional Rncoding. Do đó rất cần các bạn thử nghiệm và đánh giá việc dùng Absolute Positional Encoding encoding vào từng đầu vào của MHSA trong Conformer, và sử dụng phần bù trong bài toán streaming ASR.
- Với Absolute Positional Encoding, mối quan hệ giữa "I" và "am" ở trong câu thứ nhất và câu thứ 2 là khác nhau vì mang hai giá trị về vị trí khác nhau: "0" "1" và ""5" "6". Trong khi về bản chất việc "I" đi cùng với "am" không phụ thuộc vào vị trí của câu trong đoạn.
- Ngược lại với Relative Positional Encoding, mối quan hệ giữa "I" và "am" là tương đối và không thay đổi theo vị trí của câu trong đoạn. Do đó nó có thể học được tốt hơn ở điểm này.
Convolution Module
Hình 3:
Kiến trúc của mô đun Convolution [4]
Việc đưa mô đun Convolution vào hỗ trợ cho MHSA trong Transformer đúng là rất quan trọng, tuy nhiên đưa như thế nào và đặt ở đâu cũng quan trọng không kém. Ablation Study 3.4.2 trong [4] cho thấy rằng việc đặt mô đun Convolution phía trước MHSA cũng làm giảm độ chính xác hệ thống.
Feed Forward Module
Hình 4:
Kiến trúc của mô đun Feed Forward
Mô đun Feed Forward trong Conformer được phát triển lên từ mô đun feed forward trong Transformer ASR [4]. Trong đó kiến trúc chi tiết của mô đun này được thể hiện trong hình 4, trong đó một LayerNorm được đặt trước LinearLayer đầu tiên, sau Linear layer thì Swish Activation và Dropout được sử dụng để giúp “regularizing” model. Ngoài ra một residual connection giữa đầu vào và đầu ra của layer này cũng được sử dụng để giúp model học được sâu hơn.
TTS Conformer
Trong các mô hình tổng hợp tiếng nói dạng Non-Autoregressive, những
model mạnh mẽ trong việc mô hình hóa từng đơn vị, và có tốc độ tính toán rất
nhanh vì việc tính toán frame hiện tại không dựa trên kết quả của các frames
trước đó. Tuy nhiên tồn tại một khoảng trống lớn nếu chỉ áp dụng Transformer
thuần vào các model này đó là khả năng mô hình hóa các thông tin tương quan cục
bộ, vì Transformer vốn chỉ mạnh trong việc mô hình hóa các thông tin toàn cục.
Do đó để tăng khả năng học những thông tin tương quan toàn cục và cục bộ, đặc
biệt là những câu rất ngắn hoặc rất dài, thì Conformer đã được sử dụng với một
số thay đổi khác so với Conformer trong ASR để phù hợp với bàn toán TTS.
Kiến trúc của Conformer trong TTS được thể hiện trên Hình 5. Trong đó
có một số sự thay đổi so với Conformer trong ASR như sau:
1. Swish được thay thế bởi ReLU, trong [7] có cho thấy rằng việc này giúp
model học tốt hơn những câu dài.
2. Thứ tự của MHSA và Depthwise Convolution được đảo cho nhau để model nhanh hội tụ hơn.
3. Cuối cùng, ba Linear layer trong mô đun Feed Forward được thay bằng Covolution
Layer để có thể mô hình hóa tốt hơn nữa các tương quan cục bộ. Trong [7] cũng
quan sát thấy việc thay thế này giúp chất lượng âm thanh và ngữ điệu đầu ra tốt hơn.
Việc áp dụng Conformer trong TTS cũng cho kết quả tốt hơn so với việc dùng
Transformer, đặc biệt là trong việc tổng hợp tiếng nói có cảm xúc, có ngữ điệu. Tác giả của DelightFull TTS [7] đã áp dụng Conformer
trong TTS và giành quán quân trong cuộc thi Blizzard Challenge 2021.
Hình 5:
Kiến trúc của Conformer trong TTS [7]
Conclusion
Trên đây chúng ta đã
tìm hiểu về Conformer trong cả ASR và TTS, vẫn còn một số điều khúc mắc với việc
ứng dụng Conformer như: Việc sử dụng Macron style có thực sự cần thiết? hay Absolute
Postional Encoding có thể được dùng vào từng Conformer Block thay cho Relative Positional
Encoding để tăng tốc độ tính toán mà vẫn giữ chất lượng hay không?
Mặc dù vẫn còn khúc mắc
như vậy nhưng thực tế cho thấy trong ASR và TTS, việc áp dụng Conformer đều
mang đến sự cải thiện đáng kể về mặt chất lượng mà không tốn thêm chi phí tính
toán.
References
[1] Yeh,
Ching-Feng, et al. "Transformer-transducer: End-to-end speech recognition
with self-attention." arXiv preprint arXiv:1910.12977 (2019).
[2] Zhang,
Qian, et al. "Transformer transducer: A streamable speech recognition
model with transformer encoders and rnn-t loss." ICASSP 2020-2020
IEEE International Conference on Acoustics, Speech and Signal Processing
(ICASSP). IEEE, 2020.
[3] Graves,
Alex. "Sequence transduction with recurrent neural networks." arXiv
preprint arXiv:1211.3711 (2012).
[4] Gulati, Anmol, et al. "Conformer:
Convolution-augmented transformer for speech recognition." arXiv
preprint arXiv:2005.08100 (2020).
[5] Dai, Zihang, et al. "Transformer-xl: Attentive language
models beyond a fixed-length context." arXiv preprint
arXiv:1901.02860 (2019).
[6] Vaswani, Ashish, et al. "Attention is all you
need." Advances in neural information processing systems 30
(2017).
[7] Liu, Yanqing, et al. "Delightfultts: The microsoft
speech synthesis system for blizzard challenge 2021." arXiv
preprint arXiv:2110.12612 (2021).
Nhận xét
Đăng nhận xét