중요도 샘플링(Importance Sampling)

 

중요도 샘플링(Importance Sampling)은 복잡한 확률분포에서 기대값을 구해야 하는데, 그 분포에서 샘플을 뽑는 것이 어렵거나 비효율적일 때 사용하는 똑똑한 우회 방법이다.

예를 들어 어떤 함수 f(x)의 평균값을 계산하고 싶은데, 이 평균값은 확률분포 p(x)에 따라 계산되어야 한다고 하자. 문제는, p(x)에서 직접 샘플을 뽑기 어렵다는 것이다. 이럴 땐 샘플을 쉽게 뽑을 수 있는 다른 분포 q(x)를 대신 사용한다.

하지만 단순히 q(x)에서 샘플만 뽑아 f(x)의 평균을 계산하면 p(x) 기준이 아니기 때문에 정확하지 않다. 그래서 보정이 필요하다.

바로 p(x)/q(x) 라는 비율을 곱해서, q(x)에서 얻은 샘플이 마치 p(x)에서 뽑은 것처럼 보이게 만드는 것이다. , q(x)에서 샘플을 뽑되, 각 샘플의 기여도를 p(x)/q(x)만큼 조정해주는 방식이다.

이렇게 하면 복잡한 분포인 p(x)의 기대값을, 비교적 쉬운 q(x)를 이용해서 근사할 수 있다.

쉽게 말해, “원래 어려운 길 대신 쉬운 길로 가지만, 중간에 정확도를 보정해서 원래 가야 했던 길과 같은 결과를 얻는 방법이다.

확률변수와 확률분포

이 그림은 강화학습에서 정책(policy)이라는 개념을 보다 직관적으로 이해할 수 있도록 도와주는 시각적 예시이다. 특히 에이전트가 특정 상태에 도달했을 때 어떤 행동을 선택할지를 확률적으로 결정하는 방식을 보여준다.

강화학습에서 에이전트는 환경 안에서 여러 상태(state)를 경험하게 되며, 각 상태에서 선택할 수 있는 다양한 행동(action)을 가진다. 예를 들어, 그림에서 시작 상태인 S에서 출발하여 최종 목표 상태인 F까지 도달하는 경로에는 여러 가지 선택지가 존재한다. 상태 S에서 R1로 갈 수도 있고, R2로 갈 수도 있다. 이 전이 과정은 확률적으로 정의되어 있으며, S에서 R1로 갈 확률은 0.4, R2로 갈 확률은 0.6이다. 이러한 확률은 환경의 구조, 즉 상태전이확률(state transition probability)을 반영한다.

가장 핵심이 되는 부분은 상태 R1에 도착했을 때의 행동 선택이다. 이때 에이전트는 세 가지 행동 중 하나를 선택할 수 있다. 위쪽 경로인을 선택하면 R1에서 바로 종료 상태 F로 이동하게 되고, 가운데 경로인을 선택하면 R3를 거쳐 F로 간다. 아래 경로인를 선택하면 R2로 이동하게 된다. 이 세 가지 행동은 모두 가능한 선택지이며, 각각의 선택은 정책(policy)에 의해 주어진 확률로 결정된다.

정책은 에이전트가 어떤 상태에서 어떤 행동을 선택할지를 정하는 규칙이며, 그림에서는 이를 명확히 보여주고 있다. R1 상태에서 에이전트가 상, , 하 행동을 선택할 확률은 각각 0.3, 0.4, 0.3으로 설정되어 있다. 이를 통해 알 수 있듯이, 에이전트는 항상 동일한 행동을 반복하는 것이 아니라 확률적으로 다양한 행동을 시도한다. 이러한 구조는 에이전트가 환경을 탐험(exploration)하고, 새로운 가능성을 발견하며, 더 나은 보상을 얻을 수 있는 정책으로 개선해 나가도록 유도한다.

그림 아래에는 이 개념을 간단히 요약한 도식이 함께 제시되어 있다. 확률 변수 {, , }는 에이전트가 취할 수 있는 행동의 집합을 의미하며, 확률 분포 {0.3, 0.4, 0.3}은 이 행동들이 선택될 확률을 나타낸다. , 확률 변수는 행동의 선택지를, 확률 분포는 정책의 형태를 나타낸다고 볼 수 있다.

