728x90

AI | ML/Reinforcement Learning 13

[RL] 테트리스 강화학습 시도 내용

예전에 다양한 시도를 해보면서 겪었던 걸 적었던 글이였는데 오랜만에 발견해서 적어본다. 강화학습을 공부하면서 어디에 적용하면 재밌을까 생각해보다가 테트리스에 적용해보기로 했다. 처음에는 아는 게 DQN밖에 없어서 DQN으로 시도해봤는데, 학습이 전혀 되지 않았다. 나중에 검색해보니, 테트리스가 의외로 search space가 큰 환경이라 단순화해서 접근해보는 것부터 시도해보자고 생각해,블록을 네모로만 한정시켜 보상을 쉽게 줄 수 있도록 적용해봤는데 결과가 아래 그림처럼 좋지 않았다. 왜 그런지 생각해보다가 보상이 제대로 되지 못했거나, 모델이 맵을 읽지 못한다는 생각이 들어 각각 시도해 보았다. 아래와 같이 보상 체계를 한번 변경해봤다. 라인을 지우는 경우 보상 2배로 강화 보상 체계 변경 score →..

[RL] DQN(Deep Q-Network) 논문 리뷰

제목 + 링크: Playing Atari with Deep Reinforcement Learning ‌ 1. Introduction ‌ 기존 RL은 hand-craft 기반으로 진행해왔는데, 성능이 feature quality에 의존적 주변 분야(CV, NLP)에서 딥러닝을 이용해 많은 발전이 있어 RL에도 이점이 있을 것 같다고 생각 RL 환경에서 CNN을 기반으로 atari 게임 raw video input을 학습해 control이 가능한지 시도 ‌ 2. Background ‌ 강화학습에서 agent는 상태에 따라 행동을 정해야 하는데, 현재 상태는 이전 상태와 연관되어 있다. 이는 MDP(Markov Decision Process)를 떠오르게 하고, 따라서 논문에서는 MDP의 방법을 RL에서도 적용..

[RL] Beginner Guide

Background Knowledge 강화학습이란, 제한된 환경 안에서 설정된 에이전트가 현재의 상태를 인식하고, 선택 가능한 행동들 중 보상을 최대화하는 행동 또는 행동 순서를 선택하는 방법을 말한다. 여기서 강화(Reinforcement)란 심리학에서 생물이 어떤 자극에 의해 미래의 행동을 바꾸는 것을 말한다. Environment : 관측이 가능하고, 통제할 수 있는 닫힌 공간 Interpreter : 환경에서 Agent으로 가기 전, 확인하는 버퍼 단계로 보아도 무방하다 (프로그래머) Agent : 환경 내에서 제어되는 객체 State : 환경 내에서 관측되는 Agent의 상태, Observation이라고 표현되기도 한다 Action : Agent가 행동한 결과 Policy : Agent가 취할 ..

[ML-Agent] Unity 게임을 gym.Env 환경으로 변경

유니티로 만든 게임을 파이썬으로 직접 강화학습을 돌려보고 싶어 이것저것 알아보다 못찾아서 직접 코드를 짜야하나 고민하던 중, 다행히도 ML-Agent에서 gym.Env 환경으로 변형해줄 수 있는 내용을 발견하였다. 사용법은 생각보다 간단하다. gym_unity 설치 pip install gym_unity gym_unity로 유니티 게임을 gym.Env 환경으로 감싸기 from mlagents_envs.environment import UnityEnvironment from gym_unity.envs import UnityToGymWrapper unity_env = UnityEnvironment("path") env = UnityToGymWrapper(unity_env) 이후에는 개인적으로 stable-b..

pyMARL 구조 분석 + COMA 코드 분석

최근 멀티에이전트 강화학습(MARL) 분야를 공부하면서 COMA 논문을 읽어보았다. MARL을 이용해보고 싶어 라이브러리와 모델을 검색해봤더니 pyMARL이라는 라이브러리가 나왔다. MARL 분야에서는 다양한 환경이 있지만 스타크래프트2를 이용해 멀티에이전트를 학습시키기도 한다. 멀티에이전트 분야에서는 코드를 어떻게 구성해 에이전트들을 컨트롤하는지 분석해보고 싶어 알아보았다. 내가 알아본 깃허브는 https://github.com/oxwhirl/pymarl 으로 SC2를 기반으로 다양한 멀티에이전트 모델을 실험해볼 수 있는 환경을 제공해주었다. PyMARL 구조 분석 그럼 구조가 어떻게 되어있는지 분석해보자 깃허브에서는 src/main.py에 다양한 config를 주어 실험이 가능하도록 만들었으니, ma..

