Thuật toán học máy để chơi Connect Four


14

Tôi hiện đang đọc về học máy và tự hỏi làm thế nào để áp dụng nó vào chơi Connect Four .

Nỗ lực hiện tại của tôi là một phân loại đa lớp đơn giản sử dụng mô hình hàm sigmoid và phương thức one-vs-all.

Theo tôi, các tính năng đầu vào phải là trạng thái (đĩa của trình phát 1, đĩa của trình phát 2, trống) của các trường lưới 7x6 = 42.

Đầu ra sẽ là số hàng để đặt đĩa vào. Bởi vì đó là một số rời rạc trong khoảng từ 1 đến 7, tôi đoán đây có thể được coi là một vấn đề phân loại đa lớp.

Nhưng làm thế nào để tôi tạo ra các ví dụ đào tạo có thể sử dụng trong học tập có giám sát?

Mục tiêu chính là giành chiến thắng trong trò chơi nhưng kết quả rõ ràng là không được biết đến khi làm mọi việc trừ lượt cuối cùng. Nếu tôi chỉ để hai người chơi quyết định ngẫu nhiên chơi gì với nhau hàng ngàn lần, liệu có đủ đơn giản để lấy tất cả các lượt được thực hiện bởi người chiến thắng của mỗi vòng chơi làm ví dụ đào tạo không? Hay tôi phải làm điều này theo một cách hoàn toàn khác?

Chỉnh sửa: Như được đề xuất trong các ý kiến ​​tôi đọc một chút về học tập củng cố. Từ những gì tôi biết, Q-Learning nên thực hiện thủ thuật, tức là tôi phải tính gần đúng một hàm Q của trạng thái hiện tại và hành động để trở thành phần thưởng tích lũy tối đa bắt đầu ở trạng thái đó. Sau đó, mỗi bước sẽ là chọn hành động dẫn đến giá trị tối đa của Q. Tuy nhiên, trò chơi này có quá nhiều trạng thái để thực hiện việc này, ví dụ như bảng tra cứu. Vì vậy, một cách hiệu quả để mô hình hóa Q-Function này là gì?


2
Google "Học tăng cường"
George

Được rồi, tôi đoán rằng thực sự áp dụng chính xác cho vấn đề này. Có vẻ như có nhiều đọc trước. Bất kỳ con trỏ hoặc khuyến nghị cụ thể hơn?
Tom

1
Nếu tôi biết nhiều hơn tôi sẽ đăng nó như một câu trả lời :) Thật không may, tôi không có kinh nghiệm trong việc học tăng cường. Tôi sẽ bắt đầu từ cuốn sách "Machine Learning" của Tom Mitchell. Đó là một cuốn sách giới thiệu rất hay và cũng có một chương về Học tập củng cố.
George

1
Sau này, tôi chỉ tò mò về học máy và cố gắng tìm hiểu nó.
Tom

1
@Tom, có nhiều cách tốt hơn để 'làm quen' với các kỹ thuật học máy. Tôi sẽ bắt đầu với các kỹ thuật phân loại và hồi quy cơ bản hơn và tiến lên từ đó. Bạn có thể lấy các bộ dữ liệu từ kho lưu trữ dữ liệu máy học của UCI, xem các ghi chú về khóa học máy của Andrew Ng (Stanford) và thực hiện. Nhảy thẳng vào cố gắng giải quyết kết nối 4 bằng cách học tăng cường có vẻ khá lúng túng và quá phức tạp.
Nick

Câu trả lời:


8

Chỉ cần cung cấp một giải pháp thay thế đơn giản hơn cho việc học tăng cường, bạn có thể sử dụng thuật toán minimax cơ bản để tìm kiếm các bước di chuyển tốt và sử dụng học máy để đánh giá các vị trí bảng.

Để làm rõ, minimax xây dựng một cây trò chơi trong đó mỗi nút được gắn nhãn kết quả từ lá lên (1 = người chơi A thắng, 0 = người chơi B thắng), giả sử rằng A chọn các bước di chuyển tối đa số này và B chọn các bước di chuyển mà giảm thiểu nó

Trừ khi trò chơi rất đơn giản, bạn sẽ không thể xây dựng toàn bộ cây trò chơi xuống các thiết bị đầu cuối. Thay vào đó, bạn sẽ cần dừng lại ở các vị trí bảng chưa hoàn thành và đánh giá các lá với một số heuristic (về cơ bản xác suất người chơi A sẽ giành chiến thắng từ vị trí đã cho). Bạn có thể để một thuật toán học máy như mạng thần kinh cố gắng học xác suất này từ việc kết nối bốn vị trí với kết quả đã biết.

Để tạo các ví dụ đào tạo, bạn có thể xây dựng trình phát minimax của mình với một heuristic đơn giản, hãy để nó tự chơi hàng ngàn lần, sử dụng các trò chơi đó để huấn luyện mạng lưới thần kinh đầu tiên của bạn, sau đó để nó tự trả một nghìn trò chơi, v.v. Với một chút may mắn, hệ thống của bạn sẽ cải thiện theo từng thế hệ.


2

Tôi đã viết một blogpost về việc sử dụng minimax để chơi kết nối bốn lần trước. Bạn có thể xem mã hoạt động ở đây . Nếu bạn cần đào tạo các mô hình của mình, có lẽ bạn có thể cho phép nó chơi một vài nghìn trò chơi chống lại việc triển khai minimax của tôi.


Vui lòng rẽ nhánh mã của tôi trên Github. github.com/lukasvermeer/minimax
Lukas Vermeer

Chào mừng bạn đến với Stack Exchange. Đây là một trang web câu hỏi và câu trả lời . Xin vui lòng đọc faq của chúng tôi , đặc biệt làm thế nào để trả lời . Đặc biệt, chúng tôi không muốn các bài đăng chỉ bao gồm một liên kết đến một câu trả lời. Cảm ơn bạn đã đóng góp, nhưng bạn có thể vui lòng tóm tắt những điểm chính của bài đăng blog của bạn trong bài viết của bạn ở đây?
Gilles 'SO- ngừng trở nên xấu xa'

Tôi xin lỗi, nhưng câu hỏi ban đầu là "làm thế nào để tôi tạo ra các ví dụ đào tạo có thể sử dụng được trong việc học có giám sát?" Tôi đã cung cấp các liên kết đến mã làm việc có thể được sử dụng để tạo ra các mã này. Tôi không thấy cách viết nhiều văn bản ở trên sẽ giúp đáp ứng nhu cầu ban đầu.
Vermas Vermeer

"Liên kết đến một giải pháp tiềm năng luôn được chào đón, nhưng vui lòng thêm ngữ cảnh xung quanh liên kết để người dùng đồng nghiệp của bạn sẽ biết được đó là gì và tại sao lại có. Luôn luôn trích dẫn phần có liên quan nhất của một liên kết quan trọng, trong trường hợp trang web mục tiêu không thể truy cập được hoặc ngoại tuyến vĩnh viễn. " Tôi nghĩ rằng tôi đã làm trước đây. Cái sau sẽ không liên quan. Câu hỏi ban đầu là cần các trò chơi ví dụ, không phải là một lời giải thích về cách thực hiện một giải pháp.
Vermas Vermeer
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.