1. Trang chủ
  2. » Luận Văn - Báo Cáo

báo cáo giữa kì đề tài local beam search

12 12 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Local Beam Search
Tác giả Nguyễn Hoàn Thảo, Nguyễn Anh Tuấn, Nguyễn Thành Trung, Lê Đức Thắng, Trần Quốc Bảo, Tăng Huỳnh Minh Tiến, Nguyễn Hồng Ân, Huỳnh Nguyễn Tuấn Kiệt
Trường học Trường Đại Học Sư Phạm Kỹ Thuật Tp. HCM
Chuyên ngành Trí Tuệ Nhân Tạo
Thể loại Báo cáo giữa kì
Năm xuất bản 2023
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 12
Dung lượng 1,17 MB

Nội dung

Giới thiệu về tìm kiếm tia Beam Search:Tìm kiếm tia Beam Search là thuật toán tìm kiếm heuristic mà ở đó nó sẽ khai phá một đồ thị bằng cách tìm ra node khả quan, tối ưu nhất trong một d

Trang 1

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HCM

KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO GIỮA KÌ

TÊN HỌC PHẦN: TRÍ TUỆ NHÂN TẠO

Tên đề tài: Local beam search

Nhóm: số 4

Họ tên thành viên:

Nguyễn Hoàn Thảo - 21133081 (Nhóm trưởng)

Nguyễn Anh Tuấn - 21133113

Nguyễn Thành Trung - 21133090

Lê Đức Thắng - 21133082

Trần Quốc Bảo - 21133005

Tăng Huỳnh Minh Tiến - 21133088

Nguyễn Hồng Ân - 21133097

Huỳnh Nguyễn Tuấn Kiệt - 20132213

Ngày nộp: 23/03/2023

Trang 2

Mục lục

1 Giới thiệu về tìm kiếm tia: Define Beam Search ……… 3

2 Thuật toán tìm kiếm tia: Beam Search Algorithm ………4

3 Ví dụ về tìm kiếm tia: Beam Search Example ……… 5

4 Lợi ích và bất cập của việc tìm kiếm tia: Pros and Cons of Beam Search ………6

5 Độ phức tạp của tìm kiếm tia: Time and Space Complexity of Beam Search ……….7

6 Các biến thể của tìm kiếm tia: (Local beam) Variants of Beam Search ………8

7 Câu hỏi tại lớp và Bài tập về nhà ……… 9

Trang 3

1 Giới thiệu về tìm kiếm tia (Beam Search):

Tìm kiếm tia (Beam Search) là thuật toán tìm kiếm heuristic mà ở đó nó sẽ khai phá một đồ thị bằng cách tìm ra node khả quan, tối ưu nhất trong một danh sách các

node được giới hạn Tìm kiếm tia là sự cải tiến của BeFS (Best-First Search) mà ở

đó nó tốn ít dung lượng bộ nhớ hơn

Tìm kiếm đầu tiên tốt nhất (Best-First Search) tìm kiếm tất cả các node khả thi

để đi đến được mục tiêu Trong khi đó, tìm kiếm tia chỉ tìm một số lượt node nhất

định và giữ những node này làm ứng cử viên để tìm tới đích – giống với tìm kiếm

tham lam (Greedy Best-First Search).

Tìm kiếm tia sử dụng breadth-first search (tìm kiếm theo chiều rộng) để xây

dựng nên cây tìm kiếm của mình Tại mỗi tầng của cây tìm kiếm, nó sẽ truy mọi nút biên và sắp xếp chúng theo chiều tăng dần của giá trị heuristic Tuy nhiên, khác với

Best-First Search, nó sẽ chỉ giữ lại một số lượng nút biên xác định trước – được gọi

là Beam Width (W) – và chỉ những nút được giữ lại này sẽ được mở rộng tiếp Chỉ số W càng lớn thì sẽ có ít nhánh bị bỏ đi – với W = thì sẽ không có nhánh nào

bị loại bỏ và thuật toán bây giờ sẽ thành breadth-first search (tìm kiếm theo chiều

rộng), còn với W = 1 thì nó sẽ trở thành thuật toán tìm kiếm tham lam (Greedy Best-First Search) Chỉ số W sẽ giới hạn dung lượng bộ nhớ cần để thực hiện việc

