My Blog

강화학습(Actor-Critic) 공부기록16


Actor-Critic 알고리즘 정의

강화학습에서 Actor-Critic은 두 가지 기본 아이디어를 합쳐놓은 방법론이에요. 여기서 Actor는 정책을 학습하고 Critic은 그 정책을 평가하는 역할을 합니다. 이 둘이 함께 작동하여 보다 효과적으로 학습할 수 있어요. Actor(행위자): Actor는 에이전트가 취할 행동을 결정하는 정책(policy)을 학습합니다. 간단히 말하면, Actor는 주어진 상태에서 최상의 행동을 선택하는 방법을 배우는 것입니다. 이를 통해 좋은 결과를 얻기 위한 행동을 찾는 것이 목표입니다. Critic(비평가): Critic은 Actor가 선택한 행동이 얼마나 좋은지를 평가하고 피드백을 제공합니다. Critic은 가치 함수(value function)를 학습하는데, 이는 특정 상태에서 기대되는 미래 보상의 총합을 나타냅니다. Critic은 Actor에게 얼마나 좋은 행동인지를 알려주는 역할을 합니다. 여기서 중요한 점은 Actor와 Critic이 서로 다른 신경망을 가지고 있고, 서로 다른 목적을 가지고 있다는 것입니다. Actor는 정책을 학습하여 최상의 행동을 선택하고, Critic은 이 행동이 얼마나 좋은지를 평가하여 Actor를 개선하도록 돕습니다. 이런 협력을 통해 Actor-Critic은 보다 안정적이고 효율적인 강화학습을 가능하게 합니다. 앞서 배웠던 DQN과 비교해서 설명을 해보겠습니다. DQN (Deep Q-Network): DQN은 Q-Learning 알고리즘을 딥러닝과 결합한 것입니다. DQN은 에이전트가 가능한 각 상태에서 가능한 모든 행동에 대한 Q값(행동의 가치)을 추정합니다. 이 추정된 Q값을 통해 에이전트는 각 상태에서 가장 높은 Q값을 가지는 행동을 선택하여 행동을 합니다. DQN은 주로 환경이 고차원이고 연속적인(discrete) 행동 공간을 가지는 경우에 사용됩니다. Actor-Critic: Actor-Critic은 정책(policy)을 학습하는 Actor와 이 정책을 평가하는 Critic으로 구성됩니다. Actor는 주어진 상태에서 최적의 행동을 결정하는 정책을 학습합니다. Critic은 Actor가 선택한 행동의 가치를 평가하여 Actor를 향상시킵니다. Actor-Critic은 주로 연속적인(action space) 행동 공간을 가지는 문제에서 사용됩니다. 정리하자면, DQN은 주로 큰 행동 공간을 다루는 데 좋고, Actor-Critic은 연속적인 행동 공간에서 더 효과적입니다. 또한, DQN은 각 상태에서 행동의 가치를 추정하여 직접적으로 행동을 선택하는 데 사용되지만, Actor-Critic은 정책을 학습하고 이를 평가하여 행동을 선택합니다. 따라서 문제의 성격에 따라 적절한 알고리즘을 선택할 필요가 있습니다.

Actor-Critic 알고리즘 유도과정

Policy Gradient Methods(정책 기울기 방법)은 강화학습에서 사용되는 알고리즘 중 하나로, 직접적으로 정책(Policy)을 학습하는 방법입니다. 여기서 '정책'이란, 주어진 상태(State)에서 특정 행동(Action)을 선택하는 확률 분포를 의미합니다. Policy Gradient Methods는 보상을 최대화하는 정책을 학습하기 위해 확률적인 방법을 사용합니다. 알고리즘은 다음과 같은 과정으로 작동합니다: 정책(Parameterized Policy) 설정: 먼저, 정책을 파라미터화하여 신경망이나 다른 함수 근사기를 사용하여 나타냅니다. 이 신경망은 상태를 입력으로 받고 각 가능한 행동에 대한 확률 분포를 출력합니다. 에피소드 수집: 에이전트는 환경과 상호작용하여 에피소드(시나리오)를 수집합니다. 각 단계에서는 현재 상태를 기반으로 정책을 사용하여 행동을 선택합니다. 보상 계산: 에피소드가 끝나면 각 단계에서 얻은 보상을 계산합니다. 목표는 이 보상을 최대화하는 정책을 학습하는 것입니다. 정책 업데이트: 보상을 최대화하는 방향으로 정책을 조정하기 위해 경사 상승법(gradient ascent)을 사용합니다. 즉, 보상이 더 높은 행동을 할 확률은 증가시키고, 보상이 낮은 행동을 할 확률은 감소시킵니다. 학습 반복: 이러한 과정을 여러 번 반복하여 보상을 최대화하는 정책을 학습합니다. 정책 기울기 방법은 보상을 최대화하는 방향으로 정책을 업데이트하는 것이 중요합니다. 이를 위해 정책의 파라미터에 대한 기울기(gradient)를 사용하여 보상을 증가시키는 방향으로 학습합니다. 이러한 방식으로, 정책 기울기 방법은 보상을 최대화하는 행동을 자동으로 학습할 수 있습니다. 위 Policy Gradient 알고리즘은 몬테카를로 기법을 응용해 학습하는 방식이므로, 많은 경우의 수를 검색하면서 high-variance 높은 분산 문제가 발생하게 됩니다. 이것을 적절히 완화하는 방법이 A2C (Advantage Actor-Critic) 알고리즘입니다. Actor는 행위자로써, 인공 신경망이 추론한 정책에 해당하고, Critic은 비평가로써, 위의 Actor가 추론한 정책이 Q 함수를 통해 잘 추론되었는지 여부를 판단합니다. Actor는 인공신경망 추론한 정책을 소프트맥스(softmax) 함수를 통해 확률밀도함수로 변환시켜 0~1 사이 값으로 안정적으로 변환하고, Critic은 인공신경망으로 추론한 Q함수 값에 실제 가치 함수값을 뺀 Advantage를 계산하는 비평가 역할을 하면서 전체적인 학습이 진행됩니다.

