본문 바로가기

Contact English

【알고리즘】 11강. 강화학습

 

11강. 강화학습(reinforcement learning; RL)

 

추천글 : 【알고리즘】 알고리즘 목차 


1. 개요 [본문]

2. Markov process [본문]

3. Markov decision process [본문]

4. 일반 의사결정 모형 [본문]

5. 심화 주제 [본문]


a. 강화학습 예제 


 

1. 개요 [목차]

⑴ 정의

(참고) supervised learning

○ 데이터 : (x, y) (단, x는 feature, y는 label)

○ 목표 : 맵핑 함수 x → y의 계산

(참고) unsupervised learning

○ 데이터 : x (단, x는 feature이고 label은 없음)

○ 목표 : x의 underlying structure에 대한 학습

③ reinforcement learning

○ 데이터 : (s, a, r, s') (단, s는 state, a는 action, r은 reward, s'은 다음 상태)

목표 : 여러 시간에 걸친 reward의 총합을 최대화

확률적 제어이론 

요소 1. state 

 요소 2. reward

○ 정의 : state의 변화량 

 value function : 미래의 reward에 대한 기댓값을 평생 가치(생애 가치, VLT)로 나타낸 것

○ 수식화 : state s, policy π, 미래가치를 현재가치로 보정하기 위한 계수 γ에 대하여,

 

 

○ state가 좋은지 나쁜지를 평가하여 action을 선택하는 근거를 제공

요소 3. action 

요소 4. policy

○ 정의 : agent의 행동. 즉, state를 입력으로 action을 출력으로 하는 맵핑

○ (참고) decision process : 어떤 과정을 거쳐 상태(state)와 행동(action), 보상(reward)이 이어지는 의사결정 문제를 다루는 일반적인 틀

종류 1. deterministic policy

종류 2. stochastic policy

이유 1. learning에서 최적의 행위를 모르므로 exploration을 하기 위함

이유 2. 최적의 상황이 stochastic한 걸 수도 있음 (예 : 가위바위보, 상대방이 역이용하는 경우)

 요소 5. model

○ 정의 : 환경(environment)의 행동

○ 주어진 state와 action에 대하여 model은 다음 state와 reward를 결정함

○ model-free method와 model-based method가 있음을 유의

특징 : supervised learning, unsupervised learning과는 차별성이 있음

① 정답을 묵시적으로 제공받음 : reward의 형태로 제공받음

환경과의 상호작용을 고려해야 함 : delayed feedback 등이 문제가 됨

③ 이전의 결정이 미래의 상호작용에 영향을 줌

④ 적극적으로 정보를 얻는 알고리즘 : 강화학습은 데이터를 얻는 과정까지를 포함함

 

 

2. Markov process [목차]

⑴ 개요

정의 : (decision process 여부와 관계 없이) 미래 상태가 현재 상태에만 의존하고, 과거 상태에는 의존하지 않는다는 시스템 

 

 

 Markov chain : Markov process 중에서 상태공간이 유한하거나 가산 무한한 것을 지칭

성질 1. Chapman-Kolmogorov decomposition 

성질 2. linear state-space model 

그래프 이론 

① strongly connected (= irreducible, communicable) : 그래프 내 임의의 노드 i에서 다른 임의의 노드 j로 도달할 수 있는 상태

② period : 특정 노드 i의 period는 노드 i에서 i로 향하는 모든 path의 최대공약수

 예 : 두 개의 노드 A, B가 있고 A=B와 같이 두 개의 엣지로 연결돼 있으면 각 노드의 period는 2

③ aperiodic : 모든 노드의 period가 1인 것

aperiodic ⊂ irreduicible

 예 : 각 노드가 자기 자신으로 향하는 walk가 있으면 aperiodic

④ 정상 상태(stationary state) : Pr(xn | xn-1)이 n에 무관하면 Markov process는 stationary (time-invariant)

⑤ regular 

○ regular ⊂ irreduicible

○ 어떤 자연수 k에 대해, transition matrix M의 거듭제곱 Mk의 모든 원소가 양수(즉, 0이 아닌 값)인 경우 

성질 1. Perron-Frobenius theorem 

성질 2. Lyapunov equation 

성질 3. Bellman equation 

종류 1. two-state Markov chain

 

Figure. 1. two-scale Markov chain

 

① M : 1 step으로 state transition이 일어나는 변환

② Mn : n step으로 state transition이 일어나는 변환 

③ steady-state vector : Mq = q를 만족하는 q. 즉, 고유치가 1인 고유벡터

종류 2. HMM(hidden Markov model)

χ = {Xi}가 Markov process이고 Yi = ϕ(Xi) (단, ϕ는 deterministic fuction)이면 y = {Yi}는 hidden Markov model

Baum-Welch 알고리즘

○ 목적 : HMM 파라미터 학습

○ 입력 : 관측된 데이터 

○ 출력 : HMM의 상태 전이 확률과 방출 확률

원리 : EM(expectation maximization) 알고리즘의 일종 

○ 수식화

○ Akl : 상태 k에서 상태 l로의 전이 횟수 

 

 

○ Ek(b) : 상태 k에서 관측값 b의 방출 횟수

 

 

○ Bk : 상태 k의 초기 확률 

 

 

Viterbi 알고리즘 (ref)

○ 목적 : 주어진 HMM에서 가장 가능성이 높은 숨겨진 상태의 시퀀스를 찾는 데 사용됨

