My Blog

강화학습(강화학습,보상,에이전트,환경)


강화학습(Reinforcement learning)이란?

강화학습은 자전거를 연습하는 과정과 유사합니다. 자전거를 잘 타기위해 수백번 넘어지고 다치더라도 계속해서 타고 연습합니다. 이것은 수많은 시행착오를 경험하는 것이고, 이러한 경험으로 결국에는 넘어지지 않고 자전거를 타고 시원하게 바람쐬며 운동할 수 있는 최대의 보상을 목적으로 합니다. 사람의 삶은 계속적인 의사결정과 선택을 하면서 만들어지고 있습니다. 어떤 결정 이후에는 환경이 변하고, 또다른 순차적으로 연결된 문제가 따라오고 또 새로 만들어진 환경에서 다시 이것을 보고 결정하는 과정의 연속이 될겁니다. 세상의 모든 일은 시간의 순서에 따른 환경과 결정, 그리고 그 결정에 따라 새롭게 조성된 환경, 그 다음에는 또 다른 결정해야 할 문제가 생기고 이것을 환경을 고려해서 새로운 의사결정을 하게 되고, 이러한 순차적 의사결정을 하게 됩니다. 주어진 환경에 어떤 결정을 하기 위해서는 그 결정에 따르는 보상이 무엇인지를 항상 고려하기 때문에 다음에는 보상을 알아보도록 하겠습니다.

보상(Reward)

보상은 우리가 잘 알고 있는 그러한 보상이 맞습니다. 영어로 Reward라고 하는 녀석인데, 의사결정을 하는 것에 있어서 심적 동기가 될 것입니다. 우리가 하려는 행동의 의사결정은 내적으로 금전적 보상이든, 선물 보상이든 그러한 보상관계를 항상 생각하고 결정하게 됩니다. 아무런 보상도 없는 것보다 보상을 많이 주는 방향으로 결정을 하는것이 당연하겠죠. 어떠한 환경에서 의사결정 할때 머리속으로는 선택사항에 대한 보상이 어떤 것이 더 좋은지, 나에게 더 좋은 결정인지를 선택하고 이를 행동하게 되어 있습니다. 그렇다면 강화학습에서 말하는 보상이란 무엇인지 보자면, 한 개의 점수(스칼라)를 보상이라 하고, 이러한 보상이 쌓여 최고의 점수를 받는 것을 목표로 하게 만들면 이것이 강화학습에서 말하는 보상을 최대한 많이 받기위해 스스로 학습하게 되는 AI모델이 되는 것입니다. 보상을 한 개만 설정하게 되면 조금 더 복잡한 문제를 다루기 어려울 수 있습니다. 이럴때는 보상에 해당하는 조건들을 모아 벡터로 변환하면 되겠지만, 스칼라인 한개의 점수로만 표현을 해야 하므로, 각 보상에 해당하는 조건을 가중치를 두어 결국 이것도 한개의 스칼라로 표현하게 하면 됩니다. 강화학습에서 보상은 반드시 스칼라 형태로만 주어져야 하고 그래야지만 목표를 향해 최적의 경로와 방법을 만들어내는 강화학습 모델이 만들어질 것입니다. 자전거 타기를 예로 들게되면, 가만히 있으면 시간이 지나갈수록 - 마이너스 점수가 부여되도록 하고, 움직인 후 넘어지면 또 - 마이너스 점수가 부여되도록 하고, 움직인 후 넘어지지 않고 타고 간 거리가 길수록 + 플러스 점수를 부여되도록 설계할 수 있습니다. 이러한 보상의 조건과 보상점수는 설계자의 의도에 따라 변할 수 있고, 어떤 목표를 최종적으로 달성하려고 하는지에 따라 설계가 변할 수 있습니다. 강화학습에서 설계가 변한다는 것은 목표를 무엇에 두고, 보상점수 체계를 어떻게 구성하냐에 따라 환경을 변화시키는 것을 말합니다. 보상을 설계할때 여러가지 사항을 고려해야 하는데 그 중 즉시적 보상과 지연적 보상 문제가 있습니다. 즉시적 보상은 어떤 환경에서 어떤 행동을 했을때 그 결과를 보고 보상을 즉시적으로 하는 것이고, 지연적 보상은 어떤 환경에서 어떤 행동을 연속적으로 일정 수 이상을 했을때, 그 결과를 보고 몰아서 보상을 주는 것입니다. 이러한 보상 설계는 환경에 따라 다르고 해결하고 하는 문제에 따라 달라지므로 어떤 문제를 풀고자 하는지, 설계는 어떤 방식으로 할건지 고려할 사항이 많습니다.

에이전트(Agent)

에이전트(agent)는 주어진 환경(environment)에서 액션(action) 행동을 하고 그에 따라 보상을 받으면서 환경을 변화시킵니다. 여기서 에이전트는 어떤 행동을 하는 주체를 말합니다. 실제 환경에서는 사람이 에이전트가 되고, 그 결정으로 인해 변하는 환경이 나타나고 그에 따른 보상을 얻게 됩니다. 강화학습은 여기의 에이전트를 설계자가 원하는 방향으로 어떤 목적에 따른 행동을 하도록 훈련시키는 것입니다. 에이전트는 다음과 같은 것을 경험하게 됩니다. -현재 환경에서 어떤 행동을 할지 결정 -결정된 행동이 환경을 변화시킴 -변화된 환경의 정보와 보상을 받음 에이전트는 다양하게 주어진 환경의 변수들을 보고 보상을 최대화하려는 전략을 스스로 시행착오를 통해 경험하고, 행동하고 학습하는 과정을 지나오게 됩니다.

환경(Environment)