Advantage 정의

액터-크리틱(Actor-Critic) 알고리즘에서 Advantage(어드밴티지)란 현재 상태에서 선택한 행동이 평균적으로 다른 행동들에 비해 얼마나 더 좋은지를 나타내는 값입니다. 여기서 "어드밴티지"는 주로 Critic의 출력인 가치 함수(Value Function)와 Actor의 행동 선택에 사용됩니다. 이를 좀 더 자세히 설명하면, Actor-Critic 알고리즘은 크게 두 부분으로 나뉘어집니다: Actor(액터): Actor는 주어진 상태에서 어떤 행동을 선택할지 결정하는 정책(Policy)을 학습합니다. 이 정책을 통해 에이전트는 환경과 상호작용하며 행동을 선택합니다. Critic(크리틱): Critic은 주어진 상태에서 선택된 행동의 가치를 평가하는 역할을 합니다. 가치 함수(Value Function)를 통해 상태와 행동의 가치를 추정합니다. 여기서 Advantage는 Critic을 통해 계산됩니다. Advantage는 현재 상태에서 선택된 행동의 가치와 다른 가능한 행동들의 가치와의 차이를 나타냅니다. 즉, 해당 행동이 평균적으로 얼마나 좋은지를 나타냅니다. 이러한 Advantage를 사용하여 Actor는 보상을 최대화하는 행동을 선택하는 데 도움을 받습니다. Advantage가 높을수록 해당 행동을 선택할 확률이 증가하게 됩니다. 이를 통해 Actor는 더 나은 정책을 학습하고, Critic은 Actor를 향상시키는 데 사용됩니다. 간단히 말하면, Advantage는 현재 상태에서 선택된 행동이 얼마나 좋은지를 나타내는 지표로서, Actor가 더 나은 행동을 선택하도록 돕는 역할을 합니다.

A2C 알고리즘 목적함수

A2C는 Actor와 Critic을 Advantage와 교차 엔트로피를 이용한 Actor의 목적함수로 구성하여 학습하는 아이디어입니다. Actor는 교차 엔트로피를 이용해 학습하는 정책 확률 분포의 확률값을 이용해 Actor loss를 최소화하는 방향, 즉 최적의 정책을 찾는 방향으로 업데이트 학습하고,(분류) Critic은 최소 제곱법을 이용해 현재 상태에서 선택된 행동이 평균적으로 다른 행동들에 비해 얼마나 좋은지에 대한 오차를 줄여나가는 학습 방법(회귀)을 사용합니다. Actor와 Critic은 두개의 분리된 인공신경망을 사용하나, 코드를 구성할때는 하나의 인공신경망에서 두개 모두 추출이 가능합니다. Actor의 목적 함수 부분에 엔트로피를 상승시키는 그레디언트 어센트 방향으로 학습을 하기 때문에 경사하강법의 반대인 경사 상승법을 위해 cross entropy에 음수 부호인 (-)를 앞에 붙이게 됩니다. 그런데 인공신경망의 출력층 벡터를 그대로 정책으로 사용할 경우 그 범위가 커져서, 인공 신경망의 Actor에 해당하는 출력 수치범위를 0~1로 만드는 소프트맥스를 사용하게 됩니다. Softmax함수를 적용한 후 그 결과에 대해 작은 확률값에 대해서도 안정적으로 처리하기 위해 Log소프트맥스를 붙이게 됩니다.

Blog Home Back to Post List