Angry Birds를 플레이하기위한 머신 러닝 시스템을 어떻게 설계 하시겠습니까?


22

너무 많은 앵그리 버드를 플레이 한 후, 나는 내 전략을 관찰하기 시작했습니다. 각 레벨에서 별 3 개를 얻는 데 매우 구체적인 접근 방식을 개발 한 것으로 나타났습니다.

앵그리 버드를 플레이 할 수있는 머신 러닝 시스템을 개발해야하는 어려움에 대해 궁금해했습니다. 게임과 상호 작용하고 새를 시작하는 것은 사소한 일입니다. 그러나 제가 가진 한 가지 질문은 시스템의 "빌딩 블록"에 관한 것입니다.

기계 학습 시스템은 간단한 개념이나 문제에 대한 이해와 함께 작동하는 것 같습니다. 이것은 종종 입력으로 기능으로 인코딩됩니다. 따라서 시스템은 전략을 생성하기 위해 일부 고급 개념을 이해할 수있는 능력이 있어야합니다.

이것이 사실입니까? 또한 그러한 시스템을 개발하는 데있어 어려운 점이나 어려운 부분은 무엇입니까?

편집 # 1 :

여기 몇 가지 설명이 있습니다. 포인트를 최대화해야하기 때문에 별 3 개를 얻는 것은 어려운 문제입니다. 이것은 두 가지 비 독점적 방법으로 수행 될 수 있습니다 : 1) 사용되는 새의 수를 최소화합니다 (사용하지 않은 새마다 10,000 포인트를 얻음). 2) 유리, 목재 및 기타 물체의 파괴를 극대화했습니다. 파괴 된 각 개체는 당신에게 포인트를 제공합니다. 한 마리의 새로 10,000 점 이상의 물건을 파괴 할 수 있습니다.

다음은 "고수준 개념"에 대한 약간의 설명입니다. 위에서 설명한 점을 최대화하려면 각 조류의 특수한 힘을 사용해야합니다. 즉,지도의 레이아웃에 따라 다른 궤도로 다른 조류를 발사하는 것을 의미합니다. 그리고 게임을하면서 특정 조류가있는 특정 지역을 특정 순서로 파괴하는 전략을 개발합니다.

특정 지역을 파괴하기 위해 각 조류를 사용하는 방법에 대한 이해가 없으면 시스템은 별 3 개를 얻는 법을 배울 수 없었습니다. 그렇다면 어떻게 그런 식으로 관리하고 인코딩합니까? 시스템이 이러한 높은 수준의 개념을 배울 수 있도록하려면 어떻게해야합니까?

답변:


13

소프트웨어에 올바르게 연결될 수 있다고 가정하거나 자신 만의 모형으로 작업 할 수 있다고 가정하면 여기에 몇 가지가 쉬울 수 있습니다. 이것은 내가 생각하기에 매우 어려운 문제입니다. carlosdc가 언급했듯이, RL (Reinforcement Learning) 은 하나의 가능한 방법이지만, 그것이 올바른지는 확실하지 않습니다.

시작할 때 상태 공간 , 작업 공간 , 전환 역학보상 기능 이 무엇인지 정의해야합니다 . 상태 / 액션 공간은 연속적이거나 불연속적일 수 있으며 전이 역학은 문제에 의해 제공되거나 수학적으로 모델링 될 수 있습니다. 마지막으로 보상 기능은 사전에 주어 지거나 (소음이 있거나없는) 샘플링 될 수 있습니다.

액션 공간은 간단합니다. 현재 조류를 쏘는 방향과 힘입니다. 사람에게는 이것이 별개의 문제입니다 (마우스 / 터치 스크린은 디지털 입력 장치입니다). 예를 들어 32 개의 가능한 방향과 10 개의 가능한 힘이 있으며 320 개의 가능한 동작이 있다고 가정 해 봅시다.

보상 기능은 또한 매우 쉽게 도출 할 수 있습니다. 목표는 적은 수의 새를 가진 모든 돼지를 제거하는 것입니다. (그래서 다른 것들에 대한 추가 포인트가 있지만 지금은 무시하겠습니다). 가장 좋은 방법은 돼지를 죽일 때 포인트를 생성하는 실제 기능을 알고 있다면 (돼지 등 IIRC의 크기에 따라 다름), 단일 수준에서는 완벽하게 모델링 될 수 있습니다.

상태 공간 및 전환 역학은 훨씬 더 어렵습니다. 이를 올바르게 모델링하려면 맵의 전체 레이아웃 게임의 물리 를 알아야합니다 . 전이 역학은 "상태 x에 있고 동작 y를 수행 하면 상태 z에 착륙합니다 "라고 말합니다. 시스템의 복잡한 물리학은 이것이 정확하게 모델링하기가 매우 어려우며, 두 번째 라운드 (320) 후에도 결과 상태가 너무 많기 때문에 어려움을 알 수 있습니다. 우리 는 물리 엔진에 확률 이 없다고 가정 합니다. 이 단계에서 포기하고 집에 갈 것이라고 생각합니다.

