2017년 12월 18일 월요일

RL Summary

RL 학습할 net(RNN or DNN)이 있다고 가정하자. net 출력은 $prob$ (부류별) 값으로, action 부류별 분포가 혼합된 multi-nomial $prob$이다. Monte Carlo 샘플링으로 부류정보와 $prob$ 얻고, 부류 정보(action)는 제어 대상 system에 가해서 reward 얻는다.

reward 값으로부터 학습할 net loss를 구성하면,

$loss = -\sum( \log{p_i} * (r_i-baseline) )$

이다. $r$은 최신값에 가중된(그리고 정규화된) 보상 값이다. 또,

$baseline = \begin{cases}
                0, reinforce(정규화\ 시^{각주1})\\
                Moving\ average\ of\ r_i, reinforce(정규화\ 않을\ 시)\\
                V, Actor\ Critic(V는\ 가치망\ 출력)\\
                \end{cases}$

이다. RL이 적용된 사례를 보면 다음과 같다.

(예 1) Cartpole 문제 상태 입력은 state 요소간 상관성 없음 (요소간 독립적). 따라서 RL net은 rnn대신 dnn 사용
(예 2) NAS 경우, RL net 출력을 이용하여 구성하는 reward 시스템(DNN Archtecture)은 전후 상관성(Layer 연결로 이전 값이 다음 값에 영향 줌) 존재. RL net은 RNN을 사용하며, LSTMCell 출력을 다음 셀 입력으로 넣는 과정으로 구성.

(예 3) ENAS 경우
RNN 출력값 샘플링 -> 샘플링 다수(여러 DNN 사례 생성) -> 여러 DNN 구성 -> 최적 오차 net 선택 -> 선택  net 오래 학습 -> reward -> RNN 학습.

ENAS 출력은 2255/3355/4455/5555/6655이다.
2255는 2,2,5,5개 출력을 가지는 LSTMCell 4개: 2(DNN Micro-Cell 두 개 입력 중 어디 선택할지 onehot vec 표현), 5(연산자 5개 중 어떤 선택할지).
LSTMCell 출력은 [(None,32),(None,32),(None,32)] 3개 요소, 첫번째는 reshape((None,1,32)으로) 해서 다음 LSTMCell 입력으로 사용하고 상단부 dense넷 입력으로도 사용.
나머지 2개는 다음 LSTMCell 용 state 입력으로 사용(cell, hidden).
2255 네 개 중 마지막 출력은 3355 네 개 셀 첫 입력으로 사용.

3355는 3,3,5,5개 출력을 가지는 LSTM셀 4개: 3(세개 입력중 어디 선택할지), 5( " )
...



(각주1) 정규화는 저장된 보상값 $r$ 리스트 평균을 구해 빼고 분산을 나눈다.