환경은 에이전트에게 주어지는 모든 주변 상황을 말합니다. 이것 또한 에이전트를 훈련시키고자 하는 설계자가 하나부터 열까지 모두 설계해야 하는 작업입니다. 환경 설계와 보상설계가 제대로 되어있지 않다면 에이전트가 훈련을 통해 경험을 쌓지 못하고 제대로 된 학습을 하기 어려워 집니다. 환경의 큰 특징은 에이전트의 행동으로 인해 시시각각 변하게 설계되어야 한다는 것입니다. 에이전트의 행동에 따른 변화를 꼼꼼히 설계하지 않는다면 이 또한 에이전트의 학습을 제대로 할수없게 만드는 것입니다. 환경은 주로 벡터로 기록합니다. 현재 상태에 대한 모든 정보를 숫자 묶음으로 기록해 합쳐놓은 벡터로 표현하게 됩니다. 이것을 현재의 상태라고 말할 수 있고, 여기서는 상태(State)라고 합니다. 에이전트가 행동을 하기 전 현재의 상태, 어떤 행동을 한 이후의 상태를 모두 벡터로 기록하고, 이러한 벡터 데이터들의 묶음을 에이전트가 매 회마다 학습하여 개선하기도 하고, 또는 벡터 데이터 묶음을 한번에 모아 지정한 숫자의 횟수의 데이터가 쌓였을때 한번에 학습하는 리플레이 버퍼(replay buffer)의 방식으로 하기도 합니다. 온라인 학습 (Online Learning): 에이전트가 환경과의 상호작용을 통해 얻은 정보를 바로 학습에 사용하는 방식입니다. 즉, 환경이 바뀔 때마다 에이전트가 즉시 학습을 수행합니다. 이 방식은 실시간으로 정보를 업데이트하지만, 상관관계가 높은 데이터로 인해 학습이 불안정해질 수 있습니다. 오프라인 학습 (Offline Learning) 또는 배치 학습 (Batch Learning): 리플레이 버퍼가 이에 해당합니다. 여기서는 에이전트가 경험한 정보를 먼저 저장하고, 이 저장된 데이터셋에서 무작위로 샘플을 추출하여 학습을 수행합니다. 이 방식은 데이터의 재사용을 가능하게 하고, 무작위 샘플링을 통해 상관관계를 줄여 학습 과정을 안정화시킵니다. 실제로 강화학습에서는 이 두 방식을 적절히 혼합하여 사용할 수 있습니다. 예를 들어, DQN(Deep Q-Network) 같은 알고리즘은 주로 리플레이 버퍼를 활용한 오프라인 학습 방식을 사용하지만, 에이전트가 새로운 환경과 상호작용하며 실시간으로 데이터를 수집하는 온라인 학습의 측면도 갖고 있습니다. 이러한 혼합 방식은 에이전트가 보다 효율적으로 학습하고 환경의 변화에 빠르게 적응할 수 있게 돕습니다.

에이전트-환경이 상호작용하는 방식을 기준으로 구분(이산적, 연속적)

이산적 상황 (Discrete Space) 이산적 상황에서는 가능한 상태(state)와 행동(action)이 명확하게 구분되며, 유한한 수의 선택지 중 하나를 선택합니다. 예를 들어, 보드 게임에서는 각 칸이나 말의 위치가 이산적 상태를 나타내고, 말을 어디로 옮길지 결정하는 것이 이산적 행동입니다. 상태 공간: 예를 들어, 체스 게임의 각 위치나 상태는 명확하게 구분됩니다. 행동 공간: 특정 시점에서 선택할 수 있는 행동들이 명확한 목록으로 제시됩니다. 예를 들어, 체스에서는 말을 어떻게 움직일지 결정하는 것이 해당됩니다. 연속적 상황 (Continuous Space) 연속적 상황에서는 상태와 행동이 연속적인 값으로 표현됩니다. 이는 무한한 수의 가능한 상태와 행동을 의미하며, 예를 들어 로봇의 위치 조정, 차량의 속도 제어와 같은 실제 세계의 문제들이 이에 해당합니다. 상태 공간: 연속적인 수치로 표현되는데, 예를 들어 로봇의 팔이 특정 각도로 움직이는 상황을 생각할 수 있습니다. 여기서 각도는 연속적인 값으로 표현됩니다. 행동 공간: 연속적인 값으로 표현되며, 로봇 팔을 어떤 정밀한 각도로 움직일지 결정하는 것과 같은 연속적인 결정이 필요합니다. 각각의 상황에서는 다른 유형의 학습 알고리즘이 사용될 수 있습니다. 예를 들어, 이산적 상황에서는 Q-러닝과 같은 방법이 효과적일 수 있고, 연속적 상황에서는 DDPG(Deep Deterministic Policy Gradient)나 PPO(Proximal Policy Optimization)와 같은 알고리즘이 사용됩니다. 이러한 알고리즘들은 연속적인 상태와 행동 공간을 처리할 수 있는 방식으로 설계되어 있습니다.

앞으로 추진해 나갈 방향

강화학습은 AI의 꽃이라 감히 말씀드릴 수 있을 것 같습니다. 앞으로 연재할 강화학습 시리즈는 조금 더 쉽게 강화학습을 이해하고자 하는 목적, 스스로의 공부를 위해 꾸준히 업로드할 예정입니다. 챗GPT와 GPT4, 그 이후 모든 모델들에 RLHF라는 강화학습 방식의 LLM모델이 나오고 있고 LLM뿐 아니라 소라와 같은 모델들에도 사용될 유망한 기술로 지금부터라도 늦지않게 따라가기 위해 공부 겸 글을 업로드할 것입니다. 관심 있으신 분들은 함께 공부해 나가면 좋겠습니다. 감사합니다.

Blog Home Back to Post List