My Blog

강화학습(DQN) 공부기록 15


DQN 정의

DQN (Deep Q-Network)은 강화학습의 한 형태로, 에이전트가 환경에서 어떻게 행동해야 할지를 학습하는 데 사용되는 알고리즘입니다. DQN은 고전적인 Q-러닝을 기반으로 하되, 복잡한 문제를 풀기 위해 신경망을 사용하여 행동 가치 함수(Q-function)를 근사합니다. Q러닝은 앞서 공부한 바와 같이 에이전트가 특정 상태에서 어떤 행동을 취했을 때 얻을 수 있는 '미래 보상의 총합'을 예측하는 함수, 즉 Q-함수를 업데이트하는 방법입니다. Q-함수는 상태(state)와 행동(action)의 쌍에 대한 예상 보상 값을 매핑합니다. 벨만 방정식: Q-값을 업데이트하는 데 사용되며, 현재 보상과 다음 상태에서의 최대 Q-값에 기반합니다. Q(s,a)=r+γmax a′Q(s′,a′) 여기서 γ는 할인율(discount factor)로 미래의 보상을 현재 가치로 환산할 때 사용되며, r은 받은 보상, s′은 다음 상태, a′는 다음 행동을 나타냅니다. DQN은 쉽게 말하면 위의 Q 함수를 인공 신경망 파라미터를 사용해 업데이트합니다. 인공신경망을 이용해 아주 많은 경우의 수를 가지는 상태, 행동의 조합에서도 그에 맞는 Q함숫값을 구할 수 있게 됩니다. 인공 신경망은 연속된 (상태, 행동)에 대해 그와 유사한 Q함숫값을 출력하는 역할을 하며, 이러한 인공신경망은 이산화된 격자 공간을 벗어나 연속적인 값을 근사식으로 만드는 역할을 합니다. 목적은 Q함숫값이 TD target에 맞도록 하는 부분이므로 목적 함수를 torch의 Loss함수 MSE로 간단히 구현할 수 있습니다. 목적함수를 최소화 하는 방향으로 제곱 오차 형태로 경사하강법을 이용해 인공 신경망 파라미터를 업데이트하는 수식으로 만들어지게 됩니다. 인공신경망을 이용해 Q 함수 학습할때 주의점 현재 상태와 바로 다음 상태 사이의 최적 Q함숫값을 구했다고 하더라도 그 Q 함숫값이 전체 에피소드에서 최적이 아닐 수 있습니다. 인공신경망을 이용해 학습을 진행해 업데이트를 하면, Target에 해당하는 Q 함수값과 현재 학습하는 Q 함수값이 동시에 업데이트되어 버립니다. 이때 업데이트의 목표 대상인 Target이 바뀌어 버리면 목표치 자체가 불분명해지고 Q 함수값의 변화가 매우 급해 목적함수를 이용한 경사 하강법을 적용하기 적합하지 않습니다. 그래서 아래와 같이 경험 리플레이 버퍼, 타겟 신경망 그리고 보상 클리핑 방법을 적용하게 됩니다.

경험 리플레이

경험 리플레이 (Experience Replay): DQN은 학습 과정에서 발생한 경험(상태, 행동, 보상, 다음 상태)을 메모리에 저장합니다. 그리고 이 메모리에서 무작위로 샘플을 추출하여 신경망을 학습시키는데, 이는 데이터의 상관 관계를 줄이고 학습 과정을 안정화하는 데 도움을 줍니다. 시간차 학습 방식을 이용한 Q함수 학습의 낮은 분산, 높은 편향의 문제를 해결하는 방법으로, 연속된 시간의 흐름에서 지속적으로 학습하면 에이전트는 인접된 시간에서만 최적의 Q함수를 찾는 학습을 진행하게 됩니다. 이럴때 전체 에피소드 환경에서 최적값이 아닌 경우가 많으므로 최대한 다양한 학습을 하도록 유도합니다. 컴퓨터 메모리를 이용해 에이전트가 겪은 기록을 저장하는 경험 리플레이 버퍼를 사용합니다. 경험 리플레이 버퍼에는 (상태, 행동, 보상, 다음시점 상태)를 저장하고 임의배치 크기로 샘플링하여 Q함수를 학습하게 됩니다. 임의로 샘플링해서 학습하면 연속된 시간에 대해서만 종속되는 것을 벗어나 다양한 시점에서 최적값을 찾아가는 것을 기대할 수 있습니다. 이처럼 리플레이 버퍼에 기록하는 내용을 transition이라고 부르고, 그 내용은 (상태, 행동, 보상, 다음시점 상태) 로 저장됩니다. Q함수 업데이트할때 인공 신경망 자체의 행동을 결정짓는 정책이 학습되는 것이 아니고, 경험 리플레이 버퍼의 배치에 영향을 받습니다. 그래서 DQN 알고리즘을 오프 폴리시(Off-Policy) 방법이라고 합니다. 환경에서 바로 에이전트로 피드백이 전달되는 것이 아닌, 경험 리플레이 버퍼를 통해 정보가 전달됩니다.

