Làm thế nào để xử lý các động thái không hợp lệ trong học tập củng cố?


20

Tôi muốn tạo ra một AI có thể chơi năm liên tiếp / gomoku. Như tôi đã đề cập trong tiêu đề, tôi muốn sử dụng học tăng cường cho việc này.

Tôi sử dụng phương pháp gradient chính sách , cụ thể là REINFORCE, với đường cơ sở. Đối với giá trị gần đúng và hàm chính sách, tôi sử dụng mạng nơ ron . Nó có các lớp chập và kết nối đầy đủ. Tất cả các lớp, ngoại trừ đầu ra, được chia sẻ. Lớp đầu ra của chính sách có đơn vị đầu ra (kích thước của bảng) và softmax trên chúng. Vì vậy, nó là ngẫu nhiên. Nhưng điều gì sẽ xảy ra nếu mạng tạo ra xác suất rất cao cho một động thái không hợp lệ? Di chuyển không hợp lệ là khi tác nhân muốn kiểm tra một hình vuông có một chữ "X" hoặc "O" trong đó. Tôi nghĩ rằng nó có thể bị mắc kẹt trong trạng thái trò chơi đó.số 8×số 8= =64

Bạn có thể đề nghị bất kỳ giải pháp cho vấn đề này?

Tôi đoán là sử dụng phương pháp phê bình diễn viên . Đối với một nước đi không hợp lệ, chúng ta nên đưa ra một phần thưởng tiêu cực và chuyển lượt cho đối thủ.

Câu trả lời:


10

Chỉ cần bỏ qua các động thái không hợp lệ.

Để khám phá, có khả năng bạn sẽ không thực hiện di chuyển với xác suất cao nhất, nhưng thay vào đó, chọn di chuyển ngẫu nhiên dựa trên xác suất xuất ra. Nếu bạn chỉ trừng phạt các động thái bất hợp pháp, họ sẽ vẫn giữ một số xác suất (tuy nhỏ) và do đó sẽ được thực hiện theo thời gian (tuy nhiên hiếm khi). Vì vậy, bạn sẽ luôn giữ lại một đại lý đôi khi thực hiện các động thái bất hợp pháp.

Đối với tôi, sẽ hợp lý hơn khi chỉ đặt xác suất của tất cả các di chuyển bất hợp pháp thành 0 và tái chuẩn hóa vectơ đầu ra trước khi bạn chọn di chuyển.


Cảm ơn bạn. có lẽ tôi đã không rõ ràng nhưng tôi đã chọn cách di chuyển ngẫu nhiên bởi các xác suất xuất ra. Tôi sẽ thử lời khuyên của bạn để đặt xác suất di chuyển bất hợp pháp về 0 và xem điều gì sẽ xảy ra. Chúc một ngày tốt lành.
Molnár István

8

Thông thường các phương thức softmax trong các phương thức gradient chính sách sử dụng xấp xỉ hàm tuyến tính sử dụng công thức sau để tính xác suất chọn hành động . Ở đây, trọng lượng là , và các tính năng là một chức năng của nhà nước hiện nay và một hành động từ tập các hành động .mộtθφSMột

π(θ,a)=eθϕ(s,a)bAeθϕ(s,b)

Để loại bỏ các hành động bất hợp pháp, người ta sẽ giới hạn tập hợp các hành động chỉ những hành động hợp pháp, do đó Legal(A) .

π(θ,a)=eθϕ(s,a)bLegal(A)eθφ(S,b),mộtLegmộttôi(Một)

Trong mã giả, công thức có thể trông như thế này:

action_probs = Agent.getActionProbs(state)
legal_actions = filterLegalActions(state, action_probs)
best_legal_action = softmax(legal_actions)

Cho dù sử dụng xấp xỉ hàm tuyến tính hay phi tuyến tính (mạng thần kinh của bạn), ý tưởng là chỉ sử dụng các động thái hợp pháp khi tính toán softmax của bạn. Phương pháp này có nghĩa là chỉ những động thái hợp lệ mới được đưa ra bởi tác nhân, điều này tốt nếu bạn muốn thay đổi trò chơi của mình sau đó và sự khác biệt về giá trị giữa lựa chọn hạn chế trong hành động sẽ dễ bị phân biệt bởi tác nhân. Nó cũng sẽ nhanh hơn khi số lượng hành động có thể giảm.


Rất hữu dụng. Cảm ơn bạn đã đăng cả phương trình và mã giả!
DukeZhou

1
Toán học và mã giả không khớp ở đây. Softmax trên xác suất di chuyển hợp pháp sẽ điều chỉnh xác suất tương đối. Ví dụ: (0,3, 0,4, 0,2, 0,1) được lọc với mục thứ nhất và thứ ba được loại bỏ sẽ là (0,0, 0,8, 0,0, 0,2) với công thức của bạn, nhưng sẽ là (0,0, 0,57, 0,0, 0,42) bằng cách sử dụng mã giả. Mã giả cần phải lấy các bản ghi, trước khi tính toán xác suất hành động.
Neil Slater

4
Làm thế nào để tính toán độ dốc của phiên bản được lọc của Softmax? Có vẻ như điều này sẽ là cần thiết để backpropagation hoạt động thành công, đúng không?
brianberns 22/03/18

@brianberns Bạn có tìm được câu trả lời không? Nó có vẻ như đó sẽ là trường hợp đối với tôi nhưng bằng cách nào đó trong ví dụ đồ chơi của tôi tôi chỉ nhận được câu trả lời đúng khi sử dụng các xác suất log của softmax unfilitered ...
tryingtolearn

5