tìm kiếm Tìm kiếm tia không phải là giải pháp tối ưu vì không có gì đảm bảo được việc nó sẽ tìm ra được đường đi tốt nhất cũng như việc nhánh chứa nút mục tiêu có thể sẽ bị loại bỏ

Nói tóm lại, tìm kiếm tia trả về cho ta giá trị đầu tiên tìm thấy Một khi nó đã tìm đạt đến độ sâu tối đa thì nó sẽ đánh giá các giải pháp và trả về giải pháp với độ khả thi cao nhất

Trang 4

2 Thuật toán tìm kiếm tia (Beam Search Algorithm):

- OpenList: danh sách các nút được truy và chờ duyệt

được duyệt

1 Khởi tạo 2 danh sách trên

2 Thêm nút khởi đầu vào OpenList

3 Chạy vòng lặp:

a Nếu OpenList rỗng trả về kết quả

Trang 5

b Chọn nút có thích hợp nhất và bỏ nút đó từ OpenList qua ClosedList.

c Nếu nút là mục tiêu trả về path

d Tìm các nút lân cận nút đó

e Nếu những nút lân cận không xuất hiện trong OpenList và ClosedList thì ta thêm vào OpenList để chờ duyệt Nếu nó đã có trong OpenList thì ta so sánh chi phí giữa quãng đường cũ và mới, nếu nó nhỏ hơn thì ta thay thế nó

