>  기사  >  백엔드 개발  >  Python을 사용하여 AI가 Snake 게임을 하도록 훈련시키는 방법

Python을 사용하여 AI가 Snake 게임을 하도록 훈련시키는 방법

PHPz
PHPz앞으로
2024-01-23 08:39:06988검색

이것은 강화 학습을 사용하여 AI가 스네이크 게임을 플레이하도록 훈련시키는 방법에 대한 간단한 가이드입니다. 이 기사에서는 맞춤형 게임 환경을 설정하고 Python으로 표준화된 Stable-Baselines3 알고리즘 라이브러리를 사용하여 AI가 Snake를 플레이하도록 훈련시키는 방법을 단계별로 보여줍니다.

이 프로젝트에서는 사용하기 쉬운 PyTorch 기반 강화 학습(RL) 알고리즘 구현을 제공하는 표준화된 라이브러리인 Stable-Baselines3을 사용합니다.

먼저 환경을 설정합니다. Stable-Baselines 라이브러리에는 내장된 게임 환경이 많이 있습니다. 여기서는 중간에 추가로 교차하는 벽이 있는 클래식 Snake의 수정된 버전을 사용합니다.

Python을 사용하여 AI가 Snake 게임을 하도록 훈련시키는 방법

더 나은 보상 계획은 음식에 더 가까운 걸음만 보상하는 것입니다. 뱀은 여전히 ​​원을 그리며 걷는 법만 배울 수 있고, 음식에 접근할 때 보상을 받은 다음 돌아서 돌아올 수 있으므로 여기서 주의해야 합니다. 이를 방지하려면 음식을 멀리하는 데에도 동등한 페널티를 주어야 합니다. 즉, 폐쇄 루프의 순 보상이 0이 되도록 보장해야 합니다. 또한 벽에 부딪힐 경우 벌칙을 도입해야 합니다. 어떤 경우에는 뱀이 먹이에 더 가까이 다가가기 위해 벽에 부딪히는 경우도 있기 때문입니다.

대부분의 기계 학습 알고리즘은 상당히 복잡하고 구현하기 어렵습니다. 다행스럽게도 Stable-Baselines3은 이미 여러 가지 최첨단 알고리즘을 구현하고 있습니다. 이 예에서는 PPO(Proximal Policy Optimization)를 사용합니다. 알고리즘이 어떻게 작동하는지 자세히 알 필요는 없지만(관심이 있다면 이 설명 동영상을 확인하세요), 하이퍼파라미터가 무엇이고 어떤 역할을 하는지에 대한 기본적인 이해는 필요합니다. 다행히 PPO에는 그 중 몇 가지만 있으며 다음을 사용합니다.

learning_rate: 다른 기계 학습 시나리오와 마찬가지로 정책 업데이트 단계의 크기를 설정합니다. 너무 높게 설정하면 알고리즘이 올바른 솔루션을 찾지 못하거나 복구할 수 없는 방향으로 밀어붙일 수도 있습니다. 너무 낮게 설정하면 훈련 시간이 더 오래 걸립니다. 일반적인 비결은 스케줄러 기능을 사용하여 훈련 중에 이를 조정하는 것입니다.

gamma: 미래 보상에 대한 할인 요소로, 0(즉시 보상만 중요함)과 1(미래 보상은 즉각적인 보상과 동일한 가치를 가짐) 사이입니다. 훈련 효과를 유지하려면 0.9 이상으로 유지하는 것이 가장 좋습니다.

clip_range1+-clip_range: PPO의 중요한 기능으로, 훈련 중에 모델이 크게 변경되지 않도록 하기 위해 존재합니다. 이를 줄이면 이후 학습 단계에서 모델을 미세 조정하는 데 도움이 됩니다.

ent_coef: 기본적으로 값이 높을수록 알고리즘이 최적이 아닌 다양한 작업을 더 많이 탐색하도록 권장되며, 이는 계획이 로컬 보상 최대값을 탈출하는 데 도움이 될 수 있습니다.

일반적으로 말해서, 기본 하이퍼매개변수로 시작하세요.

다음 단계는 미리 결정된 일부 단계에 대해 훈련한 다음 알고리즘이 얼마나 잘 수행되는지 직접 확인한 다음 가장 잘 수행되는 새로운 매개변수로 다시 시작하는 것입니다. 여기서는 다양한 훈련 시간에 대한 보상을 표시합니다.

Python을 사용하여 AI가 Snake 게임을 하도록 훈련시키는 방법

충분한 단계를 거친 후 뱀 훈련 알고리즘이 특정 보상 값에 수렴하면 훈련을 완료하거나 매개변수를 미세 조정하고 훈련을 계속할 수 있습니다.

가능한 최대 보상에 도달하는 데 필요한 훈련 단계는 문제, 보상 체계 및 하이퍼파라미터에 따라 크게 달라지므로 알고리즘을 훈련하기 전에 최적화하는 것이 좋습니다. 뱀 게임을 하기 위해 AI를 훈련시키는 예의 끝에서 우리는 AI가 미로에서 음식을 찾고 꼬리와의 충돌을 피할 수 있다는 것을 발견했습니다.

위 내용은 Python을 사용하여 AI가 Snake 게임을 하도록 훈련시키는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 163.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제