또 다른 접근 방식은 바로 시작과 시행 착오에서 인간처럼 취급하는 것입니다. 최소한 좋은 행동이 발견 될 때까지 인간은 최소한 무작위로 발사합니다. 이것은 다중 무기 산적 과 비슷합니다환경. 도적의 "무기"는 가능한 행동입니다. 이 알고리즘은 탐색과 악용의 균형을 유지하려고 시도합니다. 즉, 작업 공간을 탐색하고 적절한 작업이 발견되면이를 악용합니다. 이를 위해 기본 역학에 대해 아무것도 알 필요가 없습니다. 행동과 보상 만 알면됩니다. 이를 위해서는 모든 라운드에서 가능한 모든 행동에 대해 팔이 있어야합니다 (예 : 5 마리의 새 * 320 개의 행동 = 320 ^ 5 = 약 10 ^ 12 개의 행동). 따라서 행동 공간이 매우 넓습니다! 그러나 당신이 조금 알고 있다면 당신은 이것을 개선하기 위해 몇 가지 트릭을 사용할 수 있습니다상태 공간에 대해 예를 들어, 새를 돼지에서 떨어 뜨리거나 땅으로 내려가거나, 또는 그들에게 도달 할 수있는 충분한 힘없이 새를 보내는 행동을 배제 할 수 있습니다. 또한 이전 라운드에서 돼지를 죽이지 않은 경우 5 번째 조류에만 도달해야하므로 일부 행동 상태는 실제로 불가능합니다. 이것은 MoMo 알고리즘에 사용 된 접근 방식을 다소 생각 나게합니다.이 알고리즘 은 다중 무기 적기 문제를 해결하기위한 하나의 접근 방식 인 Trees에 적용된 Upper Confidence 경계를 기반으로 Go를 재생하는 컴퓨터 프로그램입니다 .


1
좋은 답변입니다! 액션 공간이 320 개의 가능한 액션보다 훨씬 크다고 생각합니다. 가로 왼쪽에서 세로 아래로 .7 인치 (iPad)의 호로 스윕 된 모든 픽셀은 다른 궤적과 결과를 생성합니다. iPad의 해상도는 132dpi이므로 약 8,000 개의 픽셀을 시작할 수 있습니다. 세부 사항에 대해 설명하고 싶지 않지만 작업 공간을 8,000으로 늘리면 답변이 변경됩니까? 넓은 작업 공간으로 어떻게 작업 할 수 있습니까?
B 세븐

역학 시뮬레이션을 시도하는 것은 완전히 다른 (어려운) 질문입니다. 이 논의를 위해 소스 코드에 액세스 할 수 있고 상태 정보를 정확하게 얻을 수 있다고 가정해야합니다. 또한 보상 기능은 얼마나 많은 돼지를 죽이는가가 아닙니다. 레벨에서 별 3 개를 얻으려면 더 어려운 일을해야합니다. 질문 편집을 참조하십시오.
B 세븐

@BSeven 원칙적으로 더 큰 작업 공간은 더 많은 프 루닝을 수행하고 더 많은 컴퓨팅 성능을 사용해야 할지라도 대답을 변경하지 않습니다. ;-) 그러나 이것은 병렬 처리의 완벽한 후보입니다. 별에 대한 질문은 까다 롭습니다. 죽이기에서 별에 대한 간단한 매핑이 없음을 의미하기 때문에 점 임계점을 건너서 더 많은 별을 얻었습니다 (보통 적은 새를 사용하여 수행됨). 그렇지 않은 경우, 최적이 아닌 경로에 너무 일찍 정착하지 않도록 탐색 량을 인위적으로 늘려야합니다.
tdc

8

멋진 질문입니다!

이 질문은이 유형의 문제에 대한 자연 기술에 관한 것 같습니다. 이러한 유형의 문제에 대한 자연 기술은 강화 학습 (RL) 이라고 생각합니다 . RL은 에이전트가 누적 보상의 개념을 극대화하기 위해 환경에서 조치를 취해야하는 방법에 관한 것입니다. 아마도 가장 잘 알려진 RL 알고리즘은 Q-learning 입니다. 나는 이것이이 사이트에서 강화 학습에 관한 첫 번째 질문이라고 생각합니다.

나는 이것을 분류 / 회귀로 접근하려고하면 당신이 묻는 것이 사실이라고 생각하지만, 그것들은이 문제에 대한 올바른 도구처럼 보이지 않습니다. 이것은 일련의 행동과 결과를 고려해야하는 자연스럽게 RL 문제입니다.


5

다른 사람들이 어떻게 행동하는지 직접 확인하십시오 : Angry Birds AI Challenge http://ai2012.web.cse.unsw.edu.au/abc.html


아마 당신은 링크에 관한 내용과 howvit이 질문에 어떻게 관련되는지 요약 할 수 있습니다. 지금처럼 귀하의 답변은 의견으로 더 좋습니다.
FredrikD

4

메타에서 이것을 언급했습니다. 비디오 게임 팩맨을 해결하기 위해 Koza의 유전자 알고리즘을 개척 적으로 사용했습니다. 그는 감지하고 행동 할 수있는 알고리즘 프리미티브를 구성했다. 나는 이것들이 Lisp와 같은 나무로 결합되어 더 큰 알고리즘을 만들어 낸 것을 기억합니다. Lisp 트리와의 크로스 오버에는 알고리즘 표현식을 나타내는 하위 트리를 대체하거나 교환하는 것이 포함됩니다. 성공 함수는 "점을 먹은 것"또는 "점을 더한 유령을 먹는 것"또는 "생존 한 시간"과 같은 것입니다. 이 분야에는 여전히 몇 가지 작업이 있습니다. 이 논문에는 다음과 같은 코자 참조가있다. 이러한 유형의 문제에 대해서는 훈련 시간이 매우 길고 "수렴"이 매우 점진적 일 수 있습니다.

팩맨을 배우는 법 : Gallagher와 Ryan 의 혁신적인 규칙 기반 접근법

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.