아무것도 모르는 학생이 쓴 글입니다... 고냥 이런것도 하는구나 하고 넘어가주십쇼
1. Introduction
과거에 RL에서 어려웠던 부분 : 비전, 소리 등 고차원의 감각형 인풋
왜 어려웠나? : 이전의 RL의 결과는 손수 만든 features 표현이 잘 되었는지에 지나치게 의존하였기 때문에
deep learning의 등장으로 가공되지 않은 감각형 데이터로 부터 고차원의 features를 추출하는게 가능해 졌다
neural network architectures(convolution networks, multiplayer perceptions, restricted Boltzmann machines, recurrent network -> 나중에 알아보자)
하지만 deep learning의 관점으로 보았을때 몇가지의 도전과제가 존재한다.
1. 대부분의 성공적인 deep learning app은 손수 분류된 방대한 트레이닝 데이터가 필요하다.
하지만 RL은 스칼라 값의 보상(reward)로 부터 배울 수 있다. 그런데 이 보상이 sparse(드문드문)하고, noisy(노이즈)가 존재하고, delayed(지연)되기 때문이다.
지연된 액션(예를 들어 1000 steps)을 통한 보상은 다른 지도학습, 비지도학습에서 발견되는 직접적인 연관에 비해 특히 벅차보인다.
2. 대부분의 딥러닝 알고리즘은 data가 독립이라고 가정하지만, RL은 매우 연관이 깊다. 게다가 RL에서 데이터 분포는 새로운 행동을 할 때(배울 때) 바뀌는데, 고정된 기저 분포라고 가정하는 Deep learning과는 다르다
이제부터 이것을 convolutional neural network가 이것을 극복하고 RL환경에서 raw data로부터 성공적인 control policies를 학습하는 방식에 대해서 서술할 것이다.
이 신경망은 다양한 Q-learning 알고리즘과 stochastic gradient descent를 이용하여 weight이 갱신될 것이다.
연관된 데이터들과 고정되지 않은 분포에 대한 문제를 줄이기 위해서, 이전 형태를 무작위로 샘플링함으로써 과거의 행동을 아우르는 학습 분포를 유도하는 experience replay machanism을 사용할 것이다.
visual input이 60hz의 210 x 160 RGB 비디오인 아타리 게임을 학습할 것이다. 이 외엔 reward와terminal signals과 possible actions를 제외하곤 다른 데이터는 주어지지 않을 것이다.
2. 배경지식
environment E : 행동의 결과, observations and rewards. stochastic(확률적)일 것이고, agent에게 관측되지 않을 것이다. 다만, 에뮬레이터로 부터 현재 스크린을 표현하는 vector of raw pixel로 이루어진 이미지를 인식할 것이다.
action -> a_t : 이 액션 a_t가 에뮬레이터에 전달되고, state나 게임 점수가 변하게 된다.
reward -> r_t : 이는 사전 액션과 관측의 연속에 의존적일 것이며 액션에 대한 피드백이 수천번의 액션 이후에야 받아질 수 있을수도 있다.
단일 관측만으로는 상황을 인식할 수 없다 -> 행동과 관측의 연속(s_t = x_1, a_1, x_2, a_2 ... x_t-1, a_t-1)을 고려할 것이며, 이를 바탕으로 학습할 것이다. 이 공식이 각 연속의 state가 구별되는 상태인 MDP(크지만 유한함)를 만들 것이다.
결과적으로 우리는 단순히 완료된 상태 s_t를 이용하여 MDP에 표준 강화학습 방법을 적용 시킬 수 있을 것이다.
agent의 목표? : emulator와 상호작용하면서 미래 보상을 최대화 하는 다음 action을 선택하는 것
미래 보상이 시간에 따라 discounted(감소)되고 현재 시간 t와 종료 시간 T에 대해서 미래에 대해 감소된 보상 R_t를
로 가정할 것이다.
최적의 action-value function Q*(s,a)를 다음과 같이 정의할 것이다.
수식을 해석해 보자면 s_t와 a_t와 파이(액션에 매핑된 정책)에 대해서 R_t를 최대화 하는 정책을 찾는다.
이 식은 벨만 방정식을 따르는데, 다음과 같은 직관을 따른다
만약 상태 s와 다음 행동으로 가능한 액션들 a'과 그 액션들로 인해 변화된 상태 s'에 대해서 최적 값이 Q*(s',a')라고 표현하면, a'를 선택하는 최적의 방식은 다음의 식의 기댓값을 최대로 하는 a'를 선택하는 것이다.
결국, Q*(s,a)에 이를 적용시키면 다음과 같다.
결국 RL의 알고리즘의 기본 개념은 행동에 대한 가치를 추측하는 것이고, 벨만방정식을 이용하여 이를 갱신하는 것이다.
이 방식은 순차적으로 진행되는데, 이전 학습에서 도출된 행동-가치 값을 이용하여 현재를 학습하는 것이다. 이를 무한대에 가깝게 최적의 행동-가치 규칙을 만들 수 있을 것이다.
하지만 이는 완전히 비실용적이다. 왜냐하면 행동-가치 함수는 일반되지 않고 서로다른 상황 s에 대하여 분리되어 추측될 것이기 때문이다.
대신 대략적으로 행동-가치를 평가하는 함수를 이용하는게 일반적이다.
일반적으로 linear function approximator를 사용하긴 하지만 인공 신경망과 같이 non-linear function approximator를 사용하는 경우도 존재한다.
이 인공망은 weights θ로 구성된 네트워크인데 이 θ에 따른 loss를 평가하는 L(θ)를 최소화 하는 방식으로 모델을 학습할 수 있다.
y 등 기호에 대한 의미는 다음과 같다.
i는 학습횟수, p(s,a)는 s와 a가 일어날 확률, θ_i−1는 이전에 loss를 최소화 하는 weights.
targets이 지도학습과 달리 network weight에 따라 변함을 확인할 수 있다.
이로 인해 loss function을 weights에 대해 다뤄보면 다음과 같은 경사가 도출된다.
이 수식을 전체 계산하는 것 보단, stochastic gradient descent를 통해 loss function을 최소화 하는 방향이 자주 사용된다. 만약 각 step에 대하여 weights이 갱신된다면, 유사 Q-learning algorithm에 도달하는것이다.
이 알고리즘은 model free하고, off-policy하다.
3. Deep RL
컴퓨터 비전과 음성 인식의 돌파구가 다량의 트레이닝 셋을 Deep nural network으로 효과적으로 학습시킨 부분이 주가 되었다. 가장 성공적인 접근법은 직접적으로 가공되지 않은 inputs에 stochastic gradient descent를 이용하여 lightweights 업데이트를 통해 학습시키는 방식이다.
충분한 데이터를 인공 신경망에 제공함으로써, 손수 가공된 features를 사용하는 방식보다 더 나은 결과를 보여줄 경우가 존재했다. 이러한 성공이 RL에 Deep neural network를 적용시키는데 영감이 되었다.
우리의 목표는 RL 알고리즘를 RGB이미지를 직접적으로 연산하고 stochastic gradient updates를 활용하여 트레이닝 데이터를 효과적으로 작업하는 deep neural network과 연결하는 것이다.
Tesauro’s TD-Gammon architecture는 환경과 상호작용하는 알고리즘으로 부터 뽑은 on-policy sampeles의 s_t, a_t, r_t, s_t+1, a+t로 부터 직접적으로 가치를 추측하고 파라미터를 갱신하는 방식을 채택했다. 이와 비슷하지만 우리는 agent의 경험을 매 스텝마다 et = (s_t, a_t, r_t, s_t+1)의 형태로 데이터에 저장하는 experience replay방식을 이용한다. 이 루프 내부에서 우리는 Q-learning ujpdates 혹은 minibatch updates를 랜덤하게 뽑힌 경험의 샘플에 적용시킬 것이다. experience replay를 기반으로 하는 행동 이후, e-greedy policy에 따라 다음 행동을 선택할 것이다.
위의 내용을 종합하여 알고리즘을 표현하면 다음과 같다.
이와 같은 접근 방식은 Q-learning보다 다음과 같은 장점들이 있다.
1. 각 경험의 스텝이 잠재적으로 weights 갱신에 사용될 수도 있고, 이는 데이터 효과가 증가함을 의미한다.
2. 연속 샘플 간 강한 상관관계 때문에 연속 샘플을 이용한 학습은 비효율 적이다. 따라서 무작위로 샘플을 고르는 것이 이러한 상관관계를 줄일 수 있다.
3. on-policy를 배울 때 현재 파라미터가 다음 학습할 샘플을 결정한다. (만약 이렇게 되면 선택된 주요 샘플에 지배될텐데 이는 원하지 않은 피드백 루프가 파라미터를 지역 최솟값에 빠지거나 분산시킨다.) experience replay를 이용함으로써 행동 분포가 회가 거치면서 평균화 된다. (experience replay를 통한 학습을 사용할 때 반드시 off-policy로 학습되어야 한다.)
실제로 우리 알고리즘은 N개의 경험만 저장하고 replay memory에 저장한다. 그리고 랜덤하게 선택한다.
이러한 접근은 메모리 버퍼의 제한이 중요한 상의 차이를 만들어 내지 않고 가장 최근의 상을 덮어 쓴다.
이와 유사하게 uniform sampling은 replay memory안의 모든 상에 대하여 같은 중요성을 지닌다.
더 정교한 전략은 e가장 배울게 많은, prioritized sweeping와 유사한 상을 갖는 샘플을 선택하는 것일 수 도 있다.
3.1 전처리 및 모델 아키텍처
210 × 160크기와 128가지 색을 표현할 수 있는 픽셀이미지가 입력이 되는데 이를 그대로 학습시키면 차원이 너무 높아서 계산의 무리가 있다. 그렇기 때문에 입력 차원을 낮추기 위해 기본적인 전처리가 필요하다
1. RGB를 Gray-scale(단일색)으로 맞춘다.
2. Down-sampling을 통해 110 x 84로 크기를 줄인다.
3. 이 중에서 플레이 영역 외 일부를 잘라내어 84 x 84로 줄인다
-> 이는 차원을 낮추기 위함이 아닌 GPU implementation 중 2D convolutions를 위한 조건을 맞추기 위함이다.
이 과정이 앞선 코드에서 φ함수 부분이고, 나중의 학습을 위해 연속 이미지 4개를 전처리하고 쌓아둘 것이다.
신경망을 통해서 Q를 parameterizing하는덴 여러가지 방식이 있다
history와 action 쌍을 input으로 Q-vlaue 추정값을 구하는 방식이 존재하지만 이 방식의 주요 단점은 Q값을 계산하기 위해 각 액션에 대하여 seperate forward pass이 필요하므로 행동(action)의 수에 코스트가 비례하는 비용을 야기한다.
그렇기 때문에 각 가능한 액션에 대하여 분리된 ouptut unit이 존재하고 state만이 신경망의 입력으로써 주어지게 구조화 하였다. 이 구조의 장점은 Q값을 계산할 때 주어진 상황에 대하여 모든 가능한 액션에 대해 한번의 forward pass만으로 계산하고된다는 점이다.
이제 상세한 아키텍처에 대해서 서술하자면 전처리 함수 φ를 통해 84 x 84크기의 4개의 이미지가 신경망의 입력으로써 주어질 것이다.
첫번째 히든 레이어(CNN)은 Stride가 4인 168 X 8의 필터를 가질것이고 rectifier nonlinearity를 적용할 것이다. (여기서 rectifier nonlinearity는 앞선 포스트의 CNN을 참고하면 될 것 같다.)
두번째 히든 레이어는 stride가 2인 324 X 4 필터를 가질 것이고 또 다시 rectifier nonlinearity를 적용할 것이다
마지막 히든 레이어는 fully-connected layer(MLP)이고 256개의 rectifier units으로 구성될 것이다.
마지막 히든 레이어 또한 fully-connected layer(MLP)이고 하나의 output과 연결되어 있을것이다
이제 상세한 아키텍처에 대해서 서술하자면 전처리 함수 φ를 통해 84 x 84크기의 4개의 이미지가 신경망의 입력으로써 주어질 것이다.
첫번째 히든 레이어(CNN)은 Stride가 4인 168 X 8의 필터를 가질것이고 rectifier nonlinearity를 적용할 것이다. (여기서 rectifier nonlinearity는 앞선 포스트의 CNN을 참고하면 될 것 같다.)
두번째 히든 레이어는 stride가 2인 324 X 4 필터를 가질 것이고 또 다시 rectifier nonlinearity를 적용할 것이다
마지막 히든 레이어는 fully-connected layer(MLP)이고 256개의 rectifier units으로 구성될 것이다.
output layer는 fully-connected layer(MLP)이고 각 노드들은 하나의 action과 연결되어 있을것이다.
4. 실험
7개의 ATARI게임, 같은 네트워크 구조, 학습 알고리즘, 하이퍼파라미터 사용하였다. 그리고 아래의 실험으로 위 모델이 많은 게임의 특성을 통합하지 않더라도 충분히 robust(로버스트, 예외적인 데이터에 대하여 영향을 적게 받음)함을 확인하였다.
학습 과정에서 보상의 방식을 수정했는데 모든 양의 보상을 1로, 음의 보상을 0으로, 유지를 0으로 표현했다. 이 이유는 게임마다 점수의 산정 방식이 다르기 때문이다. 이렇게 보상을 고정하는 방식은 error derivatives의 크기를 줄이고 다양한 게임에 대하여 같은 learning rate을 사용하기 쉽게 만들어 준다. 또한 reward와 다른 크기를 비교하지 못하므로 퍼포먼스가 올라간다.
32사이즈의 minibatches와 RMSProp 알고리즘을 사용하였고 ε-greedy 알고리즘을 사용했다. ε의 값은 첫 100만 프레임까지 1부터 0.1까지 변화될 것이고, 그 이후부터는 0.1로 고정시킬 것이다.
frame-skipping 테크닉을 사용하여서 모든 프레임을 다 캡쳐하기보다는 일정 프레임당 한 프레임을 캡처하도록 하였다.
아래 실험에서는 4프레임 당 한 프레임을 찍을것이다. (게임별로 k=3으로 변경하기도 한다)
4-1. 학습 및 안정성
지도학습과 달리 강화학습은 정확하게 학습과정에서 진행을 평가하기가 어렵다. 그렇기 때문에 일정 주기를 두고 평가할 것이다. 평가 방식은 다양하게 존재하는데 몇가지를 아래에서 살펴보자.
평균 보상 획득값
평균 보상 획득값은 weight의 조그만 변화가 방문한 states 분포에 대하여 큰 영향을 미칠 수 있으므로 노이지 한 경향이 있다. 실제로 분포를 보면 꽤 노이즈가 심하고 학습이 일정하게 진행되지 않음을 확인할 수 있다
다른 방식으로는 action-value 함수 Q의 추측값(임의의 상태 s에서 agent가 주어진 정책을 따르면 얼마나 discounted된 보상을 받을 수 있는지 추측하는 값)을 이용하는 것이다. Q의 최댓값의 평균을 이용하는 것이다. 이를 이용하기 위해 고정된 상태의 집합을 학습전에 임의로 정의하였고 최대 Q값의 평균을 추적하였다.
이전에 평균을 이용한 것보다 훨씬 더 부드럽게 증가함을 확인할 수 있다. 이 과정에서 발산 문제는 확인할 수 없었다. 이는 즉, 수렴에 대한 확신이 없음에도 강화학습신호와 stocahstic gradient descent을 통해 네트워크를 학습시킬 수 있음을 의미한다. (This suggests that, despite lacking any theoretical convergence guarantees, our method is able to train large neural networks using a reinforcement learning signal and stochastic gradient descent in a stable manner.)
4-2. 가시화, Value function
각 그림이 A,B,C라고 할 때 (A상황)적이 등장할 때 Q가 급증하고, (B상황)적이 공격을 맞을 때 최고점을 찍으며, (C상황) 적이 사라지면 이전의 값으로 돌아온다. 위 그림을 통해 이 함수가 복잡한 사건의 연속을 합리적으로 수치화(value-function) 했는지 알 수 있다
'ML' 카테고리의 다른 글
TensoFlow를 활용한 DQN 실습 Breakout 적용 - 1 (0) | 2021.04.03 |
---|---|
Convolutional layer (ConvNet, CNN) (0) | 2021.04.02 |
DQN 2013 vs DQN 2015 방식 (0) | 2021.03.31 |
프로젝트 1 : 대출 가능 여부 예측 문제 / 스텝 5 : 데이터 처리 (0) | 2021.03.24 |
프로젝트 1 : 대출 가능 여부 예측 문제 / 스텝 4 : feature selection (0) | 2021.03.24 |