Đăng ký Đăng nhập
Trang chủ Giáo dục - Đào tạo Cao đẳng - Đại học Khoa học xã hộ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ữ...

Tài liệu 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ữ

.PDF
60
1
134

Mô tả:

Ủ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 -

Tài liệu liên quan