Connect Four를 재생하는 기계 학습 알고리즘


14

저는 현재 기계 학습에 대해 읽고 있으며 Connect Four 재생에 적용하는 방법에 대해 궁금했습니다 .

현재 시도중인 것은 시그 모이 드 함수 모델과 일대일 방법을 사용하는 간단한 다중 클래스 분류기입니다.

필자의 의견으로는 입력 기능은 7x6 = 42 그리드 필드의 상태 (플레이어 1 디스크, 플레이어 2 디스크, 비어 있음) 여야합니다.

출력은 디스크를 넣을 행 번호입니다. 그것은 1과 7 사이의 이산 숫자이기 때문에 이것이 다중 클래스 분류 문제로 취급 될 수 있다고 생각합니다.

그러나지도 학습에 사용할 수있는 교육 예제를 어떻게 생성합니까?

주요 목표는 게임에서이기는 것이지만, 마지막 턴을 할 때마다 결과를 알 수는 없습니다. 무작위로 서로에게 어떻게해야할지 결정하는 두 명의 플레이어에게 수천 번의 경기를한다면, 각 게임 라운드의 승자가 만든 모든 턴을 훈련 예로 들으면 충분할까요? 아니면 완전히 다른 방식으로이 작업을 수행해야합니까?

편집 : 의견에서 제안한 것처럼 강화 학습에 대해 조금 읽었습니다. 내가 아는 것에서 Q-Learning은 트릭을 수행해야합니다. 즉, 현재 상태의 함수 Q와 그 상태에서 시작하는 최대 누적 보상이되기 위해 취해야 할 조치를 근사해야합니다. 그런 다음 각 단계는 최대 Q 값을 초래하는 동작을 선택하는 것입니다. 그러나이 게임에는이를 수행하기에는 너무 많은 상태가 있습니다 (예 : 조회 테이블). 그렇다면이 Q-Function을 모델링하는 효과적인 방법은 무엇입니까?


2
구글 "강화 학습"
조지

좋아, 나는 이것이 실제로이 문제에 정확히 적용된다고 생각합니다. 미리 읽을 거리가 많은 것 같습니다. 더 구체적인 조언이나 권장 사항이 있습니까?
Tom

1
내가 더 많이 알고 있다면 답으로 게시 할 것입니다 :) 불행히도 나는 강화 학습에 경험이 없습니다. Tom Mitchell의 "Machine Learning"책에서 시작하겠습니다. 이 책은 아주 좋은 입문서이며 강화 학습에 관한 장도 있습니다.
George

1
후자는 기계 학습과 그것을 알고 자하는 것에 대해 궁금합니다.
Tom

1
@Tom, 기계 학습 기술을 '알아내는'더 좋은 방법이 있습니다. 좀 더 기본적인 분류와 회귀 기술로 시작하여 앞으로 나아갑니다. UCI의 머신 러닝 데이터 저장소에서 데이터 세트를 가져오고 Andrew Ng (Stanford) 머신 러닝 강의 노트를 확인하고 구현할 수 있습니다. 강화 학습을 사용하여 connect 4를 해결하려고 노력하는 것은 곧 어색하고 지나치게 복잡해 보입니다.
Nick

답변:


8

강화 학습에 대한 간단한 대안을 제공하기 위해 기본 minimax 알고리즘을 사용하여 좋은 움직임을 찾고 기계 학습을 사용하여 보드 위치를 평가할 수 있습니다.

명확하게하기 위해, minimax는 A가이 숫자를 최대화하는 움직임을 선택하고 B가 움직임을 선택한다고 가정 할 때 각 노드가 잎 업 결과 (1 = 플레이어 A 승리, 0 = 플레이어 B 승리)로 레이블이 지정된 게임 트리를 구축합니다. 그것을 최소화합니다.

게임이 매우 단순하지 않으면 게임 트리 전체를 터미널까지 구성 할 수 없습니다. 대신 미완성 된 보드 위치에서 멈추고 휴리스틱으로 나뭇잎을 평가해야합니다 (실제로 플레이어 A가 주어진 위치에서 이길 확률). 신경망과 같은 기계 학습 알고리즘이 알려진 결과를 가진 4 개의 위치를 ​​연결하여이 확률을 배우도록 할 수 있습니다.

훈련 예제를 생성하기 위해 간단한 휴리스틱으로 minimax 플레이어를 구축하고, 천 번 재생하고, 그 게임을 사용하여 첫 신경망을 훈련시킨 다음, 천 게임 등을 지불 할 수 있습니다. 운이 좋으면 각 세대마다 시스템이 향상됩니다.


2

나는 블로그 포스트를 썼다 minimax를 사용하여 4 분 전에 연결을 것에 관한 를 . 여기 에서 코드가 작동하는 것을 볼 수 있습니다 . 모델을 훈련시켜야하는 경우 미니 맥스 구현에 대해 수천 게임을하도록 할 수 있습니다.


Github에서 내 코드를 자유롭게 포크하십시오. github.com/lukasvermeer/minimax
Lukas Vermeer

Stack Exchange에 오신 것을 환영합니다. 이것은 질문과 답변 사이트 입니다. 자주 묻는 질문 , 특히 답변 방법을 읽으십시오 . 특히 답변에 대한 링크로만 구성된 게시물은 원하지 않습니다. 귀하의 기여에 감사하지만 블로그 게시물의 요점을 여기 게시물에 요약 해 주시겠습니까?
Gilles 'SO- 악의를 멈춰라'

죄송하지만 원래 질문은 "지도 학습에서 사용할 수있는 교육 예제를 어떻게 생성합니까?"였습니다. 나는 이것을 생성하는 데 사용할 수있는 작업 코드에 대한 링크를 제공했습니다. 위의 텍스트를 더 많이 쓰면 원래의 요구에 응답하는 데 어떻게 도움이되는지 알 수 없습니다.
루카스 베르메르

"잠재적 인 솔루션에 대한 링크는 언제나 환영하지만 링크 주위에 컨텍스트를 추가하여 동료 사용자가 그 이유와 그 이유를 알 수 있도록하십시오. 대상 사이트의 경우 항상 중요한 링크의 가장 관련성있는 부분을 인용하십시오. 연결할 수 없거나 영구적으로 오프라인 상태입니다. " 나는 내가 전자를 한 것 같습니다. 후자는 관련이 없습니다. 원래 질문은 솔루션을 구현하는 방법에 대한 설명이 아니라 예제 게임이 필요합니다.
루카스 베르메르
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.