분류 전체보기 44

모두를 위한 RL강좌 정리하기(Lecture 1 ~ Lab 2)

강화학습을 혼자서 책만 보고 공부하는 것은 힘들다. 다양한 매체들을 이용해 공부를 시작해보자. 첫번째로 홍콩과기대 김성훈 교수님의 모두를 위한 RL 강좌를 보고 내용을 정리하며 공부. 강의 유튜브: https://www.youtube.com/user/hunkims/featured Lecture 1: 강화학습 소개 Reinforce라는 개념은 머신러닝뿐만 아니라 여러분야에서도 사용된다. 예를 들어 개를 훈련킬 때 Positive Reinforcement를 사용할 수 있는데, 개가 잘하면 거기에 맞는 reward를 주는 방식으로 개를 훈련시킬 수 있다. 사실 reinforce라는 아이디어는 우리가 그동안 학습해오던 모든 것들과 비슷하다. 우리는 환경과의 상호작용을 통해 칭찬을 받는다던지 그 밖의 부정적인 것..

Reinforcement Learning 책 읽고 공부하기(4)

sutton 교수의 Reinforcement Learning An Introduction을 읽고 공부하기 Dynamic Programming Dynamic programming(DP)는 MDP로 환경의 완벽한 모델이 주어졌을 때 optimal policy를 계산하기 위한 알고리즘들의 collection이다. 전통적인 DP 알고리즘들은 완벽한 모델의 대한 가정과 엄청난 계산량 때문에 강화학습에서의 활용성은 제한되었다. 하지만 이론적으로는 여전히 중요하다. DP는 이 책에 나머지 부분에 설명되는 방법들을 이해하기 위한 필수적인 기초를 제공해준다. 사실 이러한 모든 방법들은 계산을 덜하고 환경에 대한 완벽한 정보없이, DP와 동일한 효과를 달성하기 위한 시도들이라고 볼 수도 있다. 우리는 보통 환경을 fini..

유한 state의 Markov Decision Process(Chapter 3)

sutton 교수의 Reinforcement Learning An Introduction을 읽고 공부하기 chapter 3 요약하기 이번 챕터에서는 finite Markov Decision Process의 문제를 소개한다. MDP는 연속적인 decision making을 공식화한 것으로 연속적인 decision making이란 에이전트가 지금 선택한 action이 즉각적인 reward뿐만 아니라 그 후의 상황, state, 미래의 reward에까지 영향을 미치는 것을 의미한다. MDP는 강화학습문제에서 수학적으로 이상적인 형태로 핵심적인 요소들로는 return, value function, Bellman equation같은 것들이 있다. 우리는 finite MDP로 공식화할 수 있는 예제들을 볼 것이다...

Multi-armed Bandit(Chapter 2)

sutton 교수의 Reinforcement Learning An Introduction을 읽고 공부하기 chapter 2 살펴보기 강화학습 내용 잠깐 강화학습이 기존의 학습방식들과 다른점은 올바른 action을 학습하는 것이 아니라 에이전트가 선택한 action이 얼마나 좋은 action인지 평가한 것을 학습에 사용하는 것이다. 지도학습처럼 어떤 action이 가장 좋은 action인지 알고 시작하는 것이 아니기 때문에 좋은 action을 찾기 위해서는 적극적인 exploration이 필요하다. 여기서 에이전트가 선택한 action에 대해서 피드백을 해주는 두가지 방식이 존재한다. Evaluative feedback Evaluative feedback에서는 에이전트가 선택한 action들에 의존적인 피..

강화학습이란 무엇인가(Chapter 1)

sutton 교수의 Reinforcement Learning An Introduction을 읽고 공부하기 Chapter 1 요약(?) 강화학습이란? 강화학습은 에이전트가 받는 보상을 최대화하면서 학습하는 방법으로 에이전트는 어떤 action을 해야하는지가 아니라 어떤 action을 해야 가장 많은 보상을 받을 수 있는지를 학습한다. 그리고 에이전트가 선택하는 action은 바로 눈앞의 reward뿐만 아니라 한참 나중에 받을 reward에도 영향을 미친다. 이런 두가지 특성 trial and error search(보상을 많이 주는 action 탐색)와 delayed reward(즉각적인 보상뿐만 아니라 나중에 받을 보상)는 강화학습의 중요한 특징이다. 강화학습은 지도학습, 비지도학습과는 다른 머신러닝의..

OpenAI gym Atari환경 검은 스크린 문제 해결하기