f Nếu số lượng node trong OpenList > Beam Width ( thì ta chọn ra node thích hợp nhất

3 Ví dụ về tìm kiếm tia:

Ví dụ về thuật toán:

- Yêu cầu BT:

+ Bắt đầu tại S và kết thúc tại G

+ W = 2

- Thực hiện:

+ S được xét → C, D, E

+ Chọn D và E để phát triển, với D sinh ra F và

I, với E sinh ra G và K

+ Chọn I và G để phát triển, sinh ra B, G, B, H

+ Chọn được B (qua I) và B (qua G)

+ B là trạng thái kết thúc

Ứng dụng của Tìm kiếm tia (Beam Search):

Một trong những ứng dụng phổ biến nhất của tìm kiếm tia đó là việc máy dịch (machine translation) trong mô hình Encoder và Decoder Khi dịch ngôn ngữ này sang ngôn ngữ khác, trước hết ta mã hóa một chuỗi các từ đó từ ngôn ngữ nguồn và sau đó giải mã thành một chuỗi các từ trong

ngôn ngữ đích Trong quá trình giải mã,

Trang 6

đối với mỗi từ trong chuỗi, có thể có nhiều tùy chọn khác nhau và đó là lúc mà tìm kiếm tia đi vào hoạt động

Sau đây là một ví dụ đơn giản về ứng dụng của tìm kiếm tia trong giai đoạn giả

mã với chỉ số heuristic là xác suất một từ (cụm từ) có thể có trong văn bản được dịch (W = 3)

4 Lợi ích và bất cập của việc tìm kiếm tia:

Ưu điểm:

- Tốc độ (Speed): Tìm kiếm theo tia là thuật toán tương đối nhanh để tìm chuỗi từ

hoặc hành động có khả năng nhất so với các thuật toán khác như tìm kiếm toàn diện (exhaustive search)

- Độ chính xác (Accuracy): Tìm kiếm tia thường tạo ra kết quả đầu ra chất lượng cao

bằng cách cắt bớt không gian tìm kiếm và tập trung vào các ứng cử viên triển vọng nhất

- Tính linh hoạt (Flexibility): Tìm kiếm tia có thể được sửa đổi để phù hợp với các

trường hợp sử dụng khác nhau, bằng cách điều chỉnh độ rộng tia hoặc kết hợp các kinh nghiệm khác

Nhược điểm:

- Tối ưu cục bộ (Local Optima): Tìm kiếm tia có thể bị kẹt trong tối ưu cục bộ,

nghĩa là nó có thể không tìm thấy chuỗi từ hoặc hành động tối ưu, đặc biệt trong trường hợp chuỗi khả dĩ nhất không rõ ràng

- Đầu ra không đầy đủ (Incomplete Output): Tìm kiếm tia chỉ trả về một chuỗi

đầu ra duy nhất, có thể không phải lúc nào cũng là chuỗi tốt nhất

- Chiều rộng tia (Beam Width): Chọn đúng chiều rộng tia có thể là một thách thức,

quá hẹp và bạn có thể bỏ lỡ các ứng cử viên tốt, quá rộng và cuối cùng bạn có thể khám phá quá nhiều ứng cử viên kém chất lượng

- Thiếu tính đa dạng (Lack of Diversity): Tìm kiếm tia thường tạo ra các chuỗi đầu

ra quá giống nhau, đây có thể là một vấn đề trong trường hợp mong muốn có nhiều đầu ra khác nhau

Trang 7

Ví dụ về chiều rộng tia:

Với W = 2, ta có

Bước 1: OPEN= {A}

Bước 2: OPEN= {B, C}

Bước 3: OPEN= {D, E}

Bước 4: OPEN= {E}

Bước 5: OPEN= { }

-> Trả về giá trị rỗng và không tìm được mục tiêu

Ví dụ về việc không tối ưu:

Bước 1: OPEN= {A}

Bước 2: OPEN= {B, C}

Bước 3: OPEN= {C, E}

Bước 4: OPEN= {F, E}

Bước 5: OPEN= {G, E}

Bước 6: Tìm được mục tiêu {G}, Dừng lại

=> Tóm lại, tìm kiếm theo tia là một thuật toán hữu ích có thể được sử dụng để tìm chuỗi từ hoặc hành động có khả năng xảy ra nhất theo cách tương đối hiệu quả Tuy nhiên, nó có những hạn chế như tối ưu cục bộ và thiếu tính đa dạng, đồng thời yêu cầu điều chỉnh cẩn thận để đạt được kết quả tốt nhất

5 Độ phức tạp của tìm kiếm tia: (Time and Space Complexity of Beam Search)

Độ phức tạp về thời gian và không gian của tìm kiếm tia phụ thuộc vào một số yếu tố, bao gồm:

- Kích thước của không gian tìm kiếm (Size of the search space): Độ phức tạp

về thời gian và không gian của tìm kiếm theo tia tăng theo kích thước của không gian tìm kiếm Nói chung, không gian tìm kiếm càng lớn thì yêu cầu tìm kiếm tia thời gian

và không gian càng nhiều

Trang 8

- Độ rộng tia (Beam width): Độ phức tạp về thời gian và không gian của tìm

kiếm tia cũng phụ thuộc vào độ rộng tia Chiều rộng tia lớn hơn thường dẫn đến kết quả tốt hơn nhưng cũng đòi hỏi nhiều thời gian và không gian hơn

- Hệ số phân nhánh (Branching factor): Hệ số phân nhánh của không gian tìm kiếm cũng ảnh hưởng đến độ phức tạp về thời gian và không gian của tìm kiếm tia

Hệ số phân nhánh cao hơn có nghĩa là có nhiều hành động khả thi hơn để thực hiện ở mỗi bước, điều này làm tăng độ phức tạp về thời gian và không gian

=>Nói chung, độ phức tạp về thời gian của tìm kiếm tia là O(b^d), trong đó b là

hệ số phân nhánh và d là độ sâu của không gian tìm kiếm Điều này có nghĩa là thời gian cần thiết để thực hiện tìm kiếm theo tia tăng theo cấp số nhân với độ sâu của không gian tìm kiếm

*Độ phức tạp không gian của tìm kiếm tia cũng là O(b^d) trong trường hợp xấu

nhất Điều này là do tìm kiếm tia cần theo dõi các ứng viên hiện tại ở mỗi bước và số lượng ứng viên có thể tăng theo cấp số nhân với độ sâu của không gian tìm kiếm **Tuy nhiên, trên thực tế, độ phức tạp về thời gian và không gian thực tế của việc tìm kiếm tia có thể thấp hơn so với trường hợp xấu nhất, tùy thuộc vào vấn đề cụ thể đang được giải quyết và độ rộng tia được chọn

6 Các biến thể của tìm kiếm tia: (Variants of Beam Search)

Có một số biến thể của tìm kiếm theo tia có thể được sử dụng để cải thiện hiệu suất của nó, một số trong số đó là:

- Tìm kiếm tia có truy vết ngược ( beam search results in limited discrepancy backtracking - BULB): Thuật toán này cũng giống như thuật toán tìm kiếm tia bình

thường khi chúng sẽ trả về một kết quả khả thi, nhưng nếu kết quả đó chưa hiệu quả thì chúng sẽ truy ngược lại (backtrack) để tìm ra kết quả tốt nhất

- Local beam search: Trong phạm vi tìm kiếm cục bộ thì tìm kiếm tia (beam search) sẽ được coi là tìm kiếm tia cục bộ, với thuật toán giống hệt với thuật toán tìm

kiếm tia Nó cũng chọn ra 1 chỉ số W và ở mỗi tầng của cây tìm kiếm, nó sẽ chọn ra

W nhánh để tiếp tục công việc tìm kiếm cho tới khi tìm được mục tiêu

- Tìm kiếm tia ngẫu nhiên (stochastic beam search): Thuật toán này cũng giống

với thuật toán tìm kiếm tia nhưng vì tìm kiếm tia hay bị kẹt lại trong miền cục bộ nên thay vì giữ nguyên giá trị W từ đầu đến cuối thì nó sẽ chọn chỉ số W tiếp theo theo cách ngẫu nhiên, với xác suất phụ thuộc vào đánh giá heuristic của các trạng thái

=> Nhìn chung, việc lựa chọn biến thể phụ thuộc vào nhiệm vụ cụ thể và chất lượng đầu ra mong muốn, tính đa dạng và hiệu quả tính toán

Trang 9

7 Câu hỏi tại lớp và Bài tập về nhà:

a Câu hỏi tại lớp:

1 Trong local beam search, beam width là gì?

A Số lượng các nút con của một nút trong cây tìm kiếm

B Số lượng các trạng thái được lưu trữ trong bộ nhớ tạm thời

C Số lượng các trạng thái được tạo ra trong mỗi vòng lặp của thuật toán

D Số lượng các trạng thái được duyệt trong mỗi vòng lặp của thuật toán

2 Trong local beam search, số lượng trạng thái được xem xét tại mỗi bước là:

a) 1

