0% found this document useful (0 votes)
7 views8 pages

Kaggle Chess

ài toán cờ vua trong học tăng cường là một vấn đề phức tạp và thú vị, nơi một chương trình máy tính (agent) học cách chơi cờ vua thông qua tương tác với môi trường (bàn cờ). Agent sẽ thực hiện các nước đi, nhận lại phản hồi từ môi trường (thắng, thua,

Uploaded by

Tuyen Trinh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
7 views8 pages

Kaggle Chess

ài toán cờ vua trong học tăng cường là một vấn đề phức tạp và thú vị, nơi một chương trình máy tính (agent) học cách chơi cờ vua thông qua tương tác với môi trường (bàn cờ). Agent sẽ thực hiện các nước đi, nhận lại phản hồi từ môi trường (thắng, thua,

Uploaded by

Tuyen Trinh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 8

Thiết lập môi trường để giải bài toán cờ vua:

● python-chess: package Python để xử lý môi trường cờ vua.


● RLC: package Reinforcement Learning được cài đặt từ một repository GitHub, cụ thể là
từ repo của arjangroen.
● Board: Quản lý bàn cờ.
● Piece: Đại diện cho các quân cờ.
● Reinforce: Một lớp xử lý Reinforcement Learning.

● Grid là bảng 8x8.


● Trạng thái bắt đầu là ô ở góc trên bên trái (0,0), được đánh dấu là "S".
● Trạng thái kết thúc là ô (5,7), đánh dấu là "F".
● Mỗi lần di chuyển từ trạng thái này sang trạng thái khác sẽ bị trừ 1 điểm.
● Chính sách tốt nhất là di chuyển từ S đến F với số bước ít nhất

Output là ma trận 8x8 hiển thị các trạng thái, với "S" là vị trí bắt đầu và "F" là vị trí kết thúc.
● Tác nhân là một quân cờ, có thể là Vua, Hậu, Xe, Tượng, Mã hoặc Tốt.
● Tác nhân có chính sách hành động để quyết định bước đi nào tại từng trạng thái
Trong ví dụ này, tác nhân là quân Vua.
● Đối tượng Reinforce chứa các thuật toán để giải quyết bài toán cờ bằng cách học cách
di chuyển (Move Chess).
● Tác nhân và môi trường là các thuộc tính của đối tượng Reinforce.
Tại đây, r là một đối tượng được khởi tạo với tác nhân p (quân Vua) và môi trường env.

● Lệnh print(inspect.getsource(r.evaluate_state)) sẽ sử dụng module inspect để lấy và in


mã nguồn của phương thức evaluate_state từ đối tượng r (một đối tượng của lớp
Reinforce).
● r.agent.value_function.astype(int) là một ma trận 8x8 toàn số 0. Đây là giá trị hiện tại của
value_function của tác nhân (agent) khi được chuyển sang kiểu số nguyên.
● state = (0, 0): trạng thái đang đánh giá là ở vị trí (0,0).
● r.agent.value_function[0, 0] = r.evaluate_state(state, gamma=1) đánh giá giá trị của
trạng thái (0,0) bằng cách sử dụng một hàm evaluate_state. Tham số gamma=1 là hệ
số chiết khấu (discount factor) trong học tăng cường, đại diện cho tầm quan trọng của
phần thưởng trong tương lai.
● Kết quả mới của value_function được hiển thị, với giá trị của trạng thái (0,0) đã thay đổi
thành -1, trong khi các ô khác vẫn giữ giá trị 0.

Hàm evaluate_policy:

● Đây là hàm để đánh giá giá trị của tất cả các trạng thái trong một chính sách nhất định.
● Đoạn mã bắt đầu với việc tạo bản sao của mảng value_function trước đó bằng lệnh
self.agent.value_function_prev = self.agent.value_function.copy() nhằm đảm bảo các
cập nhật đồng bộ (synchronous updates).
● Vòng lặp for row in range(self.agent.value_function.shape[0]) và for col in
range(self.agent.value_function.shape[1]) duyệt qua tất cả các trạng thái (tức là tất cả
các ô trong lưới).
● Mỗi trạng thái (row, col) được đánh giá bằng cách sử dụng hàm self.evaluate_state, với
tham số gamma là hệ số chiết khấu.

r.evaluate_policy(gamma=1): thực hiện đánh giá chính sách với hệ số chiết khấu gamma = 1,
nghĩa là nó không chiết khấu phần thưởng trong tương lai (tất cả phần thưởng đều có giá trị
bằng nhau).

Kết quả mảng value_function sau khi đánh giá chính sách cho thấy rằng tất cả các trạng thái có
giá trị là -1, ngoại trừ trạng thái cuối cùng (ô 0 trong hình) đại diện cho trạng thái đích hoặc
trạng thái kết thúc (terminal state), có giá trị bằng 0.

● eps=0.1: Đây là ngưỡng hội tụ. Nếu thay đổi giá trị tuyệt đối lớn nhất giữa hai lần cập
nhật giá trị của value_function nhỏ hơn eps, thuật toán sẽ coi như đã hội tụ.
● k_max = 1000: Đây là số vòng lặp tối đa. Nếu thuật toán không hội tụ sau 1000 lần lặp,
nó sẽ dừng lại.
● value_delta_max = 0: Lưu trữ sự thay đổi lớn nhất giữa hai lần tính toán liên tiếp của
value_function.
● gamma = 1: Không có chiết khấu phần thưởng trong tương lai, tức là tất cả phần
thưởng đều được coi trọng như nhau.
● synchronous=True: Các thay đổi trong giá trị của tất cả các trạng thái sẽ được áp dụng
cùng lúc, không theo kiểu tuần tự.
● r.evaluate_policy(gamma=gamma,synchronous=synchronous): Gọi trong mỗi vòng lặp
để cập nhật giá trị của các trạng thái dựa trên chính sách hiện tại và hệ số gamma.
● value_delta = np.max(np.abs(r.agent.value_function_prev - r.agent.value_function)): Lấy
bằng giá trị tuyệt đối lớn nhất giữa hai mảng value_function_prev và value_function.
Lặp qua quá trình đánh giá chính sách và kiểm tra sự thay đổi giữa hai lần lặp. Nếu sự thay đổi
nhỏ hơn ngưỡng eps, nó sẽ dừng lại và báo cáo rằng thuật toán đã hội tụ. Trong trường hợp
không hội tụ sau 1000 lần lặp, quá trình sẽ dừng lại.

● print(inspect.getsource(r.improve_policy)): Sử dụng inspect.getsource để in ra mã nguồn


của hàm improve_policy
● r.improve_policy(): gọi hàm improve_policy của đối tượng r
● r.visualize_policy(): Lệnh này gọi hàm visualize_policy, giúp trực quan hóa chính sách
hiện tại của agent.
r.policy_iteration() là một thuật toán lặp để tìm ra chính sách tối ưu bằng cách xen kẽ giữa đánh
giá và cải thiện chính sách cho đến khi đạt được chính sách tốt nhất.
● Quân vua (agent) sẽ học cách di chuyển một cách tối ưu bằng cách sử dụng Policy
Iteration.
● Policy Iteration thực hiện việc đánh giá và cải thiện chính sách cho đến khi tìm ra chính
sách tối ưu.
● Tham số gamma=1 đảm bảo rằng agent sẽ cân nhắc tất cả phần thưởng tương lai mà
không ưu tiên đặc biệt cho phần thưởng ngắn hạn.
● Việc sử dụng synchronous=False cho phép quá trình học diễn ra không đồng bộ, có thể
dẫn đến sự cập nhật chính sách nhanh hơn ở một số trường hợp.

r.agent.value_function.astype(int) Chuyển đổi các giá trị trong hàm giá trị của agent sang kiểu
int.

● agent = Piece(piece='rook'):Kkhởi tạo một đối tượng agent là quân xe (rook) từ lớp
Piece. Quân xe trong cờ vua có thể di chuyển theo chiều ngang hoặc dọc một số ô tùy
ý, không giống như vua, chỉ có thể di chuyển 1 ô mỗi lần.
● r = Reinforce(agent, env):Tạo đối tượng r thuộc lớp Reinforce, với agent là quân xe và
env là môi trường mà agent sẽ tương tác. Quá trình này sẽ học cách agent di chuyển tối
ưu trong môi trường dựa trên việc đánh giá và cải thiện chính sách.
● r.policy_iteration(k=1, gamma=1):Chỉ chạy 1 vòng lặp của Policy Iteration. Điều này có
thể dùng để kiểm tra hành vi của agent sau một lần đánh giá và cải thiện chính sách.
gamma=1: Hệ số chiết khấu (discount factor) là 1, có nghĩa là agent sẽ xem xét phần
thưởng tương lai một cách bình đẳng với phần thưởng hiện tại, giống như trước.

You might also like