윈도10에서는 OpenAI gym을 사용하는데 여러가지 에로사항이 따르는 듯하다. 이번에 에러도 그 중 하나인데 다른 환경은 정상적으로 렌더링이 되는데 아타리환경의 경우는 렌더링이 안되고 다음과 같이 블랙&화이트와 노이즈가 낀 화면이 나옴. 사진은 나랑 동일한 증상이 있는 사람의 사진을 가져왔다. 막 이 따위로 나오는데 문제는 모든 아타리 환경에서 이런다는것... 이번에도 OpenAI gym의 문제를 해결해보자. 다음의 깃허브 링크를 참고해 오류해결 https://github.com/openai/gym/issues/596 rendering breaks after installing universe · Issue #596 · openai/gym Hi, I was working with Breakout-v0..

OpenAI gym을 이용해 Deep SARSA 구현하기

이번에는 신경망을 사용할건데 새로운 gym 환경인 OpenAI gym의 CartPole-v1을 사용함. 그리고 tensorflow를 설치해서 사용. Deep SARSA의 경우 원래 구현했던 SARSA 알고리즘에서 state가 실제로 받을 값과 예측한 값을 신경망의 정답과 예측값으로 주어 학습시키는 방법임. 일단 카트폴 예제가 무엇인지 한번 보자. 바로 이런 카트와 폴이 있을 때 카트를 좌 우로 움직여 폴이 떨어지지 않게 하는게 카트폴 문제의 핵심이라고 할 수 있음. Observation 0 : 카트의 위치 1 : 카트의 속도 2 : 폴의 각도 3 : 폴의 각속도 상태는 위와 같이 4개가 있고 각 상태마다 제한된 min max값이 있음. 여기서 확인 Action 0 : 카트를 왼쪽으로 밀기 1 : 카트를 ..

OpenAI gym을 이용해 Q-Learning 구현해보기

큐러닝의 경우 살사와 너무 유사해서 이번에는 다른 예제를 가지고 큐러닝을 해보자. 이번의 예제는 OpenAI gym의 Taxi-v1. 일단 Taxi-v1의 깃허브 코드를 보며 state와 action 등에 대해서 파악. Description 에피소드가 시작하면 택시는 랜덤한 위치에서 시작하고 승객은 랜덤한 location(위치, R,G,B,Y)에서 시작한다. 택시 드라이버는 승객의 위치로 가서 승객을 태우고 승객의 목적지로 간다. 여기서 목적지는 승객이 출발하는 위치를 제외한 나머지 위치 중 하나이다. 승객이 목적지에서 내리면 에피소드는 끝난다. observations 500개의 이산적인 states들이 있는데 25개의 taxi 위치, 승객의 위치(택시 안에 있는것도 포함) 5개 그리고 4개의 목적지를 ..

OpenAI gym을 이용해 SARSA 구현하기

점점 진화해서 OpenAI gym의 FrozenLake-v0를 이용해 SARSA를 구현해보자 얘는 앞의 시간차예측에서 정책을 사용하는 대신 각 action마다 큐함수를 사용하는 것임. 그리고 각 action을 선택할때마다 \( \epsilon \)-greedy action방법을 사용해 action을 선택함. SARSA의 경우는 온폴리시 시간차제어이기때문에 잘못된 큐함수를 학습할 수도 있음. import gym import numpy as np import random EPSILON=0.1 TIMES=1000000 ALPHA=0.1 GAMMA=0.9 이번에도 타임스텝만을 이용해 구현. 새롭게 엡실론이 필요한데 이는 위에 설명한 엡실론 그리디방법때문. env = gym.make("FrozenLake-v0")..

OpenAI gym을 이용해 TD prediction 구현하기

이번에는 OpenAI의 FrozenLake-v0를 이용해 temporal difference, 시간차 예측을 구현해보자 몬테카를로 예측의 경우 하나의 에피소드를 끝내야지 return값을 얻고 그걸 이용해서 value function을 업데이트하는데 시간차 예측의 경우 그렇지 않고 몬테카를로와 비슷하지만 각 타임스텝마다 value function을 업데이트함. 몬테카를로의 공식을 거의 그대로 사용하다보니 사실 구현도 그렇게 크게 다르진 않음 import gym import numpy as np import random GAMMA=0.9 POLICY = [0.25, 0.25, 0.25, 0.25] TIMES = 5000000 ALPHA = 0.1 언제나 먼저 나오는 선언부 이번에는 에피소드를 사용하지 않고 ..