Cách biểu diễn Tic-Tac-Toe vs Cờ đam hoặc Cờ vua cho Mạng thần kinh


7

Gần đây tôi đã đọc rất nhiều về TD-Gammon khi tôi đang khám phá các tùy chọn cho AI trong một trò chơi video mà tôi đang thực hiện. Trò chơi video là một loại trò chơi theo vị trí theo lượt, tức là "đơn vị", hoặc vị trí của trò chơi, sẽ ảnh hưởng lớn đến tính hữu dụng của nó trong trạng thái bảng đó.

Để thực hiện theo cách của tôi, tôi nghĩ rằng việc triển khai Mạng thần kinh cho một vài trò chơi khác nhau là điều khôn ngoan trước tiên.

Ý tưởng tôi thích là mã hóa trạng thái bảng cho Mạng nơ-ron bằng một nơ-ron đầu ra duy nhất mang lại cho trạng thái bảng đó sức mạnh tương đối so với các trạng thái bảng khác. Theo tôi hiểu, đây là cách TD-Gammon hoạt động.

Tuy nhiên, khi tôi xem mã và ví dụ / hướng dẫn của người khác, dường như có rất nhiều sự khác biệt trong cách họ đại diện cho trạng thái hội đồng quản trị. Ngay cả đối với một cái gì đó đơn giản như tic-tac-toe.

Vì thế; cụ thể cho tic-tac-toe, cái nào tốt hơn, hay đại diện chính xác cho trạng thái bảng là gì? Tôi đã từng thấy:

  1. 9 nơ ron đầu vào, một cho mỗi ô vuông. A 0chỉ ra một không gian tự do, -1đối thủ và 1chính bạn.
  2. 9 nơ ron đầu vào, nhưng sử dụng các giá trị khác nhau như 0cho đối thủ, 0.5miễn phí và 1cho chính bạn?
  3. Bạn có thể sử dụng các giá trị lớn hơn? LIke 0, 12?
  4. 27 tế bào thần kinh đầu vào. 3 đầu tiên là vuông 1, 3 tiếp theo là vuông 2, v.v ... Mọi nơron đều 1hoặc 0. Đầu tiên của bộ ba cho biết hình vuông này có miễn phí hay không; cái thứ hai cho biết hình vuông có bị đối thủ của bạn chiếm giữ hay không. Cuối cùng, chỉ có một trong 3 tế bào thần kinh sẽ có a 1, hai cái còn lại sẽ có a 0.
  5. 18 nơ ron đầu vào. Cái đầu tiên 1dành cho người chơi X, cái thứ hai 1dành cho người chơi O và cả hai đều 0để trống

Sau đó; Khi phân nhánh vào các trò chơi mà các khả năng của các quân cờ cụ thể xuất hiện, như trong cờ vua, bạn sẽ thể hiện điều này như thế nào?

Nó sẽ đơn giản như sử dụng các giá trị đầu vào cao hơn cho các phần có giá trị hơn? Tức là -20cho một nữ hoàng đối thủ và +20cho nữ hoàng của riêng bạn? Hoặc bạn sẽ cần một cái gì đó phức tạp hơn khi bạn xác định hơn 10 giá trị cho mỗi ô vuông, một giá trị cho mỗi loại kết hợp loại đơn vị và trình phát?

Câu trả lời:


3

Khi bạn đang làm việc với các mạng thần kinh, miễn là có dữ liệu, mạng thường có thể học cách xử lý nó thành một kết quả hữu ích, bạn cũng thường muốn giữ mức trọng lượng ở mức tối thiểu. Khi bạn sử dụng thêm trọng lượng, sẽ mất nhiều thời gian hơn để đào tạo mạng vì bạn cần điều chỉnh nhiều giá trị hơn nữa cho một mạng tối ưu. Vì vậy, đối với tic-tac-toe, bất kỳ giải pháp nào của bạn liên quan đến 9 đầu vào đều hoạt động tốt. Ngoài ra, sẽ hữu ích nếu bạn giữ các đầu vào trong khoảng từ 0 đến 1 nếu bạn đang sử dụng sigmoid log và -1 và 1 nếu bạn đang sử dụng tiếp tuyến hyperbol cho chức năng kích hoạt của mình. Bạn có thể dễ dàng tìm ra những gì sẽ sử dụng cho các chức năng kích hoạt khác. Bạn có thể lấy dữ liệu của mình và chuyển đổi nó thành một tập dữ liệu khác với các giá trị trong một phạm vi cụ thể thông qua một quá trình gọi là chuẩn hóa phạm vi. Đối với cờ vua, bạn chỉ có thể mã hóa mọi phần theo nhiều cách khác nhau và có thể nó sẽ không tạo ra nhiều sự khác biệt. Nguyên tắc chung làbạn muốn giảm thiểu số lượng trọng lượng trong khi vẫn đưa ra các biến có thể nhất cho mạng .


Không tạo một lớp được kết nối đầy đủ giúp giảm bớt vấn đề với số lượng trọng lượng mà bạn mô tả? Giống như cấu trúc mạng trong arxiv.org/pdf/1509.01549.pdf (trang 21)
NeomerArcana

@NeomerArcana có thể hoạt động, nhưng bạn vẫn không nhận được mã hóa hiệu quả nhất. Sẽ tốt hơn nếu chỉ có 9 đầu vào, thay vì có 18 trong một lớp không được kết nối đầy đủ.
Aiden Grossman

và quyết định để sử dụng -1, 0, 1vs 0, 0.5, 1được xác định bởi chức năng kích hoạt trong sử dụng?
NeomerArcana

