Mã hóa đầu vào / đầu ra cho mạng thần kinh để tìm hiểu một trò chơi dựa trên lưới


13

Tôi đang viết một trò chơi đồ chơi đơn giản với mục đích đào tạo một mạng lưới thần kinh sâu trên nó. Các quy tắc trò chơi đại khái như sau:

  • Trò chơi có một bảng được tạo thành từ các tế bào hình lục giác.
  • Cả hai người chơi có cùng một bộ sưu tập các mảnh mà họ có thể chọn để đặt tự do trên bảng.
  • Đặt các loại phần thưởng khác nhau điểm thưởng (hoặc giảm điểm của đối thủ) tùy thuộc vào vị trí và cấu hình của chúng tạo ra nhau.
  • Ai có nhiều điểm hơn sẽ thắng.

Có các quy tắc bổ sung (về lượt, số lượng và loại mảnh, v.v ...) nhưng chúng không quan trọng trong bối cảnh của câu hỏi này. Tôi muốn tạo ra một mạng lưới thần kinh sâu sắc có thể học hỏi bằng cách chơi với chính nó. Câu hỏi của tôi là về đại diện của đầu vào và đầu ra. Đặc biệt:

  • Vì mô hình của các mảnh quan trọng, tôi đã nghĩ rằng có ít nhất một số lớp chập. Bảng có thể có kích thước khác nhau nhưng về nguyên tắc rất nhỏ (6x10 trong các thử nghiệm của tôi, được mở rộng bởi một vài ô). Liệu nó có ý nghĩa? Tôi có thể sử dụng loại tổng hợp nào?
  • Làm thế nào để đại diện cho cả hai bên? Trong bài báo này , các tác giả sử dụng hai ma trận đầu vào, một cho đá trắng và một cho đá đen. Nó có thể làm việc trong trường hợp này quá không? Nhưng hãy nhớ rằng tôi có các loại mảnh khác nhau, giả sử A, B, C và D. Tôi có nên sử dụng ma trận đầu vào 2x4 không? Nó có vẻ rất thưa thớt và ít hiệu quả với tôi. Tôi sợ rằng nó sẽ quá thưa thớt để các lớp chập hoạt động.
  • Tôi nghĩ rằng đầu ra có thể là một phân phối xác suất trên ma trận đại diện cho các vị trí bảng, cộng với một mảng xác suất riêng biệt cho biết phần nào sẽ chơi. Tuy nhiên, tôi cũng cần thể hiện khả năng vượt qua lượt, điều này rất quan trọng. Làm thế nào tôi có thể làm điều đó mà không làm giảm ý nghĩa của nó trong số các xác suất khác?
  • quan trọng nhất , tôi chỉ thực thi các động thái chiến thắng hay thua các động tác? Thực thi các động tác chiến thắng thật dễ dàng vì tôi chỉ đặt xác suất mong muốn là 1. Tuy nhiên, khi thua, tôi có thể làm gì? Đặt xác suất di chuyển đó thành 0 và tất cả những cái khác có cùng giá trị không? Ngoài ra, có ý nghĩa gì khi thực thi các động thái bằng chênh lệch điểm số cuối cùng, mặc dù điều này sẽ đi ngược lại ý nghĩa của các kết quả đầu ra, gần như là xác suất?

Ngoài ra, tôi đã phát triển công cụ trò chơi trong node.js với suy nghĩ sử dụng Synaptic làm khung, nhưng tôi không chắc nó có thể hoạt động với các mạng chập (tôi nghi ngờ có cách khắc phục các trọng số liên quan đến các trường nhận thức cục bộ). Bất kỳ lời khuyên về các thư viện khác tương thích với nút?


Chúng tôi sẽ cho rằng bạn muốn máy học trò chơi chưa biết và sau đó học cách chiến thắng nó? (Trái ngược với việc học làm thế nào để giành chiến thắng một trò chơi các quy tắc trong số đó là có sẵn cho các lập trình viên trước khi viết phần mềm máy học)
FauChristian

Câu trả lời:


1
  • Để thể hiện các mảnh, bạn sẽ có thể sử dụng một ma trận đầu vào duy nhất. Chỉ cần chỉ định một số nguyên cho các loại mảnh khác nhau. Đá trắng có thể là số nguyên dương và đá đen có thể âm.

  • Bạn có thể sử dụng sigmoid để tự tin vị trí bảng và kích hoạt tuyến tính cho mã định danh mảnh. pass sẽ là một đầu ra sigmoid khác. Tôi không nghĩ rằng bạn sẽ phải lo lắng về việc vượt qua bị pha loãng. Vì nó là một hành động có giá trị như vậy, điểm số sẽ phụ thuộc rất nhiều vào đầu ra vượt qua và nó sẽ có độ dốc lớn. Nếu bạn cần chọn hành động vượt qua với tần suất cao cho mục đích học tập củng cố, thì chỉ cần quy một xác suất cao hơn cho hành động vượt qua trong chức năng lựa chọn ngẫu nhiên của bạn.

  • Sự khác biệt về điểm số cuối cùng có tác động lớn đến tính mong muốn của các nước đi. Một sự khác biệt lớn về điểm số sẽ dẫn đến một tác động lớn đến chức năng. Do đó, bạn có thể muốn bao gồm mức độ khác biệt về điểm số trong chức năng mất của mình.

Đây là loại công việc mà Deep Q Learning làm. Có lẽ bạn cũng sẽ muốn xem xét điều đó.


1

Bạn không cần các lớp đối lưu, vì bạn không cung cấp hình ảnh làm đầu vào (xem bên dưới). Ngoài ra, bạn có thể thử sử dụng một hình ảnh của bảng (với các mảnh khác nhau có hình dạng khác nhau). Điều này có thể làm việc quá. Sau đó, tôi sẽ đi cho 2 lớp đối lưu, sải chân 1, kích thước hạt nhân bằng một nửa kích thước mảnh. Tôi sẽ thử nó với một nhóm tối đa duy nhất.

Không giống như câu trả lời khác, tôi sẽ đề nghị sử dụng một tenxơ 3d làm đầu vào, với số lượng kênh bằng các phần khác nhau. Hai kích thước khác bằng nhau sẽ tương ứng với số lượng ô trên bảng. Biến đổi khác nhau trong bạn NN sẽ không thể phân biệt giữa nhiều số nguyên rất tốt. Đó là lý do tại sao tốt hơn là mã hóa một loại nóng của các loại.

Tôi sẽ chỉ sử dụng một vectơ với các thành phần n + 1 cho đầu ra: n cho tất cả các chuyển động có thể và 1 cho đường chuyền. Nó sẽ mã hóa phần thưởng dự kiến ​​cho mỗi lần di chuyển, không phải là xác suất.

Không chắc chắn những gì bạn có nghĩa là bằng cách thực thi di chuyển. Nhưng khi bạn luyện nó với thứ gì đó như Q-learning, sẽ rất hợp lý khi thực hiện một động tác hoàn toàn ngẫu nhiên cứ sau một lần với một xác suất nhất định (giả sử 10% số lần). Tra cứu https://en.wikipedia.org/wiki/Reinfor thi_learning


Ten căng là quá mức cần thiết.
FauChristian
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.