MỞ ĐẦU Ngày nay internet đang phát triển nhanh chóng, việc chia sẻ dữ liệu đa phương tiện như hình ảnh và các đoạn phim trên các trang web cũng trở nên phổ biến, kéo theo vấn đề là một s
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
-* -
ĐÀO BẢO LINH
SINH CÂU MIÊU TẢ CHO HÌNH ẢNH SỬ DỤNG
MÔ HÌNH NGÔN NGỮ
LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
Hà Nội - 2015
Trang 2ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
-* -
ĐÀO BẢO LINH
SINH CÂU MIÊU TẢ CHO HÌNH ẢNH SỬ DỤNG
NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS TS LÊ ANH CƯỜNG
Trang 3NHẬN XÉT CỦA CÁN BỘ HƯỚNG DẪN
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Trang 4LỜI CẢM ƠN
Trước tiên, tôi xin gửi lời cảm ơn tới thầy giáo hướng dẫn, PGS TS Lê Anh Cường (University of Enginerring and Technology) người đã trực tiếp hướng dẫn
và tạo điều kiện tốt nhất để tôi hoàn thành luận văn này
Tôi cũng xin gửi lời cảm ơn tới PGS.TS Yusuke Miyao (National Institute
of Informatics), người đã hướng dẫn và tạo điều kiện cho tôi trong quá trình nghiên cứu đề tài tại Nhật Bản
Tôi cũng xin gửi lời cảm ơn chân thành tới các thầy cô giáo trường Đại học Công Nghệ, những người đã trực tiếp giảng dạy, hướng dẫn và tạo điều kiện cho tôi trong quá trình học tập và thực hành ở trường
Cuối cùng, tôi xin gửi lời cảm ơn tới tất cả các bạn học và gia đình đã ủng
hộ, giúp đỡ tôi trong suốt quá trình tôi thực hiện luận văn này
Hà Nội, ngày 8 tháng 9 năm 2015
Học viên
Đào Bảo Linh
Trang 5LỜI CAM ĐOAN
Tôi xin cam đoan luận văn với đề tài “Sinh câu miêu tả cho hình ảnh sử dụng mô hình ngôn ngữ” là công trình nghiên cứu của riêng tôi Các số liệu, kết
quả được trình bày trong luận văn là hoàn toàn trung thực và chưa từng được công
bố trong bất kỳ một công trình nào khác
Tôi đã trích dẫn đầy đủ các tài liệu tham khảo, công trình nghiên cứu liên quan ở trong nước và quốc tế
Trong các nội dung được trình bày trong luận văn, tôi đã thể hiện rõ ràng
Trang 6MỤC LỤC
Mục lục 1
Danh mục từ viết tắt 3
Thuật ngữ sử dụng 4
Danh mục bảng biểu 5
Danh sách hình vẽ 6
MỞ ĐẦU 7
Chương 1 MÔ TẢ BÀI TOÁN 8
1.1 Bài toán và Ý nghĩa 8
1.2 Các nghiên cứu liên quan 10
1.3 Phạm vi nghiên cứu của luận văn 11
Chương 2 PHƯƠNG PHÁP 12
2.1 Tập văn bản 12
2.1.1 Các loại tập văn bản 12
2.1.2 Cấu trúc của tập văn bản 13
2.1.3 Chú thích (annotation) 14
2.1.4 Sử dụng tập văn bản 14
2.2 Mô hình ngôn ngữ 15
2.2.1 Khái quát 15
2.2.2 Tầm quan trọng của mô hình ngôn ngữ N-gram 15
2.2.3 Mô hình ngôn ngữ N-gram 17
2.2.4 Xích Markov 18
2.2.5 Ước lượng xác suất 20
2.2.6 Đánh giá mô hình xác suất qua độ hỗn loạn thông tin 21
2.3 Thuật toán tìm kiếm 22
2.3.1 Thuật toán tìm kiếm theo chiều rộng 22
2.3.2 Thuật toán tìm kiếm theo chiều sâu 24
2.3.3 Thuật toán tìm kiếm theo lựa chọn tốt nhất(Best-first search) 25
Chương 3 MÔ HÌNH BÀI TOÁN 29
3.1 Tổng quan mô hình 29
Trang 73.2.2 Trích chọn đặc trưng 34
3.3 Sinh câu miêu tả cho đối tượng 35
Chương 4 THỰC NGHIỆM 40
4.1 Môi trường cài đặt 40
4.2 Quá trình thử nghiệm 41
4.2.1 Nhận dạng đối tượng 41
4.2.2 Tập văn bản huấn luyện 42
4.2.3 Kết quả hệ thống sinh câu miêu tả 43
KẾT LUẬN 44
TÀI LIỆU THAM KHẢO 45
PHỤ LỤC 47
Trang 8Danh mục từ viết tắt
Ký hiệu viết
tắt
SVM support vector machine Máy hỗ trợ vector
Trang 9Thuật ngữ sử dụng
Breadth-first search Tìm kiếm theo chiều rộng
Depth-first search Tìm kiếm theo chiều sâu
Graph-based segmentation Phân đoạn ảnh dựa trên đồ thị
Trang 10Danh mục bảng biểu
Bảng 2.2-1 Ước lượng xác suất của từ xuất hiện sau cụm từ tương ứng trong tập văn bản
Trang 11Danh sách hình vẽ
Hình 1-1 Các nghiên cứu của thị giác máy liên quan tới vấn đề nhận dạng đối
tượng 8
Hình 2-1 Minh hoạ thuật toán tìm kiếm theo lựa chọn tốt nhất 26
Hình 3-1 Mô hình sinh câu miêu tả cho hình ảnh 29
Hình 3-2 Hệ thống phát hiện đối tượng 30
Hình 3-3 Thống kê kết quả maximum recall đối với số lượng cửa sổ trên ảnh giữa phương pháp SVM kết hợp HOG, phương pháp SVM kết hợp BOF, phương Pháp SVM kết hợp HOG và BOF Kết quả thử nghiệm trên tập dữ liệu PASCAL VOC 2007 [11] 31
Hình 3-4 Kiến trúc của mạng neural nhân chập CNN 34
Hình 3-5 Mẫu huấn luyện biến dạng 35
Hình 3-6 Thí dụ sinh câu bất kỳ theo ngữ cảnh là các từ person, standing, tree Ký hiệu +, - tương ứng với ý nghĩa có thể mở rộng và không thể mở rộng, OWs nghĩa là "từ ngẫu nhiên" trong tập các ứng viên 36
Hình 3-6 Thí dụ minh hoạ về sự khác biệt ngữ nghĩa khi thay đổi thứ tự của từ 39
Hình 4-1 Nhận dạng đối tượng trong ảnh 41
Hình 4-2 Minh hoạ thành phần trong tập dữ liệu Microsoft COCO 42
Hình 4-3 Minh hoạ kết quả sinh câu miêu tả 43
Trang 12MỞ ĐẦU
Ngày nay internet đang phát triển nhanh chóng, việc chia sẻ dữ liệu đa phương tiện như hình ảnh và các đoạn phim trên các trang web cũng trở nên phổ biến, kéo theo vấn đề là một số dữ liệu không được đặt tiêu đề hay thiếu các miêu
tả, gây khó khăn cho việc tìm kiếm và khai thác thông tin trên internet, từ đó chúng tôi quyết định nghiên cứu phát triển đề tài “Sinh câu miêu tả cho hình ảnh
sử dụng mô hình ngôn ngữ” Đề tài này sẽ tập trung vấn đề sinh ra câu miêu tả cho hình ảnh Bài toán nghiên cứu của của luận văn cũng nằm trong các nghiên cứu liên quan đến việc phát triển các hệ thống tự động miêu tả video, và các hệ thống trợ lý miêu tả lại môi trường xung quanh cho người mù, hay hỗ trợ việc tiếp thu tri thức hoặc môi trường của Robot
Sinh câu miêu tả cho hình ảnh sử dụng mô hình ngôn ngữ ( Language Model ) là bài toán được kết hợp giữa thị giác máy (Computer Vision) và xử lý ngôn ngữ
tự nhiên (Natural Language Processing), tương ứng với hai giai đoạn chính là nhận dạng đối tượng trong ảnh và sau đó sinh câu miêu tả Trong mô hình này,
xử lý ngôn ngữ tự nhiên đóng vai trò hết sức quan trọng, ảnh hưởng nhiều đến chất lượng của hệ thống Đề tài này luận văn sẽ ứng dụng một mô hình mới trong nhận dạng đối tượng hình ảnh, đây là mô hình được huấn luyện từ trước bởi trung tâm thí nghiệm thị giác máy trường đại học Berkeley, và tập trung chủ yếu cho phát triển hệ thống trong giai đoạn miêu tả mối quan hệ, nội dung của hình ảnh với đầu vào là các đối tượng đã được nhận dạng
Để giải quyết bài toán này luận văn sẽ áp dụng thuật toán tìm đường đi tối
ưu Best-First Search (BFS), và mô hình ngôn ngữ n-gram được huấn luyện từ tập
dữ liệu văn bản bao gồm các câu miêu tả hình ảnh
Luận văn sẽ trình bày các kiến thức liên quan tới bài toán này đồng thời cài đặt phương pháp đã sử dụng để sinh câu cho ảnh, cuối cùng là những định hướng nghiên cứu trong tương lai dựa trên kết quả ban đầu đã đạt được
Trang 13Chương 1 MÔ TẢ BÀI TOÁN
1.1 Bài toán và Ý nghĩa
Nhận dạng đối tượng trong ảnh là bài toán khá quen thuộc với hầu hết những người làm nghiên cứu trong lĩnh vực khoa học máy tính nói chung, hay thị giác máy nói riêng, có rất nhiều phương pháp với các mục đích khác nhau đã được đề xuất nhằm nhận dạng khuân mặt, nhận dạng vị trí, nhận dạng đối tượng, trong đó
nổi bật là các công trình nghiên cứu như: Pictorial structures Fishcher and Elschlager 1973 IEEE ( hình 1-1a), Eigenfaces Turk and Pentland 1991b( hình 1-1b), Real-time face detection Viola and Jones 2004, Springer( hình 1-1c), Instance (known object) recognition Lowe 1999 IEEE( hình 1-1d), Feature-based recognition Fergus, Perona, and Zisserman 2007( hình 1-1e), Region-based recognition Mori, Ren, Efros et al 2004 IEEE( hình 1-1f), Simultaneous recognition and segmentation Shotton, Winn, Rother et al 2009 Springer ( hình 1- 1g), Location recognition Philbin, Chum, Isard et al 2007 IEEE( hình 1-1h), Using context Russell, Torralba, Liu et al 2007( hình 1-1i)
Hình 1-1 Các nghiên cứu của thị giác máy liên quan tới vấn đề nhận dạng
đối tượng [17]
Trang 14Những năm gần đây nhiều nghiên cứu trong khoa học máy tính đang có những bước đột phá rõ rệt khi liên tục công bố các kết quả nghiên cứu về trí tuệ nhân tạo, cho phép tạo ra những hệ thống Robot có khả năng thu nhận thông tin
từ môi trường tự nhiên và phân tích để đưa ra phản ứng phù hợp, ví dụ như Robot
có khả năng gấp khăn, hay có thể giữ trạng thái thăng bằng trong các điều kiện tác động khác nhau, hay Robot có thể giao tiếp với con người bằng giọng nói và hành động các hệ thống này được kết hợp từ các nghiên cứu trong các lĩnh vực riêng như: Thị giác máy, xử lý ngôn ngữ tự nhiên, trí tuệ nhân tạo , điều này cho thấy kết hợp các công trình nghiên cứu trong các lĩnh vực khác nhau đang phát huy hiệu quả, đặc biệt là mô phỏng khả năng của con người hiện đại, đó là khả năng nghe, nhìn, phân tích, hành động hoặc nói chuyện
Trong lĩnh vực thị giác máy các nghiên cứu cải tiến các hệ thống nhận dạng cũng đang phát triển mạnh mẽ, hiện nay trung tâm nghiên cứu thị giác máy thuộc trường đại học Berkeley đang phát triển hệ thống nhận dạng các đối tượng trong ảnh thông qua huấn luyện mô hình theo phương pháp Deep Learning, cụ thể năm
2013 một mô hình có tên mô hình R-CNN (R-CNN model) được phát triển cho phép nhận dạng các đối tượng trong hình ảnh, nhưng nhược điểm là hệ thống tiêu tốn tài nguyên và chậm chạp, ngay sau đó mô hình Fast R-CNN rút ngắn được thời gian, tới đầu năm 2015 họ công bố hệ thống Neural Talk, hệ thống cải tiến này có khả năng nhận dạng đối tượng trong ảnh và nhận dạng được cả hành động của các đối tượng đó Từ đó có thể thấy rằng các hệ thống thông minh này đang
có những bước cải tiến rõ rệt về hiệu năng cũng như chất lượng
Việc sinh câu miêu tả cho hình ảnh được quy về bài toán tìm ra câu có xác suất lớn nhất có thể cho các đối tượng đã nhận dạng được trong ảnh Vậy vấn đề đặt ra là làm thế nào để từ hai hay nhiều từ rời rạc mà ta có thể bổ sung các từ vào sao cho thành lập/sinh câu có ngữ nghĩa tốt? Chúng tôi nghiên cứu một phương pháp giải quyết bài toán sinh câu áp dụng phương pháp tìm đường đi tốt nhất giữa các đỉnh của đồ thị, trong đó mỗi đỉnh là 1 từ, và hàm chi phí được tính dựa trên giá trị xác suất giữa các đỉnh Có thể thấy rằng, trong điều kiện cụ thể, chúng ta
có đầu vào nhiều hơn 2 từ, vì thế cho nên bài toán được nâng lên thành tìm đường
đi tối ưu qua nhiều đỉnh cho trước, chính vì thế việc tìm ra một câu có ý nghĩa và tối ưu được về mặt thời gian và tài nguyên hệ thống là vấn đề khó khăn có thể sẽ mất nhiều thời gian để có thể giải quyết được vấn đề này
Trang 15Đối với nghiên cứu khoa học, giải quyết bài toán này không chỉ có ý nghĩa trong phạm vi sinh câu miêu tả hình ảnh mà còn có ý nghĩa khi nghiên cứu vấn
đề sinh câu miêu tả cho các đoạn phim ngắn bằng việc kết hợp hoặc xây dựng mô hình phát hiện đối tượng trong các đoạn phim đó tại các thời điểm khác nhau với kết quả nghiên cứu mà chúng tôi đã thực hiện Đối với thực tiễn dựa trên những nghiên cứu về sinh câu miêu tả cho hình ảnh, chúng ta có thể xây dựng các hệ thống phục vụ cho đời sống con người như các hệ thống nhu có khả năng thu nhận hình ảnh và đưa ra câu miêu tả dưới dạng văn bản hoặc dạng giọng nói, như một người trợ lý Mặt khác trong thời đại bùng nổ của internet những nghiên cứu về sinh câu miêu tả cho hình ảnh cũng mở ra ý tưởng về hệ thống cho phép tìm kiếm hình ảnh thông qua các miêu tả có hiệu quả cao hơn, ngay cả đối với những hình ảnh có tên và mô tả mặc định hoặc không đúng với nội dung hình ảnh, giúp cho người sử dụng internet dễ dàng tiếp cận với tài nguyên khi cần thiết
1.2 Các nghiên cứu liên quan
Nghiên cứu về sinh câu từ ảnh lần đầu tiên được nhóm tác giả B Z Yao, X Yang, L Lin, M W Lee, and S.-C Zhu đề xuất vào năm 2010 Ý tưởng của nghiên cứu này là từ bức ảnh đầu vào, áp dụng kỹ thuật Image Parsing để phân đoạn thành các đối tượng [5], mỗi đối tượng tiếp tục được phân chia thành nhiều thành phần, sau đó từ các biểu diễn ngữ nghĩa (semantic representation) sinh câu trong khi phải bảo đảm chính xác về mặt ngữ pháp
Một nghiên cứu khác đã được công bố, thông qua một mô hình ngữ pháp thực nghiệm (experimental grammar model) để hình thành câu, với đầu vào là các keyphrases (cụm từ khóa), các keyphrases này được giả định là nhận được sau khi phân tích nội dung của ảnh [6] Phương pháp này có ưu điểm là không cần phải phân loại thủ công theo các trường nhất định (các trường này có thể là các đối tượng, các hành động và khung cảnh) như các phương pháp đã được nghiên cứu trước đó
Mới đây nhất, năm 2015 một phương pháp tự động sinh câu miêu tả ảnh được đề xuất [7], quy trình sinh câu miêu tả được thực hiện thông qua 3 bước: Với đầu vào là 1 ảnh hệ thống sẽ phát hiện đối tượng và hành động, sinh câu và xếp hạng cho các câu, đầu ra là một câu miêu tả tốt nhất cho bức ảnh đầu vào Phương pháp này có sử dụng một mô hình ngôn ngữ được huấn luyện từ các miêu
tả của hơn 400.000 ảnh thuộc tập dữ liệu Microsoft COCO
Trang 16Ngoài ra còn có một vài nghiên cứu khác áp dụng chủ đề này cho miêu tả các đoạn video, qua nhiều năm các phương pháp được đề xuất đã có nhiều thay đổi, cho phép các hệ thống sinh câu gần với ngôn ngữ tự nhiên hơn, cụ thể là việc gần đây các nhà khoa học đã nghiên cứu về chủ đề này sử dụng các mô hình ngôn ngữ đem lại hiệu quả tốt hơn Nhận thấy hiệu quả của hướng tiếp cận mới, chúng tôi đã nghiên cứu một phương pháp sinh câu miêu tả cho hình ảnh, sử dụng mô hình ngôn ngữ tự nhiên
1.3 Phạm vi nghiên cứu của luận văn
Ý tưởng chủ đạo của luận văn chúng tôi nghiên cứu là sinh câu miêu tả cho hình ảnh, vì vậy để có được kết quả chúng ta phải thực hiện cả công đoạn phát hiện đối tượng trong ảnh và sinh câu miêu tả từ các đối tượng đã được phát hiện, tuy nhiên một mặt là do hiện nay trong lĩnh vực thị giác máy các nhà nghiên cứu cũng đang nghiên cứu và đưa ra các mô hình tối ưu để phát hiện đối tượng, mặt khác do điều kiện cụ thể về thời gian cho nên chúng tôi quyết định sử dụng mô hình phát hiện đối tượng đã được huấn luyện từ trước như một giả thiết với đầu vào là một ảnh và đầu ra là các đối tượng/ nhãn để tập trung cho công đoạn 2, nghiên cứu phương pháp sinh câu từ các nhãn vừa thu được Sau đó ghép 2 công đoạn lại sẽ là hệ thống tổng thể cho phép trả về kết quả là một câu tương ứng với hình ảnh đầu vào
Tuy nhiên do đặc thù của hệ thống khi cài đặt có sử dụng kết quả nghiên cứu
mô hình phát hiện đối tượng, cho nên trong luận văn chúng tôi sẽ trình bày ở mức tìm hiểu, mục đích là để chúng ta có cái nhìn toàn diện hơn trên tổng thể hệ thống Luận văn sẽ trình bày những nội dung sau: Khái niệm về tập văn bản, mô hình ngôn ngữ và phương pháp đánh giá, sau đó là các thuật toán tìm kiếm đặc trưng như thuật toán tìm kiếm theo chiều rộng, tìm kiếm theo chiều sâu và thuật toán tìm kiếm theo lựa chọn tốt nhất Ngoài ra, chúng tôi cũng trình bày mô hình bài toán mà chúng tôi nghiên cứu, bao gồm: Giới thiệu tổng quan mô hình bài toán, phương pháp phát hiện đối tượng trong ảnh, và phương pháp sinh câu miêu
tả cho hình ảnh Chương cuối sẽ trình bày về thực nghiệm của chúng tôi trong điều kiện cụ thể
Trang 17Chương 2 PHƯƠNG PHÁP
2.1 Tập văn bản
Để xây dựng được mô hình ngôn ngữ chúng ta cần có tập văn bản mẫu huấn luyện Cùng với từ điển, tập văn bản là những tài nguyên ngôn ngữ vô cùng căn bản và cần thiết cho xử lý ngôn ngữ tự nhiên (Natural Language Processing: NLP) Từ điển là tập hợp các tri thức về ngôn ngữ, cách sử dụng và ý nghĩa của từng từ thì tập văn bản là dữ liệu về cách sử dụng, cách viết của từ đó trong thực
Đối với tập văn bản hẹp, vấn đề lớn nhất là “để đảm bảo tính đại diện và cân bằng của tập văn bản, thì phải lấy những chủng loại ngôn ngữ nào, và tỉ lệ là bao nhiêu” Không có 1 con số cụ thể và khách quan nào về những tỉ lệ này Vì sự khó khăn của việc xây dựng tập văn bản hẹp, mà phần lớn tập văn bản hiện nay đều là các tập văn bản rộng
2.1.1 Các loại tập văn bản
• Tập văn bản thô: Đơn giản chỉ là tập hợp các dữ liệu mà không có xử
lý gì thêm
• Tập văn bản được gắn nhãn: Các dữ liệu trong tập văn bản đã được xử
lý như phân tích từ, phân tích cú pháp, gắn nhãn từ loại, …
Ngoài cách chia trên, ta cũng có thể phân loại tập văn bản theo cấu tạo của nó:
• Tập văn bản biệt lập : Dữ liệu lấy vào 1 cách ngẫu nhiên, biệt lập và không phân biệt với nhau
Trang 18• Tập văn bản theo danh mục : Dựa vào các danh mục để chia dữ liệu trong tập văn bản thành các nhóm
• Tập văn bản trùng lặp : Các dữ liệu trong tập văn bản có thể ở nhiều nhóm cùng lúc
• Tập văn bản theo thời gian : Các dữ liệu sắp xếp theo thời gian thu thập và thời gian xuất hiện
2.1.2 Cấu trúc của tập văn bản
Như đã trình bày ở trên, có hai hướng khi thiết kế một tập văn bản : Thứ là quan tâm và tính toán đến sự cân bằng (tính đại diện, phổ biến, đầy đủ) của tập văn bản, và thứ hai là tập trung vào số lượng mà không quan tâm đến sự cân bằng Tuỳ theo 2 hướng xây dựng này mà các tập văn bản sẽ có cấu trúc và quá trình xây dựng khác nhau
Khi xây dựng các tập văn bản hẹp, thường trải qua các quá trình sau :
• Tính toán, thiết kế tập văn bản: Đây là quá trình quan trọng nhất quyết định đặc điểm, tính chất của tập văn bản Trước đó, ta phải kiểm tra những điều sau : (a) mục đích sử dụng tập văn bản, (b) kích thức tập văn bản hay số lượng ngôn ngữ, (c) các chủng loại văn bản được chọn, (d) phương pháp phân tầng, phương pháp tính tỉ suất cấu thành, (e) độ dài các văn bản sẽ lấy, (f) bản quyền tác giả, phương pháp công khai,
và nhiều yếu tố khác
• Lấy mẫu (sampling): Từ tập hợp mẫu ta chọn ra lần lượt từng thành phần (là các văn bản) Quá trình này phải tuân theo tỉ suất cấu thành được thiết lập từ bước 1 để xác định độ dài văn bản, số lượng văn bản
ở mỗi tầng Sau khi xác định được các yếu tố này, người ta thường dùng phương pháp chọn ngẫu nhiên các mẫu để xây dựng các tầng
• Xây dựng hình thức (Formalization): Quá trình gắn thêm các tag cần thiết cho các mẫu
• Chú thích (annotation): Bổ xung thêm thông tin về hình thái, phân tách
từ, cấu trúc câu …
• Sửa, bổ xung thêm các văn bản, thông tin liên quan: Các thông tin liên quan như quyền tác giả, giới thiệu, phương pháp, nguồn thông tin, …
Trang 192.1.3 Chú thích (annotation)
Chú thích là quá trình bổ sung tri thức cho văn bản gốc Ví dụ như chú thích thêm thông tin về tự loại, chú thích thông tin cú pháp, chú thích thông tin ngữ nghĩa Quá trình chú thích không làm mất đi nội dung gốc mà chỉ bổ sung thêm thông tin
Có 2 dạng chú thích chính :
• Chú thích được ghi cùng nội dung
• Chú thích tách biệt khỏi nội dung
Chúng ta sẽ xem xét ví dụ dưới đây :
“hôm nay trời đẹp.”
Với dạng 1, chú thích ghi cùng nội dung, ta sẽ có :
<N>hôm nay</N> <N>trời</N> <A>đẹp</A>
Nằm trong cụm <N> </N> là danh từ, <A> </A> là tính từ
Có thể thấy, khi ta bỏ các chú thích đi, ta thấy chú thích đã làm văn bản giàu thông tin hơn và giữ thông tin câu văn ban đầu
Với dạng 2, chú thích tách biệt khỏi nội dung, ta sẽ có :
<start=0 end=16><N start=0 end=7><N start=8 end=12><A start=13 end=16>
Các ví dụ này do tác giả tạo ra nhằm làm rõ hơn về khái niệm chú thích, không phải là dạng chú thích chuẩn được sử dụng trong thực tế
Đối với các chú thích ngữ học, sẽ có nhiều thông tin hơn được đưa vào Với mỗi dạng tập văn bản (có lẽ) sẽ có 1 dạng tag khác nhau, vì thế nên đọc kĩ các tài liệu liên quan đến tập văn bản để thao tác được chính xác
2.1.4 Sử dụng tập văn bản
Tập văn bản được sử dụng trong thống kê ngôn ngữ học, để quan sát và phân tích các hiện tượng ngôn ngữ Từ khoảng những năm 1990, với sự phát triển vượt bậc của tốc độ máy tính, hàng loạt tập văn bản được làm tự động hay bán tự động
Trang 20đã được ra đời, điều này cũng làm tăng kích thước tập văn bản và độ chính xác của các thống kê
Ngoài ra, tập văn bản còn có 1 tác dụng vô cùng quan trọng nữa, là làm tài nguyên cho các máy học ( Machine Learning ) và các hệ chuyên gia, khai phá dữ liệu ( Data Mining )
2.2 Mô hình ngôn ngữ
2.2.1 Khái quát
Mô hình ngôn ngữ là phân bố xác suất trên các tập văn bản, cho biết xác suất của một câu, hoặc một dãy từ thuộc một ngôn ngữ là bao nhiêu Mô hình ngôn ngữ tốt sẽ đánh giá đúng các câu đúng ngữ pháp, trôi chảy hơn các từ có thứ tự ngẫu nhiên
Thí dụ:
P(“It is raining heavily”) > P(“Raining heavily it is”)
Mô hình ngôn ngữ được áp dụng nhiều trong lĩnh vực xử lý ngôn ngữ tự nhiên như: Dịch máy, kiểm tra lỗi chính tả, tra cứu thông tin, phân đoạn từ và các ứng dụng khác Chính vì vậy mô hình ngôn ngữ hết sức quan trọng, làm tiền đề cho các nghiên cứu trong các lĩnh vực liên quan Thí dụ, một mô hình ngôn ngữ kém sẽ kéo theo xác suất của câu cũng thay đổi theo, điều này ảnh hưởng rất nhiều đến kết quả và quá trình đánh giá kết quả của việc sinh một câu, ví dụ như trong nhận dạng tiếng nói
Một mô hình ngôn ngữ sẽ cho chúng ta biết xác suất của một chuỗi từ P(w1,w2,…,wk)
2.2.2 Tầm quan trọng của mô hình ngôn ngữ N-gram
Mô hình ngôn ngữ quan trọng trong việc phát hiện từ bị nhiễu Trong nhận dạng giọng nói, với đầu vào là các tín hiệu âm thanh có nhiễu, độ nhập nhằng, hay là sự tương đồng cao Thí dụ, khi phát âm câu “I saw the van” nếu chỉ đơn thuần chuyển tín hiệu âm thanh thành câu, thì sẽ dễ dàng gặp trường hợp câu phát
Trang 21an”) Trường hợp khác trong nhận dạng chữ viết tay, có những từ liên quan đến ngữ nghĩa của câu nhưng vì một lý do nào đó mà không rõ ràng, mờ nhoè, ta phải
sử dụng các biện pháp suy luận với một danh sách các ứng viên để chọn ứng viên làm sao tạo thành câu có xác suất là cao nhất
Một ví dụ khác, mô hình ngôn ngữ đóng vai trò quan trọng trong dịch máy thống kê, một thí nghiệm khác[18] cho thấy rằng, nếu dịch một câu từ tiếng trung
he briefed to reporters on the chief contents of the statement
he briefed reporters on the chief contents of the statement
he briefed to reporters on the main contents of the statement
he briefed reporters on the main contents of the statement
Dựa vào mô hình ngôn ngữ ta có thể xác định briefed reporters được sử dụng
nhiểu hơn briefed to reporters, và main contents được sử dụng nhiều hơn chief contents và câu cuối cùng là câu có xác suất là lớn nhất
Trong sửa lỗi chính tả (spelling correction), có 2 nhiệm vụ chính là phát hiện
từ lỗi và sửa từ lỗi, nhiều nhà nghiên cứu cũng đề xuất nhiều phương pháp cho các mục đích khác nhau
Thí dụ:
They are leaving in about fifteen minuets to go to her house
The design an construction of the system will take more than a year
Những lỗi thế này xảy ra rất nhiều, chúng ta cũng không thể nào xác định từ sai bằng cách gắn cờ cho từ không có trong từ điển, nhưng chúng ta có thể biết
được cụm từ “in about fifteen minuets” ít có khả năng xảy ra hơn “in about fifteen minutes” Chúng ta có thể sử dụng một bộ spelling checker để ước tính xác suất,
đồng thời đưa ra gợi ý một cụm từ có xác suất cao nhất
Ngoài ra, mô hình ngôn ngữ N-gram còn được ứng dụng rộng rãi trong các lĩnh vực khác như dự đoán từ (Word Prediction), gán nhãn từ loại (Part-Of- Speech Tagging ), Sinh ngôn ngữ tự nhiên (Natural Language Generation)
Trang 222.2.3 Mô hình ngôn ngữ N-gram
Áp dụng công thức luật xích (Chain Rule), ta có xác suất của một dãy từ được tính như sau:
P(w1w2…wk) = P(w1) × P(w2|w1) × P(w3|w1w2) × … ×
P(wk|w1w2 …wk-1)
(2.1.1)
Cách tính xác suất của một từ với điều kiện các từ đứng trước nó:
Giả sử ta muốn tính xác suất của một từ w với một chuỗi từ h trước nó,
P(w,h) Với h là “its water is so transparent that”, w là “the”
Hay để tính:
P(the| its water is so transparent that)
Theo công thức xác suất có điều kiện:
𝑃 𝐵 𝐴 =𝑃(𝐴, 𝐵)
𝑃(𝐴)
(2.1.2)
Để tính được xác suất việc đầu tiên là ước lượng tần suất xuất hiện của chuỗi
h “its water is so transparents that” ký hiệu là C(its water is so transparents that)
và bao nhiêu lần chuỗi h được theo sau bởi “the” ký hiệu là C(its water is so transparents that the) trong tập văn bản Sau đó áp dụng công thức sau để tính ra xác suất:
P(the| its water is so transparent that) =7(89: ;<9=> 8: :? 9><@:A<>=@9: 9B<9 9B=)
7(89: ;<9=> 8: :? 9><@:A<>=@9: 9B<9)
Bằng cách áp dụng công thức trên chúng ta có thể tính được xác suất trong nhiều trường hợp, nhưng không phải tất cả các trường hợp, dữ liệu chúng ta thu thập được đôi khi không thể bao quát được tất cả trường hợp Vấn đề gặp ở đây
là vấn đề về dữ liệu thưa Hơn nữa như chúng ta đã biết, ngôn ngữ vốn dĩ có tính
Trang 23“its water is so transparent that” bằng “Walden Pond’s water is so transparent that the” mà từ này được tạo ra trong khi bộ dữ liệu chưa được cập nhập thì có thể sẽ dẫn đến xác suất tính được là 0
Mặt khác, nếu cứ liên tục cập nhập thêm các trường hợp mới thì bộ nhớ sẽ ngày càng lớn, với xu hướng sáng tạo phát triển thì đây là việc làm tiêu tốn tài nguyên hệ thống và đôi khi còn giảm hiệu năng hoạt động nữa
Vì thế, người ta đưa ra một phương pháp để tính xác suất hiệu quả hơn bằng cách áp dụng xấp xỉ Markov Như vậy, thay vì một từ phụ thuộc vào cả dãy đứng trước nó thì từ đó sẽ phụ thuộc vào n từ đứng liền trước nó
2.2.4 Xích Markov
Xét một hệ nào đó được quan sát tại các thời điểm rời rạc 0, 1, 2, Giả sử các quan sát đó là 𝑋D, 𝑋E, 𝑋F, … , 𝑋H, Khi đó ta có một dãy các đại lượng ngẫu nhiên (𝑋H) trong đó 𝑋H là trạng thái của hệ tại thời điểm n Giả thiết rằng mỗi 𝑋H,
n = 0, 1, là một đại lượng ngẫu nhiên rời rạc Ký hiệu E là tập giá trị của các (𝑋H) Khi đó E là một tập hữu hạn hay đếm được, các phần tử của nó được ký hiệu
là i, j, k Ta gọi E là không gian trạng thái của dãy
Ta nói rằng dãy các đại lượng ngẫu nhiên (𝑋H) là một xích Markov nếu với mọi 𝑛E < < 𝑛J < 𝑛JKE và với mọi 𝑖E, 𝑖F, 𝑖JKE∈ E
P{𝑋HMNO = 𝑖JKE|𝑋HO = 𝑖E 𝑋HP = 𝑖F , 𝑋HM= 𝑖J} = P{𝑋HM+1 = 𝑖JKE|𝑋HMNO = 𝑖J}
Ta coi thời điểm 𝑛JKE là tương lai, 𝑛J là hiện tại còn 𝑛E, , 𝑛JQE là quá khứ Như vậy, xác suất có điều kiện của một sự kiện B nào đó trong tương lai nếu biết hiện tại và quá khứ của hệ cũng giống như xác suất có điều kiện của B nếu chỉ biết trạng thái hiện tại của hệ.[4]
Bài toán dự đoán từ tiếp theo của một chuỗi chưa đầy đủ chúng ta đi xét điều kiện để xảy ra sự kiện B trong tương lai, hay nói cách khác dự vào xác suất của
từ hiện tại và các từ đứng trước để dự đoán từ tiếp theo của chuỗi đó
Trong mô hình ngôn ngữ n-gram, thông thường để tìm xác suất một chuỗi các từ chúng ta đi tìm tích của từng từ một dựa trên giá trị xác suất của các từ đứng trước, theo luật xích (Chain Rule):
Trang 24Phân bố xác suất câu không giới hạn số lượng từ đứng trước tương đương với trường hợp giới hạn m từ đứng trước được biểu diễn dưới dạng công thức như sau:
ta quy ước mô hình ngôn ngữ unigrams, bigrams, trigrams tương ứng với mô hình phụ thuộc vào 1 từ , 2 từ và 3 từ Trong 1 vài trường hợp số phụ thuộc này có thể tăng lên, người ta quy ước chung là n-grams, với điều kiện 1 từ phụ thuộc vào n-
1 từ trước nó, tạo thành các cụm n từ gọi là n-gram
Trang 252.2.5 Ước lượng xác suất
Để làm rõ quy tắc ước lượng xác suất cho mô hình ngôn ngữ, chúng ta đi vào xét một dạng đặc trưng của các mô hình ngôn ngữ là mô hình trigrams cho tập văn bản huấn luyện
Xác suất xảy ra một từ 𝑤T thoả mãn điều kiện xuất hiện ngay sau chuỗi
𝑤E 𝑤F được ký hiệu là P(𝑤T| 𝑤E, 𝑤F), giá trị này được tính bằng thương của số lần mà chuỗi 𝑤E𝑤F được theo sau bởi 𝑤T và số lần xuất hiện chuỗi 𝑤E𝑤F trong tập văn bản
P(𝑤T| 𝑤E, 𝑤F) = UVWHX YO,YP,YZ
Xét thí dụ trên tập dữ liệu thực tế, cụ thể là trên bộ dữ liệu văn bản gồm tập các câu miêu tả hình ảnh trích xuất từ Microsoft COCO dataset phiên bản phát hành năm 2014, chúng ta ước lượng xác suất cho các từ xuất hiện sau các cho cụm từ “An empty”, “A man”:
An empty (count: 1225) A man (count: 41483)
Trang 26tập văn bản, và cụm từ “An empty bathroom” xuất hiện cùng nhau 62 lần, kết quả thu được là [F
EFF\≃ 0.0506 Vậy xác suất xuất hiện từ “bathroom” trong điều kiện
có cặp từ “An empty” đứng trước là P(bathroom|An empty) ≃ 0.0506, thực hiện tương tự với các word khác chúng ta có thể tính được giá trị cho mô hình trigram
và các mô hình xác suất khác
2.2.6 Đánh giá mô hình xác suất qua độ hỗn loạn thông tin
Mô hình ngôn ngữ trong các điều kiện hay phương thức khác nhau mà đưa
ra kết quả khác nhau, như độ lớn của tập văn bản huấn luyện, hay phương pháp làm mịn được áp dụng hay không, và thiết lập giá trị cho tham số bao nhiêu… Những yếu tố đó tác động trực tiếp lên chất lượng của một mô hình ngôn ngữ Vậy, làm thế nào để đánh giá cho mô hình ngôn ngữ? câu hỏi này sẽ được giải đáp ở mục này
Chúng ta có thể trực quan đánh giá thông qua kết quả khi sử dụng mô hình ngôn ngữ tuy nhiên cách đánh giá này phụ thuộc vào ứng dụng Ở đây chúng ta xét cách đánh giá độc lập ứng dụng và chỉ dựa trên tập văn bản đánh giá Người
ta đưa ra một độ đo Perplexity(PP) để nói lên Cross entropy của tập văn bản test Entropy chéo được định nghĩa như sau:
𝐻 𝑃cd = −1
𝑛logF𝑃cd(𝑤E, 𝑤F, 𝑤T,… , 𝑤H) (2.2.6-1)
Với n là số lượng từ trong một câu, việc tính entropy chéo cho 1 câu là đi lấy
âm của logarithm cơ số 2 của phân phối xác suất toàn bộ câu, chia cho tổng số lượng câu Khi cài đặt tính toán chúng ta có thể áp dụng công thức tương đương dưới đây:
Trang 27𝑃𝑃 = 2l mno (2.2.6-3)
Perplexity càng bé thì mô hình càng tốt, tức khả năng biểu diễn tập văn bản test càng tốt
2.3 Thuật toán tìm kiếm
Trong bài toán chúng ta đang xét, nếu coi mỗi từ là một nút trong một đồ thị
và khoảng cách (chi phí) giữa mỗi nút là giá trị xác suất thì chúng ta có thể đưa
về bài toán tìm đường đi tốt nhất
Chúng ta có nhiều phương pháp để tìm kiếm đường đi, mỗi phương pháp tốt trong một bài toán cụ thể nào đó, trong chương này chúng tôi sẽ đưa ra một vài phương pháp tìm kiếm tiêu biểu nhất có thể áp dụng để giải quyết bài toán này
2.3.1 Thuật toán tìm kiếm theo chiều rộng
Giải thuật tìm kiếm lời giải theo chiều rộng là cài đặt cụ thể của giải thuật chung tìm kiếm lời giải, trong đó có sử dụng cấu trúc dữ liệu kiểu hàng đợi (Queue) để lưu giữ các trạng thái nút lá của cây tìm kiếm Các nút lá sinh ra trong quá trình thực thi giải thuật sẽ được cập nhật vào một hàng đợi theo nguyên tắc nút nào được đưa vào hàng đợi trước sẽ được lấy ra trước trong quá trình mở rộng cây
Thuật toán này thực ra là sự cải biến về thứ tự duyệt đỉnh trên đồ thị của tìm kiếm theo chiều sâu bằng cách thay vì dùng một STACK thì ta lại dùng một hàng đợi QUEUE để kết nạp đỉnh được thăm Như vậy, đỉnh được thăm càng sớm sẽ càng sớm trở thành duyệt xong (cơ chế First In First Out - vào trước ra trước) Thủ tục được miêu tả dưới đây:
Trang 28Chúng ta có một số nhận xét sau đây về thuật toán tìm kiếm theo bề rộng:
• Trong tìm kiếm theo bề rộng, trạng thái nào được sinh ra trước sẽ được phát triển trước, do đó danh sách L được xử lý như hàng đợi Trong bước 2.3, ta cần kiểm tra xem u có là trạng thái kết thúc hay không Nói chung các trạng thái kết thúc được xác định bởi một số điều kiện nào đó, khi đó
ta cần kiểm tra xem u có thỏa mãn các điều kiện đó hay không
• Nếu bài toán có nghiệm (tồn tại đường đi từ trạng thái ban đầu tới trạng thái đích), thì thuật toán tìm kiếm theo bề rộng sẽ tìm ra nghiệm, đồng thời đường đi tìm được sẽ là ngắn nhất Trong trường hợp bài toán vô nghiệm và không gian trạng thái hữu hạn, thuật toán sẽ dừng và cho thông báo vô nghiệm
Trang 292.3.2 Thuật toán tìm kiếm theo chiều sâu
Tư tưởng chính của thuật toán: Giả sử chúng ta đang xét trên đồ thị G(V,E)
Từ một đỉnh u_V hiện thời nào đó ta sẽ thăm tới đỉnh kề v của u và quá trình được lặp lại đối với đỉnh v ở bước tổng quát, giả sử hiện tại đang xét đỉnh u0, chúng ta
sẽ có hai khả năng sẽ xảy ra:
-Nếu như tồn tại một đỉnh v0 kề với u0 mà chưa được thăm thì đỉnh v0 đó
sẽ trở thành đỉnh đã thăm và quá trình tìm kiếm lại bắt đầu từ đỉnh v0 đó
-Ngược lại, nếu mọi đỉnh kề với u0 đều đã thăm thì ta sẽ quay trở lại đỉnh
mà trước đó ta đến đỉnh u0 để tiếp tục quá trình tìm kiếm
Như vậy, trong quá trình thăm đỉnh bằng thuật toán tìm kiếm theo chiều sâu, đỉnh được thăm càng muộn càng sớm được duyệt xong ( Cơ chế Last In First Out
- Vào sau ra trước ) Do đó, ta có thể tổ chức quá trình này bằng một thủ tục đệ quy như sau:
Trang 30Như ta đã biết, tư tưởng của chiến lược tìm kiếm theo độ sâu là, tại mỗi bước, trạng thái được chọn để phát triển là trạng thái được sinh ra sau cùng trong số các trạng thái chờ phát triển Do đó thuật toán tìm kiếm theo độ sâu là hoàn toàn tương
tự như thuật toán tìm kiếm theo bề rộng, chỉ có một điều khác là, ta xử lý danh sách L các trạng thái chờ phát triển không phải như hàng đợi mà như ngăn xếp
Cụ thể là trong bước 2.4 của thuật toán tìm kiếm theo bề rộng, ta cần sửa lại là
“Đặt v vào đầu danh sách L”
Sau đây chúng ta sẽ đưa ra các nhận xét so sánh hai chiến lược tìm kiếm mù:
• Thuật toán tìm kiếm theo chiều rộng luôn luôn tìm ra nghiệm nếu bài toán có nghiệm Song không phải với bất kỳ bài toán có nghiệm nào thuật toán tìm kiếm theo độ sâu cũng tìm ra nghiệm! Nếu bài toán có nghiệm
và không gian trạng thái hữu hạn, thì thuật toán tìm kiếm theo độ sâu sẽ tìm ra nghiệm Tuy nhiên, trong trường hợp không gian trạng thái vô hạn, thì có thể nó không tìm ra nghiệm, lý do là ta luôn luôn đi xuống theo độ sâu, nếu ta đi theo một nhánh vô hạn mà nghiệm không nằm trên nhánh
đó thì thuật toán sẽ không dừng Do đó người ta khuyên rằng, không nên
áp dụng tìm kiếm theo dộ sâu cho các bài toán có cây tìm kiếm chứa các nhánh vô hạn
• Độ phức tạp của thuật toán tìm kiếm theo độ sâu[1,2]
2.3.3 Thuật toán tìm kiếm theo lựa chọn tốt nhất(Best-first search)
Như chúng ta đã biết nếu tìm kiếm theo chiều sâu thì chúng ta không cần quan tâm đến việc mở rộng các nhánh, tránh tiêu tốn tài nguyên hệ thống một cách không cần thiết nhưng có có thể bị sa vào nhánh mà có thể không thể tìm ra lời giải như tìm kiếm theo chiều sâu Thuật toán tìm kiếm theo lựa chọn tốt nhất
sẽ giúp chúng ta giải quyết cả 2 vấn đề này Trong cùng một thời điểm chúng ta vừa có thể khai thác hướng theo chiều sâu trong khi vẫn luôn quan sát hướng khác
để luôn sẵn sàng triển khai nếu phát hiện một hướng khác tiềm năng hơn
Ý tưởng cơ bản của thuật toán được miêu tả như sau:
Mỗi bước của tìm kiếm tốt nhất – đầu tiên sẽ liệt kê tất cả các trạng thái có thể vào trong một danh sách đã được quy ước từ trước sau đó luôn luôn quan sát
Trang 31quan sát để luôn luôn so sánh với những trạng thái tiềm năng, khi phát hiện ra một trạng thái khác có khả năng cao hơn thì chuyển qua trạng thái mới để phát triển
mở rộng trạng thái đó Quá trình được thực hiện theo nguyên tắc này cho tới khi thoả mãn điều kiện dừng
Như vậy, với tiếp cận này, ta sẽ ưu tiên đi vào những nhánh tìm kiếm có khả năng nhất (giống tìm kiếm leo đồi dốc đứng), nhưng ta sẽ không bị lẩn quẩn trong các nhánh này vì nếu càng đi sâu vào một hướng mà ta phát hiện ra rằng hướng này càng đi thì càng tệ, đến mức nó xấu hơn cả những hướng mà ta chưa đi, thì ta
sẽ không đi tiếp hướng hiện tại nữa mà chọn đi theo một hướng tốt nhất trong số những hướng chưa đi
Xét thí dụ sau:
Hình 2-1 Minh hoạ thuật toán tìm kiếm theo lựa chọn tốt nhất
Khởi đầu, chỉ có một nút (trạng thái) A nên nó sẽ được mở rộng tạo ra 3 nút mới B,C và D Các con số dưới nút là giá trị cho biết độ tốt của nút Con số càng nhỏ, nút càng tốt Do D là nút có khả năng nhất nên nó sẽ được mở rộng tiếp sau nút A và sinh ra 2 nút kế tiếp là E và F Đến đây, chúng ta lại thấy nút B có vẻ có khả năng nhất (trong các nút B,C,E,F) nên ta sẽ chọn mở rộng nút B và tạo ra 2 nút G và H Nhưng lại một lần nữa, hai nút G, H này được đánh giá ít khả năng
Trang 32hơn E, vì thế sự chú ý lại trở về E E được mở rộng và các nút được sinh ra từ E
là I và J Ở bước kế tiếp, J sẽ được mở rộng vì nó có khả năng nhất Quá trình này tiếp tục cho đến khi tìm thấy một lời giải
Lưu ý rằng tìm kiếm này rất giống với tìm kiếm leo đồi dốc đứng, với 2 ngoại
lệ Trong leo núi, một trạng thái được chọn và tất cả các trạng thái khác bị loại bỏ, không bao giờ chúng được xem xét lại Cách xử lý dứt khoát này là một đặc trưng của leo đồi Trong tìm kiếm theo lựa chọn tốt nhất (BFS), tại một bước, cũng có một di chuyển được chọn nhưng những cái khác vẫn được giữ lại, để ta có thể trở lại xét sau đó khi trạng thái hiện tại trở nên kém khả năng hơn những trạng thái
đã được lưu trữ Hơn nữa, ta chọn trạng thái tốt nhất mà không quan tâm đến nó
có tốt hơn hay không các trạng thái trước đó Điều này tương phản với leo đồi vì leo đồi sẽ dừng nếu không có trạng thái tiếp theo nào tốt hơn trạng thái hiện hành
Để cài đặt các thuật giải theo kiểu tìm kiếm BFS, người ta thường cần dùng
2 tập hợp sau :
OPEN : tập chứa các trạng thái đã được sinh ra nhưng chưa được xét đến (vì
ta đã chọn một trạng thái khác) Thực ra, OPEN là một loại hàng đợi ưu tiên (priority queue) mà trong đó, phần tử có độ ưu tiên cao nhất là phần tử tốt nhất Người ta thường cài đặt hàng đợi ưu tiên bằng Heap Các bạn có thể tham khảo thêm trong các tài liệu về Cấu trúc dữ liệu về loại dữ liệu này
CLOSE : tập chứa các trạng thái đã được xét đến Chúng ta cần lưu trữ những trạng thái này trong bộ nhớ để đề phòng trường hợp khi một trạng thái mới được tạo ra lại trùng với một trạng thái mà ta đã xét đến trước đó Trong trường hợp không gian tìm kiếm có dạng cây thì không cần dùng tập này
Thuật toán tìm kiếm theo lựa chọn tốt nhất:
procedure Best_First_Search;
begin
1 Khởi tạo danh sách L chỉ chứa trạng thái ban đầu;
2 loop do