@NeomerArcana có.
Aiden Grossman

Có vấn đề gì nếu đó -1là đối thủ, 0 miễn phí và 1của riêng bạn? Như trong, có thể -1là miễn phí, 0của riêng bạn và 1như đối thủ của bạn làm việc? Tôi đoán nó sẽ miễn là nó luôn nhất quán?
NeomerArcana

2

Đại diện của các quốc gia là rất quan trọng để chuẩn bị dữ liệu cho mạng lưới thần kinh. Bạn có thể thử cách khác nhau và chọn cách phù hợp nhất trong trường hợp của bạn.

  • Bạn có thể sử dụng 18 nơ-ron làm đầu vào trong đó mỗi trạng thái được biểu thị bằng 2 bit. Nhưng tránh 0 và 1 nếu bạn đang sử dụng chức năng kích hoạt sigmoid, điều này có thể gây ra bão hòa ở đầu ra, có nghĩa là nếu đầu ra (y) trở thành 1 ở bất kỳ lớp nào, thì khi xảy ra lỗi lan truyền trở lại, chúng ta có y (1-y) dE / dy trong phần cập nhật trọng lượng, trở thành số không với độ bão hòa, có nghĩa là nó sẽ ở cùng một trạng thái.

Vấn đề này có thể được giải quyết bằng phương pháp sau:

Giải pháp 1. Bạn có thể khởi tạo đầu vào với một số lề từ 0 và 1. Ví dụ: đầu vào có thể là [0,1, 0,9] thay cho [0, 1].

Giải pháp 2. Một cách khác bạn có thể khởi tạo trọng lượng rất nhỏ trong phạm vi [-0,01, 0,01].

Giải pháp 3. Bạn có thể sử dụng kỹ thuật chính quy hóa, với mục đích thay thế các trọng số bằng cách thêm một thuật ngữ phạt trong lỗi.

  • Để xử lý vấn đề phương sai, bạn có thể tăng một số dữ liệu, để đào tạo phù hợp. Bởi vì, trong tic-tac-toe, bạn có tập dữ liệu nhỏ. Để tăng dữ liệu, bạn có thể thêm một số lề của phạm vi -0.1 đến +0.1 trong các đầu vào có cùng đầu ra.

Tôi hy vọng điều này có thể hữu ích.


1

Cơ sở của phương pháp học tăng cường là cung cấp cho mỗi (trạng thái) trò chơi (hoặc hành động) một giá trị đại diện cho mức độ nào đó trạng thái (hoặc hành động) đó tốt như thế nào. Để lưu trữ các giá trị này, chúng ta có thể sử dụng một cái gì đó đơn giản như bảng / hashmap, tuy nhiên các trò chơi phức tạp như cờ vua hoặc cờ vây có rất nhiều trạng thái mà chúng không thể phù hợp với bộ nhớ. Để khắc phục, chúng tôi nghĩ rằng hashmap là một hàm và cố gắng xấp xỉ nó với một mạng lưới thần kinh (NN). May mắn thay, NN là các xấp xỉ phổ quát, có nghĩa là họ có thể học bất kỳ chức năng nào , bao gồm cả ánh xạ tùy ý từ bàn cờ đến một số.

Bây giờ câu hỏi là làm thế nào để đại diện cho một bảng trò chơi và đưa nó vào mạng lưới thần kinh. Trong trường hợp tic-tac-toe, tất cả 5 phương pháp bạn liệt kê có thể được coi là chính xác.

Về mặt lý thuyết, không quan trọng (w, b, v)số nào được gán cho (gạch trắng, đen hoặc bỏ trống), nếu chúng ta dạy NN f(w, w, v, ...) = 1đủ số lần, nó sẽ học được liên kết này cho dù đó là (w, b, v) = (0, -1, 1)hay (w, b, v) = (0, 0.5, 1).

Bây giờ ba ví dụ đầu tiên của bạn sử dụng phương pháp này, tuy nhiên một lỗ hổng nhỏ ở đây là nó gán số cho những thứ danh nghĩa, đó là số có thể được đặt hàng, nhưng chúng ta thực sự không thể nói điều đó black > white > vacant. Hai ví dụ cuối cùng của bạn cố gắng khắc phục điều này bằng cách sử dụng các vectơ một nóng .

Vì vậy, đối với một trò chơi như cờ vua, nếu chúng ta sử dụng các con số đơn giản để đại diện cho các con số thì NN có thể nhầm lẫn hai loại hình (ví dụ: cầm đồ là 19, nữ hoàng 20và nó nghĩ rằng một nữ hoàng đang cố gắng tấn công vua của bạn trong khi đó chỉ là một con tốt) và đưa ra một quyết định xấu. Tuy nhiên, nó sẽ học được rằng quyết định là xấu và sẽ gán giá trị chính xác cho nhà nước và quyết định trong thời gian dài.

Một lưu ý cuối cùng: chọn biểu diễn trạng thái chính xác cho một vấn đề là một phần quan trọng của việc học tăng cường (tương tự như chọn các tính năng phù hợp cho vấn đề phân loại) và đôi khi người ta có thể quá sợ khi chọn một không gian trạng thái rất cao. Nhưng hãy nhớ rằng, cờ vua không phải là một trò chơi đơn giản nên một không gian nhà nước rộng lớn có thể không phải là không có lý. Cũng để tham khảo, các trò chơi Atari được đào tạo với kích thước đầu vào là 84*84*4.

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.