타겟 신경망

고정 타겟 네트워크 (Fixed Target Network): DQN은 두 개의 신경망을 사용하는데 하나는 행동 가치를 예측하기 위한 주 네트워크, 다른 하나는 안정적인 학습을 위해 주 네트워크의 가중치를 일정 기간 동안 고정시켜 두는 타겟 네트워크입니다. 이러한 방식은 학습 과정 중 발생할 수 있는 발산(divergence) 문제를 방지합니다. 쉽게 표현하자면 인공 신경망을 이용해 Q 함수를 업데이트하는 과정에서 두가지 신경망을 보게 됩니다. 하나는 훈련 에이전트 신경망 또다른 하나는 타겟 에이전트 신경망 훈련 에이전트 신경망은 DQN에서 직접적으로 학습하여 파라미터 갱신이 이뤄지는 훈련되는 신경망으로 보면 되고, 타겟 에이전트 신경망은 훈련 에이전트 신경망이 학습하면서 파라미터 갱신되더라도 그 동안은 훈련되지 않는 상수처럼 보이는 신경망입니다. 학습 도중 학습 목표가 끊임없이 변한다면 정상적으로 학습되지 않고 발산할 수밖에 없습니다. 그래서 이를 분리해서 학습하게 되는데, 먼저 일정 주기동안 학습 에이전트 신경망이 학습한 이후, 타겟 에이전트 신경망의 파라미터를 갱신하게 됩니다. 학습 에이전트 신경망과 타겟 에이전트 동기화를 한 이후, 다시 학습 에이전트만 학습하고 타겟 에이전트는 고정됩니다. 또다시 일정 주기동안 학습되면 학습 에이전트 신경망과 타겟 에이전트 동기화하게 됩니다. 이 과정의 반복으로 학습이 이루어지게 되는 원리입니다.

보상 클리핑

Deep Q-Network (DQN)에서 보상 클리핑은 에이전트의 학습을 안정화시키고 수렴을 가속화하는 기법 중 하나입니다. 보상 클리핑은 모든 보상을 일정 범위, 예를 들어 -1과 +1 사이로 제한하는 것을 말합니다. 이 방법은 여러 다양한 환경에서 발생하는 보상의 규모 차이를 일정하게 조정하여, 학습 과정에서 발생할 수 있는 문제들을 줄여줍니다. 보상 클리핑의 주요 목적과 효과는 다음과 같습니다: 학습의 안정성 향상: 보상의 규모가 크게 다를 경우, 그라디언트 업데이트가 불안정해질 수 있습니다. 크거나 작은 보상 값이 학습 과정에서 네트워크의 가중치에 큰 영향을 미치며, 이는 종종 발산으로 이어질 수 있습니다. 보상을 클리핑함으로써, 이러한 변동성을 줄여 네트워크 학습이 더 안정적으로 이루어질 수 있도록 돕습니다. 수렴 속도 향상: 보상의 범위가 제한됨으로써, 학습 알고리즘이 다루어야 할 범위가 줄어들고, 결과적으로 더 빠르게 최적의 정책을 찾아 수렴할 수 있습니다. 일반화 능력 강화: 다양한 환경에서 일관된 보상의 범위를 갖게 되면, 비슷한 유형의 결정을 내려야 하는 다른 환경에서도 잘 작동할 수 있는 일반화된 정책을 학습하는 데 도움이 됩니다. 보상 클리핑은 많은 상황에서 유용하지만, 모든 문제에 적합한 것은 아닙니다. 보상의 의미를 일부 손실할 수 있으며, 특히 원래 보상의 규모가 중요한 정보를 제공하는 경우 클리핑으로 인해 중요한 학습 신호가 손실될 수 있습니다. 예를 들어, 매우 높은 보상이 중요한 긍정적인 피드백을 제공하는 경우, 클리핑은 이 정보를 '잘라내어' 에이전트가 이를 충분히 학습하지 못하게 할 수 있습니다. 따라서 사용 환경과 목표에 따라 보상 클리핑의 적용을 신중히 고려해야 합니다.

