1 Reinforcement Learning, 강화 학습
☑️ what) 현재 상태(State)가 주어졌을 때, 미래 보상(Reward)의 기댓값을 최대화하는 행동(Action)을 고르는 함수를 학습하는 것.
- S: State, A: Action, R: Reward
- state 함수, reward 함수, policy 함수
- value 함수: 미래의 보상을 계산하는 함수이다. 최근의 보상에 가중치를 주기 위해 discount factor γ∈[0,1) 를 사용한다.
S(s,a)=sR(s,a)=rp(s)=aVp(s)=k∑γk−1rk
1 Q-Learning
☑️ what) Q-Learning 강화 학습의 한 종류이다. Q는 Quality를 의미하고, Q는 다음과 같이 정의된다.
popt(s)=argmaxp{Vp(s)}, Vopt=VpoptQ(s,a)=R(s,a)+γVopt(S(s,a))
식을 정리하여 Q 함수를 재귀적으로 정의할 수 있다.
popt(s)=argmaxa{Q(s,a))}Vopt=Vpopt=maxα(Q(s,α)) where α∈AQ(s,a)=R(s,a)+maxα(Q(s,α))
재귀적으로 정의되면, Q의 수렴을 예상할 수 있다는 것이다. 따라서 우리는 Q를 추정하여 사용한다.→ Q table 이용
how) 알고리즘
0. Q 테이블 초기화 (random value)
1. Choose an action a. (softmax, ϵ-greedy)
2. Perform a and get reward.
3. Observe the new state.
4. Update (α 를 조정하여 사용)
1. Action Selection
1) softmax
2) ϵ-greedy
2. Update (Evaluation)
2 Deep Q-Learning
Q-Learning의 Q-table 대신에 Deep Learning 기법을 사용한다.
🥲 pb) Atari라는 게임에서 딥러닝과 Q러닝을 결합하려는 시도를 처음하였다. state값이 이미지였고, 이는 Q-table이 모든 state를 담을 수 없다는 것을 의미했다. (not fit in memory)
→ sol) 이에 따라 Q-table의 approximator로써 DNN을 사용했다.
how) CONV + FF
👍🏻 gd) stateless (과거 정보가 필요없는) game에서 성능이 좋다. 과거 정보를 많이 고려하지 않아도 되기 때문이다.
🥲 pb) 반면, statefull game (과거 정보가 많이 필요한) 에서는 성능이 좋지 않다.
3 Discussion
- 👍🏻 gd) CONV, FF등 병렬 처리에 용이한 네트워크를 사용하므로 GPU를 사용할 수 있다.
- 모든 부분을 학습하지 않고, 중요한 부분을 추출해서 학습할 수 있다.
- 과거 상태가 필요한 경우, RNN을 붙여볼 수 있다.
👍🏻 gd) almost unlimited training data, 잘하는 사람이 게임을 하면 데이터가 수집된다.
Double Q-Learning
🥲 pb) 학습이 진행됨에 따라 action이 overestimate되는 경향이 있다. Action selection과 evaluation 과정에서 하나의 DQN을 사용하기 때문에 발생한다.
-> sol) 각각의 과정에서 다른 DQN(2개의 DQN)을 사용한다. 대칭적으로 업데이트 된다.