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.