Uploaded by nguyenminh.phong22

BaoCao (1)

advertisement
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: [email protected]
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