Tải bản đầy đủ (.pdf) (52 trang)

ỨNG DỤNG DEEP LEARNING VÀO BÀI TOÁN PHÂN TÍCH NGỮ NGHĨA

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.47 MB, 52 trang )

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:
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.
m

Net(x, w) = x .w =

xi wi + w0

T

(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

E x (w) =

(yi − Outi )2
i=1

– Lỗi của toàn bộ tập học D:
E D (w) =

2.2.6

1
|D|

E x (w) =
x∈D

1
|D|


(yi − Outi )2
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(w) =

∂E ∂E ∂E
∂E
,
,
,...,
∂w1 ∂w2 ∂w3
∂wH

∆w = −η∇E(w)
∆wi = −η

∂E
,
∂wi

(2.2)
(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:
n

P(x1 , x2 , . . . , xn ) =

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.
1

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.
∆bo = −η

(2.9)

t

∂Et ∂ot
∂ot ∂bo

(2.10)

t

∂Et ∂ot
∂ot ∂V

(2.11)


t

∂Et ∂ot ∂st
∂ot ∂st ∂b s

(2.12)

t

∂Et ∂ot ∂st
∂ot ∂st ∂U

(2.13)

t

∂Et ∂ot
∂st ∂st−1
st−1 +
∂ot ∂st
∂st−1 ∂W

∇ bo Et = −η
t

∆V = −η

∇V Et = −η
t


∆b s = −η

∇ bs Et = −η
t

∆U = −η

∇U Et = −η
t

∆W = −η

∇W Et = −η
t

Sinh viên thực hiện: Nguyễn Minh Phương, 20122250, K57, Lớp CNTT-TT 2.01

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=

Et = −
t

1
T

yt log(ot )

(2.17)

t

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.

E=

Et = −
t

1
T

yt log(ot )

(2.21)

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



×