move84

딥러닝: 딥 RL에서의 액터-크리틱 아키텍처 본문

딥러닝

딥러닝: 딥 RL에서의 액터-크리틱 아키텍처

move84 2025. 3. 26. 01:08
반응형

딥 RL(Deep Reinforcement Learning)은 인공지능 분야에서 빠르게 발전하고 있으며, 특히 복잡한 환경에서 에이전트가 학습할 수 있도록 하는 데 중요한 역할을 한다. 액터-크리틱(Actor-Critic) 아키텍처는 딥 RL의 핵심적인 방법 중 하나로, 에이전트의 행동을 학습하고 평가하는 두 가지 역할을 결합하여 효율적인 학습을 가능하게 한다.


🎭 소개: 액터-크리틱 아키텍처

액터-크리틱 아키텍처는 딥 RL에서 에이전트의 정책(Policy)과 가치 함수(Value function)를 동시에 학습하는 방법론이다. 이 아키텍처는 두 개의 주요 구성 요소, 즉 액터(Actor)와 크리틱(Critic)으로 구성된다. 액터는 환경에서 어떤 행동을 할지 결정하고, 크리틱은 액터가 수행한 행동의 가치를 평가한다. 이 두 구성 요소의 상호 작용을 통해 에이전트는 환경과 더 효과적으로 상호 작용하며, 더 나은 정책을 학습할 수 있다.


🧐 액터(Actor)의 역할: 행동 결정

액터는 에이전트의 행동을 결정하는 역할을 한다. 이는 주어진 상태(State)에서 어떤 행동(Action)을 선택할지 결정하는 정책(Policy)을 나타낸다. 액터는 보통 신경망(Neural Network)으로 구현되며, 입력으로 상태를 받아 각 행동에 대한 확률 분포를 출력한다. 이 확률 분포를 기반으로 행동을 샘플링하거나, 가장 높은 확률을 가진 행동을 선택한다. 액터는 환경과의 상호 작용을 통해 행동을 수행하고, 그 결과로 얻는 보상(Reward)과 환경의 변화를 통해 정책을 업데이트한다.

import numpy as np

class Actor:
    def __init__(self, state_size, action_size):
        self.state_size = state_size
        self.action_size = action_size
        # 정책을 나타내는 신경망 (예시)
        self.model = self.build_model()

    def build_model(self):
        # 간단한 신경망 모델 (예시)
        from tensorflow.keras.models import Sequential
        from tensorflow.keras.layers import Dense

        model = Sequential()
        model.add(Dense(24, input_dim=self.state_size, activation='relu'))
        model.add(Dense(self.action_size, activation='softmax'))  # 행동 확률 출력
        model.compile(loss='categorical_crossentropy', optimizer='adam')
        return model

    def predict(self, state):
        # 상태에 대한 행동 확률 예측
        state = np.reshape(state, [1, self.state_size])
        return self.model.predict(state, verbose=0)

    def act(self, state):
        # 행동 선택 (softmax 출력 기반)
        probs = self.predict(state)
        return np.random.choice(self.action_size, p=probs[0])

 

🤔 크리틱(Critic)의 역할: 가치 평가

크리틱은 액터가 수행한 행동의 가치를 평가하는 역할을 한다. 가치 함수(Value function)는 주어진 상태 또는 상태-행동 쌍에서 얼마나 많은 누적 보상(Cumulative reward)을 얻을 수 있는지 추정한다. 크리틱은 이 가치 함수를 학습하여 액터가 더 좋은 결정을 내릴 수 있도록 돕는다. 크리틱은 보통 신경망으로 구현되며, 입력으로 상태(State) 또는 상태-행동 쌍을 받아 가치 추정치를 출력한다. 이 가치 추정치는 액터의 정책 업데이트에 사용된다.

import numpy as np

