Ý tưởng của mạng nơ-ron hồi quy RNN là kết nối các thông tin phía trước để dự đoán cho hiện tại. Những thông tin gần không giúp cho việc dự đoán, mà phải cần những thông tin ở xa hơn. Ví dụ: xem xét câu “Tôi sinh ra và lớn lên ở Việt Nam, ….,
Tôi nói rất tốt tiếng Việt”. Rõ ràng, thông tin phía trước “Tôi nói rất tốt” là thông tin không thể sử dụng để dự đoán xem thứ tôi nói tốt thứ tiếng nào, phải xem thông tin ở khoảng cách xa hơn mới có thể suy ra được là “tiếng Việt”. Tuy nhiên, khoảng cách càng xa, RNN càng không thể nhớ và học được như trình bày ở phần trên.
Mạng LSTM (Long-Short Term Memory) là một mạng nơ-ron hồi quy, cải tiến của RNN để giải quyết những vấn đề nhớ nhiều bước hơn, hay các bước dài hơn của RNN, trở nên phổ biến và hoạt động cực kì hiệu quả trên nhiều bài toán, hiện nay ứng dụng rất nhiều vào lĩnh vực xử lý ngôn ngữ tự nhiên.
v Kiến trúc nơ-ron trong mạng LSTM
Mạng nơ-ron hồi quy là một chuỗi các tế bào (Cell) lặp đi lặp lại các mạng nơ- ron, các tế bào có cấu trúc đơn giản, hàm kích hoạt thường sử dụng là hàm tanh.
Mạng LSTM cũng có cấu trúc tương tự mạng RNN, hình 2.28 và hình 2.29 minh họa về cấu trúc nơ-ron của RNN và LSTM.
Hình 2.29:Cấu trúc nơ-ron trong mạng LSTM [18]
Trạng thái của tế bào (cell state) là một đường chạy ngang phía trên (hình 3.21), các trạng thái này chạy xuyên suốt qua các nút mạng. Các Ct đóng vai trò như băng chuyền, loại bỏ, hay giữ lại thông tin cần trọng cần truyền đi tiếp. Cũng từ đó, mạng LSTM có khả năng mang thông tin đi xa hơn mạng RNN.
Hình 2.30: Minh họa về trạng thái tế bào mạng LSTM [18]
Trong mạng LSTM, các thông tin sẽ được bỏ bớt đi, hay thêm vào cho việc tính toán ở tế bào tiếp theo, việc này được quyết định bởi các Cổng (Gate).
Các cổng trên nơ-ron là nơi thông tin đi qua, được tính toán bởi hàm sigmoid
và phép nhân. Hàm sigmoid có giá trị trong khoảng [0, 1], được mô tả sử dụng cho phép bao nhiêu thông tin được đi qua, một mạng LSTM gồm 3 cổng này.
v Hoạt động của mạng nơ-ron LSTM:
Cổng đầu tiên gọi là cổng quên (Forget Gate) trong mạng LSTM (hình 2.31), cổng này có nhiệm vụ loại bỏ hay giữ lại thông tin để tính cho tế bào tiếp theo, cổng
này được tính dựa vào đầu vào ℎ7!) và 𝑥7 và kết quả là một số trong khoảng [0, 1], nếu giá trị 0 nếu toàn bộ thông tin bị loại bỏ, bằng 1 toàn bộ thông tin giữa lại, đầu ra này đẩy vào cho trạng thái của tế bào 𝑪𝒕!𝟏.
Hình 2.31:Minh họa tầng đầu tiên của mạng LSTM [18]
Cổng tiếp theo gọi là cổng vào (Input Gate), sẽ quyết định xem thông tin mới nào sẽ được lưu vào trạng thái tế bào. Gồm 2 giai đoạn:
+ Giai đoạn 1 (Hình 2.32), hàm sigmoid sẽ quyết định giá trị nào sẽ cập nhật 𝒊𝒕 ; với,
𝑖7 = 𝜎(𝑊1 [ℎ7!), 𝑥7] + 𝑏1) 𝐶š7 = tanh (𝑊A . [ℎ7!), 𝑥7] + 𝑏B)
Hình 2.32: Minh họa tầng hai của LSTM – giai đoạn 1 [18]
+ Giai đoạn 2, hàm tanh tính toán tạo ra một vec-tơ các giá trị cho 𝐶›7 , vec-tơ giá trị này sẽ được nhân với giá trị 𝑖7 tính được ở giai đoạn 1 để thêm vào trạng thái tế bào (hình 2.33), với
𝐶7 = 𝑓7 ∗ 𝐶7!)+ 𝑖7∗ 𝐶š7
(2.36) (2.37)
Hình 2.33: Minh họa tầng hai của LSTM – giai đoạn 2 [18]
Cổng cuối cùng là cổng ra (Output Gate), nhiệm vụ tính giá trị đầu ra của tế, giai đoạn 1: tính toán bởi một hàm sigmoid để quyết định phần nào của trạng thái tế bào ta muốn xuất ra; giai đoạn 2: đưa trạng thái tế bào qua một hàm tanh để co giá trị về khoảng [-1, 1], và nhân nó với đầu ra của cổng sigmoid để được giá trị đầu ra mong muốn (hình 2.34).
Hình 2.34: Minh họa tầng thứ ba của LSTM [18]
Thực tế có rất nhiều mô hình là biến thể từ mô hình chuẩn LSTM, như Gated Recurrent Unit (GRU), Depth Gated, cải tiến mạng LSTM mang lại hiệu quả cho những bài toán cụ thể cần thiết về vấn đề thời gian, và độ lớn của dữ liệu.
CHƯƠNG 3. THIẾT KẾ MÔ HÌNH NHẬN DẠNG 3.1. Giới thiệu về kiến trúc mô hình nhận dạng
Mô hình nhận dạng đầu cuối (end-to-end) trong mạng học sâu (Deep Learning) có tác động tích cực trong bài toán nhận dạng tiếng nói, mô hình giúp chuyển đổi từ âm thanh sang văn bản trực tiếp. Hai trong số các mô hình hiện tại phổ biến gồm Deep Speech của Baidu Research và “Listen, Attend and Spell” (LAS) của Google Inc. Cả hai mô hình đều dựa trên kiến trúc mạng nơ-ron hồi quy RNN bởi cách tiếp cận khác nhau trong áp dụng cho bài toán nhận dạng tiếng nói. Deep Speech sử dụng hàm mất mát phân loại theo thời gian kết nối (Connectionist Temporal Classification – CTC) để dự đoán, trong khi LAS sử dụng kiến trúc mạng Sequence-To-Sequence để dự đoán văn bản.
Luận văn này xây dựng mô hình nhận dạng tiếng Việt dựa trên ý tưởng của mô hình được trình bày trong bài báo “Deep Speech 2: End-to-End Speech Recognition in English and Mandarin” [2] – mô hình cải tiến từ Deep Speech 1 của Baidu Research, được công bố 2015, công trình nghiên cứu này trình thực hiện trên tiếng Anh và tiếng Trung - Quan Thoại ( Mandarin).
Kiến trúc mô hình DeepSpeech2 được Baidu Research đề xuất mô tả hình 3.1.
Kiến trúc Deep Speech 2 được Baidu Research đề xuất với dữ liệu đầu vào là Spectrogram tín hiệu âm thanh; tiếp đến là 1 đến 3 các lớp mạng nơ-rơn tích chập CNN (1D hoặc 2D); sau đó là 1 đến 7 lớp mạng hồi quy (RNN hoặc GRU Bidirectional); cuối cùng là lớp Fully Connected; kiến trúc sử dụng hàm mất mát CTC để dự đoán đầu ra.
Hướng nghiên cứu chính của đề tài là tạo ra bộ dữ liệu tốt cho huấn luyện nhận dạng tiếng nói tiếng Việt, xây dựng mô hình nhận dạng dựa trên mạng nơ-ron hồi quy với kiến trúc Deep Speech 2 được đề xuất từ bài báo, quá trình thực hiện đề tài sẽ thử nghiệm, tuỳ chỉnh các thông số mô hình hợp lý và huấn luyện trên bộ dữ liệu tiếng Việt nhằm tạo ra mô hình nhận dạng tiếng Việt với độ chính xác tương đối tốt tương ứng với đầu vào là tín hiệu âm thanh từ người nói trong môi trường tự nhiên. Hướng nghiên cứu có ba giai đoạn chính:
a) Tạo tập dữ liệu mẫu;
b) Huấn luyện mô hình nhận dạng tiếng nói; c) Nhận dạng tiếng nói, hiệu chỉnh độ chính xác.
Sơ đồ khối của mô hình nhận dạng tiếng Việt được áp dụng trong đề tài minh hoạ ở hình 3.2, gồm 3 công đoạn chính:
• Công đoạn (1): Rút trích đặc trưng của tín hiệu tiếng nói sử dụng phương pháp MFCC, đầu ra là một bộ vec-tơ đặc trưng của tín hiệu.
• Công đoạn (2): Huấn luyện – công đoạn được thực hiện trong quá trình xây dựng mô hình nhận dạng tiếng nói, đầu vào là bộ vectơ MFCC ở công đoạn (1) và một tập nhãn dữ liệu, tất cả sẽ được đưa qua các lớp mạng CNN, lớp LayerNorm để chuẩn hoá, mạng nơ-ron RNN, lớp Fully Connected để huấn luyện tìm bộ trọng số tối ưu nhất, đầu ra là mô hình có khả năng nhận vào một vectơ MFCC và ngõ ra là một vectơ là xác suất xuất hiện của các kí tự nhận dạng.
• Công đoạn (3): Dự đoán kết quả – sử dụng bộ vec-tơ đặc trưng kết hợp với mô hình đã được huấn luyện ở công đoạn (2). Ghép nối các kí tự nhận dạng được để tạo thành văn bản gồm các từ.
• Công đoạn (4): Hiệu chỉnh – quá trình nhận dạng có thể bị sai do độ chính xác của mô hình, do đó các từ được nhận dạng sẽ được hiệu chỉnh để có văn bản nhận dạng tốt nhất.
Hình 3.2: Sơ đồ khối hệ thống nhận dạng tiếng nói
Kiến trúc mô hình được mô tả ở hình 3.3, áp dụng theo kiến trúc mô hình đề xuất DeepSpeech 2: Đầu vào là tín hiệu âm thanh dạng thô; phần tiền xử lý sẽ áp dụng bước xử lý giảm nhiễu, khuếch đại tín hiệu, rút trích các đặc trưng chuyển về biểu đồ dạng phổ có kích thước (N_timesteps, N_frequency_features). N_timesteps phụ thuộc vào độ dài của tín hiệu âm thanh, N_freequency_features phụ thuộc vào việc chọn số lượng đặc trưng của tín hiệu. Tiếp theo là mạng học sâu (Deep Neural Network – DNN) gồm nhiều lớp mạng nơ-ron CNN, RNN khác nhau, đầu ra là xác suất Pt(c) các ký tự tương ứng theo mỗi bước thời gian từ bộ các kí tự cần nhận dạng. Mô hình nhận dạng được huấn luyện sử dụng hàm mất mát phân loại theo thời gian kết nối CTC-Loss (CTC Loss Function) để nhận dạng các ký tự tương ứng từ tín hiệu âm thanh, vì hướng nghiên cứu là nhận dạng tiếng Việt nên đã lựa chọn phương pháp đánh giá tỉ lệ lỗi từ (Word Error Rate – WER) làm phương pháp đánh giá độ chính xác mô hình trong quá trình huấn luyện.
Hình 3.3: Mô tả về kiến trúc mô hình nhận dạng [20]
Các thông tin tính toán trên toàn mạng nơ-ron là dạng số, vì vậy công đoạn cuối cùng là kết hợp bộ giải mã (Decoder) để chuyển đổi xác suất trên các ký tự dạng số sang ký tự, các từ tương ứng. Có hai bộ giải mã thường sử dụng với mô hình áp dụng CTC-loss là bộ giải mã Greedy Search và Beam Search.
Bộ giải mã Greedy Search sẽ chọn ký tự có xác suất lớn nhất tại mỗi bước thời gian (time-step) và bỏ qua tất cả các kết quả khác, kết hợp chúng lại với nhau (gọi là
path có xác suất lớn nhất). Sau đó loại bỏ các ký tự trùng nhau, các khoản trắng để cho ra kết quả cuối cùng là một chuỗi các từ dự đoán được. Ưu điểm thuật toán là rất nhanh, đơn giản, dễ áp dụng; nhược điểm là chưa được tối ưu vì một từ bị nhận dạng sai một ký tự thì từ này bị xem là sai.
Bộ giải mã Beam Search – tại mỗi bước sẽ thực hiện tìm kiếm toàn bộ trên không gian của bước đó, lấy ra k kết quả có điểm số cao nhất thay vì chỉ lấy 1 kết quả cao nhất như Greedy Search, trong thực tế thường chọn k từ 5 đến 10, giá trị k càng lớn thì tốn nhiều thời gian tìm kiếm. Với k = 1 thì Beam Search chính là Greedy Search. Nhược điểm của Beam Search chính là thời gian tìm kiếm. Sau khi quá trình nhận dạng sẽ qua công đoạn hiệu chỉnh, sơ đồ khối hình 3.2, nên ở luận văn này em lựa chọn Beam Search để tăng độ chính xác.
3.2. Các kỹ thuật áp dụng trong mô hình 3.2.1. Chuẩn hoá (Normalization): 3.2.1. Chuẩn hoá (Normalization):
Chuẩn hoá dữ liệu cho mỗi tính năng (feature) sẽ giúp giữ lại sự đóng góp của mọi tính năng trong trường hợp giá trị của một số feature cao nhiều so với các feature khác. Bên cạnh đó, việc chuẩn hoá sẽ giúp giảm ICS (Internal Covariate Shift), ICS được hiểu là sự thay đổi phân phối của các hàm kích hoạt trong mô hình do sự thay đổi các tham số mô hình (weight) trong quá trình huấn luyện. Chuẩn hoá giúp tránh bùng nổ đạo hàm. Hiện nay, có các loại chuẩn hoá như Batch Normalization, Layer Normalization, …
Layer Normalization là sự cải tiến tốc độ huấn luyện mạng, tính trực tiếp số liệu thống kê chuẩn hoá từ các đầu vào và tổng hợp đến các nơ-ron trong lớp ẩn. Layer Norm sẽ chuẩn hoá đầu vào trên các features.
3.2.2.Trình tối ưu và hệ số tốc độ học
Sự lựa chọn trình tối ưu (Optimizer) và hệ số tốc độ học (Learning Rate) sẽ đưa mô hình hội tụ đến điểm tốt nhất. Nếu chọn được trình tối ưu tối cho bài toán giúp tiết kiệm thời gian huấn luyện, và sự tổng quát hoá của mô hình tốt hơn. Trong nghiên cứu này, em đã tham khảo và lựa chọn trình tối ưu AdamW kết hợp với OneCycleLR (One Cycly Learning Rate Scheduler) cho mô hình. Trình tối ưu Adam được dùng rộng rãi trong máy học và học sâu, giúp mô hình hội tụ nhanh hơn, tiết kiệm thời gian và tài nguyên, tuy nhiên không khái quát hoá tốt như SGD (Stochastic Gradient Descent). AdamW là cải tiến của Adam giúp giải quyết vấn đề tổng quát hoá của Adam. OneCycleLR được giới thiệu năm 2019 trong bài báo có tên “Super- convergence: very fast training of neural networks using large learning rates” [11] nhóm tác giá đã cho thấy là giúp việc huấn luyện mạng nơ-ron nhanh bởi sử dụng Learning Rate lớn. Ý tưởng của OneCycleLR là bắt đầu với Learning Rate từ thấp, sau đó tăng tối đa và giảm tuyến tính về điểm ban đầu.
3.3.3.Đánh giá lỗi với CTC Loss
Mô hình được huấn luyện để nhận dạng các ký tự, hay dự đoán xác suất xuất hiện của các ký tự trong bảng ký tự, tức là dự đoán kí tự nào tương ứng với mỗi khung (frame) trên phổ ở đầu vào của mô hình.
CTC (Connectionist Temporal Classification) là thuật toán sử dụng nhiều trong mạng học sâu liên quan đến nhận dạng tiếng nói, chữ viết tay và một số vấn đến liên quan đến chuỗi. Các mô hình truyền thống sẽ yêu cầu về việc dán nhãn từng kí tự tương ứng chính xác vào từng đoạn âm thanh nào trên toàn bộ tập tin âm thanh, mô hình được tạo ra sẽ dự đoán nhãn tại khung cụ thể. Với CTC, mô hình sẽ tự động cân chỉnh khung và nhãn tương ứng trong quá trình huấn luyện, những nơi không có sẽ được dán nhãn “NULL”. Đầu ra của khối mạng RNN sẽ nhận dạng được một dãy các ký tự theo các bước thời gian, với hàm CTC loss sẽ đánh giá được lỗi trong quá trình đầu ra huấn luyện và kết quả dự đoán này, từ đó tính toán cập nhật trọng số. Ví dụ: Tại mỗi bước thời gian, mạng RNN sẽ dự đoán được một kí tự, và ngõ ra cuối cùng sẽ là “HHHHHeeeeeelllllllloooooo”, vậy làm sao chúng ta so sánh được với nhãn huấn luyện là “Hello” ? Giải pháp loại bỏ các giá trị trùng lặp? sẽ tạo ra từ “Helo” và rõ ràng là sai với nhãn so sánh là “Hello”. Với CTC loss sẽ giúp chúng ta làm việc này.
3.3.4. Đánh giá độ chính xác mô hình bởi WER
Như trình bày ở trên, mô hình sử dụng bộ giải mã tham lam – Greedy Search Decoder để giải mã sang văn bản cần nhận dạng và dựa vào hệ số WER (Word Error Rate) để đánh giá sự chính xác của mô hình. WER đánh giá độ khác nhau giữa hai chuỗi ở cấp độ từ.
WER được tính bởi công thức sau:
𝑊𝐸𝑅 = 𝑆 + 𝐼 + 𝐷𝑁
Với: S: là số từ bị thay thế; I là số từ được chèn vào; D là số từ bị xoá; N là số lượng từ so sánh.Với hai câu có độ khác nhau nhiều thì hệ số WER sẽ lớn.
3.3. Thu thập và xử lý dữ liệu
3.3.1. Thu thập bộ dữ liệu huấn luyện và thử nghiệm
Độ chính xác mô hình nhận dạng tiếng nói phụ thuộc nhiều yếu tố, trong đó dữ liệu lớn và dữ liệu đủ tốt là một yếu tố hết sức quan trọng. Quá trình thu thập dữ liệu từ các nguồn khác nhau sẽ xảy ra bất đồng bộ giữa các bộ dataset. Để thuận lợi cho quá trình huấn luyện, tất cả các dữ liệu âm thanh thu thập được đều được chuẩn hoá về cùng một loại:
Ø Tập tin định dạng .wav, tần số lấy mẫu 16Khz, và những mẫu tập tin âm thanh dữ liệu huấn luyện đều có độ dài 1.3 giây đến 15 giây và các tập tin chứa từ 5 từ đến 20 từ.
Ø Tập tin chứa dữ liệu gán nhãn theo định dạng: [TEN_AUDIO] [LABEL] Ø Các nhãn (LABEL) của câu viết in hoa, và mỗi dòng là thông tin của một
mẫu dữ liệu, bên dưới là minh hoa cho định dạng lưu trữ tập gán nhãn: Ở nghiên cứu này, em lựa chọn 3 bộ dữ liệu hỗ trợ cho việc huấn luyện mô hình nhận dạng tiếng Việt:
- Bộ dữ liệu VIVOS Corpus [7] gồm 12.420 tệp dữ liệu âm thanh với định dạng .wav (trong đó 11.660 tập cho huấn luyện (train), và 760 cho tập kiểm thử (test)), với số lượng câu được gán nhãn tương ứng, số lượng từ mỗi câu khác nhau từ 2 từ đến 35 từ. Sau quá trình lọc các tập tin rỗng, chuẩn hoá dữ liệu thì bộ data VIVOS