Unreal Engine 4 & 5에서 기계 학습 AI 에이전트 생성

마인드 메이커 소개 : https://www.youtube.com/watch?v=erm_pzhapia
Blueprints 개요 : https://youtu.be/tuo423nujek
불화 그룹 : https://discord.gg/shxfwtmsha
Mindmaker AI 플러그인은 UE4 및 UE5 내에서 게임 및 시뮬레이션이 자율 머신 학습 에이전트를 훈련하기위한 오픈 아이 체육관 환경으로 기능 할 수있는 오픈 소스 플러그인입니다. 이 플러그인은 학습 환경이 포함 된 Unreal Engine 프로젝트와 Unreal Engine의 데이터를 수신하고 에이전트 교육을위한 맞춤형 OpenAI 체육관 환경으로 구문 분석하는 Python ML 라이브러리 간의 네트워크 연결을 용이하게합니다. 독립형 머신 러닝 라이브러리는 마인드 메이커의 원격 ML 서버를 사용하여 고유 한 ML 도구를 작성하는 경우 사용자 정의 파이썬 스크립트가 될 수 있거나 마인드 메이커의 DRL 엔진 (안정적인 베이 슬린 3 알고리즘)과 같은 사전 컴파일 된 학습 엔진 일 수 있습니다. 어떤 옵션을 선택하든 Mindmaker AI 플러그인 개발자와 연구원을 사용하여 2D, 3D 및 VR 프로젝트를 위해 기계 학습 에이전트를 쉽게 훈련시킬 수 있습니다.
가능한 응용 프로그램은 게임 디자인을 넘어 다양한 과학 및 기술적 노력으로 확장됩니다. 여기에는 로봇 시뮬레이션, 자율 주행, 생성 아키텍처, 절차 그래픽 등이 포함됩니다. 이 API는 기계 학습의 발전이 이러한 많은 분야에 도달 할 수있는 중앙 플랫폼을 제공합니다. 게임 개발자의 경우 자체 최적화 에이전트의 사용 사례에는 NPC 동작 제어 (다중 에이전트 및 적대와 같은 다양한 설정), 프로토 타이핑 게임 디자인 결정 및 자동화 된 게임 빌드 테스트가 포함됩니다.
DRL 학습 엔진은 예제 프로젝트 링크와 컨텐츠 Mindmaker 소스 디렉토리에있는 Python 소스 코드에 포함됩니다. DRL 학습 엔진이 현재 지원하는 알고리즘에는 다음이 포함됩니다. 배우 비평가 (A2C), ACER (Experience Replay), Kronecker-Factored Trust Region (ACKTR), Deep Q Network (DQN), 근위 정책 최적화 (PPO), 소프트 정책 최적 (SAC), TRP PRPO (TRP), TRP PRPO ), 깊은 결정 론적 정책 구배 (DDPG). 플러그인은 모든 애플리케이션에 대해 맞춤형 OpenAI 체육관 환경을 만들 필요가있는 대신 Unity의 ML 에이전트와 기능적으로 유사합니다. 단일 환경을 사용하고 단순히 ML 알고리즘에 노출되는 에이전트의 관찰 및 조치를 선택합니다. Voila, 학습을 시작하게하십시오!
Mindmaker 플러그인과 함께 작업하는 동안 사용할 기본 구성 요소, 학습 환경이 포함 된 Unreal Enginge 프로젝트 및 학습하려는 모든 것을 최적화하기 위해 에이전트가 사용하는 독립형 머신 러닝 라이브러리가 있습니다. 독립형 머신 러닝 라이브러리는 마인드 메이커의 원격 ML 서버를 사용하여 고유 한 ML 도구를 작성하는 경우 사용자 정의 파이썬 스크립트가 될 수 있거나 마인드 메이커 DRL 엔진 (안정적인 기준선 알고리즘)과 같은 사전 컴파일 된 학습 엔진 일 수 있습니다.
마인드 메이커와 함께 다른 ML 라이브러리를 사용하려면 마인드 메이커 원격 ML 서버를 사용하십시오. 이를 통해 사전 컴파일 된 마인드 메이커 DRL 엔진을 사용하지 않고 자신의 파이썬 학습 엔진을 사용자 정의 할 수 있습니다. 원격 ML 서버를 사용하려면 다음 단계를 따르십시오.
예를 들어 멀티 에이전트 시나리오에서 단일 학습 환경에 연결된 여러 ML 클라이언트를 사용하려면 마인드 메이커 서버 및 플러그인을 사용하여 수행 할 수 있습니다.
여러 학습 에이전트를 만들려면 먼저 예제 청사진 중 하나에 표시된대로 학습 에이전트를 설정하십시오. 각각의 새로운 학습 에이전트마다 새로운 AI 컨트롤러의 Socketio 포트 설정을 1까지 증가시켜야합니다. 서버를 시작할 때, 서버를 시작할 때, 새로운 서버 포트 번호는 각각의 새로운 Mindmaker.exe에 대해 3000 이상으로 시작하여 100 개 이상의 학습 에이전트가 필요하면 Github Repo에 이것을 요청하십시오.
예를 들어, 맵에 두 번째 학습 에이전트를 추가하면 첫 번째 학습 에이전트와 동일한 기능이 필요합니다. 출시 마인드 메이커 청사진 노드 등이 필요하지만 포트 3000 에이 제품을 할당하는 대신 포트 3001을 청사진으로 할당합니다. 청사진에서 Socketio 포트 설정을 변경하는 것 외에도 Connect Socketio Blueprint 함수를 변경하려면 변경 사항 및 포트를 "http : // localhost : 3001"을 만든 새 번호로 수정해야합니다.
이 작업이 완료되면 두 번째 학습 에이전트에 연결할 Mindmaker_Client.py 파일의 두 번째 인스턴스 만 만들면됩니다. 훈련은 동시에 동시에 수행 할 수 있습니다. 마인드 메이커 _client.py를 만들어야 할 유일한 수정은 sio.connect ( 'http : // localhost : 3000')를 sio.connect ( 'http : // localhost : 3001')로 변경하는 것입니다. 5 명의 학습 에이전트가있는 경우, 클라이언트가 5 개의 인스턴스를 실행하고 각각은 3005 년까지 새로운 포트 번호가 있습니다.
안정된 바이즈 라인을 사용한 모방 학습 3 마인드 메이커 파이썬 소스는 지원되는 안정적인 바이즈 라인 모방 학습 알고리즘을 사용하여 모방 학습을 지원하도록 수정할 수 있습니다.
훈련 된 모델을 저장하려면 Launch Mindmaker 함수의 "Save Model Af 교육 에피소드 수가 0이 아닌지 확인해야합니다. 교육이 완료된 후 모델이 저장됩니다. 훈련 된 모델을로드하려면“훈련 후 모델 저장”확인란을 선택 취소하고 대신 런칭 마인드 메이커 기능에 "Load Pre Trained Model"Checkbox를 True로 설정하십시오. 훈련이 발생하지 않기 때문에 훈련 에피소드 수를 0으로 설정해야합니다. 평가 수 에피소드가 0이 아닌 정수인지 확인하십시오. 이는 미리 훈련 된 모델이 학습을 보여주는 방식이기 때문입니다. 모델은 컴퓨터의 "AppData Roaming"폴더 (예 : C : Users Leon AppData Roaming)에 로컬로 저장됩니다.
기본적으로 마인드 메이커는 Windows 시스템의 AppData/Roaming 디렉토리에만 저장됩니다. Tensorboard 로깅을 활성화하려면 다음 단계를 따르십시오.
이는 3 단계 프로세스이며, 대리인이 취할 수있는 조치, 보상 기준이 무엇인지, 그리고 보상을받는 법을 성공적으로 배우기 위해 에이전트가 환경에 대해 어떤 관찰을 해야하는지 결정해야합니다.
Mindmaker -------> 행동 받기 --------> OBS-OBS -----> 보상 확인 --------> Mindmaker에게 OB와 RWRD를 보내기 ------ 행동을 받기 위해 돌아갑니다.
학습 과정에서 Mindmaker Learning Engine은 먼저 에이전트가 사용하는 관찰 공간과 에이전트가 이용할 수있는 총 작업 수로 구성되어야합니다. 초기화 될 때 보상 정보를 제공 할 필요가 없습니다. 이는 교육 중에 만 발생합니다.
학습의 전반적인 과정은 일단 실행되지 않은 엔진에 연결되어 연결된 일단 연결된 Mindmaker Learning Engine은 Unreal Engine 에이전트가 취할 수있는 임의의 행동을 제공하기 시작하며, 이에 대한 응답으로 ASS를 수행 한 후에 수행 한 관찰 목록을 다시 보냈습니다. 위의 다이어그램을 참조하십시오. 많은 에피소드에서, 마인드 메이커가 사용하는 알고리즘은 UE로부터받은 관찰 및 보상에 대응하여 에이전트 행동을 최적화합니다. 이 프로세스는 마인드 메이커와 함께 사용하기로 선택한 기계 학습 알고리즘에 관계없이 동일합니다. 이 정보를 사용하면 사용 된 학습 알고리즘은 마인드 메이커가 에이전트 행동 결정을 최적화하기 시작하여 보상을 지속적으로받는 데 필요한 순서를 이상적으로 발견합니다. 임의의 행동과 의도적 행동 사이의 상충 관계는 마인드 메이커 (예 : 안정적인 기준선)와 함께 사용하기 위해 선택한 ML 라이브러리의 탐색/악용 매개 변수에서 제어됩니다. 이 과정은 각 훈련 에피소드에 대해 반복됩니다. 고정 된 수의 교육 에피소드 후에는 알고리즘을 사용하여 임의의 작업을 수행하는 대신 "최고의"작업을 예측할 수 있습니다.
마인드 메이커는 OpenAI 체육관과 함께 작동하도록 설계된 모든 ML 라이브러리가 비현실적인 엔진 환경에 배치 될 수 있도록 OpenAI 체육관 호환 형식으로 비현실적인 환경을 감싸서 기능합니다. Open AI 체육관을 사용하는 목적은 학습과 관련된 관련 요소, 즉 에이전트 관찰, 보상 및 행동을 수신하기위한 형식을 표준화하여 모든 ML AlgorityHM이 각 특정 작업에 대해 개조 할 필요없이 학습을 위해 관련 변수에 액세스 할 수 있도록하는 것입니다. OpenAi 체육관과 함께 작동하는 알고리즘은 표준화 된 OpenAI 프로토콜을 사용하는 모든 환경 및 에이전트와 함께 작업 할 수 있습니다.
마인드 메이커 학습 엔진 구성 처음에 학습 에이전트를 위해 Unreal Engine 내에서 런칭 마인드 메이커 기능을 구성해야합니다. 이는 Mindmaker 내의 Action_Space 변수를 설정하여 에이전트가 사용할 수있는 총 작업 수와 동일합니다. 또한 수신하려는 보상과 관련하여 에이전트가 사용할 관찰 수와 유형과 일치하도록 Observation_Space 변수를 구성해야합니다. 기본적으로 관찰은 배열로서 Unreal에서 전달됩니다. 예제 프로젝트를 참조하십시오. 에이전트가 사용하는 데 필요한 관찰 수에 따라 Observation_Space의 크기는 변경됩니다.
보상 - 보상은 대리인이 주변을 배우거나 최적화하기 위해 선택한 특정 기준에 따라 설정된 변수입니다. UE4 청사진에서 보상을 활성화하려면 분기 노드를 사용하여 환경 조건 및 에이전트 조치를 수행해야합니다. 이것은 Socketio 연결에 의해 마인드 메이커에게 전달되는 것 이상입니다. 프로젝트 예제를 참조하십시오. 조치 - 이것은 에이전트가 취한 행동을 나타내는 정수 값을 포함하는 변수입니다. 또한 에이전트가 이용할 수있는 총 조치 수를 결정하고 마인드 메이커의 최대치를이 숫자와 동일하게 설정해야합니다. 관찰 - 당신이 다루는 가장 까다로운 변수를 perpse. 이를 올바르게 설정하는 핵심은 에이전트 행동 자체가 보상 기능에 참조 된 다른 환경 기준 외에도 관측 변수에 포함되어야한다는 것을 이해하는 것입니다. 에이전트는 보상에 영향을 미치는 행동이나 행동과 변경된 환경 변수에도 영향을 미쳤습니다. 이들은 배열로 마인드 메이커 학습 엔진에 전달되며 그 안에있는 관측 변수에서 업데이트됩니다.
여기서 우리는 Mindmaker Blueprints 함수의 주요 구성 요소 인 Launchmindmaker Blueprint 노드의 개별 매개 변수에 대해 논의 할 것입니다.
RL 알고리즘 - 이곳에서 에이전트를 훈련시키고 자하는 RL 알고리즘의 향료를 선택할 수 있습니다. 드롭 다운 메뉴에는 10 가지 옵션이 있으며 각 알고리즘에는 자체 장단점이 있습니다. 관련 알고리즘의 사용 가능한 것에 대한 자세한 설명과 사용 사례는 여기에서 찾을 수 있습니다. https://spinningup.openai.com/en/latest/spinningup/rl_intro2.html
Num Train EP - 이것은 대리인이 수행하기를 원하는 훈련 에피소드의 수를 나타내는 정수 입력입니다. 훈련 에피소드 수가 클수록 훈련 중에 얻는 전략적 행동으로 전환하기 전에 에이전트가 더 많이 탐색합니다. 에이전트가 배우려고하는 행동의 복잡성은 일반적으로 필요한 훈련 에피소드의 수를 결정합니다.보다 복잡한 전략과 행동에는 더 많은 훈련 에피소드가 필요합니다.
Num Eval EP - 이것은 또한 정수 입력이며, 훈련 후 에이전트가 겪는 평가 에피소드의 수를 나타냅니다. 이것들은 에피소드가 학습 된 행동을 보여주는 에피소드입니다.
연속 조치 공간 - 에이전트가 연속 동작 공간을 사용하고 있는지 여부를 결정하는 부울 입력입니다. 연속 액션 공간은 예를 들어 자동차를 조종하는 법을 배우는 경우 에이전트가 취할 수있는 무한한 수의 동작이있는 공간이며, 스티어링 칼럼이 변경 될 수있는 각도 범위는 0과 180 사이의 소수 값입니다. 에이전트가 무한한 수의 동작이나 유한 숫자 조치가있는 경우 사용의 초기에 식별하고 싶을 것입니다. 동작 공간은 연속적이거나 이산적이어야합니다. 둘 다 될 수 없습니다.
불연속 조치 공간 - 에이전트가 개별 조치 공간을 사용하고 있는지 여부를 결정하는 부울 입력입니다. 불연속 조치 공간은 AI가 오른쪽 공간 만 움직이거나 한 공간을 떠날 수있는 경우와 같이 에이전트가 취할 수있는 유한 한 수의 동작이있는 공간입니다. 이 경우에는 두 가지 작업 만 사용 가능하며 액션 공간은 개별적입니다. 사용자는 마인드 메이커를 사용하기 전에 에이전트가 사용할 액션 공간을 결정하고 그 값을 그에 따라 설정합니다.
액션 공간 모양 - 이는 에이전트가 이용할 수있는 동작의 하한 및 상한을 정의합니다. 이산 액션 공간을 사용하는 경우, 이는 단순히 에이전트가 이용할 수있는 총 작업 수 (예 : 2 또는 8)입니다. 연속 액션 공간을 사용하는 경우 사물이 더 복잡하고 액션 공간의 낮고 높은 경계를 별도로 정의해야합니다. 이를위한 형식은 다음과 같습니다. Low = Lowboundary, High = Highboundary, Shape = (1,)이 경우 Lowboundary는 -100.4와 같은 값이며 Highboundary는 298.46과 같은 값입니다. 이 경계 사이의 모든 소수점 값은 에이전트가 이용할 수있는 동작을 나타냅니다. 그러한 동작의 배열이 있다면이를 반영하기 위해 모양 부분을 변경할 수 있습니다.
관찰 공간 모양 - 올바르게 말하면이 입력은 Open AI Custom Environment 클래스의 파이썬 파생물이며 에이전트가 사용 가능한 관측치의 하한 및 상한 경계를 조치를 취한 후에 정의합니다. 그렇게하기위한 형식은 다음과 같습니다. low = np.array ([Lowboundary]), high = np.array ([Highboundary]), dtype = np.float32. 보상을 받기 위해 세 가지 특정 조치를 연속으로 취해야하는 에이전트를 상상해 보면 관찰 공간에는이 세 가지 조치에 대한 액세스가 포함되어야하며, 이는 각각 고유 한 관찰로 표시됩니다. 따라서 관측의 배열에는 세 가지 값이 포함되어야하며 각 값은 고유 한 경계를 가진 값을 포함해야합니다. 예를 들어, 이러한 동작 공간은 다음과 같이 정의 될 수 있습니다 : low = np.array ([0,0,0]), high = np.array ([100,100,100]), dtype = np.float32 인 경우, 에이전트가 0과 100 사이에 값을 관찰 해야하는 각자의 행동이 값이되는 경우, 보상을받는 경우, IE의 보상에 대한 보상이라면, 그들의 행동이 값이라면, 그들의 행동이 값이라면, 그들의 행동이 값이라면, 그들의 행동은 단지 그들의 행동이라면, 그들의 행동은 단지 그들의 행동은 관찰 공간에는 해당 값에 대한 참조가 포함되어야합니다. 에이전트가 보상을 받기 위해 5 개의 조건을 충족 해야하는 경우,이 5 가지 조건 각각은 에이전트 관측 공간의 일부 여야합니다.
로드 프리 훈련 된 모델 -이 값은 에이전트가 이전에 저장된 사전 훈련 된 행동을로드 할 것인지 결정하는 부울 값입니다. 이것을 true로 설정하면 저장 /로드 모델 이름 입력 상자에 파일 이름을 지정하려고합니다. 모든 모델은 기본적으로 컴퓨터의 앱 데이터 로밍 디렉토리에 저장됩니다.
교육 후 모델 저장 - 훈련 후 배운 행동을 저장하기 위해 에이전트에게 원하는지 결정하는 부울 가치입니다. 이것을 true로 설정하면 저장/로드 모델 이름 입력 상자에 파일 이름을 지정하려고합니다. 모든 모델은 기본적으로 컴퓨터의 앱 데이터 로밍 디렉토리에 저장됩니다.
저장/로드 모델 이름 - 저장하거나로드하려는 모델의 이름을 나타내는 문자열입니다. 파일은 컴퓨터의 앱 데이터 로밍 디렉토리에 저장됩니다.
Custom Params 사용 - 선택한 알고리즘의 스톡 버전을 사용하거나 매개 변수를 수정하려는 부울 값입니다. 사용자 정의 매개 변수를 사용하려면 사용자 정의 매개 변수 구조 변수를 통해 액세스 할 수 있습니다. 예를 들어 A2CPARAMS와 같은 클릭하면 이러한 구조 내에서 설정할 수있는 모든 값이 표시됩니다. 각 알고리즘에 대한 매개 변수의 자세한 분석은 여기에서 찾을 수 있습니다 : https://stable-baselines.readthedocs.io/en/master/
예제 프로젝트의 기능 목록은 아래에 제시되어 있으며, 장난감 문제와 관련된 모든 UE 자산이 자산/DeePlearningNPC 폴더에 포함되어 있습니다. AI_CHARACTER_CONTROLER_BP BLUEPRINT의 AI_CHARACTER_CONTRO_BP라는 청사진이 특히 중요하며 모든 환경 변수는 마인드 메이커 독립형 응용 프로그램으로 전달하도록 구성됩니다. 여기에는 다음과 같은 필수 기능이 포함됩니다
로드 감각 입력 기능 - 환경 제어 기능의 감지 또는 조작에 AI가 액세스 할 수있는 객체를 가져옵니다.이 기능은 이러한 스위칭 조명을 켜고 끄는 환경의 일부에 대한 논리를 제어합니다.
동작 공간 기능 정의 - RL 알고리즘에 의한 평가를 위해 독립형 응용 프로그램으로 전달할 수있는 모든 가능한 에이전트 조치를 단일 숫자 값으로 인코딩합니다.
Launchmindmaker 기능 - 이는 UE 환경에서 평가 데이터를 시작할 수 있도록 플레이를 시작할 때 독립형 응용 프로그램을 호출합니다. 이 시작된 후, RL 응용 프로그램은 어둠 속에서 빛을 찾기 위해 검색하는 맹인과 같이 임의의 행동으로 환경을 조사하기 시작합니다. 조명은 보상이며 UE 함수 확인 보상 기능에 지정됩니다. LaunchLearningEngine은 또한 일부 기본 UE 환경 정보를 독립형 애플리케이션으로 전달합니다. 대리인이 취할 수있는 조치 수, 훈련 할 총 에피소드 수 및 교육 후 전략을 획득 한 에피소드를 표시하는 에피소드의 수와 같이. 모든 에이전트 임의의 훈련을 표시하는 데 너무 오래 걸립니다.
채권 기능 - 발사 학습 엔진 기능이 시작된 후 다음 화재 기능은 RecievEction입니다. 이것은 독립형 응용 프로그램에서 선택한 조치를 받고 환경의 에이전트 위치를 업데이트하고, 새로운 행동이 보상 조건을 충족하는지 확인하고, 교육과 함께 진행되는 경우 에이전트 관찰을 업데이트하여 다음 에피소드에서 독립형 애플리케이션으로 다시 전달할 수 있도록 해당 환경에 대한 에이전트 관찰을 업데이트하는 등 여러 가지 후속 절차를 수행합니다.
관찰 기능 - 이것의 목적은 방금 취한 조치에 따라 환경에 대한 에이전트 관측치를 업데이트하는 것입니다. 예를 들어, 환경이있는 에이전트 위치와 마지막으로 조치를 취한 이후 변경된 기타 환경 데이터가 포함됩니다. 이들은 사용자 정의 구조 변수에 저장됩니다.
CheckReward - 이것은 환경의 에이전트에 대한 보상 조건을 지정합니다. 이 보상 조건이 에이전트가 조치를 취한 후 충족되면이 정보는 다음과 같은 Send 관측 기능의 독립형 응용 프로그램으로 전달됩니다. 관찰 기능 보내기 - 에이전트가 작성한 새로운 관찰과 보상 정보를 가져 와서 독립형 응용 프로그램으로 전달합니다. 이것이 바로 RL 알고리즘이 방금 취한 조치가 좋은지 여부를 평가하고 그에 따라 전략을 업데이트 할 수있는 방법입니다. 이 기능이 발사되면 게임의 하나의 반복 또는 에피소드가 완료되고 프로세스는 ad infinitum을 반복합니다.
특정 작업에는 에이전트 운동을 시각화하는 데 엄청나게 시간이 많이 걸리는 장기간의 교육이 필요할 수 있습니다. 따라서 특정 예에서는 에이전트의 움직임을 시각화하는 것이 비활성화되었지만 예제가 실행되면 배경에서 훈련이 발생하고 있으며, 이에 따라 에이전트는 획득 한 전략을 시연합니다.
이 경우 무작위는 에이전트가 임의의 숫자 생성기를 사용하여 훈련 중에 사용할 수있는 동작 중에서 선택한다는 것을 의미합니다. 그런 다음 RL 알고리즘은 이러한 임의의 동작의 결과와 수신 된 보상의 결과를 관찰 하고이 정보를 사용하여 "익스플로잇"단계에서 더 나은 동작을 선택합니다. 이것이 배운 전략이 개발되는 방법입니다.
학습 중 정보 수집은 각 에이전트의 임의의 행동 후에 생성되는 다양한 관측치의 형태를 취합니다. 마인드 메이커 플러그인을 사용하는 경우, 배열의 정확한 모양은 Launch Mindmaker Blueprint 기능의 관측 크기 속성에 정의되며 에이전트가 특정 게임 또는 학습 작업에서 관찰 해야하는 변수에 따라 다릅니다. 학습 과제 나 게임에 따라 변경됩니다.
에이전트는 게임 디자이너에 의해 노출 된 환경의 일부만 인식합니다. Mindmaker 플러그인을 사용할 때 이러한 관찰은 Make Observations Blueprint 함수 호출에 모여 있습니다. 이렇게하면 런치 마인드 메이커 블루 프린트 함수의 관측 크기 속성에 의해 정의 된 모양의 숫자가 생성됩니다. 에이전트가 배우는 데 필요한 데이터 만 구성되도록 관찰을 선택해야합니다. 그렇지 않으면 교육이 엄청나게 시간이 많이 걸릴 수 있습니다.
바닐라 Q 학습에서 - 신경망이 필요하지 않으며 학습은 표 형식으로 저장됩니다. Mindmaker Deep Inforcement Learning을 사용할 때 RNN, CNN 등을 포함한 다양한 신경망 아키텍처 중에서 선택할 수 있습니다. 각 알고리즘의 각 알고리즘의 BluePrint 기능 호출에 대한 사용자 정의 속성 내에이를 설정할 수 있습니다.
맞춤형 깊은 강화 학습 환경 만들기
소개. 비디오 게임 AI에 대한 강화 학습
강화 학습 - 그것은 약속과 위험입니다
안정적인 기준 문서 문서