TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG ——————– * ——————— ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC NGÀNH CÔNG NGHỆ THÔNG TIN ỨNG DỤNG DEEP LEARNING VÀO BÀI TOÁN PHÂN TÍCH NGỮ NGHĨA Nguyễn Minh Phương Lớp CNTT-TT 2.01 - K57 Giáo viên hướng dẫn: TS. Thân Quang Khoát Sinh viên thực hiện : HÀ NỘI 05-2017 PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP 1. Thông tin về sinh viên Họ và tên sinh viên: Nguyễn Minh Phương. Điện thoại liên lạc: 01695269189 Email: nguyenphuong.cnbt@gmail.com Lớp: CNTT-TT 2.01 - K57 Hệ đào tạo: Đại học chính quy. Đồ án tốt nghiệp được thực hiện tại: Data Science Lab - Đại học Bách Khoa Hà Nội. Thời gian làm ĐATN: Từ ngày 15/01/2017 đến 26/05/2017. 2. Mục đích nội dung của ĐATN Nghiên cứu ứng dụng và đánh giá hiệu quả mô hình Recurrent Neural Network vào bài toán Phân tích ngữ nghĩa trong Xử lý ngôn ngữ tự nhiên. 3. Các nhiệm vụ cụ thể của ĐATN • Thử nghiệm, ứng dụng, đánh giá mô hình SEQ2SEQ cho bài toán Phân tích ngữ nghĩa với bộ dữ liệu đã được tái tổ hợp các thực thể về dạng typeid. • Đề xuất mô hình mới và thực hiện các thử nghiệm với mô hình mới cho bài toán Phân tích ngữ nghĩa với bộ dữ liệu thô, chưa được tái tổ hợp các thực thể. 4. Lời cam đoan của sinh viên: Tôi - Nguyễn Minh Phương - cam kết ĐATN là công trình nghiên cứu của bản thân tôi dưới sự hướng dẫn của TS. Thân Quang Khoát. Các kết quả nêu trong ĐATN là trung thực, không phải là sao chép toàn văn của bất kỳ công trình nào khác. Hà Nội, ngày . . . tháng . . . năm . . . Tác giả ĐATN Nguyễn Minh Phương 5. Xác nhận của giáo viên hướng dẫn về mức độ hoàn thành của ĐATN và cho phép bảo vệ: Hà Nội, ngày . . . tháng . . . năm . . . Giáo viên hướng dẫn TS. Thân Quang Khoát Sinh viên thực hiện: Nguyễn Minh Phương, 20122250, K57, Lớp CNTT-TT 2.01 2 Lời cảm ơn Đầu tiên, em xin được gửi lời cảm ơn chân thành đến các thầy giáo, cô giáo thuộc trường đại học Bách Khoa Hà Nội. Đặc biệt là các thầy giáo, cô giáo thuộc Viện Công nghệ Thông tin và Truyền Thông. Chính các thầy cô giáo đã trang bị cho em những kiến thức quý báu trong thời gian em học tập và nghiên cứu tại trường. Đồng thời em cũng xin được gửi lời cảm ơn đặc biệt đến TS. Thân Quang Khoát, ThS. Ngô Văn Linh. Các thầy là những người đã chỉ dẫn tận tình, cho em những kinh nghiệm quý báu để em có thể hoàn thành đồ án tốt nghiệp này. Thầy cô luôn động viên, giúp đỡ em trong những thời điểm khó khăn nhất. Em xin gửi lời cảm ơn chân thành tới các thầy cô thuộc Data Science Lab thuộc viện Công Nghệ Thông Tin và Truyền Thông đã tạo điều kiện cho em thực hành thử nghiệm trên các máy tính của lab. Em cũng xin gửi lời cảm ơn tới gia đình và bạn bè (đặc biệt là anh Nguyễn Đức Tuấn, anh Lương Xuân Bách). Gia đình, bạn bè đã luôn động viên tinh thần và là động lực để em tiến lên phía trước. Sinh viên: Nguyễn Minh Phương, 20122250, K57, Lớp CNTT-TT 2.01 3 Tóm tắt nội dung Hiện nay, máy tính đóng một vai trò vô cùng quan trọng trong cuộc sống hàng ngày, từ giải trí đến công việc, từ đơn giản đến phức tạp. Máy tính đã góp phần rất lớn trong việc giảm công sức và thời làm việc. Việc tạo ra các chương trình giúp máy tính hiểu được ngôn ngữ tự nhiên của con người ngày càng trở nên cần thiết và là nền tảng của các ứng dụng thông minh sau này. Bài toán Phân tích ngữ nghĩa (Semantic Parsing) trong Xử lý ngôn ngữ tự nhiên (XLNNTN) là một bài toán hay và khó, nó thu hút được nhiều sự quan tâm từ các chuyên gia xử lý ngôn ngữ tự nhiên. Vấn đề chính của bài toán là chuyển đổi các câu nói thường ngày thành một dạng form logic mà máy tính có thể trích rút được các thông tin từ đó. Xử lý được vấn đề này thì giới hạn giao tiếp giữa con người và máy tính gần như bị xóa nhòa. Học sâu (Deep learning) là một chi của ngành máy học (Machine learning) dựa trên một tập hợp các thuật toán để mô hình dữ liệu trừu tượng hóa ở mức cao bằng cách sử dụng nhiều lớp xử lý với cấu trúc phức tạp, hoặc bằng cách khác bao gồm nhiều biến đổi phi tuyến [12]. Mô hình Recurrent Neural Network là một mô hình Neural Network đặc biệt trong Deep learning và hiệu quả trong các nhiệm vụ xử lý ngôn ngữ tự nhiên. Đồ án này nghiên cứu ứng dụng và đánh giá hiệu quả mô hình Recurrent Neural Network vào bài toán Phân tích ngữ nghĩa trong Xử lý ngôn ngữ tự nhiên. Đồng thời đề xuất mô hình kết hợp SEQ2SEQ-BRNN để giải quyết bài toán với bộ dữ liệu thô mà không cần tiền xử lý dữ liệu tái tổ hợp về dạng typeid của các thực thể. Các kết quả thử nghiệm trên 2 bộ dữ liệu Geo và Atis cho thấy mô hình đề xuất thực sự đã nâng cao chất lượng dự đoán. 4 Mục lục Lời cảm ơn 3 Tóm tắt nội dung 4 Mở đầu 11 Kiến thức cơ sở 2.1 Deep learning . . . . . . . . . . . . . . . . . . . . . . . 2.2 Kiến trúc của một ANN . . . . . . . . . . . . . . . . . . 2.2.1 Neuron . . . . . . . . . . . . . . . . . . . . . . 2.2.2 Tầng Neuron . . . . . . . . . . . . . . . . . . . 2.2.3 Phương pháp học . . . . . . . . . . . . . . . . . 2.2.4 Đặc trưng: . . . . . . . . . . . . . . . . . . . . 2.2.5 Hàm đánh giá lỗi . . . . . . . . . . . . . . . . . 2.2.6 Giải thuật học - Backpropagation . . . . . . . . 2.3 Mô hình Recurrent Neural Network . . . . . . . . . . . 2.3.1 Mô hình RNN cơ bản . . . . . . . . . . . . . . . 2.3.2 Mô hình Bidirectional RNN . . . . . . . . . . . 2.3.3 Mô hình Deep RNN . . . . . . . . . . . . . . . 2.3.4 Mô hình RNN kết hợp Long Short-Term Memory 2.3.5 Mô hình Sequence to Sequence - attention . . . . . . . . . . . . . . . . . . 13 13 14 14 14 15 16 17 18 19 21 23 24 25 28 . . . . . . . 30 30 31 32 33 33 34 34 Dữ liệu 4.1 Dữ liệu gốc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 Dữ liệu cho mô hình đề xuất . . . . . . . . . . . . . . . . . . . . . . . . . 38 38 39 . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bài toán Phân tích ngữ nghĩa và mô hình mạng SEQ2SEQ-BRNN 3.1 Xử lý ngôn ngữ tự nhiên . . . . . . . . . . . . . . . . . . . 3.2 Bài toán Phân tích ngữ nghĩa . . . . . . . . . . . . . . . . . 3.3 Ứng dụng . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4 Kết quả nghiên cứu hiện tại . . . . . . . . . . . . . . . . . . 3.4.1 Kết quả hiện tại . . . . . . . . . . . . . . . . . . . . 3.4.2 Kết quả sử dụng mô hình mạng đề xuất . . . . . . . 3.5 Mô hình đề xuất SEQ2SEQ-BRNN . . . . . . . . . . . . . 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Thực nghiệm và hiệu quả 5.1 Các mô hình thử nghiệm . . . . . . . . . . 5.2 Độ đo . . . . . . . . . . . . . . . . . . . . 5.3 Thông tin cài đặt . . . . . . . . . . . . . . 5.4 Chi tiết kết quả . . . . . . . . . . . . . . . 5.4.1 Mô hình SEQ2SEQ . . . . . . . . . 5.4.2 Mô hình đề xuất SEQ2SEQ-BRNN . . . . . . 41 41 41 42 42 42 46 Kết luận 6.1 Tổng kết kết quả đạt được trong đồ án: . . . . . . . . . . . . . . . . . . . . 6.2 Các hướng tìm hiểu trong tương lai . . . . . . . . . . . . . . . . . . . . . . 51 51 51 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sinh viên thực hiện: Nguyễn Minh Phương, 20122250, K57, Lớp CNTT-TT 2.01 . . . . . . . . . . . . 6 Danh sách hình vẽ 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.10 2.11 2.12 2.13 2.14 2.15 2.16 3.1 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 5.10 Cấu trúc một Neuron . . . . . . . . . . . . . . . . . . . . . . . . . . Cấu trúc một ANN đơn giản . . . . . . . . . . . . . . . . . . . . . . Mô hình mạng trước và sau học khi tham số . . . . . . . . . . . . . . Mô hình mạng trước và sau khi học cấu trúc liên kết . . . . . . . . . . ANN lan truyền tiến . . . . . . . . . . . . . . . . . . . . . . . . . . . ANN phản hồi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ANN hồi quy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Kiến trúc mạng RNN . . . . . . . . . . . . . . . . . . . . . . . . . . Mạng lan truyền tiến 3 layer . . . . . . . . . . . . . . . . . . . . . . Mạng RNN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mạng BRNN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mạng Deep RNN sử dụng 3 RNN . . . . . . . . . . . . . . . . . . . Cấu trúc 1 state . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mạng RNN sử dụng LSTM . . . . . . . . . . . . . . . . . . . . . . . Mạng SEQ2SEQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mô hình SEQ2SEQ-attention . . . . . . . . . . . . . . . . . . . . . . Mô hình SEQ2SEQ-BRNN . . . . . . . . . . . . . . . . . . . . . . . Kết quả mạng SEQ2SEQ trên tập Geo . . . . . . . . . . . . . . . . . Kết quả mạng SEQ2SEQ trên tập Atis . . . . . . . . . . . . . . . . . Kết quả mô hình SEQ2SEQ trên bộ dữ liệu Geo trước và sau tiền xử lý Kết quả mô hình SEQ2SEQ trên bộ dữ liệu Atis trước và sau tiền xử lý Kết quả tái tổ hợp dữ liệu trên tập Geo . . . . . . . . . . . . . . . . . Kết quả tái tổ hợp dữ liệu trên tập Atis . . . . . . . . . . . . . . . . . Kết tổng hợp trên tập Geo . . . . . . . . . . . . . . . . . . . . . . . . Kết quả tổng hợp trên tập Atis . . . . . . . . . . . . . . . . . . . . . Kết quả thay đổi tham số Learning rate trên tập Geo . . . . . . . . . . Kết quả random thứ tự minibatch khi train trên tập Geo . . . . . . . . 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 15 16 16 16 17 17 19 20 22 23 25 27 27 28 29 35 43 44 45 45 46 47 48 48 49 50 Danh sách bảng 3.1 3.2 4.1 4.2 4.3 4.4 4.5 Kết quả trên tập Geo . . . . . . . . . . . . . . . Kết quả trên tập Atis . . . . . . . . . . . . . . . Tiền xử lý dữ liệu với Argument Identical . . . . Thông tin bộ dữ liệu . . . . . . . . . . . . . . . . Bộ dữ liệu cho mô hình BRNN tái tổ hợp dữ liệu Chuyển tiếp dữ liệu . . . . . . . . . . . . . . . . Phân tích ngữ nghĩa . . . . . . . . . . . . . . . . 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 34 38 39 39 40 40 Danh sách từ viết tắt ANN Artificial Neural Network BP Backpropagation BPTT Backpropagation Through Time BRNN Bidirectional Recurrent Neural Network DRNN Deep Recurrent Neural Network LSTM Long Short-Term Memory NER Named Entity Recognition RNN Recurrent Neural Network RNN-LSTM Recurrent Neural Network sử dụng Long Short-Term Memory SEQ2SEQ Sequence to Sequence XLNN Xử lý ngôn ngữ XLNNTN Xử lý ngôn ngữ tự nhiên 9 Danh sách các kí hiệu m n k L D Et xt yt ot b U W V ∆U ∆W ∆V Phép nhân từng thành phần (element-wise multiplication). Số chiều vector input. Kích thước tầng ẩn. Số chiều vector ouput. Số tầng RNN trong mạng Deep RNN. Tập dữ liệu. Hàm lỗi tương ứng với input xt . Vector input thứ t trong chuỗi input. Vector kì vọng tương ứng xt . Vector output thứ ứng với đầu vào xt . Ma trận thành phần bias giữa các tầng. Ma trận trọng số liên kết tầng input và tầng ẩn. Ma trận trọng số liên kết 2 tầng ẩn. Ma trận trọng số liên kết tầng ẩn và tầng output. Ma trận cập nhật cho trọng số U. Ma trận cập nhật cho trọng số V. Ma trận cập nhật cho trọng số W. 10 1. Mở đầu Như đã trình bày đồ án này nghiên cứu ứng dụng và đánh giá hiệu quả mô hình Recurrent Neural Network vào bài toán Phân tích ngữ nghĩa trong Xử lý ngôn ngữ tự nhiên. Đồ án được thực hiện với hai nhiệm vụ chính là: • Thử nghiệm, ứng dụng, đánh giá mô hình SEQ2SEQ cho bài toán Phân tích ngữ nghĩa với bộ dữ liệu đã được tái tổ hợp các thực thể về dạng typeid. • Đề xuất mô hình SEQ2SEQ-BRNN và thực hiện các thử nghiệm cho bài toán Phân tích ngữ nghĩa với bộ dữ liệu thô, chưa được tái tổ hợp các thực thể. Mô hình SEQ2SEQ (Kyunghyun Cho và cộng sự, năm 2014) [2] ra đời với mục đích dịch máy và đạt được độ chính xác khá cao. Mô hình này nhanh chóng trở nên nổi tiếng khi tiếp tục ứng dụng trong bài toán chat-bot (đề xuất bởi Sutskever và cộng sự, năm 2014) [11]. Với các đoạn hội giữa máy và người gần đạt đến được sự tự nhiên trong ngôn ngữ giao tiếp, mô hình SEQ2SEQ một lần nữa cho thấy ứng dụng to lớn trong lĩnh vực xử lý ngôn ngữ tự nhiên. Mới đây, các kết quả công bố trong công việc ứng dụng mô hình này vào bài toán Phân tích ngữ nghĩa như kết quả của Robin Jia và cộng sự, năm 2016 [6], hay của Li Dong và cộng sự, năm 2016 [3], cho thấy việc sử dụng SEQ2SEQ là một hướng đi đúng đắn và đầy hứa hẹn. Các kết quả thử nghiệm trên 2 bộ dữ liệu Geo và Atis cho thấy mô hình SEQ2SEQ thực sự có khả năng ứng dụng vào giải quyết bài toán Phân tích ngữ nghĩa với độ chính xác cao: đạt 82.72% trên tập Geo và 83.4% trên tập Atis. Đối với nhiệm vụ thứ 2 kết quả mô hình đề xuất SEQ2SEQ-BRNN cũng cải thiện kết quả đáng kể so với mô hình gốc SEQ2SEQ: cụ thể đạt 78.8% (tăng ∼ 10%) trên tập Geo và đạt 79.4% trên tập Atis (tăng ∼ 7%). Nội dung của Báo cáo này bao gồm 6 chương: Chương 1 Mở đầu: Trình bày tóm tắt nhiệm vụ, bố cục của đồ án tốt nghiệp. Chương 2 Kiến thức cơ sở: Hệ thống hóa các kiến thức nền tảng về Neural Network. Đưa ra tổng quan, ý tưởng và cách cài đặt của các mô hình mạng RNN cơ sở đã sử dụng để xây dựng nên mô hình mạng cho bài toán Phân tích ngữ nghĩa. Chương 3 Bài toán Phân tích ngữ nghĩa và mô hình mạng SEQ2SEQ-BRNN: Mô tả chi tiết bài toán Phân tích ngữ nghĩa. Ứng dụng của bài toán này vào giải quyết các vấn đề trong thực tế và các kết quả nghiên cứu cho đến thời điểm hiện tại trên thế giới. Phân tích nhược điểm của mô hình SEQ2SEQ và đề xuất mô hình mới SEQ2SEQBRNN. 11 Chương 4 Dữ liệu: Mô tả bộ dữ liệu cho mô hình SEQ2SEQ và mô hình đề xuất SEQ2SEQ-BRNN, và luồng xử lý của bộ dữ liệu đối với từng mô hình. Chương 5 Thực nghiệm và hiệu quả: Trình bày kết quả cài đặt, thử nghiệm các mô hình mạng cho các nhiệm vụ của đồ án. Phân tích, đánh giá, so sánh và giải thích các kết quả thu được. Chương 6 Kết luận: Trình bày kết luận chung của Đồ án tốt nghiệp, các công việc đã làm được và chưa làm được trong khuôn khổ thực hiện đồ án tốt nghiệp. Định hướng cải tiến mô hình mạng để phát triển và hoàn thiện các kết quả đạt được. Chương 7 Tài liệu tham khảo: Danh sách các tài liệu, bài viết đã tham khảo. Sinh viên thực hiện: Nguyễn Minh Phương, 20122250, K57, Lớp CNTT-TT 2.01 12 2. Kiến thức cơ sở Tổng quan Chương này cung cấp những kiến thức cơ sở để hiểu về phương pháp xử lý bài toán Phân tích ngữ nghĩa. Đồng thời đưa ra các mô hình cơ bản trong Neuron Network và kiến trúc của từng mô hình để giúp ta hiểu rõ hơn về vai trò của chúng trong việc giải quyết bài toán này. 2.1 Deep learning Trí tuệ nhân tạo: (thường được viết tắt là AI - Artificial Intelligence) là một ngành trọng yếu của tin học và đang là xu hướng phát triển của ngành công nghệ hiện đại. Có nhiều định nghĩa (quan điểm) về trí tuệ nhân tạo, nhưng nhìn chung trí tuệ nhân tạo là các hệ thống có quá trình suy nghĩ (hoặc hành động) một cách hợp lý như của con người [8]. Các vấn đề được giải quyết bởi trí tuệ nhân tạo thường là các vấn đề cần các kĩ thuật suy diễn không chắc chắn, tính toán mềm, không có một lối mòn tính toán cụ thể, . . . Học máy: (thường được viết tắt là ML - Machine Learning) là một lĩnh vực của trí tuệ nhân tạo liên quan đến việc nghiên cứu và xây dựng các kĩ thuật cho phép các hệ thống "học" tự động từ dữ liệu để giải quyết những vấn đề cụ thể. Khái niệm học của con người được hiểu là bổ sung, trau dồi các kiến thức, kỹ năng, kinh nghiệm, giá trị, nhận thức, . . . trong quá trình tiếp nhận thông tin và xử lý các vấn đề của thế giới thực tế. Tương tự như vậy, chương trình giúp máy có thể tích lũy được thông tin, kiến thức từ các vấn đề cho trước và giải quyết các vấn đề tương tự trong tương lai thì được coi là máy "học". Deep learning: là một nhánh đặc biệt của ngành học máy. Deep learning sử dụng mạng Neuron nhân tạo (Artificial Neural Network - ANN) để mô hình dữ liệu trừu tượng hóa ở mức cao. Mạng Neuron nhân tạo là mô hình xử lý thông tin được mô phỏng dựa trên hoạt động của hệ thống thần kinh sinh học [7]. Chúng ta đều biết cấu tạo bộ não sinh vật bao gồm hàng tỷ các tế bào thần kinh (Neuron) được liên kết với nhau và truyền thông tin cho nhau thông qua các xung thần kinh. Dựa trên ý tưởng đó, ANN được xây dựng bao gồm số lượng lớn các Neuron được gắn kết với nhau, mỗi Neuron là một hàm biến đổi trong toán học. Chúng liên kết với nhau thông qua các ma trận trọng số, dạng tín hiệu lan truyền là các ma trận hoặc vector. Các thông tin từ thế giới thực sẽ được chuyển hóa thành các ma trận lan truyền qua ANN và kết quả thu được lại chuyển hóa về các quyết định trên thế giới thực. 13 2.2 2.2.1 Kiến trúc của một ANN Neuron Khái niệm: Neuron là đơn vị cấu tạo nên ANN. Cấu trúc của một Neuron cơ bản bao gồm 5 thành phần chính: Hình 2.1: Cấu trúc một Neuron • Các tín hiệu đầu vào x = [x1 , x2 , . . . , xm ]. • Trọng số w = [w1 , w2 , . . . , wm ]. Mỗi tín hiệu đầu vào xi=1→m gắn với một trọng số wi . Ngoài ra để tăng khả năng phân loại ta thường bổ sung thêm x0 = 1 tương ứng với trọng số điều chỉnh w0 (hay còn gọi là bias). • Đầu vào tổng thể Net là hàm tích hợp các tín hiệu đầu vào. Net(x, w) = x .w = T m X xi wi + w0 (2.1) i=1 • Hàm tác động (hoặc chuyển tiếp) tính giá trị đầu ra của Neuron: f (Net(x, w)). • Giá trị đầu ra (Output) của Neuron: Out = f (Net(x, w)) 2.2.2 Tầng Neuron Khái niệm: Tầng Neuron (hay Layer) là tập các Neuron có cùng một hàm tác động f , cùng input x đầu vào và chỉ khác nhau ở tập trọng số của từng Neuron. Trọng số của tầng được tổng hợp từ tập trọng số của các Neuron trong tầng và dưới dạng ma trận wm×n (với m là số lượng tín hiệu đầu vào, n là số lượng Neuron trong tầng). Để thuận tiện và đơn giản trong mô tả cấu trúc của một ANN, ta thường dùng khái niệm tầng thay vì chỉ rõ đến từng Neuron. Sinh viên thực hiện: Nguyễn Minh Phương, 20122250, K57, Lớp CNTT-TT 2.01 14 Cấu trúc: Cấu trúc của một ANN phải có: • Một tầng đầu vào (input layer) • Một tầng đầu ra (output layer) • Không, một, hoặc nhiều tầng ẩn (hidden layer(s)) - Ví dụ ANN đơn giản (hình 2.2): Hình 2.2: Cấu trúc một ANN đơn giản – Đầu vào (input): chứa 3 tín hiệu x = [x1 , x2 , x3 ]. – Tầng ẩn (hidden layer): chứa 4 Neuron nên ma trận trọng số của tầng ẩn whidden layer ∈ R3×4 . – Tầng đầu ra (ouput layer): chứa 2 Neuron nên ma trận trọng số của tầng đầu ra woutput layer ∈ R4×2 . 2.2.3 Phương pháp học Có 2 kiểu học trong mạng ANN là: • Học tham số (Parameter learning). Mục tiêu là thay đổi thích nghi các trọng số (weights) của các liên kết trong ANN. • Học cấu trúc (Structure learning). Mục tiêu là thay đổi thích nghi cấu trúc mạng, bao gồm số lượng các Neuron và các kiểu liên kết giữa chúng * Trong đồ án này chỉ xét đến kiểu học tham số. Sinh viên thực hiện: Nguyễn Minh Phương, 20122250, K57, Lớp CNTT-TT 2.01 15 Hình 2.3: Mô hình mạng trước và sau học khi tham số Hình 2.4: Mô hình mạng trước và sau khi học cấu trúc liên kết 2.2.4 Đặc trưng: Dựa trên số lượng liên kết và cách thức liên kết giữa các tầng, ANN có một vài đặc trưng sau: • ANN liên kết đầy đủ (fully connected): nếu mọi đầu ra từ một tầng liên kết với mọi Neuron của tầng kế tiếp. • ANN lan truyền tiến (feed-forward network): nếu không có bất kỳ đầu ra của một nút là đầu vào của một nút khác thuộc cùng tầng (hoặc thuộc một tầng phía trước). Hình 2.5: ANN lan truyền tiến • ANN phản hồi (feedback network): nếu các đầu ra của một nút liên kết ngược lại làm các đầu vào của một nút thuộc cùng tầng (hoặc thuộc một tầng phía trước). Sinh viên thực hiện: Nguyễn Minh Phương, 20122250, K57, Lớp CNTT-TT 2.01 16 Hình 2.6: ANN phản hồi • ANN hồi quy (recurrent networks): nếu là ANN phản hồi và có các vòng lặp kín (closed loops). Hình 2.7: ANN hồi quy 2.2.5 Hàm đánh giá lỗi Khái niệm: Hàm đánh giá lỗi (Error function) là hàm xác định giá trị lỗi giữa giá trị đầu ra của ANN và giá trị đầu ra mong muốn. Việc học của một ANN là học ra bộ trọng số của tất cả các liên kết trong ANN để cực tiểu hóa giá trị của hàm đánh giá lỗi. Ta sử dụng phương pháp Gradient Descent để cực tiểu hóa giá trị hàm đánh giá lỗi. Ví dụ: (Để đơn giản ta sử dụng hàm đánh giá lỗi dựa trên khoảng cách Euclid, các hàm đánh giá lỗi khác hiệu quả và phức tạp hơn sẽ được trình bày ở từng mô hình cụ thể của đồ án này). Sinh viên thực hiện: Nguyễn Minh Phương, 20122250, K57, Lớp CNTT-TT 2.01 17 • Giả sử ANN có k output (hay k Neuron ở tầng ouput) Out ∈ Rk • Với một tập các ví dụ học D = {(x, y)} – x là vector đầu vào – y là vector đầu ra mong muốn • Hàm đánh giá lỗi: – Lỗi của 1 input x k X (yi − Outi )2 E x (w) = i=1 – Lỗi của toàn bộ tập học D: E D (w) = 2.2.6 1 X 1 X E x (w) = (yi − Outi )2 |D| x∈D |D| x∈D Giải thuật học - Backpropagation Gradient của E (ký hiệu là ∇E) là một vector, ∇E xác định hướng gây ra việc tăng nhanh nhất (steepest increase) đối với giá trị lỗi E. Vì vậy, hướng gây ra việc giảm nhanh nhất (steepest decrease) là giá trị phủ định của ∇E. Ta sử dụng ∇w E(w) để cập nhật trọng số cho w cho đến khi E(w) đạt được cực tiểu. ! ∂E ∂E ∂E ∂E ∇E(w) = , , ,..., (2.2) ∂w1 ∂w2 ∂w3 ∂wH ∆w = −η∇E(w) ∆wi = −η ∂E , ∂wi (2.3) ∀i = 1, . . . , H (2.4) (Trong đó: H là tổng số các trọng số (các liên kết) trong mạng) Học w bằng cách lặp liên tục: w(t) = w(t−1) + ∆w(t) (2.5) Giải thuật học Backpropagation (BP) là giải thuật học các trọng số cho mạng ANN. Giải thuật này dựa trên chiến lược Gradient Descent trong quy tắc cập nhật các trọng số cho mạng ANN qua từng vòng lặp. Qua các vòng lặp, giá trị hàm lỗi sẽ giảm dần đến cực tiểu (giá trị của hàm lỗi nhỏ hơn 1 giá trị cực bé hoặc số vòng lặp dữ liệu đủ lớn). Mô hình ANN thu được sau khi thực hiện giải thuật này có khả năng đưa ra các dự đoán với độ chính xác cao nếu các dữ liệu đưa vào quá trình học đủ lớn và tốt. Giải thuật BP bao gồm 2 giai đoạn (bước): Giai đoạn lan truyền tiến tín hiệu (Signal forward). Các tín hiệu đầu vào (vector các giá trị đầu vào) được lan truyền tiến từ tầng đầu vào đến tầng đầu ra (đi qua các tầng ẩn). Sinh viên thực hiện: Nguyễn Minh Phương, 20122250, K57, Lớp CNTT-TT 2.01 18 Giai đoạn lan truyền ngược lỗi (Error backward) – Căn cứ vào giá trị đầu ra mong muốn của vector đầu vào, hệ thống tính toán giá trị lỗi. – Bắt đầu từ tầng đầu ra, giá trị lỗi được lan truyền ngược qua mạng, từ tầng này qua tầng khác (phía trước), cho đến tầng đầu vào. – Việc lan truyền ngược lỗi (error back-propagation) được thực hiện thông qua việc tính toán (một cách truy hồi) giá trị gradient cục bộ của mỗi Neuron. 2.3 Mô hình Recurrent Neural Network Khái niệm: Mô hình Recurrent Neural Network (RNN) là mô hình mạng hồi quy, có khả năng xử lý được thông tin dạng chuỗi (sequential information). Dữ liệu dạng chuỗi (sequence) là các dữ liệu có tính tuần tự, nối tiếp nhau và trình tự đó là một phần thông tin của dữ liệu. Trong thực tế có rất nhiều dữ liệu ở dạng chuỗi (ví dụ: chuỗi các từ trong một câu nói, dữ liệu âm thanh trong một bản nhạc, . . . ). Đồng thời, cũng có khá nhiều bài toán cần phải xử lý dữ liệu dạng chuỗi như phân tích cảm xúc trong câu nói, nhận diện tên thực thể trong câu nói (Named Entity Recognition - NER), nhận dạng hành động trong video, . . . Các mô hình mạng khác như mạng Neuron tích chập, mạng Neuron truyền thẳng thường phát huy hiệu quả tốt ở các bài toán phân loại tuy nhiên các mạng này không tận dụng được các đặc trưng trong quan hệ của dữ liệu. RNN ra đời để khắc phục các nhược điểm đó và trở thành một trong những mô hình Deep learning được đánh giá có nhiều ưu điểm trong các tác vụ xử lý ngôn ngữ tự nhiên (Natural Language Processing - NLP). Kiến trúc: Như ta thấy (Hình 2.8) mô hình mạng RNN mang tính chất của một mạng hồi quy, output của bước hiện tại là một phần input của bước kế tiếp. Vì vậy, khi ta giải đệ quy và trải ra (unfold) thì ta sẽ được một máy trạng thái theo thời gian. Hình 2.8: Kiến trúc mạng RNN Điểm khác biệt của mạng RNN sau khi giải đệ qui so với mạng lan truyền tiến thông thường (Hình 2.9) ở chỗ RNN tái sử dụng lại các W giữa các layer liên tiếp, trong khi mạng lan truyền tiến thì sử dụng các bộ W i khác nhau. Sinh viên thực hiện: Nguyễn Minh Phương, 20122250, K57, Lớp CNTT-TT 2.01 19 Hình 2.9: Mạng lan truyền tiến 3 layer Mô hình RNN với dữ liệu tầng input là một chuỗi, mô hình thực hiện lặp cùng một tác vụ với từng phần tử của chuỗi. Các phần tử của chuỗi lần lượt được đẩy vào mô hình, do các kết quả ouput từng phần tử tại một thời điểm t không chỉ phụ thuộc vào input xt mà còn phụ thuộc vào kết quả của bước trước đó st−1 , vì vậy mà mô hình RNN có khả năng học được mối quan hệ của chuỗi input, hay nói cách khác, RNN là một mô hình có trí nhớ (memory), có khả năng nhớ được các thông tin đã tính toán trước đó. Giải thuật học Backpropagation Through Time: Giải thuật - Backpropagation Through Time (BPTT) là giải thuật cập nhật trọng số cho mạng RNN. Giải thuật cũng được xây dựng dựa trên kĩ thuật Gradient Descent để cập nhật trọng số của mô hình qua từng vòng lặp. Ý tưởng chính của giải thuật là ta unfold RNN thành như một mạng Neuron thông thường với k Neuron (Hình 2.8). Ta thực hiện cập nhật cho k phần tử liên tiếp trong chuỗi n phần tử đầu vào. Thực hiện cho đến khi toàn bộ n phần tử trong chuỗi input đều được cập nhật. Sinh viên thực hiện: Nguyễn Minh Phương, 20122250, K57, Lớp CNTT-TT 2.01 20 Algorithm 1 Thuật toán Backpropagation Through Time Require: Dữ liệu D = {(x, y)} // x[t] là input tại thời điểm t. y[t] là ouput kì vọng. Ensure: w Giải đệ qui RNN thành một mạng Neuron lan truyền tiến gồm k phần tử Neuron. for iE poch = 1, . . . , ∞ do Khởi tạo s = zero // s là vector ngữ cảnh thời điểm hiện tại. for t = 0, ..., n − k do Sinh tập inputs = {s, x[t], x[t + 1], . . . , x[t + k − 1]}. out = lan truyền tiến tập inputs qua mạng Neuron vừa được giải đệ quy. E = y[t + k] − out; // giá trị lỗi = giá trị kì vọng - giá trị dự đoán hiện tại. Lan truyền ngược lỗi E qua mạng Neuron vừa được giải đệ quy. Tính tổng gía trị thay đổi của các weight trong k Neuron. Cập nhật thay đổi cho tất cả trọng số của các Neuron. s = f (s, x[t]); // Tính giá trị vector ngữ cảnh cho vòng lặp tiếp theo. end for if gặp điều kiện dừng then // điều kiện dừng có thể là số chu kì (MAX_EPOCH) , ngưỡng lỗi nhỏ nhất, . . . break end if end for 2.3.1 Mô hình RNN cơ bản Tổng quan: Mô hình RNN cơ bản đầu tiên ra đời vào những năm 80 của thế kỉ XX, trên lý thuyết mô hình RNN có khả năng nhớ được thông tin của một chuỗi chiều dài bất kì. Tuy nhiên trên thực tế mô hình RNN cơ bản chỉ nhớ được thông tin của vài bước trước đó, hay nói cách khác những ảnh hưởng của input xt−∆t đến ouput ot bị tiêu biến khi ∆t lớn. Cơ sở để có thể ứng dụng các mô hình RNN vào các mô hình ngôn ngữ được là do mô hình ngôn ngữ cũng có xác suất dự đoán tương tự như kiến trúc của RNN: P(x1 , x2 , . . . , xn ) = n Y P(xi |x1 , x2 , . . . , xi−1 ) i=1 Cài đặt: Khi cài đặt mô hình RNN ta cần cấu hình một vài tham số, tùy thuộc vào bài toán mà ta áp dụng nên chọn tham số cho phù hợp. • Tham số cài đặt: – m: Số chiều vector input – n: Kích thước tầng ẩn – k: Số chiều vector ouput • Mô hình: Sinh viên thực hiện: Nguyễn Minh Phương, 20122250, K57, Lớp CNTT-TT 2.01 21 Hình 2.10: Mạng RNN – Các hàm tác động: st = tanh(Uxt + W st−1 + b s ) (2.6) ot = so f tmax(Vst + bo ) (2.7) Trong đó: ∗ xt ∈ Rm : input thứ t trong chuỗi input ∗ U ∈ Rn×m , W ∈ Rn×n , V ∈ Rk×n : các trọng số mô hình ∗ b s ∈ Rn , bo ∈ Rk : thành phần bias – Hàm lỗi: Đối với các mô hình có nhiệm vụ phân loại, tầng ouput sử dụng so f tmax thì hàm lỗi thường được sử dụng nhất là Cross−Entropy. Hàm này có ưu điểm hội tụ nhanh hơn so với hàm lỗi sử dụng khoảng cách Euclid và công thức Gradient cập nhập trọng số cũng đơn giản, thuận tiện trong tính toán. X 1X E= Et = − y log(ot ) (2.8) T t t t Trong đó: ∗ Et ∼ E xt (U, W, V, b s , bo ) ∗ yt : đầu ra mong muốn với input xt . ∗ ot : đầu ra từ biểu thức (2.7). ∗ T : tổng số phần tử chuỗi input. • Cập nhật trọng số: Với thuật toán BPTT bộ trọng số của mô hình sẽ được cập nhật qua từng vòng lặp và dần học ra được bộ trọng số phù hợp nhất. X X ∂Et ∂ot ∆bo = −η ∇ bo Et = −η (2.9) ∂ot ∂bo t t ∆V = −η X ∇V Et = −η t ∆b s = −η X t ∇ bs Et = −η t ∆U = −η X ∇U Et = −η t ∆W = −η X t X ∂Et ∂ot X ∂Et ∂ot ∂st ∂ot ∂st ∂b s t (2.11) X ∂Et ∂ot ∂st t ∇W Et = −η (2.10) ∂ot ∂V X ∂Et ∂ot t (2.12) ∂ot ∂st ∂U ∂st ∂st−1 st−1 + ∂ot ∂st ∂st−1 ∂W ! Sinh viên thực hiện: Nguyễn Minh Phương, 20122250, K57, Lớp CNTT-TT 2.01 (2.13) 22 2.3.2 Mô hình Bidirectional RNN Tổng quan: Mô hình Bidirectional RNN (BRNN) (Schuster và cộng sự, năm 1997) [10] là mô hình mở rộng của RNN, mô hình này gồm 2 RNN ngược chiều nhau hợp lại. Ý tưởng của mô hình xuất phát từ việc muốn đánh giá một vấn đề phải nhìn nhận hoàn cảnh xung quanh của nó. Như đã trình bày, mô hình RNN có thể ghi nhận các thông tin phía trước để nâng cao chất lượng dự đoán ở thời điểm hiện tại, tuy nhiên trong nhiều trường hợp, dự đoán ở thời điểm hiện tại cần kết hợp cả thông tin phía trước và phía sau nó. Vì vậy mô hình BRNN ra đời để khắc phục nhược điểm này của RNN. Ví dụ: Trong bài toán nhận diện tên các thực thể trong 1 câu nói (NER). - Nguyễn_Trãi cũng là tên một con_đường ở Hà_Nội. Từ “Nguyễn_Trãi” nếu trong mô hình RNN sẽ được nhận diện là tên người, còn trong mô hình BRNN sẽ nhận diện được đây là tên của một địa danh do tổng hợp được thông tin các từ “con_đường ở Hà_Nội” đứng phía sau nó. Cài đặt: Bằng cách đảo ngược quá trình lan truyền giữa các trạng thái, tầng ẩn (st ) của mỗi −s ) và lan truyền ngược phần tử trong mạng BRNN được kết hợp từ cả chuỗi lan truyền tiến (→ t ← − ( s t ). Các tham số cài đặt mô hình BRNN tương tự với tham số cài đặt mô hình RNN. • Tham số cài đặt: – m: Số chiều vector input – n: Kích thước tầng ẩn – k: Số chiều vector ouput • Mô hình: Hình 2.11: Mạng BRNN – Các hàm tác động: f stf = tanh(U f xt + W f st−1 + b sf ) sbt = tanh(U b xt + W b sbt+1 ot = so f tmax(V b sbt + + V f stf (2.14) bbs ) (2.15) + bo ) (2.16) Sinh viên thực hiện: Nguyễn Minh Phương, 20122250, K57, Lớp CNTT-TT 2.01 23 Trong đó: ∗ xt ∈ Rm : input thứ t trong chuỗi input ∗ U f ∈ Rn×m , W f ∈ Rn×n , V f ∈ Rk×n : các trọng số liên kết với tầng lan truyền tiến (Forward Layer) ∗ Ub ∈ Rn×m , W b ∈ Rn×n , V b ∈ Rk×n : các trọng số liên kết với tầng lan truyền ngược (Backward Layer) ∗ b sf ∈ Rn , b sf ∈ Rn , bo ∈ Rk : thành phần bias – Hàm lỗi: Vẫn mang các đặc điểm tương tự của RNN nên BRNN cũng sử dụng hàm lỗi Cross − Entropy để đánh giá độ lỗi và là hàm mục tiêu cần tối thiểu hóa. E= X Et = − t 1X y log(ot ) T t t (2.17) Trong đó: ∗ Et ∼ E xt (U f , Ub , W f , W b , V b , V f , bbs , b sf , bo ) ∗ yt : đầu ra mong muốn với input xt ∗ ot : đầu ra từ biểu thức • Cập nhật trọng số: Tương tự mô hình RNN 2.3.3 Mô hình Deep RNN Tổng quan: Mô hình Deep RNN (DRNN) (đề xuất bởi Alex Graves và cộng sự, năm 2013) [4] cũng là một mô hình mở rộng của RNN, mô hình này kết hợp nhiều RNN cùng chiều chồng với nhau để tăng khả năng biểu diễn dữ liệu dạng chuỗi cho các bài toán. Mô hình RNN cơ bản khi ứng dụng vào các bài toán có dữ liệu phức tạp (đặc biệt trong xử lý âm thanh, tiếng nói, . . . ) không thực sự phát huy được hiệu quả. Như đã mô tả RNN cơ bản hồi qui 1 tầng để biểu diễn dữ liệu theo thời gian, vì vậy đối với dữ liệu phức tạp thì 1 tầng này không biểu diễn được đầy đủ thông tin của dữ liệu. Ta thực hiện mở rộng mô hình mạng bằng cách đưa thêm các tầng RNN chồng nhau theo chiều dọc (hình 2.12) (coi rằng chiều ngang là chiều các layer sau khi RNN giải đệ quy (unfold)). Cài đặt: Khi cài đặt mô hình RNN ta cần cấu hình các tham số: • Tham số cài đặt: – m: Số chiều vector input – n: Kích thước tầng ẩn – k: Số chiều vector ouput – L: Số tầng RNN ẩn • Mô hình: Sinh viên thực hiện: Nguyễn Minh Phương, 20122250, K57, Lớp CNTT-TT 2.01 24 Hình 2.12: Mạng Deep RNN sử dụng 3 RNN – Các hàm tác động: (1) s(1) = tanh(Uxt + W (1) s(1) t t−1 + b s ) (2.18) (l) s(l) = tanh(V (l−1) s(l−1) + W (l) s(l) t t t−1 + b s ) với 1 < l ≤ L (2.19) ot = so f tmax(V st + bo ) (L) (2.20) Trong đó: ∗ xt ∈ Rm : input thứ t trong chuỗi input ∗ U ∈ Rn×m : trọng số liên kết tầng input và RNN(1) ∗ W (l) ∈ Rn×n : trọng số liên kết giữa các tầng ẩn của RNN(l) ∗ V (l) ∈ Rn×n với 1 ≤ l < L: trọng số liên kết giữa RNN(l) và RNN(l+1) ∗ V (L) ∈ Rk×n : trọng số liên kết giữa RNN(L) và output n (l) ∗ b(l) s ∈ R : thành phần bias tầng ẩn RNN ∗ bo ∈ Rk : thành phần bias tầng ouput – Hàm lỗi: Vẫn mang các đặc điểm tương tự của RNN nên Deep RNN cũng sử dụng hàm lỗi Cross − Entropy để đánh giá độ lỗi và là hàm mục tiêu cần tối thiểu hóa. X 1X E= Et = − y log(ot ) (2.21) T t t t Trong đó: ∗ Et ∼ E xt (U, W (l) , V (l) , b(l) s , bo ) ∗ yt : đầu ra mong muốn với input xt ∗ ot : đầu ra từ biểu thức 2.3.4 Mô hình RNN kết hợp Long Short-Term Memory Tổng quan: Như đã nói trên mô hình RNN trên lý thuyết có thể nhớ được chuỗi input với chiều dài bất kì, tuy nhiên trên thực tế thì RNN cơ bản chỉ nhớ được thông tin của vài Sinh viên thực hiện: Nguyễn Minh Phương, 20122250, K57, Lớp CNTT-TT 2.01 25 bước trước đó. Vấn đề này là do đạo hàm bị tiêu biến trong quá trình cập nhật trọng số của chuỗi dài (Vanishing Gradient). Và đây cũng là lý do ra đời của Long-Short-Term-Memory (LSTM) (đề xuất bởi Hochreiter và cộng sự, năm 1997) [5] để khắc phục vấn đề Vanishing Gradient trong chuỗi dài. Vấn đề Vanishing Gradient: ta có: Từ các biểu thức cài đặt của mô hình RNN cơ bản phần 2.10 E = X Et = − t 1X y log(ot ) T t t t X ∂Et ∂st ∂sτ ∂Et = ∂W ∂st ∂sτ ∂W τ=1 ∂Et ∂st ∂st−1 ∂sτ+1 ∂Et ∂st ∂Et = · · · ... · ≤ ηt−τ ∂st ∂sτ ∂st ∂st−1 ∂st−2 ∂sτ ∂st (2.22) (2.23) (2.24) Với st là một vector thì ∂s∂st−1t là ma trận Jacobian. Xét các giá trị trị riêng ma trận (ρ) từng phẩn tử trong công thức (2.24): ∂Et ∂st = ∂Et ∂sT · ∂sT ∂sT −1 · ρ<1 ∂st ∂st−1 = ∂Et ∂sT · ∂sT ∂sT −1 ∂sT −1 ∂sT −2 · ... · ρ<1 · ρ>1 ∂sT −1 ∂sT −2 · ... · ρ>1 ∂st+1 ∂st ∂Et 1 ⇒ Vanishing gradient ∂W ρ < 1 ∂st+1 ∂st ∂Et 1 ⇒ Exploding gradient ∂W ρ > 1 (2.25) (2.26) Đối với vấn đề Exploding Gradient ta sử dụng thuật toán Gradient Clipping với ý tưởng chính là đặt một giới hạn không cho phép Gradient vượt quá giá trị giới hạn đó. Đối với vấn đề Vanishing Gradient ta sử dụng cấu trúc LSTM, cấu trúc LSTM bao gồm nhiều trạng thái biến đổi phức tạp, làm giảm tốc độ tiêu biến của Gradient, tăng khả năng ghi nhớ trong các câu dài. Cài đặt: Khi cài đặt mô hình RNN-LSTM ta cần cấu hình các tham số: • Tham số cài đặt: – m: Số chiều vector input – n: Kích thước tầng ẩn – k: Số chiều vector ouput • Mô hình: Sinh viên thực hiện: Nguyễn Minh Phương, 20122250, K57, Lớp CNTT-TT 2.01 26 Hình 2.13: Cấu trúc 1 state Hình 2.14: Mạng RNN sử dụng LSTM • Các hàm tác động: i = sigmoid(U(i) xt + W (i) st−1 ) (2.27) f = sigmoid(U( f ) xt + W ( f ) st−1 ) (2.28) u = sigmoid(U(u) xt + W (u) st−1 ) (2.29) ct = ct−1 (2.30) f + c̃t i c̃t = tanh(U(c̃) xt + W (c̃) st−1 ) (2.31) st = tanh(ct ) (2.32) u ot = so f tmax(Vst + b) (2.33) Trong đó: – xt ∈ Rm : input thứ t trong chuỗi input – U(i) , U( f ) , U(u) , U(c̃) : trọng số liên kết tầng input – W (i) , W ( f ) , W (u) , W (c̃) : trọng số liên kết giữa các tầng ẩn của RNN-LSTM – V, b: trọng số, bias tầng ouput. • Hàm lỗi: Vẫn mang các đặc điểm tương tự của RNN nên RNN khi kết hợp LSTM cũng sử dụng hàm lỗi Cross − Entropy để đánh giá độ lỗi và là hàm mục tiêu cần tối thiểu hóa. X 1X E= Et = − y log(ot ) (2.34) T t t t Sinh viên thực hiện: Nguyễn Minh Phương, 20122250, K57, Lớp CNTT-TT 2.01 27 2.3.5 Mô hình Sequence to Sequence - attention Tổng quan: Mô hình Sequence to Sequence (đề xuất bởi Sutskever và cộng sự, năm 2014) [11] là một biến thể của mạng RNN. Mô hình này kết hợt 2 RNN nối tiếp nhau, một RNN đóng vai trò mã hóa chuỗi input, RNN còn lại đóng vai trò là bộ giải mã dữ liệu. Hình 2.15: Mạng SEQ2SEQ Mô hình này thường được áp dụng vào các bài toán mà đầu vào là một chuỗi input và ta cần sinh ra một chuỗi ouput khác từ đó. Các bài toán thực tế dạng như vậy có thể kể đến như dịch máy, robot trả lời tự động, phân tích ngữ nghĩa của câu, . . . Nếu coi chuỗi đầu vào là x = x1 ...xn chuỗi giải mã ra được là y = y1 ...ym ta có biểu thức xác suất để sinh được y từ x là: p(y|x) = m Y p(yt |y<t , x) với: y<t = y1 ...yt−1 (2.35) t=1 Mô hình SEQ2SEQ cơ bản như Hình 2.15 thông thường rất khó để sinh được chuỗi ouput cho các bài toán do mất mát thông tin trong quá trình nén và chuyển tiếp từ RNN encoder sang RNN decoder. Để khắc phục nhược điểm này, ta cần bổ sung thêm thông tin trợ giúp (attention) cho quá trình giải mã. Với ý tưởng đó, mô hình SEQ2SEQ kết hợp attentionmechanism (Dzmitry Bahdanau và cộng sự, năm 2014 [1]; Luong và cộng sự, năm 2015b [9]) được đưa ra. Mô hình này bổ sung thông tin bằng cách thêm một vector context chứa ngữ cảnh của toàn bộ chuỗi input để tăng cường thông tin cho quá trình giải mã (Hình 2.16). Cài đặt: • Tham số cài đặt: – m: Số chiều vector input – n: Kích thước tầng ẩn – k: Số chiều vector ouput – L: Số tầng RNN ẩn • Mô hình SEQ2SEQ-attention: Sinh viên thực hiện: Nguyễn Minh Phương, 20122250, K57, Lớp CNTT-TT 2.01 28 Hình 2.16: Mô hình SEQ2SEQ-attention – Các hàm tác động: exp{skL · stL } sk,t = P M j=1 context t = M X exp{sLj · stL } sk,t · skL (2.36) (2.37) k=1 at t t = tanh(W 1 stL + W 2 context t ) ot = so f tmax(W o at t t ) (2.38) (2.39) Trong đó: ∗ L: Số lớp RNN tương tự như trong mô hình DRNN. ∗ M: Số lượng input của chuỗi Input. ∗ t: Chỉ số của ouput thứ t trong RNN-Decoder. ∗ k, j: Chỉ số của một input rong RNN-Encoder. ∗ st : là vector trạng thái ẩn thứ t của chuỗi RNN-Decoder. ∗ sk : là vector trạng thái ẩn thứ k của chuỗi RNN-Encoder. ∗ sL : là vector trạng thái ẩn ở tầng L (tầng cuối cùng). – Hàm lỗi: Mô hình SEQ2SEQ kết hợp attention là tổ hợp của RNN-Encoder và RNN-Decoder vì vậy ta cũng sử dụng hàm lỗi Cross − Entropy để đánh giá độ lỗi và là hàm mục tiêu cần tối thiểu hóa. E= X t Et = − 1X y log(ot ) T t t Sinh viên thực hiện: Nguyễn Minh Phương, 20122250, K57, Lớp CNTT-TT 2.01 (2.40) 29 3. Bài toán Phân tích ngữ nghĩa và mô hình mạng SEQ2SEQ-BRNN 3.1 Xử lý ngôn ngữ tự nhiên Xử lý ngôn ngữ (XLNN) là kĩ thuật giúp máy tính “hiểu” được ngôn ngữ của con người (ngôn ngữ thường được biểu diễn dạng ký tự). Khái niệm máy tính “hiểu” ở đây được coi như việc việc máy tính có thể lấy được các thông tin trong ngôn ngữ nói của con người như thông tin về thời gian, địa điểm, chủ thể hành động, loại hành động, . . . xử lý và phản ánh lại các thông tin hữu ích cho con người. Nếu có thể hiểu được ngôn ngữ, máy tính có thể thực hiện và giúp đỡ con người trong những công việc có liên quan đến ngôn ngữ như: dịch thuật, phân tích dữ liệu văn bản, nhận dạng tiếng nói, tìm kiếm thông tin, . . . hoặc trong đời sống như: thực hiện giao tiếp nói chuyện với con người, thực hiện công việc hàng ngày qua lời nói, phiên dịch viên, . . . Việc ứng dụng của xử lý ngôn ngữ tự nhiên vào thế giới thực, đặc biệt là thời đại công nghệ như hiện nay là vô cùng lớn, vì vậy ngành XLNN thu hút được rất nhiều nhà nghiên cứu cũng như học giả khám phá và chinh phục. Tuy nhiên, XLNN vấp phải vô vàn khó khăn, mà lớn nhất phải kể đến sự khó khăn về nhân sự. Những người nắm giữ những kiến thức về XLNN quả thực không nhiều, và cũng không có được 1 mạng lưới liên kết, trao đổi và hỗ trợ một cách hiệu quả. Ngoài ra, những khó khăn khác như không có dữ liệu đủ lớn, thiếu những nghiên cứu nền tảng, ... cũng hạn chế không ít sự phát triển của XLNN. Mục tiêu cuối cùng của xử lý ngôn ngữ tự nhiên là giúp máy tính “hiểu” được ngôn ngữ của con người. Để làm được việc đó, xử lý ngôn ngữ tự nhiên truyền thống chia ra làm 5 giai đoạn (theo wikipedia [13]): • Phân tích hình thái - Trong bước này từng từ sẽ được phân tích và các ký tự không phải chữ (như các dấu câu) sẽ được tách ra khỏi các từ. Trong tiếng Anh và nhiều ngôn ngữ khác, các từ được phân tách với nhau bằng dấu cách. Tuy nhiên trong tiếng Việt, dấu cách được dùng để phân tách các tiếng (âm tiết) chứ không phải từ. Cùng với các ngôn ngữ như tiếng Trung, tiếng Hàn, tiếng Nhật, phân tách từ trong tiếng Việt là một công việc không hề đơn giản. • Phân tích cú pháp - Dãy các từ sẽ được biến đổi thành các cấu trúc thể hiện sự liên kết giữa các từ này. Sẽ có những dãy từ bị loại do vi phạm các luật văn phạm. • Phân tích ngữ nghĩa - Thêm ngữ nghĩa vào các cấu trúc được tạo ra bởi bộ phân tích 30 cú pháp. • Tích hợp văn bản - Ngữ nghĩa của một câu riêng biệt có thể phụ thuộc vào những câu đứng trước, đồng thời nó cũng có thể ảnh hưởng đến các câu phía sau. • Phân tích thực nghĩa - Cấu trúc thể hiện điều được phát ngôn sẽ được thông dịch lại để xác định nó thật sự có nghĩa là gì. Các giai đoạn trên có thể được thực hiện từng bước một hoặc tiến hành cùng lúc, tùy thuộc vào giải thuật, ngữ cảnh cụ thể. Từng giai đoạn này ngoài việc làm nền tảng cho các giai đoạn sau, nó còn vô cùng hữu ích cho các bài toán độc lập khác, vì vậy ta có thể coi từng giai đoạn là từng bài toán cần giải quyết. 3.2 Bài toán Phân tích ngữ nghĩa Theo như mô hình XLNNTN truyền thống, bài toán phân tích ngữ nghĩa phải được xây dựng trên nền bài toán Phân tích cú pháp, hay nói cách khác ta phải có được cấu trúc cây cú pháp sau đó thêm ngữ nghĩa vào cấu trúc đó. Tuy nhiên với hướng tiếp cận Deep learning có thể bỏ qua giai đoạn phân tích cú pháp, mô hình Deep learning chuyển hóa trực tiếp từ câu đã được phân tích hình thái thành dạng cấu trúc cú pháp có ngữ nghĩa. Có 2 phương pháp thường dùng để biểu diễn ngữ nghĩa của một câu nói là sử dụng cú pháp prolog hoặc cú pháp lambda calculus. Ví dụ: • Cú pháp prolog: Ngôn ngữ tự nhiên - job in locid0 - job use languageid0 - job on platformid0 in areaid0 • Cú pháp lambda calculus: Ngôn ngữ tự nhiên - where is c0 - river in s0 - which state has the most popul Form logic prolog job ( ANS ) , loc ( ANS , locid0 ) job ( ANS ) , language ( ANS , languageid0 ) job ( ANS ) , platform ( ANS , platformid0 ) , area ( ANS , areaid0 ) Form logic Lambda calculus lambda $0 e ( loc:t c0 $0 ) lambda $0 e ( and ( river:t $0 ) ( loc:t $0 s0 ) ) argmax $0 ( state:t $0 ) ( population:i $0 ) Cấu trúc dạng form logic như ta thấy trên ví dụ có thể biểu diễn hầu hết toàn bộ thông tin trong ngôn ngữ của con người. Nhìn vào ví dụ đầu tiên trong cú pháp calculus câu nói “where is c0”, được chuyển thể thành dạng logic “lambda $0 e ( loc:t c0 $0 )”. Khi máy tính nhận được form logic này thì sẽ hiểu các đối tượng được nói đến là “$0” sao cho thỏa mãn điều kiện “c0” có thuộc tính “loc:t” nằm ở “$0”. Tương tự như vậy với cú pháp prolog, trong ví dụ thứ 3 của cú pháp prolog, câu nói “job on platformid0 in areaid0” được chuyển thể thành 3 điều kiện “job ( ANS )”, “platform ( ANS , platformid0 )”, “ area ( ANS , areaid0 )”. Tìm được đối đượng “ANS” thỏa mãn 3 điều kiện trên là tìm được đối tượng được nhắc đến trong câu nói. Sinh viên thực hiện: Nguyễn Minh Phương, 20122250, K57, Lớp CNTT-TT 2.01 31 Bài toán: Phân tích ngữ nghĩa trong xử lý ngôn ngữ tự nhiên. • Mục tiêu: Chuyển thể một câu nói ở dạng ngôn ngữ về dạng logical form, diễn tả các thông tin có trong câu nói. • Input: Câu nói ngôn ngữ thông thường đã được phân tích hình thái (Phần 3.1). • Output: Dạng chuẩn logical form theo cú pháp lambda calculus (hoặc cú pháp prolog). 3.3 Ứng dụng Phân tích ngữ nghĩa là bước đầu trong việc thu ngắn khoảng cách khoảng cách giao tiếp giữa con người với máy tính. Việc máy tính có thể hiểu ngôn ngữ tự nhiên là nền tảng của rất nhiều ứng dụng. Sau đây là một vài ứng dụng phổ biến hiện nay: Tìm kiếm thông tin (Information retrieval): Là đưa ra được câu trả lời phù hợp nhất từ một câu hỏi được đặt ra bởi người dùng. Thông tin ngày càng đầy lên theo cấp số nhân, đặc biệt với sự trợ giúp của internet việc tiếp cận thông tin trở lên dễ dàng hơn bao giờ hết. Việc khó khăn lúc này là tìm đúng nhất thông tin mình cần giữa bề bộn tri thức và đặc biệt thông tin đó phải đáng tin cậy. Các máy tìm kiếm dựa trên giao diện web như Google hay Yahoo hiện nay chỉ phân tích nội dung rất đơn giản dựa trên tần suất của từ khoá và thứ hạng của trang và một số tiêu chí đánh giá khác để đưa ra kết luận. Kết quả là rất nhiều tìm kiếm không nhận được câu trả lời phù hợp, thậm chí bị dẫn tới một liên kết không liên quan gì do thủ thuật đánh lừa của các trang web nhằm giới thiệu sản phẩm (có tên tiếng Anh là SEO viết tắt của từ search engine optimization). Vấn đề này có thể được giải quyết khá dễ dàng nếu module phân tích ngữ nghĩa hoạt động tốt, việc chuyển hóa câu hỏi thành một dạng truy vấn và lấy kết quả từ cơ sở dữ liệu giống như đã mô tả ở phần 3.2. Lĩnh vực này hứa hẹn tạo ra bước nhảy trong cách thức tiếp nhận tri thức của cả cộng đồng. Khai phá dữ liệu (data mining) và phát hiện tri thức: Là việc từ rất nhiều tài liệu khác nhau phát hiện ra tri thức mới. Hướng tiếp cận để có thể giải quyết vấn đề này là sử dụng một module phân tích ngữ nghĩa để phân tích tất cả thông tin của văn bản về dạng tri thức logic, và dạng dữ liệu có cấu trúc. Dữ liệu này có thể lưu tại các cơ sở dữ liệu quan hệ, khi cần truy xuất thông tin nào đó có thể truy xuất dễ dàng và tập trung hơn. Thực tế để làm được điều này rất khó, nó gần như là mô phỏng quá trình học tập, khám phá khoa học của con người, đây là lĩnh vực đang trong giai đoạn đầu phát triển. Trợ lý ảo (Chatbot): Chương trình trò chuyện, thực hiện trợ giúp một vài yêu cầu cơ bản của người dùng thông qua ngôn ngữ. Trợ lý ảo là một cái tên khá nổi hiện nay, thu hút sự quan tâm của nhiều dư luận và tổ chức phần mềm trên thế giới như Microsoft với Cotarna, Apple với Siri, Samsung với Bixby, . . . Sinh viên thực hiện: Nguyễn Minh Phương, 20122250, K57, Lớp CNTT-TT 2.01 32 Việc ứng dụng phân tích ngữ nghĩa vào xây dựng trợ lý ảo cũng là một bước nền tảng, chúng ta hình dung việc giao tiếp giữa người và máy phải trải qua 2 giai đoạn là hiểu và phản hồi. Module phân tích ngữ nghĩa có thể giúp chương trình hiểu được các câu nói của con người, và từ thông tin thu được có thể đưa ra phản hồi dựa trên tri thức được cài dặt bởi nhà sản xuất hoặc tích lũy thông tin của người sử dụng theo thời gian và dùng nó làm cơ sở cho các giao tiếp sau này. Những ứng dụng của bài toán Phân tích ngữ nghĩa là vô cùng nhiều và to lớn, trên đây là những ứng dụng được coi là nổi bật hiện nay. Đồ án này với hi vọng có thể đóng góp một phần nhỏ hữu ích vào hướng giải quyết của bài toán. 3.4 3.4.1 Kết quả nghiên cứu hiện tại Kết quả hiện tại Bài toán phân tích ngữ nghĩa trong xử lý ngôn ngữ tự nhiên không phải là một bài toán mới, nó đã được nghiên cứu và phát triển trong nhiều thập kỉ với những thành tựu nhất định. Tiếp cận theo hướng sử dụng mô hình SEQ2SEQ vào giải quyết bài toán này trong thời gian gần đây có 2 bài viết của Robin Jia và cộng sự, năm 2016 [6] và Li Dong và cộng sự, năm 2016. Khi giải quyết bài toán này bằng các mô hình RNN, cụ thể là SEQ2SEQ thì luôn có một khó khăn gặp phải đó là tên các thực thể, các con số, thời gian, địa danh, . . . (gọi chung là từ hiếm - Rare Word). Các từ này thường xuất hiện với số lượng ít và đa dạng, nhưng lại có tính chất như từ khóa ngữ nghĩa. Ví dụ: Chuyển bay cất cánh lúc 5h00.pm Như ta thấy 5h00.pm là thông tin mang ý nghĩa quyết định thông tin của câu nói, là từ hiếm như mô tả trên. Ở một thời điểm khác thì các mốc thời gian có thể thay đổi 6h09.pm, 7h30.pm, . . . vô cùng đa dạng. Điều tương tự cũng xảy ra đối với tên thực thể, địa danh, . . . Đây là một cản trở khá lớn cho các mô hình mạng trong quá trình học và dự đoán. Các từ hiếm có thể chỉ xuất hiện 1, 2 lần ở tập dự đoán mà không xuất hiện ở tập học (các từ này đều được gán 1 giá trị wordid-unknow chung), và điều tất yếu xảy đến là làm giảm chất lượng dự đoán của mô hình. Cụ thể mô hình SEQ2SEQ chỉ đạt được độ chính xác 68.6% trên tập Geo và 72.3% trên tập Atis (với Geo và Atis là 2 bộ dữ liệu thường được dùng cho bài toán Phân tích ngữ nghĩa được mô tả chi tiết ở phần 4.1). Tuy nhiên, nhìn từ góc độ ngữ nghĩa, các từ này đều có chung một ý nghĩa nhất định, như ám chỉ về thời gian, địa điểm, tên người, tên đồ vật, . . . trong câu nói. Trong bài viết của Robin Jia để giải quyết vấn đề này, tác giả sử dụng cơ chế copy trong attention (Copy mechanism) để copy dữ liệu từ chuỗi input sang chuỗi output. Đồng thời mở rộng dữ liệu học theo một số luật như ABSENTITIES, ABSWHOLEPHRASES, . . . (Robin Jia và cộng sự, năm 2016 [6]) để tăng khả năng nhận diện từ hiếm. Trong bài viết của Li Dong thì giải quyết vấn đề theo một cách khác, đó là có thể tiền xử lý tái tổ hợp dữ liệu để chuyển các từ này về dạng typeid chung từng loại. Mô hình SEQ2SEQ chạy trên dữ liệu đã được tiền xử lý tái tổ hợp thì kết quả tăng lên đạt 84.2% tập Geo và 84.6% tập Atis. Sinh viên thực hiện: Nguyễn Minh Phương, 20122250, K57, Lớp CNTT-TT 2.01 33 Theo cách làm của Li Dong tuy đẩy được độ chính xác lên cao nhưng lại rất khó áp dụng vào thực tế. Việc tiền xử lý dữ liệu tái tổ hợp đòi hỏi việc phải có thông tin về các thực thể cụ thể và rõ ràng. Đặc biệt khi trong hội thoại thực tế, để xây dựng được từ điển về tất cả các loại từ hiếm là không hề đơn giản. 3.4.2 Kết quả sử dụng mô hình mạng đề xuất Đồ án này tiến hành cài đặt lại mô hình SEQ2SEQ sử dụng attention, và mô hình cải tiến SEQ2SEQ + BRNN ứng dụng cho bài toán phân tích ngữ nghĩa, chạy thử nghiệm kết quả trên 2 bộ dữ liệu Geo và Atis. Có hai trạng thái của từng bộ dữ liệu được định nghĩa: • Đã tiền xử lý: Dữ liệu đã được tiền xử lý các từ hiếm (tên các thực thể, thời gian, các con số, . . . ) về dạng typeid tương ứng. • Không tiền xử lý: Bộ dữ liệu ở dạng gốc, không qua tiền xử lý các từ hiếm. Phương pháp Dữ liệu Độ chính xác SEQ2SEQ (Li Dong và cộng sự, năm 2016) Đã tiền xử lý 84.2 SEQ2SEQ (Nguyễn Minh Phương) Đã tiền xử lý 82.72 SEQ2SEQ (Li Dong và cộng sự, năm 2016) Không tiền xử lý 68.6 SEQ2SEQ-BRNN (Nguyễn Minh Phương) Không tiền xử lý 78.8 Bảng 3.1: Kết quả trên tập Geo Phương pháp Dữ liệu Độ chính xác SEQ2SEQ (Li Dong và cộng sự, năm 2016) Đã tiền xử lý 84.6 SEQ2SEQ (Nguyễn Minh Phương) Đã tiền xử lý 83.4 SEQ2SEQ (Li Dong và cộng sự, năm 2016) Không tiền xử lý 72.3 SEQ2SEQ-BRNN (Nguyễn Minh Phương) Không tiền xử lý 79.4 Bảng 3.2: Kết quả trên tập Atis Các kết quả bước đầu cho thấy với bộ dữ liệu chưa được tiền xử lý thì sử dụng mô hình cải tiến (SEQ2SEQ + BRNN) có thể cải thiện đáng kể kết quả. 3.5 Mô hình đề xuất SEQ2SEQ-BRNN Mô hình SEQ2SEQ-BRNN được đề xuất để xử lý với tập dữ liệu chưa được tiền xử lý tái tổ hợp các từ hiếm về dạng typeid tương ứng. Mục tiêu của mô hình là làm giảm tác động tiêu cực của các từ hiếm trong câu đến kết quả dự đoán. Nhiệm vụ tái tổ hợp dữ liệu các thực thể về dạng typeid khá giống với bài toán Named Entity Recognition (NER). Với mỗi chuỗi input đưa vào sẽ được đưa qua mô hình BRNN để thực hiện tìm ra các từ hiếm và chuyển thể Sinh viên thực hiện: Nguyễn Minh Phương, 20122250, K57, Lớp CNTT-TT 2.01 34 các từ này về dạng typeid tương ứng. Kết quả thu được của BRNN sẽ tiếp tục làm đầu vào xử lý cho mô hình SEQ2SEQ. Mô hình SEQ2SEQ-BRNN (Hình 3.1) là sự kết hợp của SEQ2SEQ và BRNN: • Mô hình SEQ2SEQ có sử dụng cơ chế attention (đã trình bày phần 2.16) để bổ sung thông tin cho quá trình giải mã. Các RNN-Encoder và RNN-Decoder là các DRNN có sử dụng LSTM trong từng trạng thái ẩn. • Mô hình BRNN (tương từ như phần 2.11) cũng sử dụng LSTM trong cả 2 lớp RNN chiều xuôi và RNN chiều ngược Hình 3.1: Mô hình SEQ2SEQ-BRNN Qui ước x(i) t : Vector input thứ t trong chuỗi input của mô hình (i). (i) y(i) t : Vector đầu ra mong muốn tương ứng với input xt của mô hình (i). x(3) <b> : Vector input khởi tạo quá trình giải nén trong mô hình (3)-RNN Decoder. y(1) <none> : Vector đầu ra với nhãn < none > trong mô hình (1)-BRNN. zero: Vector có các phần tử bằng 0. L: Số lượng tầng RNN-LSTM mô hình SEQ2SEQ sử dụng. M: Số lượng phần tử của chuỗi input mô hình BRNN và RNN-Encoder. N: Số lượng phần tử của chuỗi output mô hình RNN-Decoder. Sinh viên thực hiện: Nguyễn Minh Phương, 20122250, K57, Lớp CNTT-TT 2.01 35 Các hàm tác động Để đơn giản ta chia mô hình SEQ2SEQ-BRNN ra làm 3 mô hình con là: BRNN (1), RNN-Encoder (2), RNN-Decoder(3). • Do LSTM được sử dụng lại nhiều lần ta định nghĩa LSTM thành hàm xử lý. LS T M = function (xt , ct−1 , st−1 ) i = sigmoid(U(lstm−i) xt + W (lstm−i) st−1 ) f = sigmoid(U(lstm− f ) xt + W (lstm− f ) st−1 ) u = sigmoid(U(lstm−u) xt + W (lstm−u) st−1 ) c̃t = tanh(U(lstm−c̃) xt + W (lstm−c̃) st−1 ) ct = ct−1 f + c̃t st = tanh(ct ) i u return {ct , st } end • Mô hình BRNN sử dụng 2 RNN ngược chiều nhau kết hợp LSTM. f) f) {c(1, , s(1, } = {zero, zero} 0 0 (3.1) (1,b) {c(1,b) M , s M } = {zero, zero} (3.2) f) f) (1, f ) (1, f ) {c(1, , s(1, } = LS T M(x(1) t t t , ct−1 , st−1 ) (3.3) (1,b) (1,b) {c(1,b) , s(1,b) } = LS T M(x(1) t t t , ct+1 , st+1 ) (3.4) f) u(1) = tanh(W (1) [s(1, , s(1,b) ]) t t t (3.5) o(1) = so f tmax(V (1) u(1) t t ) (3.6) • Tầng chuyển tiếp BRNN và SEQ2SEQ sử dụng 1 hàm phân loại f (merge) , với mục đích thay thế các từ có nhãn typeid (sinh bởi BRNN) vào chuỗi input ban đầu, làm input cho mô hình kế tiếp RNN-Encoder. (1) y nếu y , y<none> f (merge) (x, y) = (3.7) x nếu y = y(1) <none> (1) x(2) = f (merge) (x(1) t t , yt ) (3.8) • Mô hình RNN-Encoder sử dụng mô hình RNN mở rộng: DRNN kết hợp LSTM. {c0(2,l) , s(2,l) 0 } = {zero, zero} (2) (2,l) (2,l) {ct(2,l) , s(2,l) t } = LS T M(xt , ct−1 , st−1 ) (2,l) (2,l−1) (2,l) {c(2,l) , c(2,l) t , st } = LS T M(st t−1 , st−1 ) (3.9) với l = 1 (3.10) với 1 < l ≤ L (3.11) • Mô hình RNN-Decoder sử dụng mô hình RNN mở rộng: DRNN kết hợp LSTM. x(3) = x(3) 0 <b> {c(3,l) 0 , {c(3,l) t , {c(3,l) t , s(3,l) 0 } (3,l) st } s(3,l) t } = = = (3.12) {c(2,l) M , s(2,l) M } (3,l) (3,l) LS T M(x(3) t−1 , ct−1 , st−1 ) với l = 1 (3,l) LS T M(s(3,l−1) , c(3,l) với 1 < t t−1 , st−1 ) (3.13) (3.14) l≤L Sinh viên thực hiện: Nguyễn Minh Phương, 20122250, K57, Lớp CNTT-TT 2.01 (3.15) 36 • Attention tổng hợp RNN-Encoder và RNN-Decoder context t = at t t = o(3) = t } · s(3,L) exp{s(2,L) t (2,L) k sk P M (2,L) · s(3,L) } t j=1 exp{s j k=1 (3,L) tanh(W (3) + W (3) 1 st 2 context t ) so f tmax(W (3) o at t t ) M X (3.16) (3.17) (3.18) Hàm đánh giá lỗi Hàm lỗi của mô hình đề xuất được tổng hợp lỗi trên cả 2 mô hình BRNN và SEQ2SEQ. Kiến trúc 2 mô hình vẫn là các mô hình RNN vậy nên ta vẫn sử dụng Cross − Entropy trên từng mô hình. E = M X t=1 Et(1) + N X Et(3) (3.19) t=1 M N 1 X (3) 1 X (1) (1) y log(ot ) − y log(o(3) = − t ) M t=1 t N t=1 t (3.20) Cách train mô hình SEQSEQ-BRNN Xuất phát từ sự chênh lệch của kết quả mô hình SEQ2SEQ trên nền dữ liệu trước và sau khi tiền xử lý tái tổ hợp dữ liệu (Li Dong và cộng sự, năm 2016). Mô hình SEQ2SEQ cải thiện được chất lượng dự đoán đáng kể với dữ liệu sau khi được tiền xử lý. Tuy nhiên nhược điểm có thể thấy rõ của công việc đó là vô cùng khó áp dụng vào thực tế. Mô hình đề xuất này với mục tiêu đưa mô hình BRNN vào để học được giai đoạn tiền xử lý một cách tự động. Vì vậy để train mô hình SEQSEQ-BRNN này ta chia làm 2 giai đoạn: • Train mô hình BRNN: Input là câu trước khi tiền xử lý, output là nhãn typeid của từng từ có được sau tiền xử lý. (Ta cài đặt nhãn < none > là nhãn đặc biệt cho các từ không phải từ hiếm). • Train mô hình SEQ2SEQ: Input là câu sau khi tiền xử lý sinh bởi BRNN, output dạng form logic tương ứng. Mô hình đề xuất này cũng tồn tại những nhược điểm nhất định. Do mô hình SEQSEQBRNN là sự kết hợp của SEQ2SEQ và BRNN một cách nối tiếp nhau nên kết quả của mô hình SEQ2SEQ một phần bị tác động bởi kết quả đầu ra của mô hình BRNN. Tuy nhiên tổng hợp giữa ảnh hưởng tốt và ảnh hướng xấu của BRNN đến SEQ2SEQ thì mô hình tổng thể vẫn cho ra kết quả khá khả quan. Sinh viên thực hiện: Nguyễn Minh Phương, 20122250, K57, Lớp CNTT-TT 2.01 37 4. Dữ liệu Tổng quan: Chương này cung cấp cho ta cái nhìn chi tiết về bộ dữ liệu thử nghiệm cho bài toán Phân tích ngữ nghĩa. Đồng thời cũng giúp hiểu rõ hơn về cách xử lý dữ liệu, biến đổi của dữ liệu khi qua các mô hình BRNN và SEQ2SEQ. 4.1 Dữ liệu gốc Dữ liệu của bài toán phân tích ngữ nghĩa được thử nghiệm trong đồ án này gồm có 2 bộ dữ liệu là Geo và Atis (đây là 2 bộ dữ liệu mẫu thường được dùng cho bài toán Semantic parsing). Hai bộ dữ liệu này được tiền xử lý và sử dụng giống dữ liệu trong bài viết Language to Logical Form with Neural Attention (Li Dong và cộng sự, năm 2016). • GEO: Bộ dữ liệu gồm có 880 câu truy vấn được chuyển hóa về dạng form logic sử dụng cú pháp lambda-calculus. Bộ dữ liệu này chứa nội dung là các câu hỏi về thông tin địa lý của các thành phố, các bang, con sông, . . . của nước Mỹ. • ATIS: Bộ dữ liệu gồm có 5410 câu truy vấn về thông tin của các chuyến bay của một sân bay. Tương tự như bộ Geo, các câu truy vấn cũng được chuyển về dạng form logic sử dụng cú pháp lambda-calculus. Nội dung bộ dữ liệu chứa thông tin chuyến bay bao gồm ngày, tháng năm, thời gian, thành phố, mã chuyến bay, . . . Do các câu hỏi là ngôn ngữ nói thông thường nên có nhiều các từ là tên của các thực thể, số về thời gian, địa danh, . . . Điều này gây nhiễu khá nhiều cho mô hình học nên trong tiền xử lý, các từ dạng như vậy đã được tái tổ hợp và chuyển hóa về dạng chung theo từng loại. Ví dụ: Dataset Ví dụ GEO where is portland => where is c0 ATIS list all flights departing from seattle => list all flight depart from ci0 Bảng 4.1: Tiền xử lý dữ liệu với Argument Identical Mục đích chính phát triển của người phát triển hai bộ dữ liệu Geo và Atis là cho hệ thống hỏi đáp tự động, hệ thống đó sử dụng form logic truy vấn vào hệ cơ sở dữ liệu đã được xây dựng để đưa ra thông tin phù hợp với các câu hỏi dạng ngôn ngữ tự nhiên. 38 Dataset GEO ATIS Độ dài TB Ví dụ 7.6 which state has the highest elev 19.1 argmax $1 ( state:t $1 ) ( elevation:i $1 ) 11.1 list all flight depart from ci0 28.1 lambda $0 e ( and ( flight $0 ) ( from $0 ci0 ) ) Bảng 4.2: Thông tin bộ dữ liệu 4.2 Dữ liệu cho mô hình đề xuất Mô hình đề xuất (SEQ2SEQ + BRNN) được xây dựng dựa trên ý tưởng của cách thức tiền xử lý dữ liệu đã thực hiện với mô hình gốc trên 2 bộ dataset Geo và Atis, đó là làm sao tái tổ hợp tên các địa danh, các số, thời gian, . . . thành 1 dạng Id tương ứng với từng loại. Thay vì phần tái tổ hợp này nằm ở tiền xử lý dữ liệu thì nó được chuyển thành nhiệm vụ của mô hình BRNN, sau đó kết quả của mô hình BRNN thu được sẽ được chuyển tiếp làm đầu vào cho mô hình phân tích ngữ nghĩa thông thường (SEQ2SEQ). Do ngôn ngữ giao tiếp của con người thường rất đa dạng, nên kỳ vọng mô hình cải tiến này sẽ thể hiện được hiệu quả khi được đặt trong các hệ thống hỏi đáp. Giai đoạn chuyển hóa dữ liệu: • Tái tổ hợp: Mô hình tái tổ hợp (BRNN) với nhiệm vụ học và phân loại ra được các từ (word) là các danh từ, con số, thời gian, . . . và chuyển hóa nó về dạng typeid tương ứng với từng loại. Các từ khác thì được giữ với nhãn <none> nhãn này sẽ được hiểu là các từ thông thường. Ví dụ: Input Output Input Output what flights go from dallas to phoenix <none> <none> <none> <none> ci0 <none> ci1 list the alaska airlines flights arriving in burbank <none> <none> al0 al0 <none> <none> <none> ci0 Bảng 4.3: Bộ dữ liệu cho mô hình BRNN tái tổ hợp dữ liệu • Chuyển tiếp: Được thực hiện bởi module tích hợp giúp ta chuyển tiếp từ ouput của mô hình tái tổ hợp thành input của mô hình phân tích ngữ nghĩa. Sinh viên thực hiện: Nguyễn Minh Phương, 20122250, K57, Lớp CNTT-TT 2.01 39 Input what flight go from dallas to phoenix <none> <none> <none> <none> ci0 <none> ci1 Output what flight go from ci0 to ci1 Input list the alaska airlines flights arriving in burbank <none> <none> al0 al0 <none> <none> <none> ci0 Output list the al0 flights arriving in ci0 Bảng 4.4: Chuyển tiếp dữ liệu • Phân tích ngữ nghĩa: Mô hình SEQ2SEQ học và đưa ra dạng form logic cuối cùng của câu với dữ liệu input nhận từ module tích hợp. Input Output Input Output what flight go from ci0 to ci1 lambda $0 e ( and ( flight $0 ) ( from $0 ci0 ) ( to $0 ci1 ) ) list the al0 flights arriving in ci0 lambda $0 e ( and ( flight $0 ) ( airline $0 al0 ) ( to $0 ci0 ) ) Bảng 4.5: Phân tích ngữ nghĩa Bộ dữ liệu về phân tích ngữ nghĩa Atis và Geo đều được công khai trên bài viết Language to Logical Form with Neural Attention (Li Dong và cộng sự, năm 2016) ở cả dạng dữ liệu gốc và dữ liệu dạng tái tổ hợp. Ta còn cần xây dựng dữ liệu cho mô hình tái tổ hợp. Cách xây dựng khá đơn giản, chỉ cần so khớp từng câu trước và sau khi các từ được chuyển hóa dạng typeid, các từ giống nhau thì được gán nhãn <none> các từ khác nhau thì nhãn của từ đó là typeid. Sinh viên thực hiện: Nguyễn Minh Phương, 20122250, K57, Lớp CNTT-TT 2.01 40 5. Thực nghiệm và hiệu quả Chương này đưa ra mục tiêu của các công việc đã thực hiện trong đồ án. Đồng thời cũng trình bày chi tiết các kết quả thử nghiệm, những phân tích đánh giá các kết quả đó để làm rõ mục tiêu đã đặt ra. 5.1 Các mô hình thử nghiệm Đồ án này thực hiện tiếp cận và giải quyết bài toán phân tích ngữ nghĩa trong xử lý ngôn ngữ tự nhiên với hướng tiếp cận sử dụng mô hình SEQ2SEQ trong Neuron Network. Mô hình SEQ2SEQ được cài đặt với các kỹ thuật nâng cao của mô hình RNN (đã trình bày tại phần 2.3) như sử dụng LSTM, mô hình DRNN, . . . Đồng thời cũng sử dụng cơ chế Attention để cải thiện chất lượng dự đoán. Bên cạnh đó, đồ án này cũng đề xuất mô hình mới SEQ2SEQ kết hợp BRNN để cải thiện các nhược điểm của mô hình SEQ2SEQ gốc khi làm việc với bộ dữ liệu chưa được tiền xử lý tái tổ hợp. Các thực nghiệm thực hiện để phục vụ hai đánh giá chính là: • Đánh giá mô hình SEQ2SEQ: Mục tiêu để kiểm chứng khả năng ứng dụng của mô hình SEQ2SEQ trong bài toán Phân tích ngữ nghĩa trong Xử lý ngôn ngữ tự nhiên . Đồng thời xác định nhược điểm của mô hình SEQ2SEQ khi chạy trên nền bộ dữ liệu chưa được tiền xử lý tái tổ hợp các loại thực thể về dạng typeid. • Đánh giá mô hình đề xuất SEQ2SEQ + BRNN: Mục tiêu để kiểm chứng chất lượng của mô hình đề xuất SEQ2SEQ + BRNN có thực sự phát huy hiệu quả, khắc phục được nhược điểm của mô hình SEQ2SEQ gốc trên nền bộ dữ liệu chưa được tiền xử lý hay không. 5.2 Độ đo Độ đo được sử dụng trong tất cả các đánh giá đểu là độ chính xác. Trong mỗi dự đoán đầu vào là một chuỗi các từ trong câu, đầu ra là tập hợp tất cả các nhãn của các từ (với mô hình BRNN) hoặc là chuỗi ouput mới dạng form logic (với mô hình SEQ2SEQ). Nếu tất cả đầu ra đều chính xác thì ta coi là một dự đoán đúng và độ chính xác được tính theo công thức: Accuracy = tổng số câu đúng tổng số câu được dự đoán 41 5.3 Thông tin cài đặt Các thông số cài đặt được áp dụng chung cho cả hai cả hai mô hình SEQ2SEQ và mô hình đề xuất. • Giải thuật Phân tích hình thái từ: sử dụng Porter Stemming Algorithm được viết bởi Martin Porter (2006). • Tốc độ học (Learning rate): thử nghiệm trên một trong các giá trị {0.001, 0.002} • Số chiều vector của 1 từ: thử nghiệm trên một trong các giá trị {200, 300} • Momentum: sử dụng giá trị 0.95. • Mini batch size: cài đặt 30 với dữ liệu Atis, 10 với dữ liệu Geo • Gradient clipped: giới hạn vấn đề exploding gradient với giá trị tối đa là 5. • Đảo ngược chuỗi input. Chuỗi input được đảo ngược thứ tự trước khi được đưa vào mô hình SEQ2SEQ (được đề xuất bởi Sutskever và cộng sự, năm 2014). • Tỉ lệ dropout: Dropout tỉ lệ 0.5 giữa các lớp LSTM của DRNN. • Thay đổi tốc độ học: Tốc độ học được giảm dần qua từng epoch từ giá trị khởi tạo đến giá trị tối thiểu là 1e−5 . • Điều kiện dừng: sử dụng giới hạn số lượng epoch lặp tối đa. Với mô hình BRNN lặp tối đa một trong các giá trị {50, 80}. Mô hình SEQ2SEQ lặp tối đa là một trong các giá trị {150, 200} • Khởi tạo các bộ trọng số: sử dụng random với phân phối đều rời rạc (uniform distribution). • Số tầng RNN trong DRNN: sử dụng 2 tầng. 5.4 5.4.1 Chi tiết kết quả Mô hình SEQ2SEQ Các thử nghiệm trên mô hình SEQ2SEQ để kiểm tra khả năng ứng dụng của nó vào bài toán Phân tích ngữ nghĩa trong Xử lý ngôn ngữ tự nhiên và làm rõ các nhược điểm. Thử nghiệm mô hình SEQ2SEQ trên nền bộ dữ liệu đã được tiền xử lý. Mô hình này thực hiện chuyển câu nói dạng ngôn ngữ về form logic trên nền bộ dữ liệu đã được tiền xử lý tái tổ hợp các từ hiếm về dạng typeid. Đổi với dữ liệu đã được tiền xử lý, kết quả thu được khá khả quan, trên cả 2 tập dữ liệu Atis (Hình 5.2) và Geo (Hình 5.1). Sinh viên thực hiện: Nguyễn Minh Phương, 20122250, K57, Lớp CNTT-TT 2.01 42 • Trên tập Geo: Ở vòng lặp (Epoch) thứ 80 kết quả trung bình thu được đã đạt trên dưới 80% và đã đạt gần đến mức độ hội tụ. Tuy nhiên trên từng fold biên độ dao động của độ chính xác khá lớn (đặc biệt trên fold 2). Sự bất ổn này bắt nguồn từ lượng dữ liệu của tập Geo không được dồi dào. Vì ta cần lượng dữ liệu đủ lớn để mô hình có thể tổng quát hoá và học được luật ẩn chung nhất. • Trên tập Atis: Độ chính xác tăng khá đều và chậm dần ở các vòng lặp cuối, Biên độ dao động sau các vòng lặp chênh lệch nhau không nhiều trên tất cả 5 fold. Bộ dữ liệu Atis với số lượng gần gấp 7 lần tập Geo, một lần nữa cho thấy số lượng dữ liệu càng nhiều thì mô hình tổng quát hóa các luật ẩn càng tốt. Kết quả trung bình ở các vòng lặp cuối cùng đều đạt vào khoảng 83% thấp hơn một chút so với kết qủa mà mô hình SEQ2SEQ đã được công bố (Geo là 84.6%, Atis là 84.2%). Kết quả khác biệt này có thể do các thông số cài đặt train mô hình chưa thực sự là các tham số tối ưu nhất. Tuy vậy kết quả này cho thấy mô hình SEQ2SEQ thực sự phát huy hiệu quả trong bài toán phân tích ngữ nghĩa. Hình 5.1: Kết quả mạng SEQ2SEQ trên tập Geo Sinh viên thực hiện: Nguyễn Minh Phương, 20122250, K57, Lớp CNTT-TT 2.01 43 Hình 5.2: Kết quả mạng SEQ2SEQ trên tập Atis Thử nghiệm mô hình SEQ2SEQ trên bộ dữ liệu trước tiền xử lý: Tiến hành thử nghiệm độ chính xác của mô SEQ2SEQ trên 2 bộ dữ liệu Atis và Geo trong cả 2 trạng thái trước và sau tiền xử lý tái tổ hợp dữ liệu (Hình 5.3 và Hình 5.4). Kết quả thu được trên thực nghiệm cho thấy dữ liệu sau khi tiền xử lý tái tổ hợp các từ hiếm, có thể cải thiện độ chính xác của mô hình SEQ2SEQ lên đáng kể ( tăng > 15% trên cả 2 tập Atis và Geo). Như đã trình bày trong phần 3.4.1, các từ hiếm thường xuất hiện rất ít và khó để học ra qui luật tiềm ẩn. Việc chuyển tất cả các từ hiếm về dạng typeid chung giúp mô hình có thể học được ý nghĩa thực sự của các từ này. Đây là nhược điểm của mô hình SEQ2SEQ trên nền bộ dữ liệu chưa được tái tổ hợp, và mô hình SEQ2SEQ-BRNN được đề xuất với kì vọng sẽ khắc phục được nhược điểm này. Tăng độ chính xác trên các tập dữ liệu chưa qua tiền xử lý sẽ thực sự phát huy hiệu quả khi áp dụng vào các bài toán thực tế. Sinh viên thực hiện: Nguyễn Minh Phương, 20122250, K57, Lớp CNTT-TT 2.01 44 Hình 5.3: Kết quả mô hình SEQ2SEQ trên bộ dữ liệu Geo trước và sau tiền xử lý Hình 5.4: Kết quả mô hình SEQ2SEQ trên bộ dữ liệu Atis trước và sau tiền xử lý Sinh viên thực hiện: Nguyễn Minh Phương, 20122250, K57, Lớp CNTT-TT 2.01 45 5.4.2 Mô hình đề xuất SEQ2SEQ-BRNN Với bộ dữ liệu chưa qua tiền xử lý, kết quả của bài toán phân tích ngữ nghĩa phụ thuộc vào 2 mô hình: • Mô hình BRNN thực hiện tái tổ hợp dữ liệu. Mô hình này thực hiện gán nhãn typeid cho các từ hiếm là danh từ riêng, số, hoặc thời gian, . . . Mô hình này khi đứng độc lập đem lại kết quả khá cao, trung bình các fold rơi vào khoảng 93% trên cả 2 tập dữ liệu Geo và Atis. • Mô hình SEQ2SEQ chuyển câu nói thành form logic. Kết quả mô hình này chính là kết quả thu được ở phần 5.4.1 Thử nghiệm mô hình BRNN thực hiện tái tổ hợp dữ liệu. Trên Hình 5.5 và Hình 5.6 là kết quả của mô hình BRNN thực hiện việc tái tổ hợp dữ liệu. Dễ dàng thấy được kết quả trên tập Geo bất ổn nhiều hơn so với tập Atis. Điều này đa phần do tập Geo có kích thước bé hơn so với tập Atis (880 so với 5410), ở vòng lặp từ 30 đến 80, độ chính xác trên tập Geo dường như không tăng được nữa, tuy nhiên độ chính xác trên tập Atis vẫn có xu hướng tiếp tục được nâng cao. Kết quả của mô hình BRNN với độ chính xác ∼ 93% trên cả hai bộ dữ liệu Geo và Atis bước đầu cho ta thấy việc chọn sử dụng BRNN để tái tổ hợp dữ liệu là đúng đắn. Với kết quả này mô hình BRNN kì vọng sẽ phát huy được tác dụng làm giảm tác động tiêu cực của các từ hiếm khi ghép mô hình này với SEQ2SEQ. Hình 5.5: Kết quả tái tổ hợp dữ liệu trên tập Geo Sinh viên thực hiện: Nguyễn Minh Phương, 20122250, K57, Lớp CNTT-TT 2.01 46 Hình 5.6: Kết quả tái tổ hợp dữ liệu trên tập Atis Thử nghiệm mô hình SEQ2SEQ-BRNN thực hiện chuyển câu nói về dạng form logic. Mục tiêu ta cần quan tâm đến là độ chính xác của mô hình kết hợp SEQ2SEQ và BRNN. Dữ liệu của mô hình kết hợp được thực hiện như sau: một câu chưa được tiền xử lý, cần được tái tổ hợp lại bằng mô hình BRNN, và chuyển thành dạng form ngữ nghĩa ở mô hình SEQ2SEQ. Kết quả phân tích ngữ nghĩa đúng trên từng câu đạt được khi cả hai giai này đoạn phải chính xác. Kết quả tổng hợp trên Hình 5.8 và Hình 5.7 cho thấy mô hình đề xuất (SEQ2SEQ-BRNN) cho kết quả cải thiện ∼ 10% so với mô hình SEQ2SEQ khi chạy trên bộ dữ liệu chưa qua tiền xử lý trên cả 2 bộ dữ liệu Geo và Atis. Kết quả này là minh chứng cho việc mô hình SEQ2SEQ-BRNN đã thực sự phát huy hiệu quả, giảm ảnh hưởng tiêu cực của các từ hiếm đến kết quả phân tích form ngữ nghĩa của câu. Sinh viên thực hiện: Nguyễn Minh Phương, 20122250, K57, Lớp CNTT-TT 2.01 47 Hình 5.7: Kết tổng hợp trên tập Geo Hình 5.8: Kết quả tổng hợp trên tập Atis Sinh viên thực hiện: Nguyễn Minh Phương, 20122250, K57, Lớp CNTT-TT 2.01 48 Thay đổi tham số mô hình - tốc độ học: Tiến hành thử nghiệm ảnh hưởng của tốc độ học đến kết quả đầu ra của mô hình SEQ2SEQ-BRNN (Hình 5.9). Kết quả tốt nhất thu được trên thực nghiệm đạt được khi learning rate (lr) có giá trị lr = 0.002, cao hơn khi lr = 0.001 hoặc lr = 0.0005. Tuy nhiên không phải cứ tăng tốc độ học thì sẽ khiến mô hình học tốt hơn, như ta thấy ứng với tốc độ học lr = 0.005 kết quả thu được tồi hơn so với cả 3 giá trị lr nhỏ hơn nó là 0.0005, 0.001, 0.002. Khi để lr quá cao mô hình dễ bị quẩn quanh điểm hội tụ mà không thể đạt đến điểm hội tụ đó. Nhìn vào 3 option (0.0005, 0.001, 0.002) với các lr khác nhau ta đều thấy kể từ epoch 100 trở đi, chất lượng dự đoán của mô hình hầu như không tăng lên nhiều. Có thể lý giải điều này do tốc độ học trong cài đặt được giảm dần theo chiều tăng số epoch. Giá trị nhỏ nhất của lr có thể giảm xuống là 1e−5 , điều này giúp cho lr không bị giảm hoàn toàn về 0, cũng để mô hình có thể dần đạt được sự hội tụ tốt nhất. Nhìn chung kết quả khi tăng tốc độ học trong giới hạn hợp lý thì độ chính xác của mô hình thì có thể tăng lên. Giới hạn được coi là hợp lý của lr với từng mô hình khác nhau là khác nhau. Để tìm ra giá trị tốt nhất của lr ta cần phải thực hiện thử nghiệm với từng lr và đánh giá các kết qủa thu được. Hình 5.9: Kết quả thay đổi tham số Learning rate trên tập Geo Sinh viên thực hiện: Nguyễn Minh Phương, 20122250, K57, Lớp CNTT-TT 2.01 49 Đảo trộn tập train theo minibatch: Tiến hành thử nghiệm ảnh hưởng của việc đảo trộn thứ tự train các minibatch của mô hình SEQ2SEQ-BRNN (Hình 5.10). Thực hiện các option: (1) Giữ thứ tự train minibatch không đổi qua các epoch (2) Sinh random thứ tự train của các minibatch qua các epoch Kết quả thu được trên thực nghiệm cho thấy ở với các epoch < 130 kết quả dự đoán của option (2) nhỏ hơn so với option(1). Tuy nhiên các epoch sau từ 130 cho ta thấy option (2) vẫn có xu hướng tiếp tục tăng khả năng dự đoán trên tập test. Trong khi đó với option (1) kết quả dự đoán không tăng được thêm. Ta có thể rút ra việc thực hiện random thứ tự train minibatch giúp tránh đáng kể vấn đề overfit tập data train, đặc biệt là khi thực hiện với bộ dữ liệu nhỏ. Hình 5.10: Kết quả random thứ tự minibatch khi train trên tập Geo Sinh viên thực hiện: Nguyễn Minh Phương, 20122250, K57, Lớp CNTT-TT 2.01 50 6. Kết luận 6.1 Tổng kết kết quả đạt được trong đồ án: Đồ án này đã thực hiện được các việc sau: Ứng dụng Deep Learning với mô hình SEQ2SEQ vào giải quyết bài toán Phân tích ngữ nghĩa trong xử lý ngôn ngữ tự nhiên. Đề xuất mô hình SEQ2SEQ-BRNN kết hợp cải thiện kết quả phân tích ngữ nghĩa với bộ dữ liệu chưa qua tiền xử lý (tái tổ hợp các thực thể về dạng typeid). Thực hiện các thử nghiệm đánh giá về chất lượng của mô hình SEQ2SEQ và mô hình đề xuất SEQ2SEQ-BRNN cho bài toán phân tích ngữ nghĩa. Kết quả cho thấy mô hình đề xuất đã cải thiện được kết quả phân tích ngữ nghĩa trên nền dữ liệu là ngôn ngữ giao tiếp. 6.2 Các hướng tìm hiểu trong tương lai Các hướng có thể nghiên cứu phát triển tiếp từ đây: Ứng dụng mô hình đề xuất vào các bài toán thực tế, điển hình như hệ thống giao tiếp tự động (chat-bot). Cải tiến mô hình đề xuất theo hướng thay đổi cách thức kết hợp hai mô hình, đưa thông tin từ mô hình tái tổ hợp là một phần thông tin bổ sung trong quá trình học mô hình SEQ2SEQ. Cải tiến mô hình phân tích ngữ nghĩa theo một số mô hình mới hiện nay như SEQ2TREE, hay SEQ2SEQ-CopyNet, . . . 51 7. Tài liệu tham khảo [1] Dzmitry Bahdanau, Kyunghyun Cho, and Yoshua Bengio. Neural machine translation by jointly learning to align and translate. CoRR, abs/1409.0473, 2014. [2] Kyunghyun Cho, Bart van Merrienboer, Çaglar Gülçehre, Fethi Bougares, Holger Schwenk, and Yoshua Bengio. Learning phrase representations using RNN encoderdecoder for statistical machine translation. CoRR, abs/1406.1078, 2014. [3] Li Dong and Mirella Lapata. Language to logical form with neural attention. CoRR, abs/1601.01280, 2016. [4] Alex Graves, Abdel-rahman Mohamed, and Geoffrey E. Hinton. Speech recognition with deep recurrent neural networks. CoRR, abs/1303.5778, 2013. [5] Sepp Hochreiter and Jürgen Schmidhuber. Long short-term memory. Neural Comput., 9(8):1735–1780, November 1997. [6] Robin Jia and Percy Liang. Data recombination for neural semantic parsing. CoRR, abs/1606.03622, 2016. [7] Thân Quang Khoát. Slide học máy. Học phần Học Máy, 2015. [8] Thân Quang Khoát. Slide trí tuệ nhân tạo. Học phần Trí tuệ nhân tạo, 2015. [9] Minh-Thang Luong, Hieu Pham, and Christopher D. Manning. Effective approaches to attention-based neural machine translation. CoRR, abs/1508.04025, 2015. [10] M. Schuster and K.K. Paliwal. Bidirectional recurrent neural networks. Trans. Sig. Proc., 45(11):2673–2681, November 1997. [11] Ilya Sutskever, Oriol Vinyals, and Quoc V. Le. Sequence to sequence learning with neural networks. In Proceedings of the 27th International Conference on Neural Information Processing Systems, NIPS’14, pages 3104–3112, Cambridge, MA, USA, 2014. MIT Press. [12] Wikipedia. Học sâu. https://vi.wikipedia.org/wiki/H%E1%BB%8Dc_s%C3% A2u. Accessed: 21-05-2017. [13] Wikipedia. Xử lý ngôn ngữ tự nhiên. https://vi.wikipedia.org/wiki/X%E1% BB%AD_l%C3%BD_ng%C3%B4n_ng%E1%BB%AF_t%E1%BB%B1_nhi%C3%AAn. Accessed: 23-05-2017. 52