요약하자면, 이 그림은 에이전트가 특정 상태에서 어떤 행동을 선택할지를 확률적으로 결정하는 정책의 개념을 쉽게 설명해준다. 이는 강화학습에서 매우 중요한 부분으로, 에이전트가 단순히 가장 좋은 행동만을 반복하는 것이 아니라, 일정한 확률에 따라 다양한 행동을 시도함으로써 학습을 지속적으로 발전시켜 나갈 수 있게 만든다.

기존 항로 데이터

이 그림은 강화학습에서의 항로(경로) 선택과 함께, 기존 항로 데이터를 활용해 중요도 샘플링(Importance Sampling)을 적용하는 과정을 설명하고 있다. 복잡하게 보이지만, 핵심은 "기존에 많이 다녔던 항로 데이터를 이용해 새로운 항로의 가치도 예측해보자"는 것이다.

먼저 그림을 살펴보면, 상태 S에서 출발하여 중간 항로(H1, H2, H3)를 거쳐 최종 도착지 F까지 가는 여러 경로가 있다. 각 화살표는 어떤 항로를 선택할 확률(P)을 나타내며, 에이전트(또는 배)는 이 확률에 따라 무작위로 항로를 선택하게 된다. 예를 들어, S에서 H1로 갈 확률은 0.4, H2로 갈 확률은 0.6이다. H1에 도착한 이후에는 상(위쪽), (가운데), (아래쪽)의 세 가지 선택지가 있고, 각 선택지의 확률은 각각 0.4, 0.4, 0.2로 주어진다.

여기서 중요한 포인트는, 그림에 많은 배 아이콘이 있다는 것이다. 이건 실제로 과거에 많은 배들이 해당 항로를 이용했다는 뜻이다. , 이 항로에 대한 데이터가 풍부하다는 의미다. 이런 상황에서는 강화학습에서 경험을 직접 새로 쌓지 않고도, 기존 항로 데이터를 활용해 새로운 경로에 대한 예측을 할 수 있는 방법이 필요해진다. 이것이 바로 중요도 샘플링(Importance Sampling)의 역할이다.

중요도 샘플링이란, 우리가 알고 있는 분포(많은 데이터를 가지고 있는 항로)를 기반으로, 새로운 정책(다른 항로 선택 방식)에 따라 행동했을 때 어떤 결과가 나올지를 추정하는 기법이다. 예를 들어 지금까지는 상, , 하 세 항로를 0.4, 0.4, 0.2의 확률로 선택했지만, 앞으로는 새로운 정책에 따라 다른 확률로 항로를 선택하고자 할 수 있다. 문제는, 새로운 정책에 따라 항해한 데이터가 충분하지 않다는 점이다. 하지만 기존의 많은 항로 데이터를 재활용하여, 새로운 정책을 따랐을 경우 기댓값(예상 성과)이 어떻게 될지를 보정된 방식으로 계산할 수 있다. 이때 보정할 때 사용하는 게 바로 기존 정책과 새로운 정책 간의 확률 비율, p(x)/q(x) 와 같은 중요도 가중치이다.

기존 항로 데이터를 많이 보유하고 있다면 새로운 정책으로 가정된 항로의 가치(기댓값)를 직접 실험하지 않고도 추정할 수 있다. 이것이 바로 중요도 샘플링의 핵심 개념이다.

결국 이 그림은 강화학습에서 기존 데이터를 활용해 새 정책을 평가할 수 있는 가능성을 보여주는 예시이며, 중요도 샘플링을 통해 탐험 없이도 미래 행동의 가치를 예측할 수 있다는 점에서 매우 실용적인 아이디어라 할 수 있다.

중요도 샘플링(Importance Sampling)

이 그림은 중요도 샘플링(Importance Sampling)이라는 개념을 수학적으로 표현하고 있지만, 우리가 이해해야 할 핵심은 매우 간단하다.

우선, 우리가 어떤 문제를 풀고 싶은데 그 환경에서 데이터를 모으기 어렵다고 해보자. 예를 들어, 새로운 항로를 개척하고 싶은데 그 항로에 대해선 실제 데이터가 별로 없는 상황이다. 하지만 비슷한 환경에서 이미 많은 데이터를 수집해 놓은 경우가 있다면, 그 데이터를 활용해서 우리가 알고 싶은 결과를 추정할 수 있을까? 바로 이것이 중요도 샘플링이 해주는 일이다.

중요도 샘플링에서는 두 개의 환경(또는 정책)을 다룬다.