class Critic:
    def __init__(self, state_size, action_size):
        self.state_size = state_size
        self.action_size = action_size
        # 가치 함수를 나타내는 신경망 (예시)
        self.model = self.build_model()

    def build_model(self):
        # 간단한 신경망 모델 (예시)
        from tensorflow.keras.models import Sequential
        from tensorflow.keras.layers import Dense
        from tensorflow.keras.layers import Input
        from tensorflow.keras.models import Model
        from tensorflow.keras.layers import concatenate

        state_input = Input(shape=(self.state_size,))
        state_hidden = Dense(24, activation='relu')(state_input)
        action_input = Input(shape=(self.action_size,))
        merged = concatenate([state_hidden, action_input])
        merged_hidden = Dense(24, activation='relu')(merged)
        output = Dense(1, activation='linear')(merged_hidden)

        model = Model(inputs=[state_input, action_input], outputs=output)
        model.compile(loss='mse', optimizer='adam')
        return model

    def predict(self, state, action):
        # 상태와 행동에 대한 가치 예측
        state = np.reshape(state, [1, self.state_size])
        action = np.reshape(action, [1, self.action_size]) # one-hot encoding 가정
        return self.model.predict([state, action], verbose=0)

    def train(self, state, action, target):
        # 가치 함수 훈련
        state = np.reshape(state, [1, self.state_size])
        action = np.reshape(action, [1, self.action_size]) # one-hot encoding 가정
        self.model.fit([state, action], np.array([target]), verbose=0)

 

💡 액터-크리틱의 작동 원리

액터-크리틱 아키텍처는 액터와 크리틱의 상호 작용을 통해 학습을 진행한다. 에이전트는 액터의 정책에 따라 환경과 상호 작용하고, 그 결과로 얻는 보상과 상태 변화를 관찰한다. 크리틱은 이러한 정보를 바탕으로 가치 함수를 학습하여 액터가 수행한 행동의 가치를 평가한다. 액터는 크리틱의 평가를 바탕으로 자신의 정책을 업데이트하여 더 나은 행동을 하도록 학습한다. 이 과정을 반복하면서 액터는 점차적으로 환경에 최적화된 정책을 학습하게 된다.


📊 액터-크리틱의 장점

  • 높은 효율성: 액터와 크리틱의 분리된 학습을 통해 학습 효율성을 높일 수 있다.
  • 온라인 학습: 액터-크리틱은 온라인 학습이 가능하여 환경과의 상호 작용을 통해 지속적으로 정책을 개선할 수 있다.
  • 가치 추정: 크리틱을 통해 상태 또는 상태-행동 쌍의 가치를 추정할 수 있어, 학습 과정을 더 효과적으로 관리할 수 있다.

🧩 액터-크리틱의 종류

다양한 액터-크리틱 아키텍처가 존재한다. 몇 가지 주요 유형은 다음과 같다.

  • A2C (Advantage Actor-Critic): 액터와 크리틱 모두 신경망으로 구현되며, 어드밴티지(Advantage)를 사용하여 정책을 업데이트한다. 어드밴티지는 특정 행동이 평균보다 얼마나 더 좋은지를 나타낸다.
  • A3C (Asynchronous Advantage Actor-Critic): 여러 에이전트가 병렬로 학습을 진행하여 학습 속도를 높인다.
  • PPO (Proximal Policy Optimization): 정책 업데이트 시 정책 변화의 크기를 제한하여 학습의 안정성을 높인다.
  • DDPG (Deep Deterministic Policy Gradient): 연속적인 행동 공간(Continuous action space)을 다루는 액터-크리틱 방법이다.

🔑 핵심 용어 정리

  • 딥 RL (Deep Reinforcement Learning): 딥러닝 기술을 활용하여 강화 학습 문제를 해결하는 방법론.
  • 액터 (Actor): 에이전트의 행동을 결정하는 정책을 나타내는 구성 요소.
  • 크리틱 (Critic): 액터가 수행한 행동의 가치를 평가하는 구성 요소.
  • 정책 (Policy): 에이전트가 어떤 행동을 할지 결정하는 규칙.
  • 가치 함수 (Value function): 주어진 상태 또는 상태-행동 쌍에서 얻을 수 있는 누적 보상의 기댓값.
  • 보상 (Reward): 에이전트가 환경과의 상호 작용을 통해 받는 피드백.
  • 어드밴티지 (Advantage): 특정 행동이 평균보다 얼마나 더 좋은지를 나타내는 지표.

🚀 결론

액터-크리틱 아키텍처는 딥 RL에서 강력하고 유연한 방법론이다. 액터와 크리틱의 상호 작용을 통해 에이전트는 복잡한 환경에서 효과적으로 학습할 수 있다. 다양한 액터-크리틱 아키텍처의 종류와 특징을 이해하고, 문제에 맞는 적절한 방법을 선택하는 것이 중요하다. 딥 RL 기술을 활용하여 다양한 분야에서 인공지능의 발전을 기대할 수 있다.

반응형