파생 알고리즘 DDQN

DDQN은 Deep Q-Network (DQN)의 변형으로, DQN에서 발생하는 일부 문제를 해결하기 위해 고안되었습니다. DQN은 강화학습의 일종으로, 심층 신경망을 이용해 에이전트가 최적의 행동을 학습할 수 있도록 도와줍니다. DQN은 Q-learning 알고리즘을 딥러닝에 적용한 것이며, 각 상태에서 행동을 선택할 때 최대의 예상 보상을 가져다 줄 행동을 선택합니다. 여기서 DQN에 발생하는 문제는 에이전트가 환경으로부터 발생하는 오버 이스티메이션 잡음을 완전히 알수 없기에 적은 학습에도 최적이라 생각하는 문제가 발생합니다. 전체 에피소드에서 최적이 아닐 수 있으나, 적은 에피소드 학습에서는 최적이라고 나온 것을 Q함숫값에 계속 누적해서 결국엔 잘못된 최적을 학습하게 되는 경우가 있습니다. 그래서 환경의 잡음이 있는 상태에서 학습한 에이전트 이외 다른 에이전트를 도입해 최적의 행동을 추정하고 그 행동으로부터 Q 함수값을 이용해 학습의 타겟으로 이용하게 됩니다. 이것은 학습을 객관적으로 수행하는 효과가 있는데, 구체적으로는 훈련 에이전트 신경망과 타겟 에이전트 신경망 두개의 에이전트를 이용한 DQN과 기본 틀은 비슷하나, DDQN알고리즘은 TD-target 을 두 신경망을 교차해서 이용하는 점이 가장 큰 차이점입니다. DDQN의 주요 개선점은 Q-learning의 오버에스티메이션(과대평가) 문제를 줄이는 것입니다. 오버에스티메이션은 에이전트가 어떤 상태의 가치를 과도하게 평가하여 잘못된 정책을 학습하는 현상을 말합니다. DQN: DQN에서는 한 신경망(Q-network)을 사용하여 가장 큰 Q 값을 가진 행동을 예측하고, 이 값을 목표 Q 값으로 사용합니다. 이 때문에 가치가 과대평가되어 잘못된 정책을 학습할 가능성이 높아집니다. 이는 DQN이 자신의 예측을 기반으로 자신의 예측을 업데이트하는 구조에서 비롯됩니다. DDQN: DDQN에서는 두 개의 신경망을 사용합니다. 하나는 Q-network로 현재 정책을 평가하는 데 사용되며, 다른 하나는 target Q-network로 목표 Q 값을 생성하는 데 사용됩니다. DDQN은 target Q-network에서 가장 큰 Q 값을 가진 행동을 선택하지만, 이 행동의 값을 업데이트에 사용할 때는 Q-network의 예측 값을 사용합니다. 이로 인해 선택 편향이 줄어들고, 오버에스티메이션 문제가 완화됩니다. DQN: 훈련 과정에서 target Q-network는 일정한 주기마다 Q-network의 가중치를 복사받아 업데이트됩니다. 이는 목표값을 안정적으로 유지하면서 학습의 발산을 막는 데 도움이 됩니다. DDQN: DDQN 역시 target Q-network를 사용하지만, 목표 Q 값을 계산할 때 Q-network를 사용하는 추가적인 단계가 도입됩니다. 이는 두 신경망의 역할을 분리하여 더욱 정확한 학습을 가능하게 합니다. DDQN은 DQN의 개선된 버전으로, DQN이 가진 오버에스티메이션 문제를 해결하기 위해 두 개의 분리된 네트워크를 사용합니다. 이러한 구조는 에이전트가 더 신뢰성 있는 데이터에 기반하여 학습하도록 하여, 최적의 행동 결정 정책을 더 정확히 학습할 수 있게 합니다. DDQN의 도입으로 강화학습에서 보다 높은 성능과 안정성을 달성할 수 있게 되었습니다. 최적 행동은 훈련 에이전트 신경망으로 최적화 진행, Q 함수값은 타겟 에이전트 신경망으로부터 최적화 진행합니다.