IMHO ý tưởng của các động thái không hợp lệ là chính nó không hợp lệ. Hãy tưởng tượng đặt một "X" tại tọa độ (9, 9). Bạn có thể coi đó là một động thái không hợp lệ và cho nó một phần thưởng tiêu cực. Vô lý? Chắc chắn rồi!

Nhưng trên thực tế, các động thái không hợp lệ của bạn chỉ là một di tích của đại diện (bản thân nó rất đơn giản và tốt). Điều trị tốt nhất của họ là loại trừ chúng hoàn toàn khỏi mọi tính toán.

Điều này trở nên rõ ràng hơn trong cờ vua:

  • Trong một đại diện theo vị trí, bạn có thể xem xét di chuyển a1-a8, chỉ thuộc về trò chơi nếu có Rook hoặc Queen tại a1(và một số điều kiện khác giữ).

  • Trong một đại diện khác, bạn có thể xem xét di chuyển Qb2. Một lần nữa, điều này có thể hoặc không thuộc về trò chơi. Khi người chơi hiện tại không có Nữ hoàng, thì chắc chắn là không.

Vì các động thái không hợp lệ có liên quan đến đại diện hơn là trò chơi, nên chúng không nên được xem xét.


1
Điểm tuyệt vời. Trong các trò chơi [M], được chơi trên Sudoku, các ràng buộc làm cho nhiều vị trí (tọa độ + giá trị) trở thành bất hợp pháp sau vị trí đầu tiên. Không có giá trị trong việc xem xét các vị trí bất hợp pháp này theo quan điểm của vị trí, nhưng , một lớp chiến lược quan trọng là nhận ra vị trí nào giảm thiểu giá trị của các vị trí còn lại, chưa được phát. (ví dụ: nếu tôi đặt một 8 ở đây, nó ngăn chặn đối thủ của tôi từ cách đặt 8 ở chỗ hàng, cột hoặc khu vực Về cơ bản, "có bao nhiêu vị trí chiến lược thực hiện điều này loại bỏ vị trí từ gameboard?".)
DukeZhou

5

Tôi đã đối mặt với một vấn đề tương tự gần đây với Minesweeper.

Cách tôi giải quyết là bằng cách bỏ qua các động thái bất hợp pháp / không hợp lệ hoàn toàn.

  1. Sử dụng mạng Q để dự đoán các giá trị Q cho tất cả các hành động của bạn (hợp lệ và không hợp lệ)
  2. Xử lý trước các giá trị Q bằng cách đặt tất cả các di chuyển không hợp lệ thành giá trị Q bằng 0 / số âm (tùy thuộc vào kịch bản của bạn)
  3. Sử dụng chính sách bạn chọn để chọn một hành động từ các giá trị Q được tinh chỉnh (nghĩa là tham lam hoặc Boltzmann)
  4. Thực hiện hành động đã chọn và tiếp tục logic DQN của bạn

Hi vọng điêu nay co ich.


1
Về điều duy nhất tôi muốn nói thêm là bạn phải nhớ thực hiện backprop trên DQN khi bạn đặt các giá trị Q cho các cặp (s, a) bất hợp pháp thành giá trị âm lớn để nó được chọn để không chọn các trạng thái, hành động đó cặp lần sau.
SN

Nhưng tôi tự hỏi việc cài đặt các giá trị Q mục tiêu lớn sẽ làm gì cho tính liên tục hoặc hình dạng của hàm mất / lỗi (do đó ảnh hưởng đến tìm kiếm độ dốc). Kinh nghiệm của bạn là gì?
SN

1
@SN Tôi thấy quan điểm của bạn. Ý tưởng là để chọn hành động với Q-giá trị cao nhất đó là không phải là một hành động không hợp lệ . Tiếp theo, bạn thực hiện hành động đó và sử dụng hành động đó trong quy tắc cập nhật của mình (nghĩa là đào tạo DQN của bạn để ủng hộ hành động này trong thời gian dài). Điều này làm là làm cho giá trị Q trong tương lai của hành động được chọn cao hơn và do đó thuận lợi hơn. Mặc dù vậy, nó sẽ KHÔNG làm cho các hành động bất hợp pháp Q-value thấp hơn, điều đó không quan trọng bởi vì chúng luôn được lọc ra (không được xem xét). Hãy cho tôi biết nếu bạn muốn tôi giải thích nhiều hơn với một ví dụ. :)
Sanavesa

1
@Sanavesa chắc chắn có ý nghĩa, về cơ bản, bạn đang tin tưởng vào DQN cuối cùng cũng học được những lựa chọn chính xác nào thông qua trường hợp của những cú đấm mạnh. Nhưng trong những tình huống chỉ có một hoặc một vài lựa chọn hợp pháp, bạn sẽ kết thúc với việc học rất chậm. Cách tiếp cận tôi đề xuất là một cách kết hợp miền K vào vấn đề để tăng tốc độ học tập đó. Đó cũng là những gì tôi nghĩ bạn đang làm trong bài viết gốc của mình, nơi bạn đã viết về "cài đặt di chuyển không hợp lệ thành giá trị Q bằng 0 / số âm"
SN

1
@SNPrecrec! Cả hai phương pháp đều có giá trị của chúng. Phụ thuộc vào ứng dụng nếu việc tìm hiểu các động thái pháp lý dễ dàng hơn hoặc hoàn toàn bỏ qua chúng. Đối với các ứng dụng phức tạp lớn, tôi cảm thấy việc bỏ qua các bước di chuyển không hợp lệ sẽ nhanh hơn nhiều cho tác nhân học, nhưng đừng trích dẫn tôi về điều đó.
Sanavesa
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.