b) Nhiều hơn 1

c) Không giới hạn

3 Điều gì xảy ra khi beam width bằng 1 trong local beam search?

A Thuật toán tìm kiếm nhanh hơn

B Thuật toán tìm kiếm chính xác hơn

C Thuật toán trở thành thuật toán tìm kiếm tham lam

D Thuật toán tìm kiếm có thể tìm kiếm được giải pháp tối ưu hơn

4 Điều gì xảy ra khi beam width tăng trong local beam search?

A Thuật toán tìm kiếm nhanh hơn

B Thuật toán tìm kiếm chính xác hơn

C Thuật toán tìm kiếm có khả năng rơi vào bẫy cục bộ ( tối ưu cục bộ) cao hơn

D Thuật toán tìm kiếm có thể tìm kiếm được giải pháp tối ưu hơn

→ Giải thích: Nhiều trạng thái (states) được kiểm tra đồng thời (explored

simultaneously), tăng beam width có thể giúp thuật toán tìm kiếm khám phá một phần lớn hơn của không gian tìm kiếm, nhưng đồng thời cũng tăng khả năng bị mắc kẹt trong điểm tối ưu cục bộ (Local Optimal) Vì beam width lớn hơn có nghĩa là có nhiều trạng thái được xem xét ở mỗi bước, điều chỉnh các con đường tìm kiếm dựa trên các giải pháp tốt nhất dẫn đến bị mắc kẹt trong các giải pháp tối ưu cục bộ và không thể đi đến giải pháp tối ưu toàn cục Do đó, việc tăng beam width không làm cho thuật toán tìm kiếm nhanh hơn hoặc chính xác hơn, mà tăng nguy cơ bị mắc kẹt trong một giải pháp phụ thuộc vào điểm tối ưu cục bộ

Trang 10

b Bài tập về nhà:

Bài 1: Bài toán người đi giao hàng - Traveling Salesman Problem – TSP

Có một người giao hàng cần đi giao hàng tại n thành phố Anh ta xuất phát từ một thành phố nào đó, đi qua các thành phố khác để giao hàng và trở về thành phố ban đầu Mỗi thành phố chỉ đến một lần, và khoảng cách từ một thành phố đến các thành phố khác đã được biết trước Hãy tìm một chu trình (một đường đi khép kín thỏa mãn điều kiện trên) sao cho tổng độ dài các cạnh là nhỏ nhất

Định nghĩa bài toán gồm các phương thức sau:

1 show

Kế thừa từ lớp bài toán

Xuất ra ma trận chi phí đường đi và vị trí bắt đầu

2 init

