캐글 강화학습 입문 대회 참여부터 결과물 제출까지 #1
캐글에서 강화학습 Learming Course를 제공하고 있습니다. 이 과정은 Connect X 대회에 참여하여 강화 학습을 경험해볼 수 있도록 구성되어있습니다.
Learming Course 첫 번째 과정인 Play the Game을 살펴보도록 하겠습니다.
Connect X 대회에 접속 후 Join Competition을 눌러 대회에 참여합니다. 참여 후 대회 설명 및 평가방법, 시작 방법 및 환경 규칙에 대한 설명을 살펴봅니다.
대회 목표는 Agent를 사용하여 상대방보다 게임 보드에 가로, 세로, 대각선으로 4개의 컬러 디스크를 연속해서 만드는 것입니다. 이때 환경 규칙의 내용을 지키면서 진행이 필요합니다. 대회 제출물은 Agent 코드입니다.
TLDR (=too long; didn't read : 너무 길어서 읽지 않았다)는 어떠한 텍스트가 그 길이 때문에 무시되고 있다는 것을 말하는 인터넷 속어이다
Connect X 대회의 Connect Four 보드게임의 규칙에 대해서 알아보겠습니다. Connect Four는 두 명의 플레이어가 번갈아 가며 컬러 디스크를 수직 그리드에 떨어뜨리는 게임입니다. 각 플레이어는 다른 색(일반적으로 빨간색 또는 노란색)을 사용하며, 게임의 목적은 연속해서 디스크 4개를 얻는 첫 번째 플레이어가 승리하는 게임입니다.
강화 학습에서 중요한 요소인 환경에 대해서 알아보겠습니다. kaggle_environments를 import 후 make로 connectx 환경을 생성합니다. 생성 후 env.run으로 게임을 실행 후 env.render를 호출하면 보드게임을 확인할 수 있습니다. 실행결과를 보면 대각선으로 4개의 컬러 디스크가 만들어져 K 측 플레이어가 승리했네요.
Connect X 게임에서 이기기 위해 Agent를 생성해보도록 하겠습니다. env.run의 인자 값에 이전 random으로 되었던 부분이 agent_leftmost, agnet_ramdom으로 변경되었습니다.
agent_leftmost는 가장 왼쪽으로 컬러 디스크를 내리는 Agnet입니다.
agent_random는 이전 ramdom Agent와 동일하게 동작합니다.
Agent는 아래와 같이 함수로 구현되어있습니다. 대회 제출 파일에는 이 Agent의 코드가 제출됩니다. 제출된 Agent는 다른 캐글러가 제출한 Agnet와 경쟁하여 결과에 따라 스코어 및 등수가 부여됩니다. 상대방을 이기기 위해 Agent를 개선해 나가는 것이 대회의 목표입니다.
한 번의 게임으로는 Agent의 승률(=성능)을 확인하기 어렵습니다. 캐글에서 제공하는 evaluate 함수로 여러 게임의 평균값으로 각 에이전트의 승률(=성능)을 계산하는 함수를 생성합니다.
평가함수에 생성한 에이전트들을 입력 후 승률을 확인합니다. 컬러 디스크를 중간에 넣는 에이전트보다는 왼편에 넣는 에이전트의 승률이 82%로 더 높은 것을 확인할 수 있습니다.
Connect X 대회에 make your first competition submission 노트북 등을 참고하여 제출해보세요.
다음 시간에는 휴리스틱을 이용해 Agent를 개선해보도록 하겠습니다.