2016-11-04 17 views
5

Tôi muốn đào tạo mạng thần kinh để chơi trò chơi 2048. Tôi biết rằng NN không phải là lựa chọn tốt cho các trò chơi nhà nước như năm 2048, nhưng tôi muốn đạt được NN đó sẽ chơi trò chơi như một người có kinh nghiệm, tức là di chuyển gạch chỉ theo ba hướng.Tôi có thể huấn luyện mạng thần kinh để chơi trò chơi năm 2048 như thế nào?

Nhưng tôi không thể tìm ra cách tự đào tạo NN vì chúng tôi không biết đầu ra hợp lệ. Thông thường, ví dụ: trong hồi quy, bạn biết đầu ra chính xác và bạn có thể tính toán tổn thất (ví dụ: lỗi bình phương trung bình) và cập nhật trọng số. Nhưng vào năm 2048 đầu ra hợp lệ về cơ bản là không rõ (tất nhiên bạn có thể tính toán điểm cho mỗi hướng bạn có thể di chuyển, ví dụ, hướng với sự khác biệt cao nhất score_after_move - previous_score sẽ là đầu ra hợp lệ, nhưng tôi nghĩ đó không phải là cách tự học NN). Vì vậy, nó có thể xác định chức năng mất mát cho các trò chơi 2048? Điều tốt nhất sẽ là một sự khác biệt.

Câu hỏi tiếp theo là khi cập nhật trọng số: sau mỗi lần di chuyển hoặc thay vì sau khi hoàn thành trò chơi (trò chơi kết thúc)?

Nếu điều quan trọng là: topo NN tôi sẽ cho bây giờ đơn giản:

2D matrix of gaming board -> 2D matrix of input neurons -> 2D fully-connected hidden layer -> 1D 4-neuron layer

Vì vậy, mỗi gạch sẽ đầu vào cho tế bào thần kinh tương ứng trong lớp đầu tiên (là có bất kỳ tên đặc biệt cho 2D đầy đủ kết nối lớp?). Sản lượng dự kiến ​​từ lớp cuối cùng là một vectơ có độ dài 4, ví dụ: [1, 0, 0, 0] sẽ là hướng di chuyển "lên".

Hiện tại tôi đã triển khai lớp không đầu (bằng Python/NumPy) cho trò chơi 2048, bởi vì việc sử dụng đầu vào trực quan chậm và còn nhiều việc phải làm.

P.S. Có lẽ tôi đang suy nghĩ không chính xác về việc học NN cho trò chơi này (hoặc trò chơi nói chung). Hãy cho tôi thấy một cách tốt hơn, tôi sẽ đánh giá cao điều đó. Cảm ơn :)

CHỈNH SỬA: Tăng cường học tập dường như là cách. Dưới đây là một số liên kết hữu ích:

Demystifying Deep Reinforcement Learning

Action-Value Methods and n-armed bandit problems

Q-learning for Keras

Deep Reinforcement Learning for Keras

+0

Bạn có thể tìm thấy thú vị này: https://www.youtube.com/watch ? v = qv6UVOQ0F44 – Tim

+0

Đó là tốt đẹp :) Tôi cũng muốn thực hiện một số thuật toán di truyền. Thật không may tác giả đã không viết bất kỳ lời giải thích vì vậy chỉ có tùy chọn là để đọc mã nguồn của mình. – jirinovo

+0

Mặc dù có thể di chuyển câu hỏi này sang SO, như bạn đã yêu cầu, có vẻ như nó không phải là chủ đề ở đó, vì vậy khả năng di chuyển sẽ bị từ chối. – whuber

Trả lời

3

Vì vậy https://github.com/matthiasplappert/keras-rl có vẻ là cách tốt nhất. Bạn chỉ phải thực hiện một vài phương thức được định nghĩa bởi API môi trường OpenAI Gym. Đây là những step()reset() phương pháp: https://github.com/matthiasplappert/keras-rl/blob/master/rl/core.py#L330

Để biết thêm thông có một câu trả lời từ keras-rl phát triển: https://github.com/matthiasplappert/keras-rl/issues/38

Khi dự án AI 2048 trò chơi của tôi sẽ được hoàn thành, tôi gửi link nguồn ở đây (nếu tôi thắng' t quên để làm như vậy :))

EDIT: đây là liên kết hứa nguồn, hoàn toàn quên về nó:/ https://github.com/gorgitko/MI-MVI_2016

+0

Bạn đã kết thúc nó: p? –

+1

@tt_Gantz yeah :) [link] (https://github.com/gorgitko/MI-MVI_2016) đã thêm – jirinovo

Các vấn đề liên quan