Một vài nghi ngờ liên quan đến việc áp dụng học tập củng cố cho các trò chơi như cờ vua


9

Tôi đã phát minh ra một trò chơi cờ giống như cờ vua. Tôi đã chế tạo một động cơ để nó có thể chơi tự động. Động cơ về cơ bản là một cây quyết định. Nó được sáng tác bởi:

  1. Một chức năng tìm kiếm mà tại mỗi nút tìm thấy tất cả các di chuyển hợp pháp có thể
  2. Hàm đánh giá gán giá trị bằng số cho vị trí bảng (tích cực có nghĩa là người chơi thứ nhất đang chiếm thế thượng phong, tiêu cực có nghĩa là người chơi thứ hai đang chiến thắng thay thế)
  3. Một thuật toán cắt tỉa negabax alphabeta

Vấn đề chính về động cơ này là việc tối ưu hóa chức năng đánh giá thực sự khó khăn. Tôi không biết nên xem xét yếu tố nào và trọng lượng nào. Cách duy nhất tôi thấy để cải thiện công cụ là lặp lại các trò chơi thử mỗi lần kết hợp các yếu tố và trọng lượng khác nhau. Tuy nhiên, nó có vẻ như là một kỳ tích rất khó khăn (Tôi có thể backpropagate mà không cần sử dụng deeplearning không?).

Tôi muốn sử dụng học tăng cường để làm cho động cơ cải thiện bằng cách chơi với chính nó. Tôi đã đọc về chủ đề này, nhưng tôi vẫn còn khá bối rối.

Phần thưởng nào khác có trong một trò chơi một phần sản lượng thắng hoặc thua (1 hoặc 0)? Nếu tôi sử dụng các phần thưởng khác, như đầu ra từ chức năng đánh giá ở mỗi lượt, tôi có thể thực hiện nó như thế nào? Làm cách nào để sửa đổi hàm đánh giá để trao phần thưởng tốt hơn sau khi lặp?

Câu trả lời:


6

Tôi muốn sử dụng học tăng cường để làm cho động cơ cải thiện bằng cách chơi với chính nó. Tôi đã đọc về chủ đề này nhưng tôi vẫn còn khá bối rối.

Được cảnh báo: Học tăng cường là một môn học phức tạp lớn. Mặc dù nó có thể đưa bạn đi đường vòng từ các bot chơi trò chơi, bạn có thể muốn nghiên cứu cơ bản về RL. Một nơi tốt để bắt đầu là Học tập củng cố Sutton & Barto : Giới thiệu

Phần thưởng nào khác có trong một trò chơi một phần sản lượng thắng hoặc thua (1 hoặc 0)?

Tùy thuộc vào bạn trò chơi, đó thường là nó. Thực tế đối với một trò chơi thắng / hòa / thua như cờ vua thì phần thưởng từ mỗi hành động là 0 ngoại trừ chiến thắng (+1) hoặc thua (-1) khi kết thúc. Trong một trò chơi có tổng bằng 0, điều này sẽ điều chỉnh một cách độc đáo để minimax, cắt tỉa alphabeta, v.v.

Học tăng cường nhằm giải quyết các môi trường với phần thưởng bị trì hoãn. Thêm phần thưởng "người trợ giúp" cho các mục tiêu tạm thời thường là phản tác dụng.

Nếu tôi sử dụng các phần thưởng khác, như đầu ra từ chức năng đánh giá ở mỗi lượt, tôi có thể thực hiện nó như thế nào?

Điển hình là bạn không. Những gì áp dụng RL tự chơi sẽ làm là tìm hiểu hàm trả về (đôi khi được gọi là tiện ích ) dự đoán mức độ mong đợi của phần thưởng + 1/0 / -1 của bạn vào cuối trò chơi. Bạn sẽ sử dụng điều này thay cho heuristic hiện tại của bạn để tìm kiếm minimax. Hoặc, có khả năng bạn sẽ điều chỉnh chức năng heuristic hiện tại của mình thành đầu ra trong cùng phạm vi và sử dụng RL để tối ưu hóa trọng số của nó để tạo ra xấp xỉ tốt nhất cho hàm trả về phát tối ưu thực sự (có thể quá phức tạp để tính toán chính xác).