[Unity] ML-Agents 설치 및 테스트해보기

Unity 환경에서 강화학습을 시도해보고자 ML-Agents 설치 및 테스트를 진행해봤다. 이 때, 기본적으로 Unity와 Python이 설치되었다는 전제로 진행한다. Unity 환경은 20.3.15 LTS 버전으로 진행하였고, Python은 Anaconda 기반 3.8버전으로 진행하였다. 1. 유니티 ml-agents 홈페이지에 들어간다 https://github.com/Unity-Technologies/ml-agents GitHub - Unity-Technologies/ml-agents: Unity Machine Learning Agents Toolkit Unity Machine Learning Agents Toolkit. Contribute to Unity-Technologies/ml-agents ..

[RL] Stable-baselines3 모델 커스터마이징

stable-baselines3에서는 PPO, A2C, DDPG 등의 강화학습 모델들이 기본적으로 주어진다. 강화학습모델 안에서 내부 모델을 cnn으로 짤지 MLPpolicy를 쓸지 다양한 선택지가 주어지는데 보통은 mlp를 많이 쓰기도 하지만 cnn으로 진행하는 경우도 있다. 기본 제공 Network Stable-baselines3에서는 기본적으로 CnnPolicy, MlpPolicy, MultiInputPolicy를 제공하는데 Multi Input은 안써봐서 생략하겠다. CNN CNN에서는 convolution 시, kernel_size, stride, padding 등의 파라미터 설정값과 네트워크의 레이어에 따라 추출된 특징이 언제든 변할 수 있다. 아래는 stable-baselines3에서 기본적..

[RL] stable-baselines3 학습 커스터마이징해보기

stable-baselines3 라이브러리를 이용해 학습해보다가 학습 시간을 크게 설정했을 때 저장 주기를 내맘대로 설정하지 못해서 알아보다가 글을 쓴다. stable-baselines3에서는 학습 중 확인이나, 커스텀을 진행할 때 Callback 메소드를 가져오면 중간과정을 확인할 수 있다. 학습 중 테스트 진행 학습 중에 테스트를 진행하려면 EvalCallback 메소드를 사용하면 되는데, 함수의 전반적인 설명은 이미지를 참고하면 된다. 이 중에 내가 주로 썼던 것은 아래와 같다. n_eval_episode : 테스트를 진행할 episode 개수 eval_freq : 테스트를 진행하는 간격 log_path : 테스트 결과를 저장할 경로 render : 가시화할지 여부 verbose : 0이면 프린트 ..

[RL] Windows 환경에서 Ray 설치 및 실행하기

일단 전제로 알아두어야 할 것이 Windows 환경에서는 지원이 완벽하지 않다고 한다. 1. 기본적인 설치 명령어를 입력한다. pip install -U ray 2. 아래 링크로 들어가 C++ runtime 파일을 설치하고 재실행한다. 2번을 제대로 실행하지 않을 경우, ray.init() 이라는 명령어를 실행했을 때 30초 이내에 응답이 없다는 에러가 발생한다. (The current node has not been updated within 30 seconds. error) https://docs.ray.io/en/master/installation.html#windows-support Installing Ray — Ray v2.0.0.dev0 .rst .pdf to have style consist..

[RL] stable-baselines3 모델 학습, 불러오기

아래의 코드는 기존의 gym library를 이용한 경우지만, custom Env의 경우는 이전 글을 참조하면 된다. https://tw0226.tistory.com/80 import gym from stable_baselines3 import DQN from stable_baselines3.common.evaluation import evaluate_policy # Create environment env = gym.make('LunarLander-v2') # Instantiate the agent model = DQN('MlpPolicy', env, verbose=1) # Train the agent model.learn(total_timesteps=int(2e5)) # Save the agent m..

728x90