[RL] 시간차 학습, 동적계획법

    728x90
    반응형

    시간차 학습(Temporal-Difference Learning)

    MC와 달리 에피소드 끝까지 가디릴 필요가 없음 → 매 step마다 학습 가능

    무한히 계속되거나 에피소드가 매우 긴 환경에서도 사용할 수 있음

    MC보다 V의 초기 추정치에 더 민감(큰 편향)

    재귀적 형태

     

    시간차 학습의 심리-생물학적 의미

    시간차 학습은 행동주의 심리학의 일환인 강화 학습 이론에 기초

    행동이 긍정적인 결과(보상)를 초래하면 그 행동이 강화

    부정적인 결과(벌)를 초래하면 그 행동이 약화  

    TD오차 : 기대한 보상과 실제로 받은 보상 간의 차이( 기대수준보다 높은지 낮은지)

    도파민 뉴런의 반응이 TD오차에 기반

     

    람다(λ)-수익

    n = ∞면(MC) 에피소드가 끝났을 때 모든 상태의 가치를 수정할 수 있으나 분산 이 크고, 끝날 때까지 기다려야 함

    n = 1이면 보상 피드백이 직전 상태의 가치를 수정할 때만 직접적으로 쓰이기 때 문에 정보가 느리게 퍼짐

    여기서 수정된 직전 상태의 가치가 전전 상태의 가치를 수정할 때 사용되고, 전전 상태의 가 치는 전전전 상태의 가치를 수정할 때 사용되고…

    n을 키워도 n 스텝만큼은 가치의 수정이 지연됨

    람다 수익: 여러 단계의 수익을 가중 평균한 것

     

    TD(λ)

    지나온 상태 기억, 기억나는 만큼 반영, 기억 점점 흐려지는 것

    class TDLambdaPrediction(TDPrediction):
        def __init__(self, env, gamma=0.9, alpha=0.1, lambd=0.9):
            super().__init__(env, gamma, alpha)
            self.lambd = lambd
    
        def update_value(self, episode):
            T = len(episode)
            for t in range(T):
                state, action, reward, next_state, done = episode[t]
                td_error = reward + (self.gamma * self.V[next_state] * (not done)) - self.V[state]
                E = np.zeros_like(self.V) # eligibility traces
                E[state] += 1
                for k in range(t, T):
                    state_k, _, reward_k, next_state_k, done_k = episode[k]
                    self.V[state_k] += self.alpha * td_error * E[state_k]
                    E[state_k] = self.gamma * self.lambd * E[state_k] if k < T - 1 else 0

     

    동적 계획법, 몬테카를로, 시간차 학습의 관계

    Day2&amp;Day3.ipynb
    0.78MB

     

    728x90
    반응형

    댓글