○ 입력 : HMM의 파라미터와 관측된 데이터 

○ N : 가능한 숨겨진 상태의 개수

○ T : 주어진 관측 데이터의 길이

○ A : 상태 전이 확률(state transition probability). akl = 상태 k에서 상태 l로 전이할 확률

○ E : 관측 확률(emission probability). ek(x) = 상태 k에서 관측 x가 나타날 확률 

○ B : 초기 상태 확률(initial probability) 

○ 출력 : 가장 가능성이 높은 상태 시퀀스

원리 : 동적 프로그래밍(dynamic programming)을 이용해 최적의 경로를 계산

 

Durbin et al (1998) Biological Sequence Analysis

 

단계 1. 초기화 

 

 

○ bk : 상태 k의 초기 확률 P(s0 = k)

○ ek(σ) : 상태 k에서 첫 번째 관측 σ가 나올 확률 P(x0 | s0 = k) 

단계 2. 재귀(recursion) 

○ 각 시점 i = 1, ···, T까지 모든 상태에 대해 이전 시점에서 온 최대 확률을 계산 : 다음과 같이 이전 상태에 대한 점화식이 성립

 

 

○ 가장 가능성이 높은 이전 상태를 저장하는 backpointer (ptr) 계산 

 

 

○ ptri(l)은 현재 상태 l로 오는 데 가장 높은 확률을 갖는 이전 상태 k를 저장하는 역할을 함

단계 3. 종료(termination)

○ 최종 시점에서 가장 높은 확률을 선택 

 

 

○ 최적 상태 시퀀스의 마지막 상태를 결정 

 

 

○ vk(i - 1) : 이전 시점 i - 1에서 상태 k에 있었을 때의 최적 확률값 

○ akl : 상태 k에서 l로 전이할 확률

단계 4. 역추적(traceback)

○ i = T, ···, 1에 대해 ptr 배열을 따라가면서 최적 경로를 복원 

 

 

○ 예시 

 

Figure. 2. Viterbi 알고리즘 예시

 

○ 파이썬 코드

 

class HMM(object):
    def __init__(self, alphabet, hidden_states, A=None, E=None, B=None):
        self._alphabet = set(alphabet)
        self._hidden_states = set(hidden_states)
        self._transitions = A
        self._emissions = E
        self._initial = B
        
    def _emit(self, cur_state, symbol):
        return self._emissions[cur_state][symbol]
    
    def _transition(self, cur_state, next_state):
        return self._transitions[cur_state][next_state]
    
    def _init(self, cur_state):
        return self._initial[cur_state]

    def _states(self):
        for k in self._hidden_states:
            yield k

    def draw(self, filename='hmm'):
        nodes = list(self._hidden_states) + ['β']

        def get_children(node):
            return self._initial.keys() if node == 'β' else self._transitions[node].keys()

        def get_edge_label(pred, succ):
            return (self._initial if pred == 'β' else self._transitions[pred])[succ]
        
        def get_node_shape(node):
            return 'circle' if node == 'β' else 'box'
            
        def get_node_label(node):
            if node == 'β':
                return 'β'
            else:
                return r'\n'.join([node, ''] + [
                    f"{e}: {p}" for e, p in self._emissions[node].items()
                ])

        graphviz(nodes, get_children, filename=filename,
                 get_edge_label=get_edge_label,
                 get_node_label=get_node_label,
                 get_node_shape=get_node_shape,
                 rankdir='LR')
        
    def viterbi(self, sequence):
        trellis = {} 
        traceback = [] 
        for state in self._states():
            trellis[state] = np.log10(self._init(state)) + np.log10(self._emit(state, sequence[0])) 
            
        for t in range(1, len(sequence)):
            trellis_next = {}
            traceback_next = {}

            for next_state in self._states():  
                k={}
                for cur_state in self._states():
                    k[cur_state] = trellis[cur_state] + np.log10(self._transition(cur_state, next_state)) 
                argmaxk = max(k, key=k.get)
                trellis_next[next_state] =  np.log10(self._emit(next_state, sequence[t])) + k[argmaxk] 
                traceback_next[next_state] = argmaxk
                
            trellis = trellis_next
            traceback.append(traceback_next)
            
        max_final_state = max(trellis, key=trellis.get)
        max_final_prob = trellis[max_final_state]
                
        result = [max_final_state]
        for t in reversed(range(len(sequence)-1)):
            result.append(traceback[t][max_final_state])
            max_final_state = traceback[t][max_final_state]
            
        return result[::-1]

 

종류 1. PSSM : 단순한 HMM 구조

종류 2. profile HMM : PSSM에 비해 다음과 같은 장점을 가짐 

○ profile HMM 모식도 

 

Figure. 3. profile HMM 모식도 

 

○ M, I, D는 각각 match, insertion, deletion을 나타냄

○ Mi는 Mi+1, Ii, Di+1로 갈 수 있음

○ Ii는 Mi+1, Ii, Di+1로 갈 수 있음

○ Di는 Mi+1, Ii, Di+1로 갈 수 있음

장점 1. insertion, deletion을 모델링할 수 있음

장점 2. transition은 유효한 상태 간 이동으로 제한됨

장점 3. 상태 간 경계가 잘 정의됨 

종류 3. Markov chain Monte Carlo (MCMC)

① 정의 : 복잡한 확률 분포를 따르는 Markov chain으로부터 샘플을 생성하기 위해 사용하는 방법

방법 1. Metropolis-Hastings

 현재 상태에서 새로운 후보 샘플을 생성 → 후보 샘플을 수락 또는 거절 → 수락될 때만 새로운 상태로 전환됨

방법 2. Gibbs sampling

 

 

방법 3. importance/rejection sampling

방법 4. reversible jump MCMC

 방법 1, 2와 같은 일반적인 MCMC는 고정된 차원의 매개변수 공간에서 확률 분포를 샘플링하는 알고리즘

○ reversible jump MCMC는 가변 차원의 매개변수 공간에서 작동 : 샘플링 중에 매개변수의 차원이 동적으로 변함

 

 

3. Markov decision process (MDP) [목차]

⑴ 개요

 decision process 중 미래가 오직 현재 상태에만 의존하는 경우

사실상 거의 대부분의 문제 상황이 Markov decision process에 해당함

③ 모식도 : transition과 관련하여, t+1에서의 상태가 오직 t에서의 상태의 함수로 결정되는 것

 

Figure. 4. MDP에서 agent-environment interaction

 

state : st ∈ S

action : at ∈ A

○ reward : rt ∈ R(st, at)

○ policy : at ~ π(· | st)

○ transition : (st+1, rt+1) ~ P(· | st, at)

최적화 해 V(s)의 존재성 

 

 

전제 1. Markov property

전제 2. stationary assumption 

전제 3. no distributional shift 

종류 1. Q-learning

① Q-learning (Watkins, 1989)

○ 개요

○ 데이터로부터 Q-function(action-value function) 자체를 학습하는 것

○ 모델에 의존하지 않음(off-policy) : 즉 전이행렬 P(x' | x, u)이 알려져 있지 않음

○ 보상 R(s, a)은 알려져 있음

value iteration의 예 

○ 수식화 : 다음 상태 j가 확정되므로 전이확률 부분이 사라짐

 

 

단계 1. 모든 state / action pair의 추정량을 초기화 : (x, u) = 0

단계 2. 랜덤한 action u를 취함

단계 3. 다음 상태 x'를 관찰하고 환경으로부터 R(x', u)를 받음 : 기대보상이 아닌 실현된 보상임을 유의

단계 4. Q̂(x, u)를 업데이트 

○ 보충

○ 모델 자체를 학습 시 |𝒮|2|𝒜|의 메모리가 필요하지만, Q-learning은 |𝒮| × |𝒜|의 메모리만 있으면 됨

○ TD(temporal difference) learning이라고도 함

Q-learning 수렴성 증명 : pseudo-contraction mapping 

 

 

② average-reward Q-learning

 

 

 SARSA (state-action-reward-state-action; ε-greedy, epsilon greedy) (Rummery & Niranjan, 1994)

○ 개요

○ 정책에 의존함(on-policy)

○ 데이터가 없을 때 policy를 고르며 새로이 데이터를 수집함

○ 수식화

단계 1. 모든 state / action pair의 추정량을 초기화 : (x, u) = 0

단계 2. k 단계에서 1 - εk의 확률로 uk ∈ arg maxv (xk, v)를 취하고, εk의 확률로 random action을 취함

단계 3. 다음 상태 x'를 관찰하고 환경으로부터 R(x', u)를 받음 : 기대보상이 아닌 실현된 보상임을 유의

단계 4. (x, u)를 업데이트

 

 

단계 5. k → 이 됨에 따라 εk를 0으로 보냄 : 이때 볼츠만 분포(T → 0; temperature annealing)를 쓸 수도 있음

 

 

○ Q-learning과의 비교

○ 타깃 정책(target policy) : 학습하려는 정책 

○ 행동 정책(behavior policy) : 샘플(경험)을 생성하기 위해 실제로 사용하는 정책

○ Q-learning : 타깃 정책 = 최적 정책, 행동 정책 = 각 행동이 무한히 자주 선택되도록 하는 어떤 정책이든 가능

○ SARSA : 타깃 정책 = ε-탐욕(ε-greedy) 정책, 행동 정책 = ε-탐욕 정책

보충 1. 사실 behavior 정책으로 ε-greedy를 쓴다고 SARSA인 것은 아니고 target 정책이 무엇이냐가 중요함

보충 2. off-policy라는 말은 데이터를 어떤 정책으로 모았든, 업데이트는 greedy 타깃(max) 기준으로 한다는 뜻

보충 3. behavior가 완전 greedy(ε=0)이면 SARSA의 Q(s', a')에서 a' = argmax가 되므로 타겟이 같아져서 Q-learning과 SARSA의 식이 동일해짐

④ Q-learning with linear function approximation 

취지 : Q-learning의 메모리 공간은 |𝒮| × |𝒜|인 반면, linear function approximation의 경우 M ≪ |𝒮| × |𝒜|

수식화 : temporal difference의 제곱인 δk2은 언제나 양수라는 이점이 있음 

 

 

의의 : 고정 정책 + on-policy 샘플링이면 어떤 의미의 수렴성이 성립함

 

 

예시 : 테트리스 게임 (code)

문제점 : 조건이 깨지면 (예 : off-policy, 잘못된 가중치로 업데이트) 발산할 수 있음

 

 

 종류 2. DQN

① Q-learning with nonlinear function approximation

○ 수식화 : Bellman equation으로 loss function을 구성

 

 

문제점 : local optima, 트레이닝 중의 불안정성

② 경험 리플레이(experience replay, replay buffer) 

정의 : 에이전트가 환경에서 겪은 경험을 저장해두는 메모리. 보통 한 스텝을 (s, a, r, s', done)의 형태로 저장함 

○ 취지 : 강화학습에서 데이터는 (y1, (x1, u1)) → (y2, (x2, u2)) → (y3, (x3, u3)) → ···와 같이 연속된 샘플이므로 서로 상관성이 높고 분포도 계속 변함. 그런데 딥러닝(SGD)은 보통 샘플이 i.i.d.일 때 훨씬 안정적으로 잘 돌아가므로, 상관성이 높은 데이터 하에서는 업데이트가 한쪽으로 튀면서 발산/진동하기 쉬움

○ 학습할 때는 지금 막 한 경험만을 업데이트하지 않고, 버퍼에 쌓인 것들 중에서 무작위로 몇 개를 뽑아서 신경망을 업데이트하여 딥러닝(SGD)이 좋아하는 i.i.d.에 가깝게 만들어줌 → local optima 방지, 학습 안정성 개선

○ 경험 리플레이는 state를 저장하지 action을 저장하지 않음 

③ DQN(deep Q-network)

정의 : Q learning을 deep learning으로 구현한 것. 종종 off-policy로 구현됨 

○ online network (Q-network) : 지금 학습 중인 네트워크. 현재 파라미터 θ로 Q(s, a; θ)를 출력하고, 이걸로 행동 선택(ε-greedy)도 하고 SGD로 계속 업데이트됨 

○ target network : online network를 복사해 둔 느리게 변하는 네트워크. 파라미터 θ-로 Q(s, a; θ-)를 출력해서 타겟 값 y = r + α maxa' Q(s', a'; θ-)을 만들 때 사용함. 일정 주기마다 θ- ← θ (hard update)를 하거나 조금씩 따라가게 해서 타겟을 안정화함

○ 경험 리플레이와의 비교 : 둘 다 학습을 안정화한다는 같은 목표를 가진 서로 다른 장치

○ 경험 리플레이 : 데이터를 섞어서(i.i.d.에 가깝게) 샘플 상관성과 분포 변화 문제를 줄임

○ DQN : 타겟 y = r + α max Q(s', a')를 만들 때 쓰는 Q가 계속 흔들리면 발산하기 쉬우니, 타겟을 계산하는 네트워크를 느리게 업데이트해서 움직이는 목표 문제를 줄임 

○ SGD : yk를 레이블처럼 간주하기 위해 yk가 w에 대한 함수라는 사실을 무시

 

 

○ mini-batch SGD : 리플레이 버퍼로부터 샘플링된 mini-batch를 이용

 

 

○ Pytorch 상의 구현 

 

Figure. 5. Pytorch 상의 구현

 

○ 왼쪽 (대안형) : forward(state, action) -> q_scalar (batch, 1). 가능한 행동을 전부 넣어서 Q(s,1), Q(s,2), ···를 여러 번 forward 해서 비교해야 한다는 단점이 있음

○ 오른쪽 (DQN 일반형) : forward(state) -> q_values (batch, num_actions). 한 번 forward를 한 뒤 argmax를 하면 되므로 행동 선택이 쉽고, 이는 계산 효율이 좋음. 또한, 앞쪽 hidden layer를 공유하니까, 어떤 행동의 학습 신호가 공유 표현을 바꾸면서 다른 행동 Q에도 간접 영향이 감 (coupling)

 

random.sample(self.replay buffer, batch size)
next state values = target net(next states).max(1)[0]
target values= rewards + gamma × next state values.detach()
loss = nn.MSELoss()(state action values, target values)
optimizer.zerograd(); loss.backward(); optimizer.step()

 

○ 수많은 게임에 적용됨 : Cartpole 문제 (code), Atari 2600 (2013), AlphaGo (2016) 등

④ DDQN(double Q-learning)

○ Thrun and Schwartz (1993) : Q-learning은 종종 특정 상태 하에서의 action value를 과대평가(overestimate). 이는 같은 네트워크가 선택과 평가를 동시에 하기 때문

 

 

○ double Q-learning (van Hasselt, 2010)

○ 정의 : 두 개의 Q-function(각각 파라미터를 w, w'으로 표시)을 학습한 뒤 이 둘의 평균을 취하면 overestimation 문제 해결. 이때 online network은 action을 고르기 위해 있고, target network는 값을 evaluate

○ 원리 : double estimator는 underestimator 

 

 

○ 수식화

 

 

○ Q-learning vs double Q-learning (Weng et al, 2020) : Q-learning의 learning rate가 βk = c / k이고 double Q-learning의 learning rate가 βk = 2c / k이며, linear function approximation을 고려하면 다음을 얻을 수 있음. double Q-learning의 learning rate가 더 크기 때문에 더 빠르게 수렴 

 

 

○ 예시 : JAX 상에서 DQN의 overestimation과 DDQN (code

○ clipped double Q-learning (Fujimoto, van Hoof, David Meger, 2018)

 

 

⑤ Dueling DDQN (Wang et al, 2016)

 

출처: UMich ECE567

Figure. 6. Dueling DDQN

 

○ 정의 : advantage function A(s, a) := Q(s, a) - V(s)에 대하여, Q(s, u; w, wv, wa) = V(x; w, wv) + A(x, u; w, wa)를 이용하여 V, A를 각각 예측하는 모델을 만든 뒤 나중에 합치는 것

○ 취지 : 최적 행동을 제외하면 모든 행동이 중요한 건 아님. A(s, a)는 상태 s에 대하여 행동들을 대조(contrast)할 수 있음

○ 비식별성(unidentifiability) 문제 : Q(s, a) = V(s) + A(s, a) = (V(s) + c) + (A(s, a) - c), c ∈ ℝ처럼 해가 무수히 많이 나옴

해결방법 1. substract max : Q(x, u; w) = V(x; w) + (A(x, u; w) - maxv A(x, v; w))

○ greedy policy에서 Q(x, a*) = V(x)이므로 A가 최적 정책에서 0이 되도록 강제함 

해결방법 2. substract mean : Q(x, u; w) = V(x; w) + (A(x, u; w) - (1/|𝒜|) ∑v A(x, v; w))

○ 장점 : 최적화 안정성을 높임. 비식별성 문제는 해결

○ 단점 : substract mean을 쓰면 V가 V*가 아니라 평균 Q라는 다른 baseline이 되어버려서 V, A의 의미가 원래 V*, A*와 다름 

○ 예시 : CartPole (code)

⑥ multi-step target (Sutton & Barto, 1998)

○ Q(xk, uk) = 𝔼[r(xk, uk)] + αr(xk+1, π*(xk+1)) + ··· + αn-1r(xk+n-1, π*(xk+n-1)) + αn maxv Q(xk+n, v)

○ SARSA with multi-step target (슬라이딩 윈도우 방식) : (rk(n) + αn maxv Q(xk+n, v; w) - Q(xk, uk; w))2를 손실함수로 둠

⑦ prioritized DDQN (prioritized replay, Schaul et al., 2016) 

○ 정의 : 정보이론의 surprisal을 이용하여 경험에 가중치를 부여

단계 1. 새로운 경험이 추가되면 가장 높은 우선순위인 zmax를 부여

단계 2. m개의 경험을 토대로 pk = zk / ∑i zi를 계산 

단계 3. 경험 k가 샘플링됐다면 이것의 가중치 k의 변화량을 다음과 같이 정의 

 

 

⑧ distributed DQN (Bellemare et al., 2017)

 

 

⑨ noisy DQN

DON (deep O-network)

결론 : 이들을 모두 응용하면 좋은 퍼포먼스를 얻을 수 있음

 

출처: 이미지 클릭

Figure. 7. rainbow

 

종류 3. actor-critic

① 일반적인 actor-critic

정의 : 일반화된 policy iteration. policy π(s)를 직접 학습하는 것

○ 취지

Q-learning은 state가 continuous해도 되는 반면 action은 discrete해야 함

○ actor-critic은 action 및 state가 continuous해도 됨

○ 일반적으로 action space가 수십 개면 DQN을 쓰고, 그 이상이면 policy gradient를 사용함 

○ DQN은 input이 x, 출력이 u이지만, actor-critic은 입력이 x, u이고 출력이 Q(x, u) ( action space가 무한하므로)

구성요소 1. critic

○ 현재/개선된 policy를 평가하거나 학습 신호를 주는 쪽

○ TD(λ), double-Q, clipped double-Q

구성요소 2. actor

policy를 개선 하는 쪽

○ 현재 Q 함수에 기반한 ε-greedy 또는 policy-gradient

구성요소 3. parameterized policy : πw(u | x)

○ 과정 예시

 단계 1. frame을 받음

단계 2. P(action)을 얻기 위해 forward를 propagate함

단계 3. P(action)으로부터 a를 샘플링

단계 4. 게임의 나머지를 진행

단계 5. 만약 게임에서 이기면 ∇θ 방향으로 진행

단계 6. 만약 게임에서 지면 -∇θ 방향으로 진행

종류 1. on-policy actor-critic 

○ actor가 따르는 policy = 데이터를 모으는 policy

○ 즉, behavioral policy = target policy

종류 2. off-policy actor-critic

○ actor는 보통 target policy

○ 데이터는 replay buffer 등에 저장된 behavior policy로부터 옴

○ critic은 이 데이터를 사용해 target policy를 평가/개선하는데 필요한 값을 학습

② A3C(asynchronous advantage actor-critic)

③ policy gradient theorem

 

 

ρw : discounted state distribution (또는 geometric distribution, discounted occupancy measure) 

○ ∇w log πw(u | x) : score function

○ Gibbs 정책

 

 

○ Gaussian 정책 : w log πw(u | x) = (u - μ(x)) ϕ(x) / σ2, μ(x) = ϕT(x) w

④ REINFORCE (Williams, 1988, 1992)

 

 

○ Q-function을 추정하기 위해 Monte Carlo 사용

○ on-policy

○ 분산이 크다는 단점

○ 예시 : CartPole (code

⑤ variance reduction theorem

○ 정의 : 주어진 F(x)에 대하여 𝔼[ϕ(x)] = 0이고 F(x)와 높은 상관성을 가지는 ϕ(x)를 이용해 Var(F(x) - ϕ(x))의 분산을 줄이는 방법

○ policy gradient theorem에서의 적용

 

 

○ Gw(xk)가 action-independent여야 하는데 xk-1과 의존하는 건 상관 없지만 xk+1과 의존하게 되면 uk의 정보를 암시하므로 부적절

⑥ NPG(natural policy gradient)

○ policy gadient theorem은 일종의 최적화 알고리즘 : Euclidean. 2차 항이 없으면 ±에서 최대, 최소

 

 

○ NPG (Kakade et al., 2001)

 

 

○ PG의 수렴성 (Mei et al., 2020) : 상태와 행동 집합이 유한한 tabular data 기준으로,

 

 

○ β = (1 - α)3 / 8

○ S : 상태의 개수. 일반적으로 매우 크므로 PG의 수렴성 논증에서 문제가 됨

○ ρ : discounted state distribution 

○ c : 상수

○ d : 초기 조건의 분포

○ NPG의 수렴성 (Agarwal, 2020) : 상태와 행동 집합이 유한한 tabular data 기준으로,

 

 

○ β = (1 - α)2 log |𝒜|

○ t : 반복수 

○ NPG + entropy regularization 

 

 

○ 정책 π를 보통 다음과 같이 설정함 

 

 

○ β = (1 - α) / τ로 두면, 위 정책은 soft policy iteration (≃ softmax policy)가 됨

○ τ → 0으로 보내면 soft policy iteration은 다시 policy iteration이 됨 

⑦ TRPO(trust region policy optimization)

○ performance difference lemma (Kakade & Langford, 2002)

 

 

○ local approximation 

 

 

○ TRPO (Schulman et al., 2015)

 

 

○ 서로 다른 learning rate β 하에 TRPO = NPG 

○ learning rate β는 제약조건을 만족하도록 백트래킹 선형 탐색(backtracking line search)을 통해 선택됨

○ KL divergence 제약은 정책이 너무 빠르게 바뀌는 것을 제약함

○ monotonic improvement theorem : 적절한 learning rate 하에 Vwk+1(x0) ≥ Vwk(x0)가 성립함 

⑧ PPO(proximal policy optimization)

○ 취지 : NPG와 TRPO는 Fisher information matrix의 역행렬 계산을 요하므로 (즉, 2nd order method이므로) 계산 비용이 큼

○ PPO : 1st order method 

 

 

○ PPO-CLIP (clipped PPO) : 보수적으로 모델이 덜 변화하도록 min을 사용. 두 번째 항의 비례계수는 1로부터 ϵ 이상 커지면 1±ϵ가 되도록 함 

 

 

⑨ DPG(deterministic policy gradient)

 

 

⑩ off-policy DPG

 

 

⑪ DDPG(deep DPG) : 다음과 같이 손실함수를 정의하여 역전파를 함 

 

 

⑫ TD3(twin delayed DDPG) (Fujimoto, van Hoof, Meger, 2018)

○ clipped double-Q (= twin) + DPG

 

def train(self, cur_time_step, episode_time_step, state, action, reward, next_state, done):
    self.add_to_replay_memory(state, action, reward, next_state, done)

    if len(self.replay_memory_buffer) < self.batch_size:
        return

    if cur_time_step % self.update_every != 0:
        return

    for it in range(self.update_every):
        mini_batch = self.get_random_sample_from_replay_mem()

        state_batch = torch.from_numpy(np.vstack([i[0] for i in mini_batch])).float().to(self.device)
        action_batch = torch.from_numpy(np.vstack([i[1] for i in mini_batch])).float().to(self.device)
        reward_batch = torch.from_numpy(np.vstack([i[2] for i in mini_batch])).float().to(self.device)
        next_state_batch = torch.from_numpy(np.vstack([i[3] for i in mini_batch])).float().to(self.device)
        done_list = torch.from_numpy(np.vstack([i[4] for i in mini_batch]).astype(np.uint8)).float().to(self.device)

        with torch.no_grad():
            noise = torch.randn_like(action_batch) * self.target_noise
            noise = torch.clamp(noise, -self.noise_clip, self.noise_clip)

            next_action = self.actor_target(next_state_batch) + noise
            next_action = torch.clamp(next_action, self.action_lower_bound, self.action_upper_bound)

            target_Q1, target_Q2 = self.critic_target(next_state_batch, next_action)
            target_Q = torch.min(target_Q1, target_Q2)
            target_Q = reward_batch + self.gamma * (1.0 - done_list) * target_Q

        current_Q1, current_Q2 = self.critic(state_batch, action_batch)
        loss_crt = F.mse_loss(current_Q1, target_Q) + F.mse_loss(current_Q2, target_Q)

        self.crt_opt.zero_grad()
        loss_crt.backward()
        self.crt_opt.step()

        if it % self.policy_delay == 0:
            actor_action = self.actor(state_batch)
            q1, q2 = self.critic(state_batch, actor_action)
            loss_act = -q1.mean()

            self.act_opt.zero_grad()
            loss_act.backward()
            self.act_opt.step()

            self.soft_update_target(self.critic, self.critic_target)
            self.soft_update_target(self.actor, self.actor_target)

 

○ 퍼포먼스가 좋음 

○ 예시 : Bipedal Walker Problem (code)

⑬ CRL(contrastive reinforcement learning)

○ Bayes optimal classifier 

 

 

종류 1. GCRL(goal-conditioned reinforcement learning) 

○ 전제 

 

 

방법 1. Bootstrapping / TD-learning : goal을 state처럼 간주하는 방법

 

 

문제 1. Q(s, a, g) 테이블의 크기는 |𝒮| × |𝒜| × |𝒢|로 이는 |𝒢|에 비례하여 비효율적

문제 2. goal 간의 shared structure를 잘 다루지 못함 

방법 2. occupancy-measure-based : goal을 next state처럼 간주하는 방법

 

 

방법 1에서 ρ(g)는 goal sampling prior이고 방법 2에서 ρ(g)는 negative/base distribution

○ Qπ(s, a, g) ≠ Qg*(s, a)

○ Qπ(s, a, g) : 지금 쓰는 혼합 정책으로 갔을 때 g에 닿을 가능성

○ Qg(s, a) : g만 목표로 한 최적 정책이면 얼마나 잘 닿는가 

○ 예 : Four Rooms Grid World 

⑭ 알파제로(AlphaZero) : 바둑 기보에 의존하는 알파고(AlphaGo) 모델을 개량한 것

 

출처: UMich ECE567

Figure. 8. 알파제로

 

○ 개요

○ search-based policy iteration 

○ 일종의 actor-critic

○ actor : policy network를 바탕으로 MCTS(Monte Carlo tree search)를 수행해 더 나은 policy target을 만듦

critic : self-play 결과를 이용해 state value z를 학습

단계 1. 한 번의 시뮬레이션에서 고정된 policy network가 prior를 제공하고 MCTS가 그 prior를 바탕으로 탐색

○ 각 상태 s에서 행동 a로 분기하는 가지는 Q-value Q(s, a)와 # of visit N(s, a) 값을 가짐 

 

Figure. 9. MCTS의 구조

 

단계 1-1. 다음을 계산

 

 

단계 1-2. 처음 본 상태를 만나거나 종결 상태를 만나면 그 경로 상의 Q와 N을 업데이트. 이때 최종 상태가 나와 같은 색의 돌인지 아닌지에 따라 value fuction의 값을 더할지 뺄지가 정해짐. value network는 search를 돕고 학습 안정화에 기여

 

 

Figure. 10. 계산 과정 예시

 

단계 1-3. 처음 본 상태를 만난 경우 이를 트리에 포함시키고 N(sfinal, a) = Q(sfinal, a) = 0, ∀a 로 둠

단계 2. 여러 시뮬레이션 결과로 더 나은 move distribution π를 획득 

○ π는 더 나은 정책 타깃으로 MCTS에 의해 만들어짐 (actor-like)

 

 

단계 3. 실제 대국(self-play episode)이 끝나서 실제 게임 결과 z ∈ {-1, 0, +1}를 얻음 (critic-like)

○ 일반적인 actor-critic은 critic이 먼저 있고 actor가 그 신호로 policy gradient update하는 반면, 알파제로는 actor가 먼저 있고 대국을 통해 critic 신호를 얻는 방식 (순서가 반대)

○ self-play 데이터는 과거 network들로부터 생성될 수 있어서 넓게 보면 현재 network와 다른 policy에서 온 데이터일 수 있기 때문에 off-policy스러운 면이 있음

단계 4. policy network가 (s, π, z)로 학습됨. value network는 (s, z) 쌍으로 학습됨

 

 

○ π log p는 cross-entropy 형식

○ 학습된 새 모델(self.nnet)과 이전 모델(self.pnet)을 서로 대결시킴. 새 모델이 충분히 잘하면 채택, 아니면 폐기

○ 예시 : Othello Using AlphaZero 

종류 4. reward design

종류 4-1. reward shaping

○ 개요

○ sparse reward인 경우 제대로 학습되지 않음 

○ LLM 등의 경우 reward 정의가 어려움 

○ 수식화 : reward shaping function F는 다음과 같음 

 

 

○ potential-based shaping function 

○ F(x, a, x') = αϕ(x') - x, ϕ : 중력퍼텐셜 같은 퍼텐셜

○ F가 potential-based shaping function이면 optimal policy는 reward shaping 이후에도 동일함 

 

 

종류 4-2. RLHF(RL with human feedback)

○ 개요 : 기존 강화학습의 문제점은 크게 다음과 같음

○ reward misspecification

○ reward hacking : 예를 들어 로봇이 goal을 향해 가는 게 아니라 사소한 행동을 반복하여 보너스를 얻으려는 행동

○ 해결 방법 : RLHF

예 1. GPT3 (RL + PPO) : pre-training (base model) → SFT (supervised fine-tuning) → RLHF

 

Figure. 11. GPT3 RLHF 파이프라인

 

단계 1. pre-training 및 SFT 모델로 πref를 만듦 

단계 2. reward model을 학습

○ 변수 : 프롬프트 x, 모델의 답변 y

○ 문제 정의 : st = (x, y1, ···, yt), at = yt+1, π(yt+1, st) (next token prediction), r(st, at)?

○ 보상은 상대평가로 정의됨 : 사람은 절대평가보다 상대평가를 선호. 상대평가가 절대평가보다 더 안정함 

○ Bradley-Terry model (1952) : (프롬프트, 답변)의 두 궤적 τ1, τ2가 주어져 있을 때 사람은 다음처럼 선호를 갖는다고 가정

 

 

○ (프롬프트, 답변)에 대한 스코어를 도출하는 보상함수를 다음과 같이 학습 : τk+, τk-는 동일한 질문에 대해 두 개의 최종 답변이고 하나는 선호, 다른 하나는 비선호

 

 

단계 3. PPO-CLIP으로 강화학습 

○ PPO는 보통 매 스텝마다 보상이 있어야 다루기 편함

○ 마지막 토큰 시점에는 reward model의 최종 점수

 

 

○ 중간 토큰들에는 KL penalty : πref에서 너무 멀어지지 않게 함

 

 

○ 현재 시점부터 종료까지의 누적 보상(reward-to-go) : critic은 보통 이를 예측하려고 함 

 

 

예 2. DPO 

 

Figure. 12. DPO 파이프라인

 

보상모델을 학습하지 않고 사람 선호 데이터만 보고 chosen 답변은 더 크게, reject 답변은 더 작게 만들도록 바로 학습

○ 각 프롬프트(x)마다 여러 응답(y) 후보 중 어떤 arm을 고를지 결정하는 bandit 문제처럼 봄

○ KL divergence로 regularizer를 두면 optimal policy π*는 매우 좋은 형태를 가짐 

 

 

○ β↓ : reward-seeking

○ β↑ : more conservative 

○ 증명 

 

 

○ 정확한 r(x, y)를 알 수 없으므로 손실함수를 다음과 같이 정의함 

 

 

○ RM+PPO와 DPO의 비교

 

Table. 1. RM+PPO와 DPO의 비교

 

○ 예시 : Half Cheetah 

예 3. zeroth-order policy optimization for RLHF 

 

 

예 4. SZPO(stochastic zeroth-order policy optimization) : 수렴성 있음

단계 1. 각 반복 t = 1, ..., T에서 랜덤 방향 vt를 샘플링하고 θt' = θt + μtvt를 계산  

단계 2. 각 비교 n = 1, ..., N에서 현재 정책 πθt와 perturbed 정책 πθt'으로부터 궤적을 각각 샘플링하고 M개의 human evaluator로 ot,n,m ∈ {0, 1}을 계산 (단, t는 반복 인덱스, n은 비교 인덱스, m은 human evaluation의 수)

단계 3. improved direction인 ĝt = stvt를 계산

 

 

단계 4. policy를 업데이트 : θt+1 = θt + αt ĝt

○ 예 : Half Cheetah 

예 5. Sign-SZPO : 수렴성 있음

○ preference model이 알려지지 않을 때 st = Sign(𝔼[r(τθt') - r(τθt)])와 같이 정의

○ 수렴성이 있는 이유 : dirction과 sign이 강한 상관계수가 있기 때문

 종류 4-3. RLVR(RL from verifiable reward)

○ 개요

○ RLHF에서 사용하는 human annotation은 비용이 큼

○ 수학적 증명처럼 자동으로 검증할 수 있음

○ 목적함수 

 

 

예 1. GRPO(group relative policy optimization)

단계 1. 각 초기 상태마다 현재 정책으로부터 여러 개의 출력들을 샘플링

같은 초기 상태에서 나온 답변들끼리 비교하면, 질문 자체의 난이도 차이를 어느 정도 상쇄할 수 있음

단계 2. 각 trajectory에 대해 verifier를 통해 검증 가능한 보상을 획득

단계 3. 절대 보상을 그룹 내 상대적 advantage로 변환 

 

 

단계 4. 목적함수 : PPO와 유사함

 

 

○ 공통점 : policy rate, clipping, KL penalty 

○ 차이점 : PPO는 advantage를 critic/value 모델에서 얻고, GRPO는 advantage를 그룹 상대 비교로 만듦

 

 

4. 일반 의사결정 모형 [목차]

MAB(multi-armed bandit) : UCB, 톰슨 샘플링 등

optimal stopping 문제

논리 추론 모델  

 

 

5. 심화 주제 [목차]

⑴ unsupervised learning 

① benchmark : URLB 

② baseline : Diversity is all you need, Forward Backward Representation 

③ env : Dm_control, Maze, Hopper, Cheetah, Quadruped, Walker

⑵ online goal-conditioned reinforcement learning 

① benchmark : JaxGCRL 

② baseline : Contrastive Reinforcement Learning, SAC, PPO, TD3 

③ env : Brax, locomotion, manipulation

⑶ offline goal-conditioned reinforcement learning 

① benchmark : OGBench 

② baseline : CRL, HIQL, QRL, implicit Q/V learning 

③ env : locomotion, manipulation, powderworld

④ example follow-up : TMD, MQE 

⑷ continual reinforcement learning 

① benchmark : CORA 

② baseline : EWC, PC, CLEAR 

③ env : Atari, Procgen, Minihack, CHORES, Nethack (codebase

④ env without benchmark : AgarCL, Jelly Bean World 

⑸ open-ended reinforcement learning 

① benchmark : Craftax baseline 

② baseline : PPO, ICM, RND 

③ env : Craftax 

⑹ safe reinforcement learning 

① benchmark : Omnisafe 

② baseline : CPO, FOCOPS, PPO-Lagrangian and TRPO-Lagrangian 

③ env : Safety-Gymnasium, Safe-Control-Gym 

⑺ multi-agent reinforcement learning 

① benchmark : BenchMARL 

② baseline : MAPPO, IPPO 

③ env : PettingZoo, VMAS 

⑻ queueing network control via reinforcement learning 

① benchmark : QGym 

② env : DiffDiscreteEventSystem 

 

입력: 2021.12.13 15:20

수정: 2026.02.20 23:38