ž   Q(X)는 우리가 충분한 데이터를 가진 환경이다. 여기서 샘플을 뽑기는 쉽다.

ž   P(X)는 우리가 원래 알고 싶었던 환경이다. 그런데 이 환경에서는 샘플을 구하기 어렵다.

ž   f(X)는 어떤 결과를 측정하는 함수이다. 예를 들어 보상, 이동 거리, 속도 등 다양한 값이 될 수 있다.

중요도 샘플링이 하는 일은 다음과 같다.

“Q 환경에서 샘플을 수집하고, 그 샘플을 P 환경의 상황처럼 보정해서 사용하는 것이다.

이 보정의 핵심이 바로 P(X) / Q(X)라는 비율이다. Q 환경에서 나온 결과가 실제 P 환경에서도 비슷할 확률이 얼마나 되는지를 고려해주는 값이다. 이 비율을 곱해주면, Q에서 얻은 결과를 P의 기준에 맞게 조정해줄 수 있다.

, P 환경에서 f(X)의 기대값을 구하고 싶지만 P에서 직접 샘플을 얻기 어려우니 Q에서 샘플을 뽑고, Q에서 얻은 결과에 P/Q 비율을 곱해서 P의 결과처럼 만든다는 논리다.

너무 수학적으로 깊게 이해하려고 하지 않아도 된다. 중요한 건, “우리가 원하는 환경(P)에서 결과를 얻는 것이 어렵다면, 비슷한 환경(Q)에서 데이터를 가져와서 보정해서 사용한다는 생각이다.

이것만 이해하면 중요도 샘플링은 강화학습에서 매우 유용하게 활용될 수 있다.

MC TD에서 중요도 샘플링

강화학습에서는 어떤 정책(π)을 배우고 싶지만, 그 정책에 맞는 경험(데이터)을 쉽게 얻지 못하는 상황이 자주 발생한다. 예를 들어, 실제 자율주행 정책을 테스트하고 싶지만 실험은 위험하고 비용도 크다. 이런 상황에서는 이미 잘 훈련된 정책(μ)을 활용해 데이터를 수집하고, 이 데이터를 바탕으로 우리가 원하는 정책 π를 학습할 수 있을까? 이 질문에 대한 해답이 바로 중요도 샘플링이다.

중요도 샘플링을 활용하면, μ라는 기존의 풍부한 정책으로부터 수집한 경험을 바탕으로, π라는 새로운 정책을 평가하거나 학습할 수 있다.

여기서 핵심은, 두 정책이 다르기 때문에 단순히 μ의 데이터를 π의 것처럼 쓸 수는 없고, 두 정책 간의 차이를 확률 비율로 보정해줘야 한다는 점이다.

이때 사용하는 것이 바로 중요도 비율, π(행동|상태) / μ(행동|상태)라는 값이다.

그림을 보면 두 가지 방식이 있다. MC(Monte Carlo) TD(Temporal Difference)이다.

먼저 MC 방식은 하나의 에피소드가 끝날 때까지 전부 실행한 다음, 그 전체 보상 합을 바탕으로 가치 함수를 계산한다.

이 과정에서 π μ의 비율이 각 타임스텝마다 계속 곱해지는데, 이 비율이 많아질수록 계산 결과가 크게 흔들릴 수 있다.

, 곱셈이 누적되면서 숫자가 너무 커지거나 작아져서 값이 왜곡될 위험이 생긴다.

그래서 실제로는 MC에서 중요도 샘플링을 사용하는 것이 매우 까다롭고, 현실적으로 거의 사용되지 않는다.

반면에 TD 방식은 한 타임스텝만 진행한 뒤 바로 가치를 계산한다. 이 경우에는 중요도 비율을 딱 한 번만 사용하면 된다. , 계산이 간단하고 왜곡도 덜하다.

이 때문에 TD는 오프폴리시 환경에서 중요도 샘플링을 활용하기에 훨씬 현실적인 방법이 된다.

요약하자면, 중요도 샘플링은 두 정책 간의 차이를 확률적으로 보정해서, 풍부한 환경의 데이터를 이용해 학습하고 싶은 정책을 훈련하는 방법이다.

이 아이디어는 매우 강력하지만, MC에서는 불안정하고 TD에서는 효과적으로 적용될 수 있다는 점을 기억하자.



댓글 쓰기

Please Select Embedded Mode To Show The Comment System.*

다음 이전