Khởi tạo đối tượng TSP với n thành phố và ngẫu nhiên tạo

ma trận chi phí di chuyển giữa các thành phố cùng với vị

trí bắt đầu

3 goal

Kế thừa từ lớp bài toán Hiển thị con đường tốt nhất

và chi phí để đi đường đó

4 Randomize_state

Kế thừa từ lớp bài toán Tạo ra mảng ngẫu nhiên (rand) n*n , mỗi phần tử A[i][j] là chi phí đi từ thành phố i đến j Và

1 vị trí bắt đầu ngẫu nhiên (start_city)

5 cost Kế thừa từ lớp bài toán Trả về tổng chi phí (đường đi) củahành trình đang đi

6 check Kế thừa từ lớp bài toán Kiểm tra xem hành trình đang xétcó phải là tối ưu nhất

7 Generate

_sol_path cách thêm một thành phố vào cuối các con đường hiện tại.Kế thừa từ lớp bài toán Sinh ra các con đường mới bằng

8 K_best_sol Kế thừa từ lớp bài toán Chọn k con đường tốt nhất từ

danh sách paths

Sau đó, định nghĩa lớp tác tử sử dụng phương pháp local beam search để giải quyết bài toán trên

Bài 2: Cho trước một tập các công việc (jobs) và một tập các máy (machines),

mỗi công việc có thời gian thực hiện khác nhau trên từng máy Yêu cầu tìm phân bố công việc trên các máy sao cho tổng thời gian thực hiện trên mỗi máy là nhất quán và

là thấp nhất

Đầu vào của bài toán bao gồm:

Trang 11

Một ma trận C có kích thước m x n, trong đó m là số lượng máy và n là số lượng công việc Giá trị C[i,j] là thời gian thực hiện công việc j trên máy i

Một số nguyên k là số lượng trạng thái con tối ưu được duy trì trong thuật toán Local Beam Search

Một số nguyên max_iter là số lần sinh ra trạng thái mới để cập nhật trạng thái hiện tại trong thuật toán Local Beam Search

Đầu ra của bài toán là:

Một phân bố tối ưu của các công việc trên các máy, sao cho tổng thời gian thực hiện trên mỗi máy là nhất quán và là thấp nhất

Định nghĩa bài toán gồm các phương thức sau:

1 init (self, n,m, w)

Kế thừa từ lớp bài toán Khởi tạo lớp với các đối số w: ma trận trọng số kích thước nxm mô tả trọng số của mỗi công việc đối với từng máy chủ

2 randomize_state

Tạo ra một ma trận m*n với giá trị ngẫu nhiên trong khoảng từ 0 đến 100 Trong đó, m là số lượng máy và n là

số lượng công việc Tạo ngẫu nhiên k (có thể cho k từ 2->10)

3 cost

Kế thừa từ lớp bài toán Tính toán giá trị chi phí của một trạng thái bất kỳ, bao gồm tổng trọng số của tất cả các

công việc trên các máy chủ

4 generate_neighbours

Kế thừa từ lớp bài toán Phương thức tạo ra các trạng thái mới bằng cách hoán đổi các công việc giữa các máy chủ

trong trạng thái hiện tại

Ví dụ, nếu trạng thái hiện tại là [1, 2, 3, 4, 5] thì hàm generate_neighbour có thể tạo ra các trạng thái mới như [1, 3, 2, 4, 5], [2, 1, 3, 4, 5], [1, 2, 4, 3, 5], vv Tổng quát hơn, hàm này tạo ra một trạng thái mới bằng cách hoán đổi vị trí của hai phần tử bất kỳ trong trạng thái hiện tại

5 goal được trạng thái tối ưu, hiển thị kết quả tìm được với giá trịKế thừa từ lớp bài toán Phương thức được gọi khi tìm

chi phí tương ứng

6 get_best_states Kế thừa từ lớp bài toán Chọn ra k trạng thái tốt nhất trong

danh sách trạng thái được cung cấp, dựa trên giá trị chi phí

Trang 12

tính được từ phương thức calculate_cost().

7 Generate_sol_path cách thêm một thành phố vào cuối các con đường hiện tại.Kế thừa từ lớp bài toán Sinh ra các con đường mới bằng

8 K_best_sol Kế thừa từ lớp bài toán Chọn k con đường tốt nhất từ

danh sách paths

Ngày đăng: 20/04/2024, 09:55

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN