액터-크리틱 방법(A2C)
어드밴티지 함수, 액터(정책)와 크리틱(가치), 동기식 A2C 구현을 다룹니다.
액터-크리틱 방법(A2C)은(는) CoddyKit의 무료 Learn AI with Python 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Learn AI with Python 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.
정책과 가치의 결합
액터-크리틱 방법은 두 가지 아이디어를 결합합니다. 행동을 선택하는 정책인 액터와 행동을 평가하는 가치 함수인 크리틱입니다. 크리틱은 원시 누적 보상보다 분산이 낮은 피드백을 제공하여 학습을 안정화합니다.
액터
액터는 정책 네트워크입니다. REINFORCE에서와 마찬가지로 현재 상태에 대한 행동 로짓(또는 확률)을 출력하고 무엇을 할지 결정합니다.
class ActorCritic(nn.Module):
def __init__(self, obs_dim, n_actions):
super().__init__()
self.shared = nn.Sequential(nn.Linear(obs_dim, 128), nn.ReLU())
self.actor = nn.Linear(128, n_actions)크리틱
크리틱은 상태 가치 V(s)를 추정합니다. 이는 상태 s에서 얻을 것으로 예상되는 누적 보상입니다. 크리틱은 현재 상황이 얼마나 좋은지를 예측하는 단일 출력 헤드입니다.
self.critic = nn.Linear(128, 1)
def forward(self, s):
h = self.shared(s)
return self.actor(h), self.critic(h)공유 기반망과 두 개의 헤드
액터와 크리틱은 일반적으로 초기 층(기반망)을 공유한 뒤 두 개의 헤드로 나뉩니다. 특징을 공유하면 효율적이고 두 작업이 유용한 표현을 서로 강화할 수 있습니다.
어드밴티지 함수
핵심 수량은 어드밴티지 A = r + gamma * V(s') - V(s)입니다. 이는 행동이 크리틱의 예상보다 얼마나 더 좋았는지를 측정합니다. 어드밴티지가 양수이면 "평균보다 나음"을 뜻하고, 음수이면 더 나쁨을 뜻합니다.
advantage = reward + gamma * V_next - V_current원시 누적 보상보다 어드밴티지가 나은 이유
전체 누적 보상 G_t 대신 어드밴티지를 사용하면 신호가 크리틱의 추정값을 중심으로 정렬되어 분산이 크게 줄어듭니다. 이것이 액터-크리틱이 REINFORCE보다 더 안정적으로 학습되는 주된 이유입니다.
액터 손실
액터는 REINFORCE와 같은 방식으로 학습하지만 누적 보상 대신 어드밴티지로 가중합니다. 어드밴티지가 양수인 행동의 확률을 높입니다.
actor_loss = -(log_prob * advantage.detach()).mean()크리틱 손실
크리틱은 누적 보상을 정확하게 예측하도록 학습합니다. 크리틱의 손실은 예측값 V(s)와 관측된 목표값 r + gamma * V(s') 사이의 제곱 오차입니다.
target = reward + gamma * V_next.detach()
critic_loss = (V_current - target).pow(2).mean()결합 손실
손실을 더해 두 헤드를 함께 학습합니다(탐험을 장려하기 위해 작은 엔트로피 보너스를 추가하는 경우가 많습니다). 한 번의 역전파로 공유 기반망과 두 헤드를 모두 업데이트합니다.
loss = actor_loss + 0.5 * critic_loss - 0.01 * entropy
loss.backward()동기식 A2C
A2C(어드밴티지 액터-크리틱)는 동기식 버전입니다. 여러 병렬 작업자가 환경의 복사본에서 동시에 경험을 수집한 다음, 하나의 동기화된 업데이트가 모든 데이터를 사용하므로 안정성과 처리량이 향상됩니다.
# N parallel envs step together each iteration
# gather all transitions, then one combined updateA2C와 A3C 비교
비동기식 버전인 A3C에서는 작업자들이 독립적으로 업데이트합니다. A2C는 작업자들을 동기화하므로 더 단순하고 GPU에 적합하며 대개 효과도 비슷하기 때문에 널리 사용됩니다.
빠른 확인
액터-크리틱에 대한 이해도를 확인해 보세요.
복습: 액터-크리틱과 A2C
액터가 정책 로짓을 출력하고 크리틱이 V(s)를 추정하며, 이를 위해 두 개의 헤드를 가진 공유 기반망을 사용하는 경우가 많다는 것을 배웠습니다. 어드밴티지 r + gamma*V(s') - V(s)는 분산을 줄이고, 동기식 A2C는 안정적이고 효율적인 학습을 위해 병렬 작업자를 사용합니다.
자주 묻는 질문
“액터-크리틱 방법(A2C)” 강의는 무료인가요?
네 — “액터-크리틱 방법(A2C)” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Learn AI with Python 강의 전체를 잠금 해제할 수 있습니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.
“액터-크리틱 방법(A2C)”에서 뭘 배우나요?
어드밴티지 함수, 액터(정책)와 크리틱(가치), 동기식 A2C 구현을 다룹니다. 브라우저에서 직접 실행하는 실습 코드로 Learn AI with Python을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Learn AI with Python을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Learn AI with Python은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.
“액터-크리틱 방법(A2C)” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Learn AI with Python 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Learn AI with Python 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 정책 그래디언트 방법: REINFORCE
- 액터-크리틱 방법(A2C)
- 근접 정책 최적화(PPO)
- 사용자 지정 Gymnasium 환경