ỦY BAN NHÂN DÂN TỈNH BÌNH DƯƠNG
TRƯỜNG ĐẠI HỌC THỦ DẦU MỘT
TRẦN HUỲNH NHỰT NAM
PHÁT TRIỂN ỨNG DỤNG
PHÁT HIỆN LỖI CHÍNH TẢ TIẾNG VIỆT
SỬ DỤNG MÔ HÌNH NGÔN NGỮ
CHUYÊN NGÀNH: HỆ THỐNG THÔNG TIN
MÃ SỐ: 8480104
LUẬN VĂN THẠC SĨ
BÌNH DƯƠNG – 2022
UỶ BAN NHÂN DÂN TỈNH BÌNH DƯƠNG
TRƯỜNG ĐẠI HỌC THỦ DẦU MỘT
TRẦN HUỲNH NHỰT NAM
PHÁT TRIỂN ỨNG DỤNG
PHÁT HIỆN LỖI CHÍNH TẢ TIẾNG VIỆT
SỬ DỤNG MÔ HÌNH NGÔN NGỮ
CHUYÊN NGÀNH: HỆ THÔNG THÔNG TIN
MÃ SỐ: 8480104
LUẬN VĂN THẠC SĨ
NGƯỜI HƯỚNG DẪN KHOA HỌC:
PGS. TS. QUẢN THÀNH THƠ
BÌNH DƯƠNG – 2022
ii
LỜI CAM ĐOAN
Tên tôi là: Trần Huỳnh Nhựt Nam
Sinh ngày: 09/11/1992
Học viên lớp cao học CH18HT01 – Trường Đại học Thủ Dầu Một
Xin cam đoan: Đề tài “Phát triển ứng dụng phát hiện lỗi chính tả Tiếng Việt
sử dụng mô hình ngôn ngữ” do Thầy PGS. TS. Quản Thành Thơ hướng dẫn là công
trình nghiên cứu của riêng tôi. Tất cả tài liệu tham khảo đều có nguồn gốc, trích dẫn rõ
ràng.
Tác giả xin cam đoan tất cả những nội dung trong luận văn đúng như nội dung
trong đề cương và yêu cầu của thầy giáo hướng dẫn. Nếu sai tôi hoàn toàn chịu trách
nhiệm trước hội đồng khoa học.
Bình Dương, 19 tháng 01 năm 2022
Tác giả luận văn
Trần Huỳnh Nhựt Nam
iii
LỜI CẢM ƠN
Sau một thời gian nghiên cứu và làm việc nghiêm túc, được sự động viên, giúp
đỡ và hướng dẫn tận tình của Thầy hướng dẫn PGS. TS. Quản Thành Thơ, luận văn Cao
học “Phát triển ứng dụng phát hiện lỗi chính tả Tiếng Việt sử dụng mô hình ngôn
ngữ” đã hoàn thành.
Tôi xin bày tỏ lòng biết ơn sâu sắc đến:
Thầy hướng dẫn PGS. TS. Quản Thành Thơ đã tận tình chỉ dẫn, giúp đỡ tôi
hoàn thành luận văn này. Đồng thời tôi gửi lời cảm ơn đến các thầy, cô đã giảng dạy
truyền đạt kiến thức quý báo cho tôi trong suốt thời gian học tập và nghiên cứu.
Tôi chân thành cảm ơn bạn bè, đồng nghiệp và gia đình đã động viên, khích lệ,
tạo điều kiện giúp đỡ tôi trong suốt quá trình học tập, thực hiện và hoàn thành luận văn
này.
iv
TÓM TẮT LUẬN VĂN
Tên đề tài: Phát triển ứng dụng phát hiện lỗi chính tả Tiếng Việt sử dụng mô hình
ngôn ngữ.
Ngành: Hệ Thống Thông Tin.
Họ và tên học viên: Trần Huỳnh Nhựt Nam.
Người hướng dẫn khoa học: PGS. TS. Quản Thành Thơ.
Cơ sở đào tạo: Trường Đại học Thủ Dầu Một.
Tóm tắt nội dung: Luận văn trình bày ứng dụng các kỹ thuật của học máy là
phương pháp phổ biến nhất hiện nay trong lĩnh vực nghiên cứu trí tuệ nhân tạo, để áp
dụng vào ngôn ngữ cụ thể là Tiếng Việt, đi vào thực tế giải quyết bài toán kiểm tra lỗi
chính tả đồng thời sửa lỗi chính tả cho Tiếng Việt.
Đầu vào: là một câu văn bản Tiếng Việt được viết sai chính tả.
Đầu ra: là câu Tiếng Việt đã được kiểm tra và sửa lỗi chính tả.
Các mô hình áp dụng trong bài toán: Mô hình ngôn ngữ, phương pháp token các
từ, mô hình dạng nơ-ron hồi quy RNN và LSTM, kỹ thuật Word Embedding.
Kết quả thu được của Luận văn là hoàn thành huấn luyện được mô hình ngôn
ngữ, cũng như hiện thực được bản giới thiệu, demo, nhập vào một câu không dấu và cho
ra câu đã kiểm tra và sửa lỗi.
==> Input: nguon cao đài tu điên
<== Output: nguồn cao đài tự điển
Sau cùng, Luận văn đưa ra nhận xét và hướng mở rộng cho đề tài để có thể đạt
kết quả tốt hơn về đa dạng hoá xử lý ngôn ngữ cho Tiếng Việt bằng cách vận dụng kết
quả của nghiên cứu này.
v
MỤC LỤC
LỜI CAM ĐOAN ...................................................................................................... iii
LỜI CẢM ƠN ............................................................................................................ iv
TÓM TẮT LUẬN VĂN ..............................................................................................v
MỤC LỤC .................................................................................................................. vi
DANH MỤC CHỮ VIẾT TẮT............................................................................... viii
DANH MỤC HÌNH ảnh ............................................................................................ ix
CHƯƠNG 1. MỞ ĐẦU ...............................................................................................1
1.1. Lý do chọn đề tài .................................................................................................1
1.2. Mục tiêu nghiên cứu............................................................................................2
1.3. Đối tượng, phạm vi nghiên cứu ..........................................................................2
1.4. Phương pháp nghiên cứu.....................................................................................2
1.5. Bố cục luận văn ...................................................................................................2
CHƯƠNG 2. CƠ SỞ LÝ THUYẾT VÀ CÁC NGHIÊN CỨU LIÊN QUAN ........3
2.1. Mạng nơ-ron hồi quy - Recurrent Neural Network (RNN) ................................3
2.1.1. Tổng quan mạng RNN ..................................................................................3
2.1.2. Long Short Term Memory (LSTM) .............................................................8
2.2. Word Embedding ..............................................................................................10
2.2.1. CBOW model .............................................................................................10
2.2.2. Skip-gram model ........................................................................................11
2.2.3. N-gram Language model ............................................................................13
2.2.4. Structured Language Model .......................................................................15
2.3. Các công trình nghiên cứu liên quan đến đề tài ................................................16
CHƯƠNG 3. phương pháp ĐỀ XUẤT ....................................................................18
3.1. Thu thập dữ liệu ................................................................................................18
3.1.1. Mô hình ngôn ngữ mức kí tự ......................................................................18
3.1.2. Mô hình ngôn ngữ mức từ ..........................................................................19
3.2. Phương pháp phát hiện và sửa lỗi .....................................................................20
3.2.1. Phát hiện và sửa lỗi mức kí tự ....................................................................20
3.2.2. Phát hiện và sửa lỗi mức từ ........................................................................25
vi
3.3. Phương pháp đánh giá .......................................................................................26
CHƯƠNG 4. MÔ TẢ THỰC TẾ VÀ ĐÁNH GIÁ KẾT QUẢ ..............................28
4.1. Hiện thực đề tài .................................................................................................28
4.1.1. Mô hình của bài toán ..................................................................................28
4.1.2. Mô hình ngôn ngữ mức kí tự ......................................................................28
4.1.3. Mô hình ngôn ngữ mức từ ..........................................................................32
4.2. Mô hình phát hiện và sửa lỗi .............................................................................37
4.2.1. Sử dụng mô hình ngôn ngữ mức kí tự để sửa lỗi .......................................38
4.2.2. Sử dụng mô hình ngôn ngữ mức từ để sửa lỗi............................................39
4.3. Chương trình demo (thực nghiệm) ................................................................41
CHƯƠNG 5. Kết luận và hướng phát triển của đề tài. .........................................44
5.1. Các kết quả đạt được .........................................................................................44
5.2. Hướng phát triển ...............................................................................................44
TÀI LIỆU THAM KHẢO.........................................................................................45
vii
DANH MỤC CHỮ VIẾT TẮT
KÝ HIỆU
TÊN TIẾNG ANH
RNN
Recurrent Neural Network
LSTM
Long short term memory
CBOW
Continuous Bag of Words
viii
DANH MỤC HÌNH ẢNH
Hình 2.1. Mô hình RNN dàn trải ra ...............................................................................3
Hình 2.2. Mô hình RNN dàn trải ra ...............................................................................4
Hình 2.3. Đầu vào được tô màu đỏ, mạng RNN màu xanh, đầu ra màu xanh dương...5
Hình 2.4. Ứng dụng RNN cho bài toán dịch máy ........................................................7
Hình 2.5. Ứng dụng RNN tạo tiêu đề cho ảnh. ............................................................7
Hình 2.6. Kiến trúc LSTM. ...........................................................................................9
Hình 2.7. Mô hình CBOW ..........................................................................................11
Hình 2.8. CBOW model vs Skip-gram model .............................................................11
Hình 2.9. Mô hình ngram language models ...............................................................13
Hình 2.10. Ví dụ minh họa
mô hình trigram MarkovLM. .....................................14
Hình 2.11. Structured Language Model ......................................................................16
Hình 3.1. Mô hình ngôn ngữ mức kí tự .......................................................................18
Hình 3.2. Đầu vào và ra của mô hình ngôn ngữ mức kí tự .........................................19
Hình 3.3. Mô hình ngôn ngữ mức từ ...........................................................................20
Hình 3.4. Flowchart greedy heuristic ..........................................................................22
Hình 3.5. Flowchart sửa lỗi mức từ .............................................................................26
Hình 4.1 Mô hình hiện thực bài toán ..........................................................................28
Hình 4.3. Kiến trúc hiện thực mô hình ngôn ngữ mức từ ...........................................32
Hình 4.4. Mô hình sửa lỗi ở mức kí tự ........................................................................35
Hình 4.5. Mô hình sửa lỗi ở mức từ ............................................................................36
Hình 4.6. Kết hợp nhiều mô hình ngôn ngữ để sửa lỗi ...............................................38
Hình 4.7. Minh hoạ dùng mô hình mức kí tự để sửa lỗi .............................................39
Hình 4.8. Minh hoạ dùng mô hình mức từ để sửa lỗi..................................................40
Hình 4.9. Ứng dụng chạy thực nghiệm của luận văn ..................................................41
Hình 4.10. Ứng dụng chạy thực nghiệm của luận văn ................................................42
Hình 4.11. Kết quả kiểm tra và sửa lỗi chính tả Tiếng Việt ........................................43
ix
CHƯƠNG 1. MỞ ĐẦU
1.1. Lý do chọn đề tài
Lỗi chính tả trong văn bản gây khó khăn cho việc đọc của con người và gây ra
nhiều vấn đề cho các hệ thống xử lý ngôn ngữ tự nhiên (Natural Language Processing,
viết tắt là NLP). Có rất nhiều nguyên nhân có thể gây ra lỗi chính tả như: lỗi do đánh
chữ sai, lỗi do các công cụ tạo văn bản như nhận diện kí tự quang học…Mặc dù con
người vẫn có thể đọc được các lỗi sai một cách dễ dàng, chúng ta vẫn mất nhiều thời
gian để đọc văn bản có lỗi hơn so với khi đọc văn bản đúng.
Mặc dù xử lý ngôn ngữ không phải là một lĩnh vực mới và được nghiên cứu khá
nhiều trên thế giới. Với việc phát triển của ngành Khoa Học Máy Tính nói chung và
Deep learning nói riêng việc ứng dụng các thành tựu của Xử Lý Ngôn Ngữ tự nhiên rất
đa dạng và hữu ích về nhiều mặt, các thư viện, mô hình dành cho việc xử lý ngôn ngữ
khá nhiều nhưng đa số chỉ hỗ trợ các ngôn ngữ Tiếng Anh hoặc các ngôn ngữ phổ biến.
Là sinh viên ngành khoa học máy tính, có kiến thức về Deep Learning tôi muốn nghiên
cứu, ứng dụng những thành tựu về xử lý ngôn ngữ tự nhiên lên chính ngôn ngữ mẹ đẻ
của mình là Tiếng Việt với các đặc thù về ngữ pháp, văn phạm, từ vựng đặc trưng có
nhiều hạn chế và không phổ biến trên thế giới.
Lỗi chính tả có thể gây ra nhiễu ở dữ liệu đầu vào và làm giảm hiệu suất của hệ
thống NLP, vốn thường giả định dữ liệu đầu vào là đúng. Nó còn có thể khiến một hệ
thống truy xuất thông tin không thể trả về kết quả mong đợi cho một câu truy vấn bị
nhiễu, hoặc gây ra một kết quả dịch sai cho một chuỗi đầu vào của một hệ thống dịch
máy. Nhiều hệ thống NLP biểu diễn từ thành các vector nhúng từ. Khi một từ bị sai, hệ
thống không thể tìm được vector tương ứng với từ đó. Các nghiên cứu gần đây đã chỉ ra
rằng chỉ cần một thay đổi nhỏ trong dữ liệu đầu vào dạng text cũng có thể làm thay đổi
kết quả phân loại của hệ thống. Vì vậy, việc kiểm tra lỗi chính tả là một trong những
vấn đề quan trọng trong lĩnh vực NLP. Việc sửa lỗi sai trong dữ liệu text đầu vào trước
khi đưa vào hệ thống NLP có thể khôi phục lại hiệu suất của hệ thống.
Hiện nay cùng với sự phát triển bùng nổ của Internet ở Việt Nam, nhu cầu xử lý
dữ liệu tiếng Việt ngày càng nhiều. Do đó, cần phải có một hệ thống đáng tin cậy để
phát hiện và sửa lỗi chính tả tiếng Việt, để từ đó có thể ứng dụng vào các hệ thống khác.
Vì vậy tôi chọn đề tài : “Phát triển ứng dụng phát hiện lỗi chính tả Tiếng Việt sử
dụng mô hình ngôn ngữ” cho luận văn tốt nghiệp cao học của mình.
1
1.2. Mục tiêu nghiên cứu
Mục tiêu của đề tài này là sử dụng kết hợp mô hình ngôn ngữ khác nhau để sửa lỗi
chính tả tiếng Việt. Mỗi mô hình ngôn ngữ có ưu nhược điểm khác nhau, vì vậy đề tài
sẽ nghiên cứu việc kết hợp lại để nâng cao độ chính xác so với việc sử dụng riêng lẻ một
mô hình ngôn ngữ cụ thể.
1.3. Đối tượng, phạm vi nghiên cứu
Có nhiều nghiên cứu về vấn đề sử dụng các loại mô hình ngôn ngữ khác nhau để
sửa lỗi chính tả của nhiều ngôn ngữ khá nhau trên thế giới như tiếng Ả Rập, tiếng Trung,
tiếng Ấn Độ... Đề tài này chỉ tập trung vào việc kiểm tra và sửa lỗi chính tả tiếng Việt.
Đối tượng nghiên cứu của đề tài là các mô hình ngôn ngữ ở mức từ và kí tự, cách để kết
hợp nhiều mô hình ngôn ngữ cùng một số heuristic để có hiệu suất tốt hơn.
1.4. Phương pháp nghiên cứu
Trong nghiên cứu này, mô hình đề xuất của chúng tôi sử dụng kết hợp kết quả của
các mô hình ngôn ngữ sau:
- Mô hình ngôn ngữ mức kí tự trái sang phải
- Mô hình ngôn ngữ mức kí tự phải sang trái
- Mô hình ngôn ngữ mức từ trái sang phải
- Mô hình ngôn ngữ mức từ phải sang trái
Các mô hình ngôn ngữ này sẽ sử dụng mạng nơ ron hồi quy, cụ thể là mạng LSTM.
1.5. Bố cục luận văn
Nội dung luận văn được chia thành các phần như sau:
Chương 1: Tổng quan về nội dung, mục tiêu và bố cục của luận văn.
Chương 2: Cơ sở lý thuyết có liên quan đến đề tài như RNN, LSTM, Word
Embedding, CBOW, các công trình nghiên cứu liên quan đến đề tài.
Chương 3: Trình bày các phương pháp khi sử dụng thực hiện luận văn.
Chương 4: Mô tả thực tế và đánh giá kết quả.
Chương 5: Kết luận và hướng phát triển của đề tài.
2
CHƯƠNG 2. CƠ SỞ LÝ THUYẾT VÀ CÁC NGHIÊN CỨU LIÊN QUAN
2.1. Mạng nơ-ron hồi quy - Recurrent Neural Network (RNN)
2.1.1. Tổng quan mạng RNN
Mạng nơ-ron hồi quy (RNN - Recurrent Neural Network) là một thuật toán được
chú ý rất nhiều trong thời gian gần đây bởi các kết quả tốt thu được trong lĩnh vực xử lý
ngôn ngữ tự nhiên. RNN ra đời với ý tưởng chính là sử dụng một bộ nhớ để lưu lại thông
tin từ từ những bước tính toán xử lý trước để dựa vào nó có thể đưa ra dự đoán chính
xác nhất cho bước dự đoán hiện tại. Trong các mạng nơ-ron truyền thống tất cả các đầu
vào và cả đầu ra là độc lập với nhau. Tức là chúng không liên kết thành chuỗi với nhau.
Nhưng các mô hình này không phù hợp trong rất nhiều bài toán. Ví dụ, nếu muốn đoán
từ tiếp theo có thể xuất hiện trong một câu thì ta cũng cần biết các từ trước đó xuất hiện
lần lượt thế nào? RNN được gọi là hồi quy (Recurrent) bởi lẽ chúng thực hiện cùng một
tác vụ cho tất cả các phần tử của một chuỗi với đầu ra phụ thuộc vào cả các phép tính
trước đó. Nói cách khác, RNN có khả năng nhớ các thông tin được tính toán trước đó.
Trên lý thuyết, RNN có thể sử dụng được thông tin của một văn bản rất dài, tuy nhiên
thực tế thì nó chỉ có thể nhớ được một vài bước trước đó (ta cùng bàn cụ thể vấn đề này
ở phía sau) mà thôi. Về cơ bản một mạng RNN có dạng như sau:
Kiến trúc cơ bản của RNN:
Hình 2.1. Mô hình RNN dàn trải ra
Nguồn: https://noron.vn/post/gioi-thieu-ve-mang-neural-hoiquy-recurrentneur-40wwa1jsk2si
3
Trong hình trên, A là mạng neural hồi quy. Nó nhận đầu vào xt, tiến hành xử lý và
cho ra đầu ra là ht. Điểm đặc biệt của A là nó sẽ lưu lại giá trị của ht để sử dụng cho đầu
tiếp theo. Có thể thấy rằng mạng neural hồi quy này là một chuỗi mạng giống hệt nhau
lặp đi lặp lại và mỗi mạng con sẽ truyền đi thông tin mà nó vừa xử lý cho mạng phía sau
nó. Ta có thể tách vòng lặp ở A ra và vẽ lại để dễ hiểu kiến trúc của RNN như sau:
Hình 2.2. Mô hình RNN dàn trải ra
Nguồn: https://noron.vn/post/gioi-thieu-ve-mang-neural-hoiquy-recurrentneur-40wwa1jsk2si
Ta thấy rằng, chuỗi các ngõ vào x0, x1 , …, xt là những sự kiện, dữ liệu có dạng
chuỗi thời gian (time series). Các sự kiện này có mối liên hệ với nhau về thông tin liên
tiếp như tiếng nói hay văn bản, các thông tin của các sự kiện phía trước sẽ được giữ lại
để làm cơ sở một phần hoặc toàn bộ tính toán cho dữ liệu phía sau trong mạng neural
hồi quy. Vì vậy, mô hình RNNs có ứng dụng quan trọng trong các bài toán xử lý ngôn
ngữ tự nhiên như: Dịch máy, phân loại ngữ nghĩa, Nhận diện giọng nói.
Một trong các điểm mạnh của mạng neural hồi quy so với mạng ANN thông
thường đó là khả năng tính toán trên một chuỗi vector. Dưới đây là các kiểu hoạt động
của mạng RNN:
4
Hình 2.3. Đầu vào được tô màu đỏ, mạng RNN màu xanh, đầu ra màu xanh dương
Nguồn: Andrej Karpathy
Theo hình vẽ trên, từ trái sang phải ta có các mô hình ứng dụng RNN:
Mạng neural kiểu Vanilla: Đầu vào và đầu ra có kích thước cố định (Bài
toán nhận diện ảnh - Image Classification)
Đầu ra có dạng chuỗi: Đầu vào cố định và đầu ra là một chuỗi các vector
(Bài toán tạo tiêu đề cho ảnh - Image Captioning)
Đầu vào có dạng chuỗi: Đầu vào là một chuỗi vector và đầu ra cố định (Bài
toán phân loại ngữ nghĩa - Sentiment Classification)
Đầu vào và đầu ra có dạng chuỗi: Bài toán Dịch máy - Neural Machine
Translation
Đầu vào và đầu ra có dạng chuỗi đồng bộ: Đầu vào và đầu ra là một chuỗi
vector có độ dài bằng nhau (Bài toán phân loại video và gắn nhãn từng
frame - Video Classification)
Có thể nhận thấy rằng độ dài các chuỗi đầu vào hay đầu ra tại mỗi trường hợp
không bắt buộc phải cố định vì kích thước vector trạng thái thông tin trao đổi trong mạng
neural hồi quy là cố định. Giờ chúng ta sẽ đi sâu hơn vào phương thức hoạt động của
mạng neural hồi quy.
Phương thức hoạt động
Mạng neural hồi quy nhận một vector đầu vào x và đưa ra vector đầu ra y. Để có
thể lưu trữ được thông tin của các sự kiện trong quá khứ, mạng neural hồi quy lưu trữ
trong chính nó một vector trạng thái ẩn h. Vector trạng thái này sẽ lưu trữ những thông
tin của những sự kiện đã được xử lý bằng cách cập nhật lại giá trị mỗi khi một sự kiện
mới được xử lý. Ta có:
W_hh: Ma trận weights cho vector trạng thái ẩn.
W_xh: Ma trận weights cho vector đầu vào x.
W_hy: Ma trận weights dùng để tính vector đầu ra y
Với ht ta tính toán dựa vào ht-1, như vậy ta cần khởi tạo vector đầu vào (thông
thường là một vector 0). Các mô hình RNN sử dụng các hàm phi tuyến như hàm kích
hoạt. Ví dụ công thức với hàm kích hoạt tanh: ht = tanh(Whhht-1 + Wxhxt) [7]
Các ma trận trọng số được cập nhật trong quá trình huấn luyện và cập nhật ngược
trở lại theo thuật toán back propagation để điều chỉnh hành vi của mạng neural hồi quy.
5
Khả năng của RNN
Ở các bài toán máy dịch hiện đại áp dụng RNN vào cho thấy kết quả chính xác cao
và chất lượng cải thiện đáng kể. Trong lĩnh vực xử lý ngôn ngữ tự nhiên (NLP - Natural
Language Processing), đã ghi nhận được nhiều thành công của RNN cho nhiều vấn đề
khác nhau. Tại thời điểm này, tôi muốn đề cập tới một mô hình phổ biến nhất được sử
dụng của RNN là LSTM. LSTM (Long Short-Term Memory) thể hiện được sự ưu việt
ở điểm có thể nhớ được nhiều bước hơn mô hình RNN truyền thống. Nhưng vì LSTM
về cơ bản giống với cấu trúc của RNN truyền thống, chúng chỉ khác nhau ở cách tính
toán của các nút ẩn. Chúng ta sẽ cùng xem chi tiết hơn về LSTM trong phần sau. Chúng
ta cùng nhau xem một vài ứng dụng của RNN trong xử lý ngôn ngữ tự nhiên dưới đây:
a. Mô hình hóa ngôn ngữ
Mô hình ngôn ngữ cho phép ta dự đoán được xác xuất của một từ nào đó xuất hiện
sau một chuỗi các từ đi liền trước nó. Do có khả năng ước lượng được độ tương tự của
các câu nên nó còn được ứng dụng cho việc dịch máy. Một điểm lý thú của việc có thể
dự đoán được từ tiếp theo là ta có thể xây dựng được một mô hình tự sinh từ cho phép
máy tính có thể tự tạo ra các văn bản mới từ tập mẫu và xác xuất đầu ra của mỗi từ. Vậy
nên, tùy thuộc vào mô hình ngôn ngữ mà ta có thể tạo ra được nhiều văn bản khác nhau.
Trong mô hình ngôn ngữ, đầu vào thường là một chuỗi các từ (được mô tả bằng vec-tơ
one-hot) và đầu ra là một chuỗi các từ dự đoán được. Khi huấn luyện mạng, ta sẽ gán ot
= xt+1 vì ta muốn đầu ra tại bước t chính là từ tiếp theo của câu. Một số bài báo về mô
hình hóa ngôn ngữ và sinh văn bản.
b. Dịch máy
Dịch máy (Machine Translation) tương tự như mô hình hóa ngôn ngữ ở điểm là
đầu vào là một chuỗi các từ trong ngôn ngữ nguồn (ngôn ngữ cần dịch - ví dụ là tiếng
Việt). Còn đầu ra sẽ là một chuỗi các từ trong ngôn ngữ đích (ngôn ngữ dịch - ví dụ là
tiếng Anh). Điểm khác nhau ở đây là đầu ra của ta chỉ xử lý sau khi đã xem xét toàn bộ
chuỗi đầu vào. Vì từ dịch đầu tiên của câu dịch cần phải có đầy đủ thông tin từ đầu vào
cần dịch mới có thể suy luận được.
6
Hình 2.4. Ứng dụng RNN cho bài toán dịch máy
Nguồn: http://cs224d.stanford.edu/lectures/CS224dLecture8.pdf
c. Nhận diện giọng nói
Đưa vào một chuỗi các tín hiệu âm thanh, ta có thể dự đoán được chuỗi các đoạn
ngữ âm đi kèm với xác xuất của chúng.
d. Mô tả hình ảnh
Cùng với ConvNet, RNN được sử dụng để tự động tạo mô tả cho các ảnh chưa
được gán nhãn. Sự kết hợp này đã đưa ra được các kết quả khá kinh ngạc. Ví dụ như các
ảnh dưới đây, các mô tả sinh ra có mức độ chính xác và độ tường tận khá cao.
Hình 2.5. Ứng dụng RNN tạo tiêu đề cho ảnh.
Nguồn: http://cs.stanford.edu/people/karpathy/deepimagesent/
Huấn luyện RNN
Huấn luyện mạng RNN cũng tương tự như các mạng nơ-ron truyền thống, tuy
nhiên giải thuật lan truyền ngược (backpropagation) phải thay đổi một chút. Đạo hàm
tại mỗi đầu ra phụ thuộc không chỉ vào các tính toán tại bước đó, mà còn phụ thuộc vào
các bước trước đó nữa, vì các tham số trong mạng RNN được sử dụng chung cho tất cả
7
các bước trong mạng. Ví dụ, để tính đạo hàm tại t=4 ta phải lan truyền ngược cả 3 bước
phía trước rồi cộng tổng đạo hàm của chúng lại với nhau. Việc tính đạo hàm kiểu này
được gọi là lan truyền ngược liên hồi (BPTT - Backpropagation Through Time). Tuy
nhiên, với các bước phụ thuộc càng xa thì việc học sẽ càng khó khăn hơn vì sẽ xuất hiện
vấn đề hao hụt/bùng nổ (vanishing/exploding) của đạo hàm. Có một vài phương pháp
được đề xuất để giải quyết vấn đề này và các kiểu mạng RNN hiện nay đã được thiết kế
để triệt tiêu bớt chúng như LSTM chẳng hạn.
2.1.2. Long Short Term Memory (LSTM)
Một vấn đề khi sử dụng RNN đó là vấn đề phụ thuộc gần xa, tức là RNN không
thể nhớ được các thông tin quá dài. Đối với những chuỗi quá dài, những thông tin ban
đầu sẽ bị “lãng quên” dần, bộ nhớ chỉ ghi nhớ những thông tin gần hơn. Nguyên nhân
là do khi huấn luyện mạng RNN, việc tính đạo hàm qua quá nhiều bước sẽ dẫn đến việc
tiêu biến đạo hàm (gradient vanishing). Vì vậy, Long Short Term Memory (LSTM) ra
đời để giải quyết vấn đề này.
LSTM là một dạng đặc biệt của mạng nơ-ron hồi quy, với nhiều bài toán thì nó tốt
hơn mạng hồi quy thuần. Hầu hết các kết quả thú vị thu được từ mạng RNN là được sử
dụng với LSTM. Về mặt lý thuyết, rõ ràng là RNN có khả năng xử lý các phụ thuộc xa
(long-term dependencies). Chúng ta có thể xem xét và cài đặt các tham số sao cho khéo
là có thể giải quyết được vấn đề này. Tuy nhiên, đáng tiếc trong thực tế RNN có vẻ
không thể học được các tham số đó. Vấn đề này đã được khám phá khá sâu, trong các
bài báo, họ đã tìm được những lý do căn bản để giải thích tại sao RNN không thể học
được.
Mạng bộ nhớ dài-ngắn (Long Short Term Memory networks), thường được gọi là
LSTM - là một dạng đặc biệt của RNN, nó có khả năng học được các phụ thuộc xa.
LSTM được giới thiệu năm 1977, và sau đó đã được cải tiến và phổ biến bởi rất nhiều
người trong ngành. Chúng hoạt động cực kì hiệu quả trên nhiều bài toán khác nhau nên
dần đã trở nên phổ biến như hiện nay.
LSTM được thiết kế để tránh được vấn đề phụ thuộc xa (long-term dependency).
Việc nhớ thông tin trong suốt thời gian dài là đặc tính mặc định của chúng, chứ ta không
cần phải huấn luyện nó để có thể nhớ được. Tức là ngay nội tại của nó đã có thể ghi nhớ
được mà không cần bất kì can thiệp nào.
8
Mọi mạng hồi quy đều có dạng là một chuỗi các mô-đun lặp đi lặp lại của mạng
nơ-ron. Với mạng RNN chuẩn, các mô-dun này có cấu trúc rất đơn giản, thường là một
tầng tanh
Hình 2.6. Kiến trúc LSTM.
Nguồn: https://nttuan8.com/bai-14-long-short-term-memory-lstm/
Kiến trúc của LSTM phức tạp hơn RNN rất nhiều. Để nhớ được nhiều thông tin,
LSTM sử dụng các cổng để giữ lại các thông tin quan trọng và bỏ đi những thông tin dư
thừa. Thành phần quan trọng nhất của LSTM là cell state, đây chính là bộ nhớ của
LSTM, ngoài ra còn một thành phần khác là hidden state. Cell state và hidden state ở
thời điểm t được kí hiệu là 𝐶t và ℎt. Cell state và hidden state sẽ lần lượt được cập nhật
ở mỗi thời điểm thông qua các cổng, chi tiết như sau:
Cổng forget: cổng này quyết định xem thông tin nào cần bỏ đi
𝑓t = 𝜎(𝑊([ℎt-1, 𝑥t] + 𝑏f)
Cổng input: cổng này quyết định xem thông tin nào cần giữ lại
𝑖t = 𝜎(𝑊i[ℎt-1, 𝑥t] + 𝑏i)
Cập nhật cell state bằng cách sử dụng cổng input và cổng forget:
𝐶t = 𝑓t ∗ 𝐶t-1 + 𝑖t ∗ tanh(𝑊c[ℎt-1, 𝑥t] + 𝑏c)
Cổng output: cổng này giúp tính toán các thông tin cần xuất ra ở bước hiện tại
𝑜t = 𝜎(𝑊o[ℎt-1, 𝑥t] + 𝑏o)
Cập nhật hidden state bằng cách sử dụng cổng output
ℎt= 𝑜t ∗ tanh(𝐶t)
9
2.2. Word Embedding
Thành phần cơ bản của một văn bản đó là các từ. Để máy tính có thể hiểu được,
việc đầu tiên là cần phải biểu diễn các từ thành các vector thực, các vector này sẽ dược
dùng làm input để đưa vào mô hình huấn luyện. Phương pháp đơn giản nhất là gán mỗi
từ cho số và biểu diễn dưới dạng One-hot vector, đây là một vector có số chiều bằng với
số lượng từ vựng trong từ điển và chỉ có duy nhất một thành phần là 1 ứng với từ được
biểu diễn, các thành phần khác đều bằng 0. Cách biểu diễn này thường ít được dùng vì
ba vấn đề:
Chi phí tính toán lớn: độ dài vector là độ dài của không gian từ vựng, nếu dữ liệu
có 10000 từ, độ dài của vector one-hot là 10000.
Mang ít giá trị thông tin: các vector one-hot hầu như chứa toàn số 0.
Không thể biểu diễn quan hệ giữa 2 từ bất kì: ví dụ với euclidean distance, khoảng
cách giữa 2 từ bất kì luôn luôn là √2 khi 2 vector khác nhau và sẽ bằng 0 khi 2 vector
đó giống nhau, cho dù 2 từ đó gần nghĩa hay là hoàn toàn không liên quan đến nhau.
Có 2 phương pháp chủ yếu được hay dùng để tính toán Word Embedding là Count
based method và Predictive method. Cả hai cách này đều dựa trên một giả thuyết rằng
những từ nào xuất hiện trong cùng một ngữ cảnh, một ngữ nghĩa sẽ có vị trí gần nhau
trong không gian mới được biến đổi. Trong luận văn này, tôi sẽ trình bày phương pháp
phổ biến hơn là Predictive method (Word2Vec). Word2Vec được Mikolov giới thiệu
lần đầu tiên năm 2013. Mikolov đã đề xuất hai mô hình để tính toán các vector biểu diễn
từ trong một không gian liên tục (từ 50 đến 100 chiều) từ một tập dữ liệu text rất lớn.
Hai mô hình này là CBOW (Continuous Bag-of-Words Model) và Skipgram
(Continuous Skip-gram Model), cả hai đều dựa trên kiến trúc mạng neural network sẽ
được trình bày sau đây.
2.2.1. CBOW model
Ý tưởng chính của mô hình CBOW là mô hình sẽ dùng các từ ngữ cảnh (context
word) để đoán ra từ trung tâm (target word). Ví dụ đối với chuỗi 5 từ
𝑤t-2, 𝑤t-1, 𝑤t, 𝑤t+1, 𝑤t+2, mô hình sẽ dùng các từ 𝑤t-2, 𝑤t-1, 𝑤t+1, 𝑤t+2 dùng làm từ
ngữ cảnh để đoán từ trung tâm là 𝑤t.
Để làm được việc này, mô hình CBOW cần học hai ma trận 𝑊 ∈ ℝv*x và 𝑊′ ∈ ℝv*x
với 𝑉 là số lượng từ vựng. Ma trận 𝑊 thường được gọi là Embedding Matrix, còn ma
10
trận 𝑊′ được gọi là Inversed Embedding Matrix. 𝑁 là số chiều của vector embedding.
Các từ ngữ cảnh và từ trung tâm đều sẽ được biểu diễn bởi vector onehot 𝑥 ∈ ℕ|V|. Các
vector đầu vào lần lượt là xt-2, xt-1, xt+1, xt+2 vector đầu ra của mô hình là 𝑦 = 𝑥t.
Hình 2.7. Mô hình CBOW
Nguồn: https://lilianweng.github.io/lil-log/2017/10/15/learning-wordembedding.html
2.2.2. Skip-gram model
Nếu như CBOW sử dụng input là các từ ngữ cảnh và cố gắng dự đoán từ trung
tâm thì ngược lại, mô hình Skip-gram sử dụng input là từ trung tâm và cố gắng dự đoán
ra các từ hàng xóm của nó. Với chuỗi từ 𝑤t-2, 𝑤t-1, 𝑤t, 𝑤t+1, 𝑤t+2, mô hình Skipgram sẽ
dùng từ trung tâm 𝑤t để đoán các từ ngữ cảnh 𝑤t-2, 𝑤t-1, 𝑤t+1, 𝑤t+2. Vai trò của x và y
trong Skip-gram ngược lại so với trong CBOW.
Hình 2.8. CBOW model vs Skip-gram model
11
- Xem thêm -