Làm cách nào để sửa đổi hàm đánh giá để trao phần thưởng tốt hơn sau khi lặp?

Đó là những gì RL khác nhau tiếp cận mọi nỗ lực để làm, có nhiều người giải quyết khác nhau. Không có cách nào ngắn để giải thích nó. Bạn có thể bắt đầu với một phương pháp đơn giản như Q-Learning . Q-Learning học các ước tính của Q (s, a) (được gọi là giá trị hành động) là mức lợi nhuận kỳ vọng khi ở trạng thái và thực hiện hành động a, và sau đó tuân theo chính sách tối ưu. Nó làm cho một dự đoán tùy ý để bắt đầu và tinh chỉnh nó gần hơn với giá trị thực với mỗi bước được thực hiện trong môi trường học tập. Người học Q dạng bảng đơn giản thực hiện việc tinh chỉnh này chỉ bằng cách lưu trữ một bảng lớn gồm tất cả các trạng thái và hành động với ước tính tốt nhất cho đến nay về giá trị thực và tính trung bình trong mỗi ước tính mới khi có kinh nghiệm.

Cũng có thể kết hợp phương pháp RL cho phương pháp phỏng đoán với tìm kiếm minimax nhìn về phía trước - đó là những gì AlphaGo ban đầu đã làm và AlphaGo Zero làm gì trong quá trình đào tạo. Đây là một cách tiếp cận mạnh mẽ vì tìm kiếm minimax sẽ hoạt động để kiểm tra lại các heuristic do RL tạo ra. Mặc dù đối với các trò chơi đủ đơn giản, RL có thể học các phương pháp phỏng đoán hoàn hảo và bạn sẽ chỉ cần tìm kiếm cục bộ (bước tiếp theo nên là gì).

Trừ khi trò chơi của bạn rất đơn giản (tất cả các trạng thái có thể sẽ phù hợp với bộ nhớ), bạn sẽ cần một số loại xấp xỉ hàm bên trong thuật toán RL. Mạng lưới thần kinh là một lựa chọn tiêu chuẩn. Có một cái gì đó cho phần đó là không thể tránh khỏi - mặc dù một lựa chọn tốt khác là xác định một loạt các tính năng proxy (mà bạn có thể sử dụng để xây dựng một heuristic bằng tay) và sử dụng một xấp xỉ tuyến tính - chỉ là tổng của tất cả các tính năng. Điều này có thể hoạt động đủ tốt, và đã được sử dụng ví dụ trong trình kiểm tra (bản nháp) người chơi được đào tạo sử dụng RL.

Trên thực tế, với điều kiện hàm heuristic của riêng bạn không quá bất thường, có lẽ bạn có thể coi nó giống như một hàm xấp xỉ tuyến tính và sử dụng RL để tìm hiểu các trọng số tốt nhất cho nó.


"Học tăng cường nhằm giải quyết các môi trường có phần thưởng bị trì hoãn. Thêm phần thưởng" người trợ giúp "cho các mục tiêu tạm thời thường là phản tác dụng." Tôi muốn lưu ý rằng có một bài viết cố gắng giải quyết vấn đề phần thưởng thưa thớt bằng cách giới thiệu các mục tiêu trung gian " Phát lại trải nghiệm Hindsight ".
nbro

1
@nbro: Có rất nhiều nỗ lực để giải quyết các phần thưởng thưa thớt, đó là một câu hỏi mở lớn trong RL, một cách để tăng thách thức của một vấn đề là làm cho phần thưởng trở nên thưa thớt hơn. Dấu vết đủ điều kiện là một nỗ lực khác, RL phân cấp là một lĩnh vực đầy hứa hẹn khác. . . Tôi không nghĩ rằng tôi muốn thêm các kỹ thuật này vào câu trả lời ở đây, vì nó liên quan nhiều hơn đến tính khả thi cho vấn đề của OP và phần giới thiệu về chủ đề
Neil Slater
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.