업데이트 2018-07-26 : 끝났 습니다! 우리는 이제 이런 종류의 게임을 해결할 수있는 시점에 접근하고 있습니다! 팀은 OpenAI를 사용하고 게임 DotA 2를 기반으로 5v5 게임에서 반 전문 게이머를 이길 수있는 AI를 만들 수 있습니다 . DotA 2를 아는 경우이 게임이 역학 측면에서 디아블로와 유사한 게임과 유사하다는 것을 알고 있지만 팀 플레이 때문에 더 복잡하다고 주장 할 수 있습니다.
예상대로, 이것은 딥 러닝을 통한 강화 학습의 최신 발전과 OpenAI와 같은 공개 게임 프레임 워크를 사용하여 깔끔한 API를 얻었을 때 AI 개발이 쉬워지고 게임을 가속화 할 수 있기 때문에 달성되었습니다 (AI가 재생 됨) 180 년의 게임 플레이가 매일 그 자체와 대등합니다!).
2018 년 8 월 5 일 (10 일만에) ,이 AI를 최고의 DotA 2 게이머에게 맞설 계획입니다. 이것이 해결된다면, Go 게임의 해결만큼 중대 화되지는 않았지만 큰 혁명을 기대할 수 있지만, AI 게임에는 큰 이정표가 될 것입니다!
2017-01 업데이트 : AlphaGo의 성공 이후이 분야는 매우 빠르게 발전하고 있으며 거의 매월 게임에서 기계 학습 알고리즘을 쉽게 개발할 수있는 새로운 프레임 워크가 있습니다. 내가 찾은 최신 목록은 다음과 같습니다.
- OpenAI 's Universe : 기계 학습을 사용하여 거의 모든 게임 을 플레이 할 수 있는 플랫폼 . API는 Python으로되어 있으며 VNC 원격 데스크톱 환경에서 게임을 실행하므로 모든 게임의 이미지를 캡처 할 수 있습니다! 머신 러닝 알고리즘을 통해 Universe를 사용하여 Diablo II를 재생할 수 있습니다!
- OpenAI 's Gym : Universe와 비슷하지만 강화 학습 알고리즘을 구체적으로 타겟팅합니다 (따라서 AlphaGo가 사용하는 프레임 워크의 일반화이지만 더 많은 게임에 적용됩니다). 이 Udemy의 과정 OpenAI 체육관을 사용하여 브레이크 아웃 또는 둠 같은 게임에 기계 학습의 응용 프로그램을 덮고.
- TorchCraft : Torch (기계 학습 프레임 워크)와 StarCraft : Brood War 사이의 다리 .
- pyGTA5 : 화면 캡처 만 사용하여 GTA5에서 자율 주행 자동차를 제작하는 프로젝트 ( 온라인 으로 많은 비디오 사용 ).
매우 흥미로운 시간!
중요 업데이트 (2016-06) : OP에서 지적한 바와 같이, 시각적 입력 만 사용하여 게임을하도록 인공 네트워크를 훈련시키는이 문제는 이제 몇몇 심각한 기관에서 해결되고 있으며 DeepMind Deep-Qlearning-Network (DQN) 와 같은 매우 유망한 결과가 있습니다. ) .
이제 다음 단계의 도전에 도전하고 싶다면 VizDoom 과 같은 다양한 AI 비전 게임 개발 플랫폼 중 하나를 사용하여 시각적 입력 만 사용하여 Doom을 재생하도록 네트워크를 훈련시키는 고도로 최적화 된 플랫폼 ( 7000fps )을 사용할 수 있습니다. :
ViZDoom을 사용하면 시각적 정보 (스크린 버퍼) 만 사용하여 Doom을 재생하는 AI 봇을 개발할 수 있습니다. 주로 머신 비주얼 학습 및 심층 강화 학습 연구를위한 것입니다. ViZDoom은 ZDoom을 기반으로 게임 역학을 제공합니다.
그리고 결과는 놀랍 습니다. 웹 페이지의 비디오 와 멋진 자습서 (Python)를 여기에서보십시오!
Quagents 라는 Quake 3 Arena와 유사한 프로젝트도 있습니다.이 프로젝트는 기본 게임 데이터에 대한 쉬운 API 액세스를 제공하지만 스크린 샷과 API 만 사용하여 에이전트를 제어 할 수 있습니다.
스크린 샷 만 사용하는 경우 왜 그러한 플랫폼이 유용한가요? 기본 게임 데이터에 액세스하지 않아도 이러한 플랫폼은 다음을 제공합니다.
- 고성능 게임 구현 (학습 알고리즘이 더 빨리 수렴 될 수 있도록 더 적은 시간으로 더 많은 데이터 / 재생 / 학습 생성을 생성 할 수 있습니다!)
- 에이전트를 제어 하는 간단하고 반응이 좋은 API입니다 (예 : 사람의 입력을 사용하여 게임을 제어하려고하면 일부 명령이 손실 될 수 있으므로 출력의 신뢰성을 처리 할 수 있습니다 ...).
- 커스텀 시나리오 의 쉬운 설정 .
- 사용자 정의 가능한 렌더링 (쉽게 처리 할 수있는 이미지를 "단순화"하는 데 유용 할 수 있음)
- 동기화 된 ( "turn-by-turn") 재생 (처음에는 실시간으로 작동하기 위해 알고리즘이 필요하지 않으므로 복잡성이 크게 줄어 듭니다).
- 크로스 플랫폼 호환성, 역 호환성 (새로운 게임 업데이트가있을 때 봇이 더 이상 게임에서 작동하지 않을 위험이 없음) 등과 같은 추가 편의 기능 등
요약하면,이 플랫폼의 가장 큰 장점은 학습 알고리즘을 다루기 위해 처리해야하는 이전의 기술적 문제 (게임 입력 조작 방법, 시나리오 설정 방법 등)를 많이 완화 한다는 것입니다 . 그 자체.
이제 일하고 최고의 AI 비주얼 봇을 만드십시오.)
시각적 인 입력에만 의존하는 AI 개발의 기술적 문제를 설명하는 이전 게시물 :
위의 일부 동료와 달리이 문제를 다루기 어렵다고 생각하지 않습니다. 그러나 그것은 확실히 어려운 일입니다!
위에서 지적한 첫 번째 문제 는 게임 상태를 표현하는 것입니다. 단일 이미지로 전체 상태를 표현할 수 없으며 어떤 종류의 암기 를 유지해야합니다.(건강뿐만 아니라 장비 및 사용 가능한 아이템, 퀘스트 및 목표 등). 이러한 정보를 가져 오려면 두 가지 방법이 있습니다. 가장 신뢰할 수 있고 쉬운 게임 데이터에 직접 액세스하는 것; 또는 몇 가지 간단한 절차 (인벤토리 열기, 스크린 샷 찍기, 데이터 추출)를 구현하여 이러한 정보를 추상적으로 표현할 수 있습니다. 물론 스크린 샷에서 데이터를 추출하면 감독 절차 (완전히 정의) 또는 기계 학습 알고리즘을 통해 감독되지 않은 절차를 거치게되지만 복잡성이 크게 증가합니다 ... 비지도 머신 러닝의 경우 구조 학습 알고리즘 (데이터 분류 및 값을 예측하는 방법이 아니라 데이터의 구조를 학습)이라는 최신 알고리즘을 사용해야합니다.http://techtalks.tv/talks/54422/
그런 다음 또 다른 문제는 필요한 모든 데이터를 가져 왔더라도 게임을 부분적으로 만 관찰 할 수 있다는 것 입니다. 따라서 세계의 추상 모델을 주입하고 게임에서 처리 된 정보 (예 : 아바타 위치, 화면 외부의 퀘스트 항목, 목표 및 적의 위치)를 공급해야합니다. Vermaak 2003의 Mixture Particle Filters를 살펴볼 수도 있습니다.
또한, 당신은 가질 필요가 자율적 인 에이전트 로, 목표를 동적으로 생성. 시도 할 수있는 잘 알려진 아키텍처는 BDI 에이전트이지만 실제 아키텍처에서이 아키텍처가 작동하려면 아키텍처를 조정해야합니다. 대안으로, 재귀 페트리 네트도 있습니다.이 페트리 네트는 모든 종류의 페트리 네트와 결합하여 훌륭한 공식화 및 증명 절차와 함께 잘 연구되고 유연한 프레임 워크이기 때문에 원하는 것을 얻을 수 있습니다.
그리고 마지막으로 위의 모든 작업을 수행하더라도 게임을 가속 속도 로 에뮬레이트하는 방법을 찾아야합니다 (비디오를 사용하는 것이 좋을 수도 있지만 문제는 알고리즘이 제어없이 만 관전 할 수 있다는 것입니다. 스스로 시험해 보는 것이 학습에 매우 중요합니다). 실제로, 현재의 최첨단 알고리즘은 인간이 배울 수있는 것과 같은 것을 배우는 데 더 많은 시간이 걸린다는 것이 잘 알려져 있습니다. 즉, 게임 시간을 단축 할 수없는 경우) 알고리즘은 단일 수명으로 수렴하지 않습니다 ...
결론적으로, 여기서 달성하려는 것은 현재의 최신 알고리즘의 한계 (그리고 아마도 그 이상)입니다 . 나는 그것이 가능 할지도 모른다고 생각하지만, 비록 당신이 헬라에 많은 시간을 할애 할 것입니다. 이것은 이론적 인 문제가 아니라 여기에 접근 하고있는 실제적인 문제 이기 때문에 많은 것을 구현하고 결합 해야합니다. AI 를 해결하기 위해
전체 팀을 대상으로 수십 년 동안 연구 한 결과 충분하지 않을 수 있으므로 혼자서 시간 제로 일하고 있다면 (아마도 생계를 위해 일할 수 있기 때문에) 근처에 도달하지 않고 평생을 보낼 수 있습니다. 작동하는 솔루션.
여기서 가장 중요한 조언은 기대치를 낮추고 복잡성을 줄이려는 것입니다.가능한 모든 정보를 사용하여 문제를 해결하고 가능한 한 스크린 샷에 의존하지 말고 (즉, 게임에 직접 연결하고 DLL 삽입을 찾으십시오) 감독 된 절차를 구현하여 일부 문제를 단순화하십시오. 알고리즘은 모든 것을 배웁니다 (즉, 가능한 한 많이 이미지 처리를 드롭하고 내부 게임 정보에 의존합니다. 나중에 알고리즘이 제대로 작동하는 경우 AI 프로그램의 일부를 이미지 처리로 대체하여 전체 목표를 점차 달성 할 수 있습니다. 예를 들어 무언가 잘 작동 할 수 있다면 문제를 복잡하게하고 감독 된 절차와 메모리 게임 데이터를 스크린 샷의 감독되지 않은 기계 학습 알고리즘으로 대체 할 수 있습니다.
행운을 빕니다. 그리고 그것이 작동한다면, 기사를 출판하십시오, 당신은 확실히 어려운 실제적인 문제를 해결하는 것으로 유명해질 수 있습니다!