Tiểu luận môn học : Xử Lý Ngôn Ngữ Tự Nhiên
MỞ ĐẦU
Sự phát triển mạnh mẽ của Công nghệ nói chung và Công nghệ thông tin nói
riêng đã tạo nên nhiều hệ thống thông tin phục vụ việc tự động hoá mọi hoạt động
kinh doanh cũng như quản lý trong xã hội. Điều này đã tạo ra những dòng dữ liệu
khổng lồ trở thành hiện tượng “bùng nổ thông tin”. Nhiều hệ quản trị cơ sở dữ liệu
mạnh với các công cụ phong phú và thuận tiện đã giúp con người khai thác có hiệu
quả các nguồn tài nguyên dữ liệu lớn nói trên. Bên cạnh chức năng khai thác cơ sở
dữ liệu có tính tác nghiệp, sự thành công trong kinh doanh không chỉ thể hiện ở
năng lại tri thức từ dữ liệu hơn là chính bản thân dữ liệu. Phát hiện tri thức trong cơ
sở dữ lại tri thức từ dữ liệu hơn là chính bản thân dữ liệu. Phát hiện tri thức trong
cơ sở dữ liệu (Knowledge Discovery in Databases - KDD) là một quá trình hợp
nhất các dữ liệu từ nhiều hệ thống dữ liệu khác nhau tạo thành các kho dữ liệu,
phân tích thông tin để có được nhiều tri thức tiềm ẩn có giá trị. Trong đó, khai phá
dữ liệu (Data Mining) là quá trình chính trong phát hiện tri thức. Sử dụng các kỹ
thuật và các khái niệm của các lĩnh vực đã được nghiên cứu từ trước như học máy,
nhận dạng, thống kê, hồi quy, xếp loại, phân nhóm, đồ thị, mạng nơron, mạng
Bayes, được sử dụng để khai phá dữ liệu nhằm phát hiện ra các mẫu mới, tương
quan mới, các xu hướng có ý nghĩa.
Trong bài tiểu luận này, chúng tôi chỉ đề cập đến một phần rất nhỏ của phân
mảng “máy học” mà đại diện chúng tôi chọn để nghiên cứu là “mạng nơ ron”.
Tiểu luận này được thực hiện dưới sự hướng dẫn TS. Nguyễn Thị Minh Huyền
Trường Đại Học Khoa học Tự nhiên, Đại Học Quốc Gia Hà Nội. Chúng tôi xin
chân thành cảm ơn cô đã hướng dẫn cho chúng tôi để bài tiểu luận này được hoàn
thành.
Hoàng Quang Vũ, Nguyễn Anh Toàn K7MCS.
Giáo Trình Trí Tuệ Nhân
1
Võ Huỳnh Trâm – Trần Ngân
Tiểu luận môn học : Xử Lý Ngôn Ngữ Tự Nhiên
1. GIỚI THIỆU
Khi được hỏi về những kỹ năng thông minh nào là cơ bản nhất đồng thời
khó tự động hóa nhất của con người ngoài các hoạt động sáng tạo nghệ thuật,
hành động ra quyết định mang tính đạo đức, trách nhiệm xã hội thì người ta
thường đề cập đến vấn đề ngôn ngữ và học. Trãi qua nhiều năm, hai lĩnh vực
này vẫn là mục tiêu, thách thức của khoa học TTNT.
Tầm quan trọng của việc học thì không cần phải tranh cãi, vì khả năng
học chính là một trong những thành tố quan trọng của hành vi thông minh. Mặc
dù tiếp cận hệ chuyên gia đã phát triển được nhiều năm, song số lượng các hệ
chuyên vẫn còn hạn chế. Một trong những nguyên nhân chủ yếu là do quá trình
tích lũy tri thức phức tạp, chi phí phát triển các hệ chuyên gia rất cao, nhưng
chúng không có khả năng học, khả năng tự thích nghi khi môi trường thay đổi.
Các chiến lược giải quyết vấn đề của chúng cứng nhắc và khi có nhu cầu thay
đổi, thì việc sửa đổi một lượng lớn mã chương trình là rất khó khăn. Một giải
pháp hiển nhiên là các chương trình tự học lấy cách giải quyết vấn đề từ
kinh nghiệm, từ sự giống nhau, từ các ví dụ hay từ những ‘chỉ dẫn’, ‘lời
khuyên’…
1.1 Định nghĩa học máy
Học máy (hay máy học – Machine learning) là một thành phần quan trọng
của trí tuệ nhân tạo nhằm nghiên cứu và phát triển các phương pháp, kỹ thuật giúp
cho các hệ thống hay máy tính có khả năng học (Tiến Phong).
1.2 Vấn đề quá vừa dữ liệu (Over-fitting)
Thuật ngữ over-fitting ra đời dùng để chỉ một hiện tượng xuất hiện trong quá
trình khai phá dữ liệu sử dụng phương pháp học máy. Hiện tượng này gây khó
khăn đáng kể cho việc thiết kế, xây dựng hệ thống ngay từ bước chuẩn bị dữ liệu
Hoàng Quang Vũ, Nguyễn Anh Toàn K7MCS.
Giáo Trình Trí Tuệ Nhân
2
Võ Huỳnh Trâm – Trần Ngân
Tiểu luận môn học : Xử Lý Ngôn Ngữ Tự Nhiên
cho đến bước kiểm thử hệ thống. Khi hiện tượng over-fitting xảy ra sẽ làm cho
hiệu quả của hệ thống giảm xuống và kết quả thu được từ hệ thống không còn độ
tin cậy cao. Có thể định nghĩa hiện tượng over-fitting như sau:
1.2.1 Định nghĩa quá vừa dữ liệu
Một hàm mục tiêu hay một giả thiết học được h, sẽ được gọi là over-fitting
(quá vừa dữ liệu) với một tập dữ liệu huấn luyện nếu tồn tại một hàm mục tiêu
khác là h’ sao cho:
h’ kém phù hợp hơn, đạt độ chính xác kém hơn so với h trên tập dữ liệu huấn
luyện, nhưng h’ lại đạt độ chính xác cao hơn h đối với toàn bộ tập dữ liệu (bao
gồm cả tập dữ liệu liệu huấn luyện và tập dữ liệu kiểm tra)
Ví dụ quá vừa dữ liệu
Giả sử gọi D là tập toàn bộ các dữ liệu có thể có, Training_D là tập các dữ liệu
huấn luyện
Giả sử Err_D(h) là mức lỗi mà giả thiết h sinh ra đối với tập D, và
Err_Training_D(h) là mức lỗi mà giả thiết h sinh ra đối với tập Training_D.
Nếu tồn tại một giả thiết khác là h’ sao cho:
Err_Training_D(h) < Err_Training_D(h’) và
Err_D(h) > Err_D(h’)
Thì khi đó h được coi là quá vừa dữ liệu trên tập huấn luyện Training_D.
Nguyên nhân quá vừa dữ liệu
•
Vấn đề over-fitting thường do các nguyên nhân:
•
Lỗi (nhiễu) trong tập huấn luyện phát sinh trong quá trình thu thập, xây dựng
tập dữ liệu.
•
Số lượng dữ liệu của tập huấn luyện quá nhỏ, không đại diện cho toàn bộ tập
dữ liệu có thể có hay toàn bộ phân bố dữ liệu của bài toán.
Hoàng Quang Vũ, Nguyễn Anh Toàn K7MCS.
Giáo Trình Trí Tuệ Nhân
3
Võ Huỳnh Trâm – Trần Ngân
Tiểu luận môn học : Xử Lý Ngôn Ngữ Tự Nhiên
1.3 Bản chất của học máy dưới góc nhìn của xác suất thống kê.
Có thể mô hình hoá một vấn đề máy học như sau:
Cho một dãy l quan sát: (x
1
, y
1
), (x
2
, y
2
), … , (x
l
, y
l
). Trong đó:
x
1
, x
2
, …, x
l
là các mẫu, x
i
R
n
. Các mẫu x
i
được phát sinh ngẫu nhiên theo
một hàm phân bố xác suất F(x) nào đó mà ta không biết.
y
i
là các kết quả học tương ứng với mẫu x
i
, y
i
R. Thường thì y là kết quả
của một hàm f(x) nào đó – đơn trị. Tuy nhiên trong trường hợp tổng quát thì
y không đơn trị. Do đó y được xác định theo một hàm phân bố điều kiện F(y|
x) mà ta cũng không biết.
Bây giờ cho một mẫu x*, vấn đề của máy học là xác định một hàm f
0
(x) mà có
thể ước lượng tốt nhất giá trị y* tương ứng. Như vậy theo lý thuyết tương quan
trong thống kê thì f
0
(x) tốt nhất theo lý thuyết phải là kỳ vọng của y theo x theo
phân bố F(y|x).f
0
(x) còn được gọi là phương trình hồi quy.
Với x tuân theo phân bố F(x), y tuân theo phân bố có điều kiện F(y|x) thì hàm
phân bố của cặp (x, y) là F(x, y) = F(x)F(y|x). Có thể thấy xác suất để có dãy (x
1
,
y
1
), (x
2
, y
2
), … , (x
l
, y
l
) là tích F(x
1
, y
1
)F(x
2
, y
2
)…F(x
l
, y
l
).
Tuy nhiên, ở đây ta không biết F(x) lẫn F(y|x) nên không thể xác định chính xác
kỳ vọng này. Tất cả dữ liệu mà ta biết chỉ là dãy hữu hạn các mẫu quan sát (x
1
, y
1
),
(x
2
, y
2
), … , (x
l
, y
l
). Nhiệm vụ của máy học là xác định chính xác nhất có thể được
hàm f
0
(x) dựa trên các dữ liệu hữu hạn này.
Trong trường hợp khi y R, tức đây là vấn đề hồi quy (regression).
Hoàng Quang Vũ, Nguyễn Anh Toàn K7MCS.
Giáo Trình Trí Tuệ Nhân
4
Võ Huỳnh Trâm – Trần Ngân
Tiểu luận môn học : Xử Lý Ngôn Ngữ Tự Nhiên
Trong trường hợp bài toán phân lớp (classification) thì y {-1, 1} là trường hợp
nhận dạng hai lớp, nếu y
i
= -1 thì x
i
thuộc lớp thứ nhất (không được quan tâm), còn
y
i
= 1 thì x
i
thuộc lớp thứ 2 (lớp được quan tâm)
1.4 Một số phương pháp học máy
Trong lĩnh vực học máy có nhiều phương pháp học khác nhau, trong phần
này đề cập đến 3 phương pháp học được sử dụng phổ biến nhất, gồm có: học
không giám sát, học bán/ nửa giám sát và học có giám sát.
1.4.1 Phương pháp học không giám sát (Unsupervised Learning)
Khái niệm học không giám sát
Học không giám sát là học với tập dữ liệu huấn luyện ban đầu hoàn toàn chưa
được gán nhãn.
Học không giám sát là phương pháp học sử dụng cho lớp bài toán gom cụm,
phân cụm (Clustering).
Nội dung phương pháp học không giám sát
Để thực hiện phân cụm, trước tiên cần một tập dữ liệu huấn luyện (training
dataset) – là một tập các ví dụ học (training examples/instances). Trong đó, mỗi ví
dụ học chỉ chứa thông tin biểu diễn (ví dụ: một vector các giá trị thuộc tính), mà
không có bất kỳ thông tin gì về nhãn lớp hoặc giá trị đầu ra mong muốn (expected
output).
Áp dụng một thuật toán học không có giám sát (ví dụ k-Means) để học hàm/mô
hình mục tiêu (trong trường hợp này là hàm phân cụm ứng với thuật toán được
chọn).
Hoàng Quang Vũ, Nguyễn Anh Toàn K7MCS.
Giáo Trình Trí Tuệ Nhân
5
Võ Huỳnh Trâm – Trần Ngân
Tiểu luận môn học : Xử Lý Ngôn Ngữ Tự Nhiên
Sử dụng một phương pháp thử nghiệm (có thể kết hợp với một tập dữ liệu có
gán nhãn) để đánh giá hiệu năng/chất lượng của hàm mục tiêu học được.
Một số thuật toán học không giám sát
Có rất nhiều thuật toán học không giám sát được ra đời và phát triển nhằm giải
quyết bài toán phân cụm phục vụ khai thác hiệu quả nguồn dữ liệu chưa gán nhãn
nhiều và rất đa dạng. Việc lựa chọn sử dụng thuật toán nào tuỳ thuộc vào dữ liệu và
mục đích của từng bài toán. Trong đó các thuật toán thường được sử dụng như: k-
means, HAC (Hierarchical Agglomerative Clustering), SOM (Self-Organizing
Map), DBSCAN, FCM, (chi tiết các thuật toán này có thể tìm kiếm trên Internet)
1.4.2 Phương pháp học bán giám sát (Semi-Supervised Learning)
Trong thực tế, để có được một tập dữ liệu có chất lượng và đã được gán nhãn
của một lĩnh vực, thường được thực hiện thủ công bằng tay bởi người có nhiều
kinh nghiệm về lĩnh vực đó. Vì vậy, dữ liệu đã được gán nhãn thường ít và đắt.
Trong khi đó, dữ liệu chưa được gán nhãn lại rất nhiều và phong phú. Phương
pháp học bán giám sát (hay học nửa giám sát) được đặt ra để tận dụng cả hai nguồn
dữ liệu này.
Khái niệm học bán giám sát
Học bán giám sát là học với tập dữ liệu huấn luyện gồm cả dữ liệu đã được gán
nhãn và dữ liệu chưa được gán nhãn.
Tuỳ vào từng mục đích cụ thể, học bán giám sát có thể được áp dụng cho bài
toán phân lớp hoặc phân cụm.
Nội dung phương pháp học bán giám sát
Nội dung chính của học bán giám sát là hệ thống sử dụng một tập học (training
set) gồm 2 phần: các ví dụ học có nhãn, thường với số lượng (rất) ít, và các ví dụ
Hoàng Quang Vũ, Nguyễn Anh Toàn K7MCS.
Giáo Trình Trí Tuệ Nhân
6
Võ Huỳnh Trâm – Trần Ngân
Tiểu luận môn học : Xử Lý Ngôn Ngữ Tự Nhiên
học không có nhãn, thường với số lượng (rất) nhiều. Thực tế cho thấy khi sử dụng
kết hợp dữ liệu không có nhãn với một lượng nhất định dữ liệu có nhãn có thể tăng
độ chính xác đáng kể.
Một thuật toán học bán giám sát được sử dụng (ví dụ Self-training) sẽ học các
ví dụ có nhãn, sau đó tiến hành gán nhãn cho một số (có lựa chọn) các ví dụ không
có nhãn - một cách hợp lý, có đánh giá chất lượng công việc hay độ chính xác.
Tiếp theo, chọn các ví dụ vừa được gán nhãn có độ tin cậy cao (vượt trên một
ngưỡng chọn trước) đưa vào kết hợp với tập dữ liệu có nhãn, tạo thành một tập dữ
liệu huấn luyện mới.
Áp dụng một phương pháp kiểm thử (có thể kết hợp với một tập dữ liệu đã biết
trước nhãn) để đánh giá hiệu năng/độ chính xác của mô hình.
Một số thuật toán học bán giám sát
Một số thuật toán thường được sử dụng gồm có: thuật toán Cực đại kỳ vọng
(EM - Expectation Maximization), SVM truyền dẫn (TSVM - Transductive
Support Vector Machine), Self-training, Co-training và các phương pháp dựa trên
đồ thị (graph-based).
Việc lựa chọn thuật toán nào dựa trên một số định hướng: nếu các lớp dữ liệu
có tính phân cụm cao thì nên dùng EM với mô hình hỗn hợp sinh; nếu đã sử dụng
SVM thì mở rộng thành TSVM; khi khó nâng cấp mô hình học có giám sát đã có,
thì nên dùng self-training; nếu các đặc trưng của dữ liệu phân chia tự nhiên thành
hai phần riêng rẽ thì nên dùng Co-training; còn nếu hai mẫu dữ liệu có đặc trưng
tương tự nhau hướng tới một lớp thì sử dụng phương pháp dựa trên đồ thị.
Trong số các thuật toán học bán giám sát thông dụng, có 2 thuật toán tiêu biểu
là Self-training và Co-training.
Thuật toán Self-training:
Hoàng Quang Vũ, Nguyễn Anh Toàn K7MCS.
Giáo Trình Trí Tuệ Nhân
7
Võ Huỳnh Trâm – Trần Ngân
Tiểu luận môn học : Xử Lý Ngôn Ngữ Tự Nhiên
Self-training là kỹ thuật học bán giám sát được sử dụng khá phổ biến do tận
dụng được nguồn dữ liệu chưa gán nhãn lớn và ban đầu chỉ cần lượng nhỏ dữ liệu
đã gán nhãn. Nội dung chính của Self-training là lặp nhiều lần phương pháp học có
giám sát.
Gọi D: là tập các dữ liệu đã được gán nhãn.
C : là tập các dữ liệu chưa gán nhãn.
Thuật toán Self-training thực hiện như sau:
Lặp (cho đến khi C = Æ):
i. Huấn luyện bộ phân lớp có giám sát h trên tập D
ii. Sử dụng h để phân lớp dữ liệu trong tập C
iii. Tìm tập con C’ Í C có độ tin cậy cao nhất:
D + C’ Þ D ; C – C’ Þ C.
Ban đầu huấn luyện bộ phân lớp bằng cách cho bộ phân lớp học một tập dữ
liệu huấn luyện đã được gán nhãn (tập này thường nhỏ so với tập dữ liệu chưa gán
nhãn). Dùng bộ phân lớp đã được huấn luyện, phân lớp cho các dữ liệu chưa được
gán nhãn. Trong số dữ liệu mới được gán nhãn, chọn các dữ liệu có độ tin cậy cao
(lớn hơn một ngưỡng nào đó) kèm với nhãn vừa gán, đem bổ sung vào tập dữ liệu
huấn luyện ban đầu. Sau đó, bộ phân lớp được học lại trên tập huấn luyện mới
(gồm dữ liệu đã gán nhãn ban đầu và dữ liệu do bộ phân lớp mới gán nhãn) và
thuật toán được lặp lại. Sau mỗi vòng lặp, bộ phân lớp sẽ bổ sung một số mẫu dữ
liệu có độ tin cậy cao nhất cùng với dự đoán phân lớp của chúng vào tập dữ liệu
huấn luyện. Tên gọi Self-training xuất phát từ việc sử dụng dự đoán của nó để huấn
luyện chính nó.
Thuật toán Co-training:
Hoàng Quang Vũ, Nguyễn Anh Toàn K7MCS.
Giáo Trình Trí Tuệ Nhân
8
Võ Huỳnh Trâm – Trần Ngân
Tiểu luận môn học : Xử Lý Ngôn Ngữ Tự Nhiên
Thuật toán Co-training dựa trên giả thuyết rằng các đặc trưng của tập dữ liệu
huấn luyện có thể được phân chia thành 2 tập con (trường hợp lý tưởng là hai tập
con này thoả mãn điều kiện độc lập nhau - conditional independent). Nội dung
chính của thuật toán như sau:
•
Dùng 2 bộ phân lớp phù hợp để học 2 tập con tương ứng (mỗi tập con huấn
luyện một bộ phân lớp).
•
Mỗi bộ phân lớp thực hiện phân lớp cho các dữ liệu chưa gán nhãn, thu được
kết quả là tập dữ liệu chưa gán nhãn kèm theo nhãn dự đoán của chúng.
Trong tập kết quả của bộ phân lớp 1, chọn ra những mẫu dữ liệu (kèm nhãn
đã dự đoán) có độ tin cậy cao nhất bổ sung vào tập huấn luyện của bộ phân
lớp 2 và ngược lại.
•
Mỗi bộ phân lớp được học lại tập dữ liệu huấn luyện (gồm dữ liệu gán nhãn
ban đầu và dữ liệu gán nhãn mới bổ sung từ kết quả của bộ phân lớp kia).
Quá trình được lặp lại cho đến khi tập dữ liệu chưa gán nhãn rỗng hoặc số
vòng lặp đạt tới một ngưỡng được xác định trước.
Thuật toán Co-training:
(1). Huấn luyện hai bộ phân lớp: f
(1)
từ (X
l
(1)
, Y
l
), f
(2)
từ (X
l
(2)
, Y
l
).
(2). Phân lớp các mẫu dữ liệu chưa gán nhãn X
u
với f
(1)
và f
(2)
tách biệt nhau. (U là
tập các mẫu dữ liệu chưa gán nhãn)
(3). Chèn thêm vào f
(1)
k-most-confident (x, f
(1)
(x)) tới các dữ liệu đã gán nhãn
của f
(2)
.
(4). Chèn thêm vào f
(2)
k-most-confident (x, f
(2)
(x)) tới các dữ liệu đã gán nhãn
của f
(1)
.
(5). Lặp lại các quá trình trên.
Thuật toán Co-training trên có thể viết như sau:
L: là tập các mẫu dữ liệu đã gán nhãn
Hoàng Quang Vũ, Nguyễn Anh Toàn K7MCS.
Giáo Trình Trí Tuệ Nhân
9
Võ Huỳnh Trâm – Trần Ngân
Tiểu luận môn học : Xử Lý Ngôn Ngữ Tự Nhiên
U: là tập các mẫu dữ liệu chưa gán nhãn
(1). L có thể phân chia thành hai tập con L
1
và L
2
(trường hợp lý tưởng thì L
1
và
L
2
độc lập nhau).
(2). Cho bộ phân lớp h
1
học L
1
(hay L
1
huấn luyện bộ phân lớp h
1
)
Cho bộ phân lớp h
2
học L
2
(hay dùng L
2
huấn luyện bộ phân lớp h
2
)
(3). Dùng h
1
phân lớp cho U thu được tập U
1
’ kèm nhãn dự đoán của chúng. Dùng
h
2
phân lớp cho U thu được tập U
2
’ kèm nhãn dự đoán của chúng.
(4). Từ U
1
’ chọn ra u
1
mẫu dữ liệu kèm theo nhãn của nó, có độ tin cậy cao nhất.
Bổ sung u
1
vào L
2
. Khi đó, L
2
+ u
1
=> L
2
.
Từ U
2
’ chọn ra u
2
mẫu dữ liệu kèm theo nhãn của nó, có độ tin cậy cao nhất. Bổ
sung u
2
vào L
1
. Khi đó, L
1
+ u
2
=> L
1
.
(5). Dùng L
1
mới huấn luyện bộ phân lớp h
1
(hay h
1
học L
1
)
Dùng L
2
mới huấn luyện bộ phân lớp h
2
(hay h
2
học L
2
)
(6). Lặp lại từ bước (3). cho đến khi tập U rỗng hoặc số vòng lặp đạt đến ngưỡng
xác định trước.
Có thể viết rút gọn bằng cách bỏ bước (5). ở trên. Bước (6). đổi thành bước
(5): Lặp lại từ bước (2). cho đến khi tập U rỗng hoặc số vòng lặp đạt đến ngưỡng
xác định trước.
1.4.3 Phương pháp học có giám sát (Supervised Learning)
Khái niệm học có giám sát:
Học có giám sát là học với tập dữ liệu huấn luyện ban đầu hoàn toàn được gán
nhãn từ trước.
Hoàng Quang Vũ, Nguyễn Anh Toàn K7MCS.
Giáo Trình Trí Tuệ Nhân
1
Võ Huỳnh Trâm – Trần Ngân
Tiểu luận môn học : Xử Lý Ngôn Ngữ Tự Nhiên
Học có giám sát là phương pháp học sử dụng cho lớp bài toán phân lớp, phân
loại (Classification).
Nội dung phương pháp học có giám sát:
Để thực hiện phân lớp, trước tiên phải chuẩn bị một tập dữ liệu huấn luyện
(trainning data set), để có tập dữ liệu huấn luyện phải thực hiện gán nhãn cho dữ
liệu ban đầu, đây được gọi là quá trình thu thập tập huấn luyện.
Lựa chọn một thuật toán phân lớp (ví dụ SVM) xây dựng bộ phân lớp
để học tập dữ liệu huấn luyện. Hay nói cách khác, dùng tập dữ liệu huấn luyện để
huấn luyện bộ phân lớp. Thuật ngữ học có giám sát được hiểu là học tập dữ liệu đã
được gán nhãn trước (các dữ liệu kèm theo nhãn tương ứng này coi như đã được
giám sát bởi người thực hiện gán nhãn).
Sử dụng một tập dữ liệu kiểm tra (test data set) đã được gán nhãn trước, để
kiểm tra tính đúng đắn của bộ phân lớp. Sau đó, có thể dùng bộ phân lớp để phân
lớp cho các dữ liệu mới.
Một số thuật toán học có giám sát:
Một số thuật toán thường được lựa chọn khi xây dựng bộ phân lớp gồm có:
máy vector hỗ trợ (Support Vector Machine – SVM); k láng giềng gần nhất (K
Nearest Neighbours – KNN); tiếp cận xác suất thống kê (Naïve Bayes – NB);
Cây quyết định (Decision Tree – DT); sử dụng mạng nơron (Neural Network –
Nnet); dựa trên vector trọng tâm (Centroid–base vector); hay tuyến tính bình
phương nhỏ nhất (Linear Least Square Fit – LLSF).
Hoàng Quang Vũ, Nguyễn Anh Toàn K7MCS.
Giáo Trình Trí Tuệ Nhân
1
Võ Huỳnh Trâm – Trần Ngân
Tiểu luận môn học : Xử Lý Ngôn Ngữ Tự Nhiên
2. MẠNG NƠRON VÀ ỨNG DỤNG TRONG HỌC MÁY
2.1 Giới thiệu mạng Nơ ron
Các mô hình học theo tiếp cận này bắt chước theo cách học của các hệ
thần kinh sinh vật. Các hệ thống theo mô hình này có khi còn được gọi là
các hệ kết nối (connectionist systems), tính toán neural (Neural computing),
mạng neural (Neural Networks), các hệ xử lý phân tán song song (parallel
distributed processing – PDP).
Không giống như các giải thuật của tiếp cận ký hiệu, các mô hình này
không sử dụng ký hiệu một cách tường minh để giải quyết vấn đề. Thay vào đó,
chúng giữ cho trí tuệ phát triển trong các hệ thống gồm các thành phần (neuron
sinh học hay neuron nhân tạo) đơn giản, tương tác thông qua một quá trình học
hay thích nghi mà nhờ đó kết nối giữa các thành phần này được điều chỉnh. Việc
xử lý của các hệ thống này được phân tán trên một tập hợp các lớp neuron. Các
hệ thống này giải quyết vấn đề song song theo nghĩa rằng tất cả các neuron trong
tập hợp hay trong các lớp sẽ xử lý tín hiệu vào một cách đồng thời và độc lập.
Trong khi các giải thuật của tiếp cận ký hiệu sử dụng ký hiệu để mô tả các
mẫu của bài toán như ta đã thấy trong giải thuật ID3 thì những nhà thiết kế mạng
neuron phải tạo ra một sơ đồmã hóa các mẫu (pattern) của bài toán thành các đại
lượng số để đưa vào mạng. Việc chọn lựa một sơ đồ mã hóa thích hợp đóng vai
trò quyết định cho sự thành công hay thất bại trong việc học của mạng.
Các mẫu (pattern) của bài toán được mã hóa thành các vector số. Các kết
nối giữa các thành phần, hay neuron, cũng được biểu diễn bằng các giá trị số.
Cuối cùng, sự biến đổi của các mẫu cũng là kết quả của các phép toán số học,
thông thường là phép nhân ma trận. Sự chọn lựa kiến trúc kết nối của nhà thiết kế
mạng neuron góp phần vào tính thiên lệch quy nạp (inductive bias) của hệ thống.
Hoàng Quang Vũ, Nguyễn Anh Toàn K7MCS.
Giáo Trình Trí Tuệ Nhân
1
Võ Huỳnh Trâm – Trần Ngân
Tiểu luận môn học : Xử Lý Ngôn Ngữ Tự Nhiên
Các giải thuật và kiến trúc dùng để cài đặt mạng neuron thường được
huấn luyện (trained) hay tạo điều kiện (conditioned) chứ không được lập trình
một cách tường tận. Và đây chính là sức mạnh chủ yếu của tiếp cận này.
Các phương pháp của tiếp cận này phát huy sức mạnh của chúng trong các
bài toán mà khó có thể giải quyết bằng các mô hình ký hiệu. Tiêu biểu là các bài
toán đòi hỏi các kỹ năng dựa vào nhận thức, hay các bài toán thiếu một cú pháp
định nghĩa rõ ràng.
Các bài toán thích hợp với tiếp cận kết nối thường là:
• Bài toán phân loại (classification): quyết định một giá trị đưa vào
thuộc loại hay nhóm nào
• Bài toán nhận dạng mẫu (pattern recognition): nhận dạng cấu trúc trong
các dữ liệu có thể là bị nhiễu.
• Bài toán dự đoán (prediction): chẳng hạn như nhận dạng bệnh từ các
triệu chứng, nhận dạng tác nhân từ các hiệu ứng,…
• Bài toán tối ưu (optimization): tìm một tổ chức ràng buộc tốt nhất
• Bài toán lọc nhiễu (Noise filtering): hay phân biệt các tín hiệu với nền,
tìm ra các thành phần không quan trọng trong một tín hiệu.
2.2 Cơ bản về mạng kết nối
2.2.1 Mạng nơ ron nhân tạo
Thành phần cơ bản của một mạng neuron là một neuron nhân tạo, như mô tả
trong hình sau đây.
Các tín hiệu đầu vào x
i
. Các dữ liệu này có thể đến từ môi trường,
hay đượckích hoạt từ các neuron khác. Các mô hình khác nhau có thể có
Hoàng Quang Vũ, Nguyễn Anh Toàn K7MCS.
Giáo Trình Trí Tuệ Nhân
1
Võ Huỳnh Trâm – Trần Ngân
Tiểu luận môn học : Xử Lý Ngôn Ngữ Tự Nhiên
miền giá trị của đầu vào khác nhau; thông thường các giá trị đầu vào này
là các số rời rạc (discrete) lấy từ tập {0,1} hay {-1,1} hay số thực.
Một tập các trọng số (weight) có giá trị thực, w
i
. Các trọng số này
dùng để mô tả sức mạnh kết nối, hay sức mạnh của các kết nối thiên lệch
(bias link)
Một mức kích hoạt (activation level) hay hàm kích hoạt Σw
i
x
i
. Mức
kích hoạt của một neuron được xác định bởi sức mạnh tích lũy từ các tín
hiệu đầu vào của nó nơi mà mỗi tín hiệu đầu vào được tỷ lệ lại bằng trọng
số kết nối wi ở đầu vào đó. Vì vậy, mức kích họat được tính toán bằng cách
lấy tổng các giá trị đầu vào sau khi được tỉ lệ hóa, Σw
i
x
i
.
Một hàm ngưỡng (threshold function), f. Hàm này tính kết quả đầu
ra của neuron bằng cách xác định xem mức kích hoạt nằm dưới hay trên
một giá trị ngưỡng là ít hay nhiều. Hàm ngưỡng này có khuynh hướng tạo
ra trạng thái tắt/mở của các neuron.
2.2.2 Các đặc trưng cơ bản của mạng nơ ron
Ngoài các tính chất của một neuron đơn lẻ, một mạng neuron còn được
đặc trưng bởi các tính chất toàn cục như sau:
• Hình thái mạng
(network topology): là mô hình hay mẫu kết nối giữa các
neuron đơn lẻ.
Hoàng Quang Vũ, Nguyễn Anh Toàn K7MCS.
Giáo Trình Trí Tuệ Nhân
1
Võ Huỳnh Trâm – Trần Ngân
Tiểu luận môn học : Xử Lý Ngôn Ngữ Tự Nhiên
• Giải thuật học (learning algorithm): là giải thuật dùng để điều chỉnh
các trọng số ở các đầu vào của các neuron. Trong các phần tiếp theo của
chương này sẽ trình bày một số giải thuật học tiêu biểu.
• Sơ đồ mã hóa (encoding schema): Bao gồm việc thông dịch dữ liệu
thực tế thành các giá trị đầu vào của mạng, và việc thông dịch giá trị đầu ra
của mạng thành một kết quả có ý nghĩa.
2.2.3 Mạng neuron McCulloch-Pitts
Ví dụ đầu tiên về tính toán neural được MacCulloch và Pitts đưa ra vào
1943. Đầu vào của một neuron McCulloch-Pitts là +1 (kích thích) hoặc –1 (ức
chế). Hàm kích hoạt nhân mỗi đầu vào với giá trị trọng số tương ứng và cộng
chúng lại; nếu tổng lớn hơn hay bằng không, thì neuron trả về 1, ngược lại, là –
1.
McCulloch-Pitts cho thấy các neuron này có thể được xây dựng để tính
toán bất cứ hàm logic nào, chứng minh rằng các hệ thống gồm các neuron
này cung cấp một mô hình tính toán đầy đủ.
Hình minh họa các neuron McCulloch-Pitts dùng để tính
hàm logic and và or.
Các neuron này có 3 đầu vào: x và y là các giá trị cần đưa vào,
còn đầu vào thứ ba, đôi khi còn được gọi là một thiên lệch (bias), có giá
trị hằng là +1.
Hoàng Quang Vũ, Nguyễn Anh Toàn K7MCS.
Giáo Trình Trí Tuệ Nhân
1
Võ Huỳnh Trâm – Trần Ngân
Tiểu luận môn học : Xử Lý Ngôn Ngữ Tự Nhiên
Ba đầu vào của neuron and có 3 trọng số tương ứng là +1, +1 và
–2. Vì vậy, với các giá trị bất kỳ của x, y, neuron tính giá trị x+y-2;
nếu giá trị này nhỏ hơn 0, nó trả về –1. Ngược lại trả về 1.
Bảng bên dưới minh họa cho tính toán neuron x and y.
Mặc dù McCulloch-Pitts chứng minh cho sức mạnh của tính toán eural,
nhưng sức hấp dẫn của tiếp cận này chỉ thực sự bắt đầu khi các giải thuật học
thực tế bắt đầu phát triển. Phiên bản đầu tiên của mạng neuron có kèm giải thuật
học được Frank Rosenblatt đưa ra vào cuối thập niên 1950, có tên gọi là
perceptron
2.2.4 Học perceptron
Perceptron là mạng neuron đơn tầng. Cách lan truyền tín hiệu của
perceptron tương tự với neuron McCulloch-Pitts. Các giá trị đầu vào và các mức
kích hoạt của perceptron là -1 hoặc 1; trọng số là các số thực. Mức kích hoạt
được xác định qua tổng ∑w
i
x
i
. Perceptron sử dụng một hàm ngưỡng giới hạn
cứng, khi một kích hoạt nằm bên trên ngưỡng, hàm sẽ cho kết quả là 1, và -1 nếu
ngược lại. Cho trước các giá trị đầu vào x
i
, các trọng số w
i
, và một ngưỡng, t,
hàm ngưỡng f của perceptron sẽ trả về:
Hoàng Quang Vũ, Nguyễn Anh Toàn K7MCS.
Giáo Trình Trí Tuệ Nhân
1
Võ Huỳnh Trâm – Trần Ngân
Tiểu luận môn học : Xử Lý Ngôn Ngữ Tự Nhiên
1 nếu ∑w
i
x
i
>= t
-1 nếu ∑w
i
x
i
< t
Perceptron sử dụng một hình thức đơn giản của học có giám sát
(supervised learning). Sau khi perceptron cố gắng giải quyết một mẫu bài toán
(mẫu này rút ra từ tập dữ liệu rèn luyện– training data), chương trình đóng vai trò
như một người thầy giáo sẽ cung cấp cho nó kết quả đúng của mẫu bài toán đó
(giá trị này cũng lấy từ tập dữ liệu rèn luyện). Dựa vào sự khác biệt giữa kết
quả đúng được cung cấp và kết quả mà perceptron tính toán được, nó sẽ tự điều
chỉnh các trọng số của nó để làm thu hẹp khoảng cách lỗi. Perceptron sử dụng
luật như sau: với c là một hằng số cho trước, hằng số này thể hiện tốc độ học và d
là giá trị đầu ra mong muốn, perceptron sẽ điều chỉnh trọng số trên thành phần thứ
i của vectơ đầu vào một lượng ∆w
i
:
∆w
i
= c(d – f(∑w
i
x
i
)) x
i
f(∑w
i
x
i
) chính là giá trị đầu ra của perceptron, nó có giá trị +1 hoặc -1. Vì vậy,
hiệu giữa d và f(∑w
i
x
i
) là 0, 2 hoặc -2. Vì vậy, với mỗi thành phần của vectơ
đầu vào:
• Nếu giá trị đầu ra mong muốn và giá trị đầu ra thật bằng nhau, thì
Hoàng Quang Vũ, Nguyễn Anh Toàn K7MCS.
Giáo Trình Trí Tuệ Nhân
1
Võ Huỳnh Trâm – Trần Ngân
Tiểu luận môn học : Xử Lý Ngôn Ngữ Tự Nhiên
không làm gì cả.
• Nếu giá trị đầu ra thực là -1 và 1 là giá trị mong muốn, thì tăng
trọng số của đường thứ i lên 2cx
i
.
• Nếu giá trị đầu ra thực là 1 và -1 là giá trị mong muốn, thì giảm
trọng số của đường thứ i -2cx
i
Sở dĩ c được gọi là hằng số thể hiện tốc độ học vì nếu c lớn thì các giá trị
điều chỉnh ∆w
i
sẽ
lớn, như vậy, đẩy nhanh quá trình w
i
hội tụ về giá trị đúng
của nó.
Sau khi được huấn luyện bằng một tập hợp khá lớn các ví dụ rèn luyện cho
trước, thủ tục này sẽ sinh ra một tập các trọng số có tính chất làm giảm thiểu
trung bình lỗi trên toàn tập ví dụ rèn luyện. Theo Minsky và Papert 1969, nếu
tồn tại một tập hợp các trọng số đem lại đầu ra đúng cho mọi ví dụ rèn luyện, thì
thủ tục học perceptron sẽ học được nó.
2.2.5 Học lan truyền ngược
Như đã phân tích ở trên, ta thấy các mạng perceptron đơn tầng có khả năng
giới hạn, chúng không thể phân loại được các bài toán không tách rời tuyến
tính. Trong phần tiếp theo, chúng ta sẽ thấy rằng các mạng đa tầng có thể giải
quyết được các bài toán này.
Hoàng Quang Vũ, Nguyễn Anh Toàn K7MCS.
Giáo Trình Trí Tuệ Nhân
1
Võ Huỳnh Trâm – Trần Ngân
Tiểu luận môn học : Xử Lý Ngôn Ngữ Tự Nhiên
Học lan truyền ngược trong mạng kết nối có một tầng ẩn.
Các neuron trong một mạng đa tầng (xem hình) được kết nối với nhau theo
từng lớp, trong đó các neuron ở tầng k sẽ truyền kích hoạt của chúng chỉ cho
các neuron ở tầng k+1. Xử lý tín hiệu đa tầng có nghĩa là các lỗi nằm sâu bên
trong mạng có thể lan ra và phát triển một cách phức tạp thông qua các tầng liên
tiếp. Vì vậy, việc phân tích nguyên nhân gây ra lỗi ở tầng ra (output layer) là rất
phức tạp. Giải thuật học lan truyền ngược sẽ cung cấp một phương pháp điều
chỉnh trọng số trong trường hợp này.
2.2.5.1 Giải thuật học lan truyền ngược
Từ lập luận cho rằng tại các nút của một mạng đa tầng, lỗi mà một nút phải
chịu trách nhiệm cũng phải được chia phần cho các nút ở tầng ẩn trước nó và vì
vậy các trọng số phải được điều chỉnh một cách phù hợp.
Giải thuật lan truyền ngược bắt đầu tại tầng ra và truyền các lỗi ngược về
xuyên qua các tầng ẩn .
Hoàng Quang Vũ, Nguyễn Anh Toàn K7MCS.
Giáo Trình Trí Tuệ Nhân
1
Võ Huỳnh Trâm – Trần Ngân
Tiểu luận môn học : Xử Lý Ngôn Ngữ Tự Nhiên
2.2.6 Nhận xét chung về mạng nơ ron
Nói chung các mạng đa tầng là đầy đủ về mặt tính toán (computationally
complete), có nghĩa là có thể giải quyết được mọi bài toán. Tuy nhiên, để thiết
kế một mạng neuron đa tầng thì nhà thiết kế phải giải quyết được những vấn đề
sau:
Làm sao để chọn số nút ẩn và số tầng ẩn thích hợp?
Khi nào sử dụng các nút thiên lệch?
Cách chọn một tập rèn luyện?
Điều chỉnh các trọng số như thế nào?
Nên chọn tốc độ học như thế nào?
Nói chung, không có một quy luật nào về tất cả những điều này, nó phụ
thuộc vào kinh nghiệm của nhà thiết kế, cũng như là kết quả của quá trình thử-
sai lặp đi lặp lại.
3. The Stanford Classifier và ví dụ minh họa
Hoàng Quang Vũ, Nguyễn Anh Toàn K7MCS.
Giáo Trình Trí Tuệ Nhân
2
Võ Huỳnh Trâm – Trần Ngân
Tiểu luận môn học : Xử Lý Ngôn Ngữ Tự Nhiên
3.1 Giới thiệu
Stanford Classifier là 1 phần mềm phân loại tổng quát– phần mềm lấy 1 tập
hợp dữ liệu đầu vào (input) và phân loại dữ liệu sang các loại riêng biệt. Nó hoạt
động bằng cách tạo ra các đặc điểm từ mỗi số liệu liên quan số phiếu âm hay
dương theo trọng số của mỗi cấp. Về nguyên tắc thì trọng số có thể đc thiết lập
bằng tay nhưng cách thường thấy là để trọng số được học tự động dựa trên việc
thực tập phân loại dữ liệu bằng tay ( cái này thường được gọi là ‘học có giám sát’).
Phần mềm phân loại có thể làm việc với giá trị thực, các input đã được phân loại
và hỗ trợ 1 vài thuật toán. Nó cũng hỗ trợ 1 vài dạng quy ước, điều mà thường cần
thiết khi xây dựng mô hình với số lượng rất lớn những tính năng dự đoán.
Bạn có thể sử dụng phần mềm phân loại trên loại dữ liệu bất kỳ, bao gồm dữ liệu
thống kê thông thường và tập hợp dữ liệu “học máy”. Nhưng đối với tập dữ liệu
nhỏ và các tiên đoán số học, tốt hơn ta nên dùng công cụ khác như R hoặc Weka.
Nơi mà phần mềm phân loại Stanfort sử lí tốt nhất là làm việc với chủ yếu là dữ
liệu văn bản, nơi mà nó có những phương tiện mạnh mẽ và linh hoạt trong tạo ra
các tính năng từ chuỗi kí tự. Tuy nhiên nếu ta có vài biến số, ta có thể để chúng vào
cùng 1 lúc.
3.2 Bài toán minh họa
Cheese-Disease (pho mát bệnh/dịch bệnh):
Trong khi bạn có thể xác định hầu hết các tùy chọn trên dòng lệnh, thường cách dễ
nhất để đào tạo và thử nghiệm các mô hình với phần mềm phân loại Stanford là
thông qua việc sử dụng của thuộc tính file mà ghi lại tất cả các tùy chọn được sử
dụng. Bạn có thể tìm thấy một vài ví dụ tập hợp dữ liệu và thuộc tính file trong thư
mục “example” về sự phân bố của phần mềm phân loại Stanford.
Hoàng Quang Vũ, Nguyễn Anh Toàn K7MCS.
Giáo Trình Trí Tuệ Nhân
2
Võ Huỳnh Trâm – Trần Ngân
Tiểu luận môn học : Xử Lý Ngôn Ngữ Tự Nhiên
Các bộ dữ liệu của Cheese-Disease được dùng trên game show MTV Idiot
Savants từ cuối những năm 1990, trong đó có 1 tập hợp các câu đố của Cheese or
Disease?. Mục đích là để phân biệt tên pho mát với tên 1 loại bệnh. Xem
file“examples /cheeseDisease.train” để thấy ví dụ về dữ liệu. Cột đầu tiên là thể
loại (1 = pho mát, 2 = bệnh).
Hoàng Quang Vũ, Nguyễn Anh Toàn K7MCS.
Giáo Trình Trí Tuệ Nhân
2
Võ Huỳnh Trâm – Trần Ngân
Tiểu luận môn học : Xử Lý Ngôn Ngữ Tự Nhiên
Hai lớp có thể được gọi là ‘pho mát’ và ‘bệnh’. Cột thứ 2 là tên. Các cột
được phân cách bằng một ký tự tab. Ở đây chỉ có một cột class và một cột dự đoán.
Đây là mức tối thiểu để trainning phần mềm phân loại, nhưng bạn có thể có bất kỳ
số lượng các cột dự báo và xác định các cột có vai trò gì.
Trong thư mục cấp cao nhất của Stanford Classifier, lệnh sau đây sẽ xây
dựng một mô hình cho các tập dữ liệu và thử nghiệm nó trên các dữ liệu thử
nghiệm thiết lập theo cách đơn giản nhất có thể:
java -jar stanford-classifier.jar -prop examples/cheese2007.prop
Hoàng Quang Vũ, Nguyễn Anh Toàn K7MCS.
Giáo Trình Trí Tuệ Nhân
2
Võ Huỳnh Trâm – Trần Ngân
Tiểu luận môn học : Xử Lý Ngôn Ngữ Tự Nhiên
Cái này chỉ ra rất nhiều thông tin. Phần đầu tiên cho thấy một chút về tập dữ
liệu. Phần thứ hai cho thấy quá trình tối ưu hóa (xác định đặc tính trọng số để
trainning phần mềm phân loại trên dữ liệu thực tập). Phần tiếp theo cho thấy các
kết quả của việc thử nghiệm mô hình trên một tập dữ liệu thử nghiệm, và 5 dòng
cuối cùng cho kết quả kiểm tra:
196 examples in test set
Hoàng Quang Vũ, Nguyễn Anh Toàn K7MCS.
Giáo Trình Trí Tuệ Nhân
2
Võ Huỳnh Trâm – Trần Ngân
Tiểu luận môn học : Xử Lý Ngôn Ngữ Tự Nhiên
Cls 2: TP=123 FN=5 FP=8 TN=60; Acc 0.934 P 0.939 R 0.961 F1 0.950
Cls 1: TP=60 FN=8 FP=5 TN=123; Acc 0.934 P 0.923 R 0.882 F1 0.902
Micro-averaged accuracy/F1: 0.93367
Macro-averaged F1: 0.92603
Đối với mỗi class, kết quả cho thấy số lượng dương đúng, sai âm, dương sai
và âm đúng, tính chính xác của từng cấp, chính xác, gọi là chuẩn F1. Sau đó nó sẽ
cho một bản tổng hợp F1 trên toàn bộ tập dữ liệu, hoặc vi mô trung bình (mỗi mục
thử đếm nhau) hoặc vĩ mô trung bình (mỗi class đếm bằng nhau). Đối với các tập
dữ liệu sai lệch, vĩ mô trung bình F1 là một biện pháp tốt để đo một phần mềm
phân loại làm tốt thế nào trên các class không thông dụng. Pho mát và phân biệt
bệnh là không quá khó khăn cho việc phân loại!. Phân biệt “pho mát” và “bệnh” ko
quá khó đối với phần mềm phân loại.
Những tính năng nào phần mềm phân loại sử dụng, và có ích gì trong việc
đưa ra quyết định? Chủ yếu là hệ thống sử dụng kí tự n-gram - những dãy chữ cái
ngắn - dù nó cũng có một vài tính năng khác bao gồm tần số class ưu tiên và một
tính năng cho độ dài cố định của tên. Trong ví dụ trên, lệnh -jar chạy class mặc
định trong các file jar là “edu.stanford.nlp.classify.ColumnDataClassifier”. Trong
ví dụ này chúng ta sẽ cho chạy các dòng lệnh một cách rõ ràng. Ngoài ra, thông
thường nó rất hữu ích để kết hợp một tập tin Properties và một số dòng lệnh flag:
nếu chương trình chạy một loạt các thí nghiệm, ta có thể cấu hình phân loại cơ sở
trong một tập tin Properties nhưng đặt khác trong Properties cho một loạt các thí
nghiệm trên các dòng lệnh. Mọi thứ được chỉ định trên dòng lệnh ghi đè các thông
số trong Properties file. Chúng ta sẽ thêm 1 dòng lệnh cờ để hiển thị ra Đặc điểm
từ loại có trọng số cao.
Hoàng Quang Vũ, Nguyễn Anh Toàn K7MCS.
Giáo Trình Trí Tuệ Nhân
2
Võ Huỳnh Trâm – Trần Ngân