파생 알고리즘 DDQN-PER

강화학습의 DDQN-PER (Double Deep Q-Network with Prioritized Experience Replay) 알고리즘은 경험 리플레이 버퍼에서부터 리플레이 transition을 추출하는 방법으로 기존 DDQN보다 학습 및 개선이 더 잘된다고 주장합니다. 전통적인 강화학습에서는 경험(상태, 행동, 보상, 다음 상태의 튜플)을 임의로 재생하여 신경망을 학습시킵니다. 그러나 모든 경험이 동일한 학습 가치를 가지는 것은 아니기 때문에, PER은 경험을 중요도에 따라 우선순위를 두어 샘플링합니다. 경험의 중요도는 그 경험이 얼마나 예측하기 어려운지, 즉 예측 오류의 크기(TD Error)에 기반하여 결정됩니다. PER을 사용하면 중요한 경험이 더 자주 재사용되어 신경망 학습이 보다 효율적이고 빠르게 이루어질 수 있습니다. 이는 학습 과정에서 중요한 정보를 제공하는 경험들을 놓치지 않고 최대한 활용하려는 시도입니다. 지금까지 DQN이나 DDQN알고리즘은 경험 리플레이 버퍼로부터 임의의 transition을 추출하고 그에 맞춰 학습을 했다면, DDQN-PER은 임의 추출 transition보다 학습에 도움이 되는 transition만 추출하면 성능이 개선될 것이라 보고 있습니다. transition 선호도의 확률분포로, transition의 선호도를 계산하는 방법으로 TD-error이 높은 transition을 추출하여 학습시켜 에이전트에 해당 부분을 더 많이 반영하여 학습할 수 있도록 하는 것입니다. 리플레이 버퍼에 저장된 메모리에 단순한 학습률 이외 가중치를 부여하는 방법으로, 가중치를 선호도가 반영된 TD-error 원소에 각각 곱해주어 TD-error이 과도하게 학습하는 것을 제한하고, 원래 기준으로 보고자 했던 확률분포를 다른 확률분포로 치환하여 기댓값을 계산하는 중요도 샘플링과 같은 개념입니다. DDQN-PER의 작동 원리는, 경험 수집: 에이전트는 환경과 상호작용하면서 경험을 수집합니다. 경험 저장: 수집된 경험은 PER 버퍼에 저장되며, 각 경험은 그 중요도(TD Error)에 따라 우선순위를 받습니다. 경험 재생 및 학습: 학습 시, 버퍼에서 우선순위에 따라 중요한 경험이 선택되어 네트워크를 업데이트합니다. 주기적 타겟 네트워크 업데이트: 주 신경망의 가중치를 주기적으로 타겟 신경망에 복사하여, 타겟 신경망을 업데이트합니다. 정책 실행: 학습된 네트워크를 사용하여 최적의 행동을 선택하고 실행합니다. 장점 및 효과로는, DDQN-PER은 기존 DQN 대비 오버에스티메이션 문제를 줄이고, 중요한 학습 기회를 최대한 활용하여 전반적인 학습 효율과 성능을 향상시킵니다. 이를 통해 에이전트는 보다 빠르고 정확하게 최적의 정책을 학습할 수 있으며, 다양하고 복잡한 환경에서의 성능이 개선됩니다. 경험 리플레이 버퍼에서 선호도가 추가되는 방식이고, 이러한 버퍼에 transition을 추가할때마다 에이전트가 평가하는 최대 선호도를 적용합니다.

Blog Home Back to Post List