Offline Reinforcement Learning: From Algorithms to Practical Challenges 튜토리얼 강의이다. 이 강의는 2020년 survey 논문과 함께 나온 튜토리얼로, offline RL에 대한 전반적인 내용을 다루고 있어 도움이 많이 될 것이라 생각하고 들어보았다.
영어 강의라 다른 분들이 혹시 이 강의를 보실 때 좀 더 편하게 공부를 했으면 하는 마음에 튜토리얼 해석본을 작성하였다. 강의가 두 부분으로 이루어져있는데 다음은 강의의 첫 부분이다.
(강의를 들으면서 작성하였으나 오역 혹은 어색한 문장이 있을 수 있으니 참고 바랍니다.)
정리한 내용도 곧 포스팅할 예정이다.
(강의 해석 (2)를 확인하고 싶으시다면 다음 링크를 참고 바랍니다.)
(1) - 슬라이드 번호
안녕하세요, offline reinforcement learning에 대한 튜토리얼에 오신 것을 환영합니다. 알고리즘부터 실용적인 문제까지 다루게 될 이번 튜토리얼은 저, Sergey Levin과 Aviral Kumar가 발표할 예정입니다. 저는 UC Berkeley의 조교수이고, Aviral Kumar는 UC Berkeley의 박사 과정 학생입니다. 자, 시작해보겠습니다.
(2)
튜토리얼을 시작하면서 큰 질문 하나와 간단한 답변을 드리겠습니다. 현대 machine learning이 작동하는 원리는 무엇일까요? 물론 복잡한 답변을 많이 할 수 있겠지만, 단순하게 두 가지로 요약하자면 현대 machine learning의 효과성은 대규모의 다양하고 큰 dataset과 high-capacity, large neural network와 같은 표현력이 높은 models를 활용할 수 있는 능력에 있다고 할 수 있습니다. 이런 기본 레시피는 세계의 어떤 객체도 인식할 수 있는 이미지 인식부터 언어를 번역하거나 음성을 인식하는 등 여러 domain에서 성공을 거두었습니다. 이러한 인식 문제에서 가장 효과적인 방법의 공통적인 테마는 대규모 dataset과 강력한 high-capacity 모델의 가용성입니다.
(3)
그렇다면 강화 학습을 통해 우리는 무엇을 얻을 수 있을까요? reinforcement learning은 본질적으로 active learning 패러다임입니다. agent가 세상과 상호 작용하면서 경험을 수집하고 그 경험을 이용해 model, value function 또는 policy를 개선한 후 이 과정을 반복하는 방식입니다. 이 과정을 매우 여러 번 수행합니다. reinforcement learning은 비디오 게임에서 로봇 조작 기술, 심지어 세계 챔피언과의 바둑 경기에서도 성공을 거두었습니다. 따라서 reinforcement learning이 high-capacity models와 결합되었을 때 매우 효과적일 수 있다는 것을 알 수 있습니다.
하지만 기계 학습 방법으로 성공적으로 다룬 대규모 dataset과 대규모 models이 필요한supervised learning domain과 같은 현실적인 open-world 환경과는 아주 큰 차이가 있습니다. 비대칭 성능의 차이가 아니라 generalization capability의 차이입니다. reinforcement learning은 일반적으로 closed-world의 상대적으로 좁은 domain에서 성공을 거두었으며, supervised learning에서 볼 수 있는 일반화 여전히 찾기 어렵습니다. 아마도 이러한 일반화를 달성하려면 대규모로 다양하고 큰 dataset을 사용해야 하고, 기본적으로 model policy나 value function를 업데이트할 때마다 전체 dataset을 다시 수집해야 하는 active learning framework가 필요하기 때문일 것입니다.
예를 들어 reinforcement learning을 사용하여 실제 데이터로 자율 주행 차량을 훈련하려고 한다면, 차량의 policy가 변경될 때마다 샌프란시스코, 뉴욕, 런던, 베이징을 다시 방문해야 할 수도 있습니다. 그런 식으로는 절대 확장할 수 없습니다. 이러한 기본 사실은 reinforcement learning에서 다른 machine learning 영역보다 훨씬 더 많이 시뮬레이션을 통한 훈련에 초점을 맞춘 이유이기도 합니다. 이러한 기술을 통해 실제 데이터를 활용하는 active learning framework를 할 수 없는 단점을 보완하려고 하는 것입니다.
물론 이러한 모든 기술에는 대규모 실제 dataset을 활용할 수 없는 한계가 존재하며, 다른 모든 분야에서의 항상 효과적인 공식은 대규모 dataset과 대규모 모델이 의미 있고 유용한 일반화를 이끌어 낸다는 것입니다.
그렇다면 우리는 이 엄청난 차이를 어떻게 메울 수 있을까요? reinforcement learning 알고리즘이 다른 영역에서 불필요한 것으로 입증된 시뮬레이션 및 기타 기술에 의존하지 않고도, 광범위한 수동 엔지니어링에 의존하지 않고도, 크고 표현력이 풍부한 실제 dataset를 활용할 수 있도록 만들 수 있을까요?
reinforcement learning 알고리즘이 대규모의 표현력이 높은 실제 dataset을 활용할 수 있게 할 수 있을까요? 광범위한 수동 엔지니어링에 의존하지 않고, 시뮬레이션에 의존하지 않고, 다른 domain에서는 불필요한 것으로 입증된 기술들에 의존하지 않고 가능할까요?
(4)
요약하자면 data-driven reinforcement learning 방법을 개발할 수 있을 지가 바로 이 튜토리얼의 주제가 될 것입니다.
기존의 고전적인 on-policy reinforcement learning은 환경과 상호작용하여 일정량의 데이터를 수집한 후 해당 데이터를 사용하여 policy를 업데이트하고 새로운 데이터를 수집하는 환경에서 작동합니다. off-policy reinforcement learning은 다른 policy에 의해 수집된 데이터를 활용할 수 있는 알고리즘을 지칭하는 데 사용됩니다.
그러나 이러한 offline reinforcement learning 알고리즘은 여전히 진행하면서 추가 데이터를 수집하는 방식으로 운영됩니다. 예를 들어 agent가 세상과 상호 작용하여 일정량의 rollouts을 수집하고, 이를 buffer에 추가하며, buffer의 모든 데이터를 사용하여 policy를 업데이트한다고 가정해봅시다. 그러나 일반적으로 새로운 데이터는 각 연속적인 policy과 함께 계속해서 buffer에 추가됩니다.
offline reinforcement learning은 새로운 데이터가 추가되지 않는 환경을 의미합니다. 행동 policy라고 부르는 pi_beta에 의해 수집된 고정된 dataset을 갖고 있으며, 이 행동 policy는 일반적으로 알려져 있지 않으며, reinforcement learning policy조차 아닐 수 있습니다. 예를 들어 인간의 데이터, 수작업으로 설계된 시스템의 데이터일 수 있습니다. 무엇인지 알 수 없는 dataset D가 생성되며, 이 dataset을 사용하여 policy를 학습하고 그 policy를 배포하지 않고 훈련합니다. 이러한 종류의 방법이 효과적으로 작동한다면, 우리는 진정한 data-driven reinforcement learning 방법을 가질 수 있습니다.
offline reinforcement learning이라는 용어는 비교적 새로운 용어이지만 기본 아이디어는 사실 오래되었습니다. 과거 문헌에서는 종종 batch reinforcement learning이라는 용어를 사용하여 이 환경을 지칭합니다. 이 튜토리얼에서의 많은 자료는 Aviral Kumar, George Tucker, Justin Fu와 함께 작성한 튜토리얼 및 리뷰를 따를 것이며, 이 자료는 슬라이드 하단에 링크되어 있습니다.
자, 이러한 offline reinforcement learning 알고리즘을 설계할 수 있다면, 우리는 새로운 클래스의 reinforcement learning 기술을 상상할 수 있습니다. active data collection paradigm 대신, agent가 이전 작업의 다양한 경험에서 수집한 데이터나 인간 또는 기존의 수작업으로 설계된 정책에서 제공받은 데이터를 가지고, model, value function 또는 policy를 학습하여 원하는 작업을 수행하는 환경을 상상할 수 있습니다. 그리고 추가적인 online 상호작용을 통해 세부 조정이 가능할 수도 있지만, 중요한 것은 offline 단계에서 기본적인 역량을 발휘하고 매우 다양하고 많은 데이터를 활용할 수 있는 일반화 단계에 도달하는 것이 목표입니다.
이를 성공한다면, 우리는 현재의 reinforcement learning 기술이 더 넓게 일반화되도록 할 뿐만 아니라, 현재는 비현실적으로 여겨지는 domain에도 reinforcement learning을 적용할 수 있을 것입니다. 예를 들어 reinforcement learning을 통해 로봇이 전자 기기를 수리하도록 할 수 있을 뿐만 아니라, 의사가 약을 처방하는 데이터를 가져와 offline reinforcement learning을 훈련시켜 알고리즘이 치료 계획을 제안하도록 할 수 있습니다. 과학적 실험 데이터를 가져와 실험을 설계하는 계획을 제안할 수 있고 발전소의 에너지 생산량을 조절하는 데이터를 가져와 화학 공장의 물류 네트워크 네트워크를 조절할 수도 있습니다. 보다 최적의 의사 결정을 내리고 싶지만 온라인 상호작용을 통한 탐색이 너무 많은 비용이 들거나 위험한 모든 종류의 애플리케이션 영역이 여기에 해당합니다.
(5)
자, 이 튜토리얼에서는 reinforcement learning에 대한 간단한 기초를 먼저 살펴보겠습니다. 이미 reinforcement learning 전문가이신 분들은 이 섹션을 빠르게 지나가셔도 됩니다. 하지만 모두의 이해를 돕기 위해 몇 분 동안 기본적인 reinforcement learning 알고리즘 개념을 소개하는 시간을 갖겠습니다. 그런 다음 offline reinforcement learning 문제를 논의하고 importance sampling을 기반으로 한 방법 및 linear function approximation를 기반으로 한 방법을 포함하여 일부 고전적인 batch reinforcement learning 알고리즘을 다룰 것입니다.
그런 다음 여러 최신 offline reinforcement learning 알고리즘과 off-policy evaluation 및 model selection 방법을 설명할 것입니다. 그리고 마지막으로 offline reinforcement learning이 어떤 상황에서 잘 작동할 수 있는지 방법을 평가하는 방법과 그러한 기술을 벤치마킹하는 방법을 논의할 것입니다. 그리고 전체적으로 몇가지 discussion을 제공하고 이 분야의 open problems를 논의하는 것으로 마무리하겠습니다. 강화학습에 대한 간단한 입문서로 시작하겠습니다.
(6)
자, 이제 reinforcement learning methods에 대한 간단한 기초를 설명하겠습니다.
(7)
우선 terminology와 notation입니다. reinforcement learning에서는 agent와 environment가 있습니다. agent는 environment와 temporal sequential process를 통해 상호작용합니다. agent는 매 시간 단계마다 actions를 선택하고, action은 A로 표시되며, environment는 그에 따른 state S와 해당 transition에 대해 agent가 받아야 할 reward를 제공합니다. reward는 일반적으로 상태와 행동에 대한 scalar function으로, agent는 알지 못하지만 각 transition이 이루어질 때마다 관찰됩니다.
agent의 목표는 state에 대해 actions의 분포인 policy pi를 획득하는 것입니다. 결과적인 sequential process는 이 그래프 모델로 시각화할 수 있습니다. 초기 상태 분포는 P(S1), transition probability은 P(S_t+1 | S_t, A_t)입니다. 이는 agent가 알 수 없는 것이며, policy pi(A_t | S_t)는 agent가 알 수 있습니다.
중요한 것은 state가 markov property을 따른다는 것입니다. 이는 미래가 과거와 독립적이라는 것을 의미합니다. 또는 다르게 말하면, state와 action은 policy 및 transition probability에 의해 유도된 markov chain을 정의한다는 것입니다.
reinforcement learning의 objective는 이러한 확률 모델에 대한 기대값에서 총 reward의 기대값을 최대화하는 policy를 획득하는 것입니다. 여기서 D_ π(S)는 π 아래의 state distribution이며, 기본적으로 π에 의해 유도된 state distribution 및 dynamics P를 의미합니다. 여기서 gamma는 discount factor입니다. 특히 무한 수평 강화학습(infinite horizon RL) 을 고려하는 경우 먼 미래의 reward를 exponential scaling에 따라 더 먼 미래의 보상을 할인할 것입니다. 시간 범위는 무한대일 수 있습니다. derivations에서는 유한한 수평선을 사용할 사용하겠지만, T가 무한대일 수 있다는 것을 명심하세요.
구체적인 정의를 몇 가지 설명하겠습니다. S는 discrete or continuous state, A는 discrete or continuous action입니다. 저는 tau라는 기호를 사용하여 state와 action의 sequence를 나타내겠습니다.
그리고 policy는 trajectory distribution을 유도하는데, 이를 pi(s_0, a_0, ..., s_t, a_t)로 나타내겠습니다. 이는 initial state probabilities의 곱과 transition probabilities과 policy probabilities 의 전체 time steps의 곱입니다. 때로는 trajectory distribution을 나타내기 위해 pi(t)를 사용할 것입니다. d^pi_t(s_t)는 t에서의 pi의 state margin이고, 아래 첨자 t를 생략하면 discount가 적용된 전체 time step에 대한 가중 평균으로 생각할 수 있습니다. 이는 visitation frequency 라고도 하며 전체적으로 policy가 각 상태에서 얼마나 많은 시간을 소비하는지를 나타냅니다.
(8)
이제 몇 가지 기본 reinforcement learning 알고리즘에 대해 설명하겠습니다. 나중에 offline reinforcement learning methods에 대해 이야기할 때 이 용어와 개념을 많이 사용하게 될 것입니다.
가장 기본적인 reinforcement learning 알고리즘 중 하나는 policy gradient algorithm입니다. reinforcement learning objective를 살펴보자면, 우리의 목표는 상태 S_t에서 행동 A_t를 출력하는 조건부 분포를 나타내는 function approximator인 neural network와 같은 정책을 훈련하는 것입니다. 이 policy에는 파라미터가 있는데, 이를 theta로 나타내겠습니다. 따라서 policy을 πθ (A_t | S_t)로도 표현할 수 있습니다.
우리는 total discounted reward의 pi_theta에 의해 유도된 trajectory distribution 하에서 기대되는 값인 theta의 objective j라고 할 수 있습니다. 이는 상단의 reinforcement learning 목표와 동일하지만, 이를 theta의 함수로 보다 명시적으로 표현한 것입니다. 이름에서 알 수 있듯이, direct policy gradient는 J(θ)에 대한 theta의 gradient를 계산하는 것을 의미합니다.
J(θ)의 값을 추정하려면, policy을 실제 세계에서 실행하여 trajectory distribution에서 샘플을 평균하고 모든 reward를 평균하면 됩니다. J(θ)를 알고 싶다면, policy을 50번 실행하여 그 50개의 trajectories의 할인된 reward를 평균할 수 있습니다. 그러한 샘플을 비공식적으로 rollouts라고 부릅니다.
그러나 우리는 단지 J(θ)를 평가하고 싶지 않고, 그 gradient를 알고 싶습니다. J(θ) 의 gradient는 πθ(τ) 아래에서 trajectory 로그 확률의 gradient에 총 reward를 곱에 대한 기댓값으로도 작성할 수 있습니다. 이 간단한 대수적 유도이 있지만, 튜토리얼에서는 이를 다루지 않을 것입니다. 이렇게 하면 정의된 trajectory distribution을 logπ(τ)에 대입하여 다음과 같이 쓸 수 있습니다.
gradient는 πθ(τ) 아래에서 각 action의 log probabilities의 기울기(grad)에 대한 시간에 따른 합과 reward의 시간에 따른 합의 곱에 대한 기댓값과 같습니다. 이는 단순히 τ와 structure distribution의 정의에서 따릅니다.
reward의 합 중 하나를 선택해 log probabilities에 대한 합 내부로 분배할 수 있습니다. 이를 통해 time step t에서의 정책이 이전 time step의 reward에 영향을 미치지 않는다는 사실을 활용할 수 있습니다. 기본적으로 오늘 취한 action은 어제 일어난 일에 영향을 주지 않으므로, 보상의 합을 0에서 대문자 T까지 합하는 대신, t에서 대문자 T까지 합산하는 방식으로 변경할 수 있습니다. 이렇게 하면 variance가 다소 줄어듭니다
이 형태의 policy gradient는 실무에서 사람들이 사용하는 형태와 가깝습니다. 종종 정책 gradient를 작성할 때, reward의 합을 Q^(s_t, a_t)로 대체합니다. 여기서 Q-hat은 action A_t를 취하고, policy πθ를 계속 따를 때의 기대되는 총 reward에 대한 추정치를 나타냅니다.
(9)
Policy gradient를 실제로 구현하려면 어떻게 해야 할까요? 실제로는 샘플을 사용하여 J(θ)를 추정한 것과 동일한 방식으로 샘플을 사용하여 J(θ)를 추정합니다. 이로 인해 Williams의 원래 논문에 나오는 REINFORCE라고 불리는 알고리즘이 다음과 같이 작동합니다.
먼저 policy를 실행하여 일부 trajectory를 샘플링하고, 위의 공식과 방금 생성한 샘플을 사용하여 gradient를 추정한 후, learning rate α를 사용하여 gradient ascent step를 수행합니다.
따라서 이 과정은 직관적으로 rollouts을 생성하고, 그 rollouts의 reward을 추정한 다음, 좋은 rollouts의 경우 action의 log probability를 증가시키고, 나쁜 rollouts의 경우 action의 log probability를 감소시키는 것으로 생각할 수 있습니다.
(10)
이제 기본 policy gradient에 대한 논의를 마쳤으니 Q-hat에 대해 조금 더 이야기해 보겠습니다. Q-hat은 무엇이며 우리가 원하는 것은 무엇일까요?
Q-hat은 state action value function이라고 하는 Q-function에 대한 일종의 추정치입니다. Q-function은 state S_t에서 action A_t를 취하고, policy를 계속 따를 때의 total reward 또는 total discount reward의 기댓값입니다. 마찬가지로, value function은 state S_t에만 조건을 두는 것을 제외하면 동일한 것입니다. Q-function와 value function는 강화 학습에서 엄청나게 유용한 객체이며, offline rl algorithms 논의에서도 반복적으로 사용할 것입니다.
실제로 Q-function이 있다면 policy gradient를 trajectories의 기댓값이 아닌 state probabilities로 다시 쓸 수 있습니다. 이를 수행하는 방법은 s는 dπθ 하에서, a는 πθ(A∣S)에 따라 분포된 상태에서 s와 a에 대해 ∇logπ와 해당 state-action pair의 Q-value을 곱하고, time step 전체의 합산이 아닌 것을 고려하여 앞에 1/1−γ를 곱합니다. 물론 이는 상수이므로 실제 최적화할 때 이 상수를 무시할 수 있습니다.
Q-function은 Bellman equation이라고 하는 것을 따릅니다. Q_pi(S_t, A_t)는 해당 상태에서의 reward와 gamma를 곱한 것과 다음 state와 다음 action에 대한 Q 값을 더한 값의 기댓값과 동일합니다. Bellman equation은 Q-function를 추정하기 위해 function approximator를 훈련할 수 있는 방법을 제공합니다. 이 방식을 사용하여 데이터의 모든 차이와 우측 차이의 차이를 최소화할 수 있으며, 이렇게 하면 policy gradient에서 했던 것처럼 단일 sampling을 사용하는 것보다 더 나은 Q-value 추정치를 얻을 수 있습니다. 이 equation을 단순화하기 위해, expectation에 대한 첨자를 생략할 수 있습니다. 튜토리얼의 나머지 부분에서는 이 form으로 Bellman equation을 작성할 것입니다.
(11)
Q-function이, 정의되면 policy gradient method를 actor-critical algorithm으로 확장할 수 있습니다. Actor-critic algorithm에서는 일부 정책 pi_theta에 대해 Q-function을 추정할 것입니다. 표 형식에서는 실제로 행동 중인 모든 상태에서 action에 대한 Qπθ를 현재 reward + gamma * 다음 Q 함수의 기대값으로 설정하고, 이를 policy gradient formula에서 사용하여 더 나은 policy gradient 추정치를 얻고, policy parameter를 더 잘 업데이트합니다.
일반적으로, 1단계에서 Q-function을 정확하게 계산할 필요는 없습니다. function approximator가 표현하는 Q-function을 업데이트하여 이 equation의 좌측과 우측의 차이를 줄이는 것으로 충분합니다. 매우 일반적인 기술은 좌측과 우측의 차이의 제곱을 취하고 그 derivative를 계산하는 것입니다.
그렇다면 이 오류를 어떤 분포에 대해 추정해야 할까요? Q-function을 훈련할 때, 현재 policy의 동일한 분포 아래에서 이것을 수행한다고 가정합니다. 이는 on-policy 설정입니다. 하지만 이는 우리가 나중에 변화시킬 분포이며 이 분포를 변경할 때 실제로 상당히 많은 추가적인 복잡성을 가져옵니다. 일반적으로 2단계와 3단계는 몇 가지 방법을 이용해서 Qπθ의 기대값에 대해 policy πθ를 개선하기만 하면 됩니다. 이는 policy gradient일 필요는 없지만, policy gradient는 합리적인 선택입니다.
(12)
function approximation을 사용하는 일반적인 actor-critic은 두 개의 function approximation을 가지게 되는데, 하나는 state를 받아 actions에 대한 분포를 출력하며, 파라미터 theta를 가집니다. 두 번째 function approximator는 state와 action을 받아 Q-value를 출력하며, 파라미터 Φ를 가집니다. 일반적으로 다음과 같이 진행할 수 있습니다. Expected Bellman error를 줄이기 위해 QΦ를 업데이트하고, expected Q-value를 증가시키기 위해 πθ를 업데이트합니다. 이 과정을 반복합니다. 이는 generic actor critic algorithm의 기본 개요입니다.
(13)
이제 off-policy 설정으로 전환해 보겠습니다. off-policy 설정에서는 π_θ와 Q_Φ에 대한 업데이트가 다른 분포에서 추출된 데이터를 사용합니다. 이 분포(step 2에서 달라진 분포)를 dπβ라고 부르겠습니다. 이것이 여전히 올바른가요? expectation에서 State에 대한 분포를 완전히 다른 분포로 대체할 수 있나요? 일반적으로 정확하지는 않습니다. 이에 대해서는 추후에 importance sampling에 대해 이야기할 때 더 많이 다루겠습니다.
하지만 반복적으로 추가 데이터를 수집하면 이와 같은 방식이 작동할 수 있습니다. 완전히 offline 설정에서 발생하는 문제에 대해서는 나중에 논의하겠지만, 현재 널리 사용되는 많은 off-policy actor-critic 알고리즘은 일반적으로 다른 분포 dπβ를 사용합니다. 일반적으로 이는 이전 policy의 모든 데이터를 모은 분포입니다. 이러한 알고리즘에서는 지금까지 본 모든 transition으로 구성된 데이터셋(replay buffer라고도 불리는)이 있으며, Q_Φ와 π_θ 모두에 대해 off-policy 학습을 수행하고, 주기적으로 latest policy를 사용하여 세계와 상호작용하여 새로운 데이터를 버퍼에 추가합니다.
(14)
이제 policy를 완전히 제거하여 policy가 implicit 되게 할 수 있으며, 이것은 Q-learning 또는 fitted Q-iteration 알고리즘을 제공합니다. 이를 수행하는 방법은 step 2를 제거하고 Q-function의 argmax인 action을 확률 1로 취하는 implicit policy로 대체하는 것입니다. 그러나 동일한 개념적인 framework가 적용되므로 특히 discrete action이 있을 때 매우 실용적인 방법입니다. 이는 Q-learning과 fitted Q iteration의 기초가 됩니다. 앞서 논의한 모든 사항은 여전히 적용됩니다.
(15)
이제 reinforcement learning methods의 기본 내용을 빠르게 살펴보았으니, offline reinforcement learning 문제 정의와 왜 어려운지를 좀 더 자세히 이야기하겠습니다.
(16)
offline RL은 정확히 무엇을 의미할까요? 이제 reinforcement learning에 대한 notation을 다루었으니, 다시 정의해보겠습니다.
on-policy reinforcement learning에서는 policy가 항상 최신 상호작용에서 최신 데이터를 사용합니다. off-policy reinforcement learning에서는 이전의 모든 iterates에 의해 수집된 모든 데이터가 replay buffer에 수집되어 있습니다, 이는 효율성을 크게 증가시킬 수 있습니다. 하지만 여전히 본질적으로 능동적이고 online 프로세스입니다. 여전히 최신 iterate π_k를 사용하여 데이터를 수집하기 때문입니다. offline RL에서는 데이터가 behavior policy πβ를 사용하여 한 번만 수집되며, 이는 일반적으로 알려져 있지 않습니다. 따라서 transition (S_i, A_i, S_i', R_i)의 집합인 데이터셋이 제공되며, 추가적인 환경 상호작용 없이 이 데이터셋을 사용하여 최상의 policy를 획득해야 합니다.
공식적으로 데이터셋은 (S_i, A_i, S_i', R_i)라는 튜플의 집합으로, S_i'는 S_i state에서 action A_i를 취할 때 얻은 다음 state의 샘플이며, R_i는 그 transition과 관련된 reward입니다. 이 데이터셋의 ㄴstate는 우리가 모르는 어떤 분포 dπβ(s)를 따르고, dπβ(s)는 우리가 모르는 어떤 policy πβ(a|s) 에 의해 유도됩니다. 일반적으로 이 policy가 Markov 특성을 따르는지는 알 수 없으므로 주어진 모든 것이 πβ가 될 수 있습니다. 다음 state는 동일한 환경 dynamics 확률에 따라 샘플링되어야 합니다. 이 역시 우리는 모르지만 동일한 것으로 가정합니다. Reward 역시 알려져 있지 않은 reward function에서 오지만 일관성 있게 유지됩니다.
RL의 objective는 여전히 동일합니다. 환경에서 실제로 실행할 때 expected reward을 최대화하는 policy를 찾는 것입니다. 그러나 학습 중에는 환경에서 실행할 수 없습니다. 앞서 언급한 rollouts을 수행할 수 없습니다. 이 점이 offline RL을 훨씬 더 어렵게 만듭니다.
(17)
이 시점에서 다음과 같은 높은 수준의 개념적 질문을 할 수 있습니다. offline RL 환경에서 합리적인 결과를 얻는 것이 가능한가요? 짧게 대답하면 그렇습니다. offline RL이 가능해야 하는 여러 가지 이유가 있습니다.
첫째, 데이터셋이 다양한 행동을 포함하고 있다면 그중 일부는 다른 것보다 나을 수 있습니다. 단순히 좋은 행동을 찾아내어 offline RL이 데이터 생성에 사용된 policy보다 더 나은 policy를 획득할 수 있습니다.
둘째, 좋은 행동은 의미 있는 일반화를 제공할 수 있습니다. 만약 당신의 functional approximator가 효율적인 일반화를 제공한다면, 하나의 곳에서 좋은 행동은 다른 곳에서도 좋은 행동을 암시할 수 있습니다.
셋째, 서로 다른 부분의 좋은 행동을 결합할 수 있음을 의미하는 stitching effect가 있습니다. 전체 작업을 수행하는 단일 trajectory를 본 적이 없더라도 trajectory의 일부들을 새로운 방식으로 결합할 수 있습니다. 예를 들어, A에서 B로 가는 trajectory와 B에서 C로 가는 trajectory를 포함한 학습 세트가 있는 경우, 이를 결합하여 A에서 C로 가는 방법을 알아낼 수 있습니다. 다음은 이에 대한 구체적인 예입니다. 이 녹색 원이 미로를 탐색하는 dataset이 있다고 가정해 봅시다. 중요한 것은 녹색 원이 다른 장소로 계속 이동하기 때문에 실제로 우리가 원하는 작업을 수행하지 않습니다. 우리가 진정으로 원하는 작업은 왼쪽 아래 코너에서 오른쪽 위 코너로 이동하는 것입니다. 녹색 공은 그 작업을 수행하지 않지만 미로의 다양한 곳으로 이동합니다. 이 dataset은 미로를 탐색하는 데, 어떤 탐색이 가능한지를 이해하는 데 충분한 정보입니다. 그런 다음 아래 왼쪽에서 오른쪽 위로 이동하는 목표를 부여 받으면, 데이터셋에서 실제로 본 적이 없는 전체 경로일지라도, dataset에서 본 행동의 일부를 결합하여 이 작업을 수행할 수 있습니다.
(18)
이 모든 것이 왜 중요한가요? reinforcement learning에서 agent가 세계와 여러 번 상호작용해야 하며, 모델을 업데이트할 때마다 dataset을 다시 수집해야 하기 때문에 매우 비실용적일 수 있습니다.
물리적 로봇 기술을 폭넓게 일반화하거나 의료 진단과 같은 online 탐사가 실용적이지 않은 데이터에서 학습하려고 한다면, 또는 실험이 너무 비용이 많이 드는 상황에서는 다른 접근이 필요합니다. 예를 들어, 대형 전자상거래 기업이 재고 관리를 하려 할 때 모든 창고의 재고에 대해 강화 학습 알고리즘이 시행착오 학습을 하게 하기는 어려울 것입니다. 그러나 아마도 많은 양의 과거 데이터는 보유하고 있을 것입니다.
마찬가지로, 자율 주행의 경우에도 exploration 문제 때문에 오늘날 강화 학습같은 active learning 방식이 사용되기 어렵습니다. 자율 주행을 강화 학습과 결합해 생각하는 많은 사람들이 시뮬레이션 관점에서 접근한다고 보는 것이 공정한 평가일 것입니다. 그러나 이와 같은 환경에서도 offline data는 운전자에게서 쉽게 구할 수 있습니다.
(19)
기본적인 레시피가 작동하나요? offline RL을 실제로 수행할 수 있나요? 몇 년 전 로봇 grasping에 대한 사례 연구를 말씀드리겠습니다. QT-Opt 라고 불리는 이 프로젝트는 이미지에서 실제 데이터를 사용하여 로봇 조작을 학습하는 일반적인 프레임워크를 개발하는 것이 목표였습니다. 알고리즘은 제가 이미 설명한 fitted Q-iteration 방법의 고급 버전이었습니다. 유사한 원칙을 사용하며, 여러 이전 실험에서 수집된 대량의 dataset을 사용하여 학습이 수행되었습니다. offline 데이터만을 사용하여 policy를 훈련하거나 추가적인 online fine-tuning 을 수행할 수 있었습니다.
(20)
이 방법으로 훈련된 기본 시스템은 매우 잘 작동했습니다. 단일 RGB 이미지를 사용하여 다양한 물체를 직접 집어 들 수 있었습니다. 여기에서 사람이 여러 가지 방법으로 로봇을 방해하는 상황에서도 학습된 grasping 동작을 실행하는 것을 볼 수 있습니다. reinforcement learning이 새로운 환경에서 일반화할 수 있으며, 충분히 다양하고 큰 dataset이 제공될 때 일반화할 수 있음을 보여줍니다. 이전에 본 적이 없는 새로운 물체를 집어 들 수 있습니다.
하지만 우리가 논문에서 답하고자 했던 한 가지 질문이 있었습니다. 이는 본 프로젝트가 주로 robotics에 초점을 맞추고 있었기 때문에 약간의 부수적인 내용이었지만, 이 튜토리얼과 매우 관련이 있습니다. 그것은 바로 pure offline training을 할 때와 추가적인 online fine-tuning을 수행할 때 어떤 일이 일어나는지에 대한 것이었습니다.
offline 훈련을 위해 580,000개의 offline transition 데이터셋을 사용했으며, 추가적인 online fine-tuning에서는 단 28,000개의 추가 전환을 사용했습니다. 추가 데이터는 매우 적습니다. 차이가 있다면, 이는 단지 데이터셋의 크기 때문이 아니라 데이터의 출처, 즉 online 수집 때문입니다. unseen objects에 대한 완전한 offline 방법의 성공률은 87%였고, fine-tuning 후에는 96%였습니다. 아마도 큰 차이가 없다고 생각할 수도 있지만, 실패율을 보면 offline 방법의 실패율이 세 배 이상 큽니다. 일반화는 꽤 잘 되었지만, online fine-tuning이 없어서 큰 대가를 치르고 있는 것입니다. 데이터셋은 매우 좋은 dataset이었습니다. 다양하고 광범위했습니다. 그렇다면 무엇이 잘못된 것일까요? 이는 아마도 알고리즘 문제로 보입니다.
(21)
offline reinforcement learning이 어려운 이유는 무엇일까요? 여러 가지 문제가 있습니다. 첫 번째 문제는 피드백입니다. 피드백은 배포된 머신러닝 시스템이 다음에 무엇을 볼지를 변경할 때 문제가 됩니다. 당연히 RL에서는 sequential decision process가 피드백 문제를 겪습니다. 학습된 모델을 사용하여 행동하면, 보게 되는 것을 변경합니다. 간단한 예를 들어보겠습니다. 강화 학습 문제를 잊고 더 간단한 문제를 생각해봅시다. 최적의 행동을 포함한 dataset이 있다고 가정합니다. 우리는 그냥 모든 행동을 복사하기만 하면 됩니다. 문제는 최적의 행동을 학습할 때, policy πθ를 학습할 때, 작은 실수를 저지르게 되고, 그로 인해 학습되지 않은 state로 가게 되며, 결과적으로 더 큰 실수를 하게 됩니다. 이러한 실수가 누적되어 시간이 지남에 따라 정책이 데이터에 나타난 최적의 행동에서 크게 벗어나게 됩니다. 이 과정에서의 오차가 O(T^2)로 스케일링된다는 것은 잘 알려져 있습니다. 이는 Ross 등이 발표한 획기적인 논문에서 논의된 바 있는데, 그 논문의 제목은 "Reduction of Imitation Learning and Structured Prediction to No-Regret Online Learning"입니다.
물론 여기서 우리는 behavior cloning을 수행하지 않지만, 아마도 더 어려운 일에 대해서 논의하고 있습니다. behavior cloning조차도 이러한 문제가 있다면, 여기서 또한 피드백 문제가 발생할 것입니다.
(22)
offline reinforcement learning의 문제를 분석한 논문 avril kumar 등의 "Stabilizing Off-Policy Q-Learning via Bootstrapping Error Reduction"에서 우리는 무엇이 잘못 되었는지에 대해 몇 가지 가설을 세웠습니다.
한 가설은 일종의 overfitting 효과가 발생하고 있을 수 있다는 것이었습니다. 즉, 더 많은 데이터를 수집할 수 없을 때 초기에 수집한 데이터에 over fitting 되어 좋지 않은 결과가 나타날 수 있다는 것입니다. 이를 평가하기 위해 우리는 표준 벤치마크(이 경우 'half cheetah'라고 불리는)에 대해 naive offline actor-critic 알고리즘에 사용 가능한 training data의 양을 변경해 보았습니다. 파란색 곡선은 1,000개의 데이터 포인트를, 빨간색 곡선은 100만 개를 나타냅니다. 보시다시피 두 곡선이 비슷한 성능을 보이고 있습니다. 데이터의 양을 늘려도 문제가 줄어들지 않는다면, 이 문제가 overfitting 때문일 가능성은 낮아 보입니다.
그 다음으로 우리는 학습된 Q-function에게 그것이 어떻게 수행되고 있다고 생각하는지 물어보았습니다. Q-function은 예상되는 future reward의 추정치라는 점을 기억하세요. 따라서 여러분은 Q-function에게 높은 reward를 얻을 것이라고 생각하는지 물어볼 수 있습니다. 이것이 Q-function이 얻을 것이라고 생각하는 값입니다. 여기서 y축이 실제로 로그 스케일이라는 점에 주목하세요. 1,000개의 transition으로 이루어진 데이터셋에 대해 10의 20제곱의 reward를 얻을 것이라고 생각하지만, 실제로는 -250을 얻습니다. 이는 꽤 큰 차이입니다. 따라서 뭔가가 잘못되어 있다는 것을 알 수 있습니다. 알고리즘은 자신이 아주 잘 할 것이라고 생각하고 있습니다.
우리는 다른 가설들도 가지고 있었지만, 그리 흥미롭지는 않았습니다. 아마 training data가 좋지 않아서 그럴 수도 있다고 생각했지만, 일반적으로는 그렇지 않습니다. behavior policy에서 최선의 데이터를 뽑아내는 것이 때로는 이러한 naive 알고리즘보다 더 나은 성능을 보이기도 합니다. 따라서 알고리즘이 실수를 하고 있고, 이는 단순한 overfitting이나 나쁜 training data보다 더 깊은 문제입니다. 결국 이 문제의 핵심은 distributional shift에 있다는 것이 밝혀졌습니다.
(23)
결국 이 문제의 핵심은 distributional shift로 귀결됩니다.
어떤 종류의 supervised learning 문제, 즉 empirical risk minimization 문제를 풀 때, 예를 들어 어떤 distribution p(x) 하에서 f_θ(x)와 실제 값 y 사이의 차이를 최소화한다고 가정해 봅시다. 이때 x*에 대해 f_θ(x*)가 정확한지 물어볼 수 있습니다. overfitting하지 않았다면, training distribution 하에서 오차의 기대값이 낮을 것임을 알 수 있습니다. 따라서 같은 distribution에서 새로 추출한 샘플에 대해서도 오차가 낮을 것으로 예상할 수 있습니다.
하지만 일반적으로 다른 distribution p'(x)에서는, p'이 p(x)와 같지 않다면 오차가 낮을 것이라고 기대할 수 없습니다. 물론 p'이 p와 매우 가까우면 어떤 bound를 보일 수 있지만, 그들이 다르다면 일반적으로 모든 보장이 사라집니다. 사실 x*가 p(x)에서 추출되었더라도, 일반적으로 최악의 경우 성능을 bound하는 것은 매우 어렵습니다.
보통 우리는 이것을 걱정하지 않을 것이라고 말할 수 있습니다. 우리는 deep learning을 하고 있고, 이 deep net들은 정말 잘 일반화됩니다. 어떤 경우에는 실제로 그럴 수 있습니다.
하지만 약간의 변형을 고려해 봅시다. x*가 임의로 선택된 것이 아니라 학습된 함수 f_θ(x)를 최대화하도록 선택되었다면 어떨까요?
예를 들어, 녹색 곡선이 실제 곡선이고 파란색이 여러분의 fit이라고 해봅시다. 여러분의 fit은 대부분의 지점에서 꽤 좋습니다. 하지만 f_θ(x)가 가장 큰 x를 선택하면 어떻게 될까요? 가장 큰 오차를 가진 지점을 얻게 됩니다. 어떤 의미에서, 학습된 function approximator의 입력에 대해 최적화하는 것은 adversarial example을 생성하는 것과 매우 비슷합니다. function approximator가 가장 큰 값을 예측하는 x를 찾는 것이며, 일반적으로 이는 양의 방향으로 가장 큰 실수가 될 것입니다.
따라서 여러분의 deep net이 wonderfully well하게 일반화될 것이라고 믿더라도, x들이 여러분의 deep net에 대한 optimization에 의해 선택된다면, 이를 극복하기는 매우 어렵습니다.
(24)
그렇다면 reinforcement learning 어느 부분에서 distributional shift를 겪게 될까요? Bellman equation으로 돌아가 봅시다. 여기서는 Q-learning 설정에 대해 작성했지만, actor-critic 설정에서도 동일한 원리가 적용됩니다.
실제로 actor-critic 방식으로 다시 작성해 보겠습니다. 타겟 값이 어떤 distribution π_new에 따른 a'의 기대값을 가진다고 말하겠습니다. Q-learning을 하고 있다면 π_new는 Q에 대해 greedy한 policy가 될 것이고, actor-critic을 하고 있다면 이는 새로운 actor가 될 것입니다. 이 방정식의 우변을 y(s,a)라고 하고 이제 target values는 y(s,a)입니다.
Q-function을 훈련시키는 목적은 무엇일까요? off-policy 설정에서는 어떤 distribution π_β 하에서 Bellman equation의 좌변과 우변 사이의 차이의 기댓값을 최소화하는 것입니다. 여기서 π_β는 behavior policy입니다. 이는 Q가 π_β의 기대값 하에서 y와 가깝다는 것을 의미합니다. 따라서 π_β가 π_new와 같을 때 좋은 정확도를 기대할 수 있습니다. 왜냐하면 좌변에서 우리는 π_new 하에서 Q의 기대값을 평가하고 있기 때문입니다.
하지만 그런 경우가 얼마나 자주 있을까요? 전체 목적은 behavior policy보다 더 나은 policy π_new를 얻는 것입니다. 희망적으로는 좋은 방향으로 다른 policy을 얻는 것이죠. 사실 상황은 더 나쁩니다. π_new는 Q의 기대값을 최대화하도록 선택되기 때문입니다. actor-critic 알고리즘을 생각해보세요. 우리는 Q의 기대값의 argmax가 되도록 π_new를 선택합니다. 이전 슬라이드에서처럼, 우리는 본질적으로 Q-function에 대한 adversarial example이 되는 행동을 초래하는 정책을 선택하고 있는 것입니다. 이는 Q function이 그렇게 잘 수행되지 않지만 자신이 환상적으로 잘하고 있다고 생각하는 이유를 설명합니다.
(25)
offline 설정 어느 부분에서 또 distributional shift로 인한 어려움을 겪을까요? behavior cloning 경우에 대처해야 하는 것과 같은 drift 문제가 있습니다. 우리의 policy에 의해 유도된 state distribution d_π_θ는 일반적으로 behavior policy에 의해 유도된 state distribution d_π_β와 같지 않을 것입니다. 이는 π_θ가 training data에서는 훌륭할지라도 실제 제어에 사용할 때는 좋지 않을 수 있다는 것을 의미합니다.
(26)
따라서 우리는 policy를 실제로 실행할 때 state distribution의 불일치도 가지고 있으며, on-policy 경우와 마찬가지로 sampling 및 function approximation 오차도 있습니다. 다만 이제는 조금 더 문제가 됩니다. 예를 들어, online RL 설정에서 Q function이나 value function을 fitting한다고 해봅시다. 녹색 점들이 여러분의 데이터 포인트를 나타내고, 여러분이 거기에서 정말 좋은 value를 가질 것이라고 생각하며 약간 extrapolate 했다고 가정해 봅시다. 그러면 데이터를 수집할 때 그 지점을 샘플링하게 되고, 만약 그것이 나쁘다면 여러분의 추정치를 수정하는 아주 좋은 반례, 일종의 hard negative가 될 것입니다. 하지만 물론 offline 설정에서는 이러한 수정이 일어나지 않습니다. 따라서 표준 RL에서의 sampling 오차와 function approximation 오차와 관련된 기존의 과제들이 offline 설정에서는 훨씬 더 심각해집니다.
(27)
이제 튜토리얼의 다음 섹션에서는 몇 가지 고전적인 batch RL 알고리즘에 대해 간단히 설명하겠습니다. 기본적으로 과거에 사람들이 이러한 문제들을 어떻게 생각했는지에 대한 내용입니다. 그리고 그 후에 전반적으로 이러한 distributional mismatch 문제들을 해결하려고 노력하는 몇 가지 현대적인 알고리즘에 대해 이야기하겠습니다.
(28)
배치 또는 offline 강화학습 알고리즘의 한 광범위한 클래스는 policy gradient 프레임워크를 확장합니다. 이전에 설명한 방식으로 policy gradient를 계산하기 위해서는 π_θ로부터 샘플을 생성해야 합니다. 따라서 J(θ)에 대한 θ의 gradient는 대략적으로 π_θ로부터의 샘플들에 대한 평균으로, 시간에 대한 합계로 표현됩니다. 이는 log probability의 θ에 대한 gradient에 Q_hat을 곱한 것입니다.
하지만 만약 우리가 다른 분포 π_β로부터의 샘플만 가지고 있다면 어떨까요? 한 분포에서의 기대값을 원하지만 다른 분포에서의 샘플을 가지고 있을 때 사용할 수 있는 일반적인 트릭은 importance sampling을 사용하는 것입니다. 우리는 이 importance weight인 π_θ(τ_i) / π_β(τ_i)를 넣습니다. 이는 policy gradient에 대한 편향되지 않고(unbiased) 일관된(consistent) 추정량이지만, 실제로는 매우 높은 variance을 가진 추정량입니다.
(29)
importance weight를 좀 더 자세히 살펴봅시다. 참고로, 여기서 Q_hat은 이 경우 policy π_β에 대한 future reward의 합일 뿐입니다. 이에 대해서는 나중에 다시 돌아오겠지만, 먼저 importance weight를 확장해 봅시다.
Trajectory distributions 정의를 대입하면, 분자에는 p(s1)와 모든 transition probability의 시간에 대한 곱, 그리고 π_θ(a_t|s_t)가 있고, 분모에는 π_θ 대신 π_β가 있는 동일한 것이 있습니다. 이는 초기 state probability과 transition probability가 상쇄된다는 것을 의미하며, 이는 우리에게 아주 좋은 소식입니다. 왜냐하면 우리는 그것들이 무엇인지 모르기 때문입니다. 우리는 π_β가 무엇인지 알아야 합니다. π_β가 무엇인지 모른다면 importance sampling을 사용할 수 없지만, 알고 있다면 이러한 importance weight를 계산할 수 있습니다.
불행히도 이 importance weight는 horizon T에 대해 지수적으로 증가할 것입니다. 각각 1보다 작은 T개의 확률들을 곱하고 있기 때문에, s_t가 증가함에 따라 전체 분자와 분모가 지수적으로 0에 수렴할 것입니다. 이것이 RL 설정에서 이러한 방식으로 수행될 때 importance sampling이 매우 나쁜 수치적 특성을 가지는 이유입니다. 따라서 T가 커짐에 따라 weight가 퇴화될 가능성이 매우 높습니다.
그렇다면 이를 어떻게 해결할 수 있을까요? 간단히 말해서, 완전히 해결할 수는 없지만 문제를 완화하기 위해 취할 수 있는 몇 가지 단계가 있습니다.
이를 수행하는 방법을 살펴보기 위해, 먼저 action probabilities에 대한 이 곱을 두 부분으로 나누는 것이 매우 유용합니다. 첫 번째 부분은 0에서 t-1까지이고, 두 번째 부분은 t에서 T까지입니다. 물론 이들을 곱하면 0에서 T까지의 원래 곱을 얻습니다. 하지만 나는 이들을 두 부분으로 나누고, 첫 번째 부분을 ∇log π 앞에 두고 두 번째 부분을 Q_hat 앞에 둘 것입니다.
제가 이렇게 하는 이유는 직관적으로 이 두 부분의 역할이 약간 다르기 때문입니다. 첫 번째 반쪽은 본질적으로 new policy π_θ가 action policy π_β와 동일한 state-action 튜플에 도달하지 않을 수 있다는 사실을 설명합니다. 즉, 과거를 설명합니다. π_β는 π_θ가 도달할 가능성이 매우 낮은 어떤 state에 도달했을 수 있으며, 그 state로 이어진 모든 action의 곱은 이것이 발생했을 때를 감지하는 proxy 역할을 할 수 있습니다. 따라서 첫 번째 곱을 π_θ가 state s_t에 도달하고 action a_t를 취할 가능성이 얼마나 더 높거나 낮은지를 추정하는 것으로 생각할 수 있습니다.
두 번째 곱은 Q_hat이 π_θ가 아닌 π_β의 가치에 대한 추정치라는 사실을 설명합니다. 따라서 이는 가치를 수정하는 것이며, 본질적으로 미래의 reward를 설명합니다.
첫 번째 부분은 state s_t에 도달할 확률의 차이를 설명하고, 두 번째 부분은 부정확한 Q_hat을 가지고 있다는 것을 설명합니다.
우리는 첫 번째 부분을 무시할 수 있습니다. π_θ와 π_β가 서로 충분히 가깝다면 첫 번째 부분을 무시하는 것이 limited bounded 오차만을 초래한다는 것이 밝혀졌고, 실제로 진전을 이룰 수 있습니다. 이는 매우 일반적으로 수행되는 일입니다. 하지만 두 번째 부분은 정말로 무시할 수 없습니다.
첫 번째 부분을 무시하는 것이 왜 합리적인 approximation인가요? 직관적으로, π_β가 π_θ와 유사한 state에 도달한다면 이것이 잘 작동할 것으로 예상할 수 있습니다. 더 형식적으로, 실제로 π_θ와 π_β 사이의 divergence 측면에서 한 estimator를 사용한 return과 다른 estimator를 사용한 return 사이의 bound를 증명할 수 있습니다.
하지만 두 번째 항은 조금 더 문제가 됩니다. 우리는 거기서 importance weight를 제거할 수 있습니다. 그래서 많은 문헌에서 실제로 importance sampling을 사용한 더 나은 가치 추정에 초점을 맞추고 있습니다.
(30)
그렇다면 이러한 return을 어떻게 추정할 수 있을까요? 지금 Q_hat은 추정치입니다. 우리가 원하는 것은 π_θ 하에서의 expected reward의 추정치이고, 그래서 우리는 importance sampling correction을 적용합니다.
우리가 할 수 있는 한 가지 방법은 Q_θ가 시간에 따른 reward의 합이라는 사실을 고려하고 importance weight를 reward의 합 안으로 분배하는 것입니다. 기본적으로 Q_hat을 시간에 대한 합으로 대체합니다. 여기서 γ^(t'-t) * r_t'에 곱을 분배하고, t' 이후의 모든 미래 확률이 t'의 reward에 영향을 미치지 않는다는 점에 주목합니다. 따라서 곱을 취하는 변수를 t에서 T까지가 아니라 t에서 t'까지로 변경할 수 있습니다.
이것은 여전히 exponential이지만, earlier 보상에 대해서는 훨씬 적은 수의 숫자를 곱하게 됩니다. exponential하게 폭발하는 importance weight를 완전히 피하려면 value function estimation을 사용해야 합니다. 어떤 importance sampling 트릭도 이 exponential blow up을 완전히 피할 수는 없지만, 완화할 수는 있습니다.
어떻게든 Q_π_θ를 알고 있다면, 그것을 바로 대입할 수 있고, 이것이 다음 섹션에서 이야기할 내용입니다.
하지만 먼저 사람들이 이 문제에 대해 생각한 몇 가지 다른 방법을 언급하며 importance sampling에 대한 논의를 마무리하겠습니다.
(31)
여기서 언급하고 싶은 한 가지 개념은 'doubly robust estimator'라고 불리는 것입니다. doubly robust estimator는 exponential blow up을 없애지는 못하지만 variance는 줄일 수 있습니다.
먼저 표기법을 조금 단순화하겠습니다. 이것은 exponential 하며, 우리의 가치 추정치입니다. t=0부터 합산하여 표기법을 단순화하겠습니다. Generaility를 잃지 않고 현재 time step이 0이라고 가정하겠습니다. t'를 t로, t''를 t'로 바꾸고 첨자 i를 생략하겠습니다. 이렇게 하면 표기법이 정리될 것입니다.
어떤 state s0에서의 가치는 단순히 시간에 대한 합으로, 그 time step까지의 importance weight에 γ^t를 곱하고 r_t(π_β가 그 time step에서 얻은 reward)를 곱한 것입니다. 표기법을 더 정리하기 위해 ρ_t 기호를 사용하여 importance weight를 나타내겠습니다. 이렇게 하면 importance sampled return estimator를 매우 간단하게 쓸 수 있습니다.
그리고 나서 이 합과 곱을 확장할 수 있는데, 이는 당연히 더 복잡해 보이지만 특정한 재귀적 관계를 시사할 것입니다. 실제로 곱의 합을 쓰면 r_0 * ρ_0 + ρ_0 * γ * ρ_1 * r_1 + ρ_0 * γ * ρ_1 * γ * ρ_2 * r_2 등등이 됩니다. 이것들을 그룹화하면 깔끔한 재귀적 구조를 볼 수 있습니다. ρ_0 * (r_0 + γ * (ρ_1 * (r_1 + γ * ...))) 등으로 보입니다.
따라서 이를 재귀적으로 computed quantity로 쓸 수 있으며, 이를 V_bar(T)라고 부르겠습니다. V_bar(T+1-t) = ρ_t * (r_t + γ * V_bar(T-t))입니다. 우리는 이 모든 V_bar를 재귀적으로 계산할 수 있고, 이렇게 하면 importance sampled estimator를 얻게 됩니다.
이것 자체로는 아무것도 바꾸지 않았습니다. 사실 유용한 방식으로 estimator를 변경하지 않았습니다. 이는 단지 다른 방식으로 쓴 것일 뿐입니다.
(32)
하지만 이제 'doubly robust estimator'라고 불리는 매우 유용한 개념을 도입하겠습니다.
여기 bandit 경우, 즉 time step이 하나뿐인 경우에 대한 doubly robust estimator가 있습니다.
여기서 명확히 하자면, 다른 policy π_data에서 샘플을 얻었고, 이는 reward r_s,a를 초래했으며 importance weight ρ(s,a)를 가집니다. 그리고 return의 모델 Q_hat(s,a)가 있습니다. 이는 아마도 value function을 훈련시키거나 모델을 훈련시키고 일부 model-based evaluation을 수행하여 얻은 것일 수 있습니다. Q_hat(s,a)는 여러분의 function approximator이고, V_hat(s)는 새로운 policy π_θ 하에서의 기대값입니다.
이때 더 나은 추정치, 즉 doubly robust 추정치를 얻을 수 있습니다. V_hat(s)를 사용하는데 V_hat(s)는 biased 될 수 있기 때문에 여기에 importance sampled 추정치를 더하지만 Q_hat(s,a)를 빼줍니다. 이는 V_hat(s)를 더하는 것에 대한 영향을 보정하기 위함입니다. 제어 변량(Control variants)에 익숙한 분들은 이것이 본질적으로 같은 개념임을 알아차릴 것입니다.
이 아이디어를 sequential setting에 적용하기 위해, v_hat을 V_bar에 대한 doubly robust estimator로 적용할 수 있습니다. 따라서, 만약 어떤 V_hat과 Q_hat이 있다면, 기본적으로 V_bar에 대한 재귀적 관계를 변경하여 V_hat과 Q_hat을 도입할 수 있습니다.
이것이 바로 sequential setting에 doubly robust estimator를 적용한 Jiang and Li의 결과입니다. 이는 exponential problem을 해결하지는 못하지만, 원칙적으로 variance를 줄일 수 있습니다.
(32)
Importance sampling 문제를 완화하기 위해 문헌에서 탐구된 또 다른 개념으로는 marginal importance sampling이 있습니다.
여기서는 action probabilities의 곱셈을 계산하는 대신, state probabilities의 importance weight를 추정합니다. 일반적으로 state marginal dπθ 와 dπβ를 계산하는 것은 매우 어렵지만, 많은 경우에는 marginal 자체를 계산하기 보다 marginal의 비율을 계산하는 것이 더 매력적입니다. State나 state action importance weight, 즉 marginal importance weights를 계산할 수 있다면, 이를 통해 return을 추정할 수 있습니다.
일반적으로 이는 policy learning보다는 off-policy evaluation에 사용됩니다. 하지만, q estimates를 얻는 방법도 상상할 수 있습니다.
가중치는 어떻게 결정할까요? 일반적으로 이 분야의 대부분의 알고리즘들은 (자세히 다루지는 않겠지만) 일종의 consistency condition을 해결합니다. consistency condition의 한 예로, Zhang 등의 GenDICE 논문에서 나온 것이 있습니다. 이는 MDP에서 occupancy measure equations의 흐름을 작성한 다음 d_π_θ를 d_π_β * w로 대체하여 얻은 관계입니다. d_π_β * w가 바로 d_π_θ이기 때문입니다. occupancy measure flow equations을 작성하고 d_π_θ를 d_π_β * w로 대체하면, 알고 있거나 샘플 접근이 가능한 quantities로만 표현된 w에 대한 조건을 얻게 됩니다.
첫 번째 항은 해당 state에서 시작할 확률을 나타내고, 두 번째 항은 그 state로 transitioning할 확률을 나타냅니다. 이는 occupancy measure equations과 마찬가지입니다. 그런 다음 이를 consistency condition으로 바꾸고 일관된 w를 구할 수 있습니다. 일반적으로 이는 일종의 fixed point problem을 포함합니다.
(33)
이에 대해 더 자세히 알고 싶다면, 이 슬라이드에 인용된 자료들을 참고하실 수 있습니다. 슬라이드에는 importance sampling policy gradient estimation에 대한 고전적인 연구, doubly robust estimator, 일부 분석과 이론, 그리고 marginalized importance sampling에 대한 인용이 있습니다. 우리의 tutorial and survey paper의 3.1, 3.2, 3.3, 3.4 섹션에서도 이에 대해 논의했습니다. 이에 대해 더 자세히 읽고 싶으시다면, 여기서 영상을 잠시 멈추고 이 인용들을 찾아보실 수 있습니다.
(34)
다음으로 이야기할 classic batch RL algorithm은 value function estimation과 관련된 것입니다. 사람들이 offline value function estimation을 어떻게 생각했는지에 대해 이야기하겠습니다.
하나의 연구는 approximate dynamic programming과 q-learning의 아이디어를 offline settings로 확장하여, 단순한 function approximators, 특히 linear function approximators를 사용하는 경우 tractable한 솔루션을 도출하는 방법을 제시합니다. 이는 deep reinforcement learning에는 덜 관련될 수 있지만, 이러한 알고리즘은 문헌에서 흥미로운 경향과 아이디어를 제시하므로 알아볼 가치가 있습니다.
사람들이 이를 어떻게 생각하고 있는지에 대한 최신 연구는 deep nets과 같은 highly expressive function approximators을 사용하는 approximate solutions에 초점을 맞춥니다. 주요 도전 과제는 distributional shift이며, 일반적으로 최신 연구에서는 이러한 문제에 대해 다루고 있습니다. 고전 연구에서는 distributional shift에 대해 다루지 않으며, offline estimation 문제를 다루는 경향이 있습니다. 최신 연구에서는 expressive function approximators를 다루고 있으며, distributional shift에 초점을 맞춥니다. 이는 아마도 선형 모델에서는 distributional shift가 큰 문제가 아니었기 때문일 수 있습니다. 선형 모델은 더 잘 일반화되거나, 좋은 features를 제공받았기 때문일 수 있습니다.
하지만 오늘날에는 이는 매우 큰 문제입니다. 이러한 맥락에서 고전적인 offline batch RL methods를 설명하고, Aviral이 distributional shift를 다루는 최신 방법에 대해 이야기할 것입니다. 이 자료의 많은 부분은 Ron Parr이 준비한 우수한 슬라이드에서 차용되었습니다.
(35)
Warm up으로 linear models을 사용한 model-based reinforcement learning을 생각해 봅시다. feature matrix를 Φ라고 하겠습니다. feature matrix는 |S| X k 항목을 가진 행렬이며, vector-valued function 5s로도 생각할 수 있습니다. 이를 열의 수는 states 수, 행의 수는 features 수로 구성된 행렬로 생각할 수 있으며, 각각에 대해 해당 state에서 해당 feature의 값을 나타내는 숫자를 가집니다.
이 feature space에서 offline model-based RL을 수행할 수 있을까요? 다음과 같이 수행할 수 있습니다.
1단계: feature에 대한 reward을 추정합니다.
2단계: zero features의 관점에서 transition probabilites를 추정합니다.
3단계: 이를 사용하여 value function을 복구합니다.
4단계: 그 value function을 사용하여 policy를 개선합니다.
reward model 그러니까 과거에는 모든 것이 linear했기 때문에 모든 모델이 linear 할 것입니다. reward model은 Φ에 weight vector인 w_r을 곱한 값이 될 것이며 우리는 이 값이 r과 가까워지길 원합니다. w_r은 feature 수와 동일한 차원을 가진 열 벡터입니다. w_r은 reward vector r에 대한 최소 제곱을 통해 풀 수 있고, 다음은 vector r에 가장 적합한 최소 제곱으로 w_r을 풀기 위한 normal equation입니다.
지금은 모든 state에서 reward를 가진다고 가정합니다. 샘플은 나중에 다루겠습니다.
우리가 원하는 Transition model은 Φ와 일부 transition matrix PΦ를 곱한 값과 Pπ에 Φ를 적용하여 얻는 효과와 가까워야 합니다. Pπ는 dynamics and the policy를 구성하여 얻은 실제 transition matrix이므로 이는 fixed policy와 PΦ에 대한 transition model이고 PΦ는 이를 approximate하려는 것입니다.
따라서 Pπ가 state에서의 실제 transition martix이며, |S| X |S|이고 이는 state에서 주어진 policy π에 유도된 markov chain입니다. PΦ는 estimated된 feature space transition matrix이며 K X K입니다.
다시 말해서, 우리는 PΦ를 추정하기 위해서 최소 제곱을 수행하고, PΦ의 normal equation을 풀 수 있습니다. 이전과 마찬가지로 PΦ에 대한 tabular access를 가정합니다. 따라서, PπΦ를 정확하게 계산할 수 있습니다. 물론 이것은 비현실적인 가정이며, 나중에 샘플 기반 설정을 다룰 것입니다.
(36)
Reward와 transition probabilities를 얻었으므로, value function을 linear equation Φ*w_v로 추정할 수 있습니다.
w_v를 w_r과 PΦ에서 얻는 방법은 무엇일까요? 만약 tabular reinforcement problem을 풀고 싶다면 그리고 Pπ와 r에 대해 v_π를 풀고 싶다면, 벡터 표기법으로 v_π는 r + gamma * Pπ * Vπ입니다. 이는 단순히 vector notation으로 표현된 Bellman 방정식입니다. 그런 다음 gamma * Pπ * Vπ를 좌측으로 옮기고, 양쪽에 inverse를 취하면 Vπ = (I – gamma * Pπ) inverse * r이 됩니다. model-based 케이스에서도 동일한 논리를 적용하여 feature space에서도 동일한 방정식을 적용할 수 있으며, w_v = (I – gamma * PΦ)inverse * w_r을 얻을 수 있습니다. 이는 feature space에서 동일한 논리가 적용된다는 것을 의미합니다.
그렇다면 모델이 필요할까요? w_r과 PΦ를 구하려고 했지만, 실제로 필요한 것은 w_v입니다. w_r과 PΦ의 방정식을 w_v에 대입해보겠습니다. 대입하면 복잡한 방정식을 얻게 됩니다. 이 방정식이 복잡해 보일 수 있지만, 걱정하지 마세요. w_v에 대해 w_r과 PΦ를 대입한 것입니다.
간단한 선형 대수로 이 방정식을 단순화하면, w_v = (Φ_transpose * Φ – gamma * Φ_transpose * Pπ * Φ)_inverse * Φ_transpose * r이 됩니다. 훨씬 단순한 방정식이며, 더 이상 w_r이나 PΦ가 필요하지 않습니다. 직접적으로 w_v를 구할 수 있으며, 중간 단계를 건너뛸 수 있습니다. model-based 케이스와 model-free 케이스가 이 설정에서 동일함을 보여줍니다. 이 wv 방정식은 development error를 최소화 하기 위해서 least squares 을 수행하여 얻은 것과 동일한 결과입니다. 따라서, 이는 least squares temporal difference learning이라고 부릅니다.
(37)
이는 기쁘게도 samples로도 가능합니다. 샘플 기반 설정에서는 모든 state의 reward을 포함한 entire vector r을 사용할 수 없으며, entire matrix Pπ를 사용할 수 없습니다. 그러나 transition (s, a, r, s')의 데이터셋이 있으며, 이를 r 및 Pπ에서의 샘플로 사용할 수 있습니다. 데이터셋은 이 경우 π로부터의 샘플이어야 합니다.
이제 행렬은 k X s가 아니라 k X 샘플 수입니다. 우리는 PπΦ를 s'의 features로 대체할 것입니다. 이를 Φ'라고 부를 것입니다. r을 sample reward 벡터로 대체할 것입니다. 모든 것은 동일하게 작동하며, 오직 샘플링 오류만이 있습니다. 동일한 방정식과 샘플을 사용하여 w_v를 해결할 수 있습니다. 실제로 거의 동일하게 작동합니다.
(39)
이제 원래의 개요로 돌아가서, 마지막 단계를 이야기하겠습니다. 이를 통해 policy를 어떻게 개선할 수 있을까요? 1단계, 2단계, 3단계는 훨씬 간단합니다. LSTD를 사용하면 됩니다. 하지만, 4단계는 여전히 문제가 있습니다. typical policy improvement step은 policy를 Φw_v에 대한 greedy policy로 설정한 다음, v_π를 다시 추정합니다. 문제는 데이터셋이 π로부터 제공된다고 가정했기 때문에, policy가 변경되면 데이터셋이 더 이상 유효하지 않습니다. 그러므로 offline RL에 사용할 수 없습니다. Policy evaluation에는 사용이 가능하지만 offline rl에는 사용할 수 없습니다.
(40)
offline RL에는 몇 가지 작은 변경을 통해 유효한 알고리즘을 얻을 수 있습니다. LSTD를 LSTDQ로 대체합니다. LSTDQ는 Q-function의 LSTD입니다. 이로 인해 least squares policy iteration(LSPI)이라는 알고리즘이 생성됩니다. 이 경우 feature matrix는 |S||A| (states and actions) X K’(new set of features) 행렬 입니다. k'을 얻는 한 가지 방법은 모든 action에 대해 feature를 복제하는 것입니다. action feature를 사용할 수도 있습니다. 이 경우 w_Q는 이전과 동일한 방식으로 작성되며, 이제 Φ는 state action feature matrix입니다. 다른 모든 것은 동일합니다.
이제 데이터셋이 특정 policy에서 오는 것이 필요하지 않습니다. 우리는 Q-function을 평가하고 있으며, 유일하게 변경된 것은 Φ’을 계산할 때 실제로 dataset에 있는 state가 아니라 최신 policy의 action을 취한다는 것입니다. 따라서, 최신 policy에서 action을 가져와야 하므로, Φ‘을 계산하는 방법을 변경합니다. 다른 것은 여전히 동일합니다. 그리고 우리는 Q-function을 얻습니다.
LSPI는 현재 policy πk에 대해서 w_Q를 계산하고, 각 state에서 Φ(s,a)*w_Q의 argmax를 취하여 π_k+1을 계산한 다음, Φ’을 최신 policy의 action으로 설정합니다. 이를 통해 feature를 사용하여 offline RL 또는 batch RL을 수행할 수 있습니다.
그렇다면 이것이 모든 offline RL 문제를 해결할 수 없는 이유는 무엇일까요? 우리는 linear function approximators를 사용하는 대신 deep nets를 사용하고 싶어한다는 것은 명확한 대답이 될 수 있습니다. 문제는 조금 더 깊이가 있습니다.
(41)
앞서 언급한 대로, policy의 action이 변경될 때 Q-function는 일반적으로 매우 낙관적이라는 distributional shift 문제가 발생합니다. LSTD 및 LSPI는 이 문제를 해결하지 않습니다. 우리는 이 문제를 해결하기 위해 어떤 분포 하에서 최적화하는 target value를 최적화하여 얻습니다.
LSTD도 least squares를 수행하는 어떤 분포에서 동일한 문제를 가지고 있습니다. 따라서, least squares은 분포 하에서 오류를 최소화 하고 그 분포는 π 데이터에서 비롯됩니다. 우리는 하나의 πβ 행렬 π_new에서 좋은 정확도를 기대하지만 그렇지 않은 경우 당연히 문제가 발생합니다.
따라서, 일반적으로 모든 approximate dynamic programming 방법은 value iteration, Q-iteration, LSTD, LSPI에 적합하므로 action distributional shift으로 인해 어려움을 겪을 수 있으며, 이를 수정해야 합니다.
[RL] Offline Reinforcement Learning: From Algorithms to Practical Challenges 강의 해석 (2)
Offline Reinforcement Learning: From Algorithms to Practical Challenges 튜토리얼 강의이다. 이 강의는 2020년 survey 논문과 함께 나온 튜토리얼로, offline RL에 대한 전반적인 내용을 다루고 있어 도움이 많이 될 것
seoy00.tistory.com
'ML & DL > RL' 카테고리의 다른 글
[RL paper] Deep reinforcement learning in transportation research: A review (1) | 2024.09.05 |
---|---|
[RL] Offline Reinforcement Learning: From Algorithms to Practical Challenges 강의 해석 (2) (0) | 2024.08.12 |
[RL] Actor-Critic 알고리즘 간단하게 개념 정리 (0) | 2024.08.05 |
[RL] 강화학습 REINFORCE 알고리즘 (0) | 2024.07.31 |
[RL] 강화학습 Policy Gradient 수식 전개 (0) | 2024.07.31 |
Offline Reinforcement Learning: From Algorithms to Practical Challenges 튜토리얼 강의이다. 이 강의는 2020년 survey 논문과 함께 나온 튜토리얼로, offline RL에 대한 전반적인 내용을 다루고 있어 도움이 많이 될 것이라 생각하고 들어보았다.
영어 강의라 다른 분들이 혹시 이 강의를 보실 때 좀 더 편하게 공부를 했으면 하는 마음에 튜토리얼 해석본을 작성하였다. 강의가 두 부분으로 이루어져있는데 다음은 강의의 첫 부분이다.
(강의를 들으면서 작성하였으나 오역 혹은 어색한 문장이 있을 수 있으니 참고 바랍니다.)
정리한 내용도 곧 포스팅할 예정이다.
(강의 해석 (2)를 확인하고 싶으시다면 다음 링크를 참고 바랍니다.)
(1) - 슬라이드 번호
안녕하세요, offline reinforcement learning에 대한 튜토리얼에 오신 것을 환영합니다. 알고리즘부터 실용적인 문제까지 다루게 될 이번 튜토리얼은 저, Sergey Levin과 Aviral Kumar가 발표할 예정입니다. 저는 UC Berkeley의 조교수이고, Aviral Kumar는 UC Berkeley의 박사 과정 학생입니다. 자, 시작해보겠습니다.
(2)
튜토리얼을 시작하면서 큰 질문 하나와 간단한 답변을 드리겠습니다. 현대 machine learning이 작동하는 원리는 무엇일까요? 물론 복잡한 답변을 많이 할 수 있겠지만, 단순하게 두 가지로 요약하자면 현대 machine learning의 효과성은 대규모의 다양하고 큰 dataset과 high-capacity, large neural network와 같은 표현력이 높은 models를 활용할 수 있는 능력에 있다고 할 수 있습니다. 이런 기본 레시피는 세계의 어떤 객체도 인식할 수 있는 이미지 인식부터 언어를 번역하거나 음성을 인식하는 등 여러 domain에서 성공을 거두었습니다. 이러한 인식 문제에서 가장 효과적인 방법의 공통적인 테마는 대규모 dataset과 강력한 high-capacity 모델의 가용성입니다.
(3)
그렇다면 강화 학습을 통해 우리는 무엇을 얻을 수 있을까요? reinforcement learning은 본질적으로 active learning 패러다임입니다. agent가 세상과 상호 작용하면서 경험을 수집하고 그 경험을 이용해 model, value function 또는 policy를 개선한 후 이 과정을 반복하는 방식입니다. 이 과정을 매우 여러 번 수행합니다. reinforcement learning은 비디오 게임에서 로봇 조작 기술, 심지어 세계 챔피언과의 바둑 경기에서도 성공을 거두었습니다. 따라서 reinforcement learning이 high-capacity models와 결합되었을 때 매우 효과적일 수 있다는 것을 알 수 있습니다.
하지만 기계 학습 방법으로 성공적으로 다룬 대규모 dataset과 대규모 models이 필요한supervised learning domain과 같은 현실적인 open-world 환경과는 아주 큰 차이가 있습니다. 비대칭 성능의 차이가 아니라 generalization capability의 차이입니다. reinforcement learning은 일반적으로 closed-world의 상대적으로 좁은 domain에서 성공을 거두었으며, supervised learning에서 볼 수 있는 일반화 여전히 찾기 어렵습니다. 아마도 이러한 일반화를 달성하려면 대규모로 다양하고 큰 dataset을 사용해야 하고, 기본적으로 model policy나 value function를 업데이트할 때마다 전체 dataset을 다시 수집해야 하는 active learning framework가 필요하기 때문일 것입니다.
예를 들어 reinforcement learning을 사용하여 실제 데이터로 자율 주행 차량을 훈련하려고 한다면, 차량의 policy가 변경될 때마다 샌프란시스코, 뉴욕, 런던, 베이징을 다시 방문해야 할 수도 있습니다. 그런 식으로는 절대 확장할 수 없습니다. 이러한 기본 사실은 reinforcement learning에서 다른 machine learning 영역보다 훨씬 더 많이 시뮬레이션을 통한 훈련에 초점을 맞춘 이유이기도 합니다. 이러한 기술을 통해 실제 데이터를 활용하는 active learning framework를 할 수 없는 단점을 보완하려고 하는 것입니다.
물론 이러한 모든 기술에는 대규모 실제 dataset을 활용할 수 없는 한계가 존재하며, 다른 모든 분야에서의 항상 효과적인 공식은 대규모 dataset과 대규모 모델이 의미 있고 유용한 일반화를 이끌어 낸다는 것입니다.
그렇다면 우리는 이 엄청난 차이를 어떻게 메울 수 있을까요? reinforcement learning 알고리즘이 다른 영역에서 불필요한 것으로 입증된 시뮬레이션 및 기타 기술에 의존하지 않고도, 광범위한 수동 엔지니어링에 의존하지 않고도, 크고 표현력이 풍부한 실제 dataset를 활용할 수 있도록 만들 수 있을까요?
reinforcement learning 알고리즘이 대규모의 표현력이 높은 실제 dataset을 활용할 수 있게 할 수 있을까요? 광범위한 수동 엔지니어링에 의존하지 않고, 시뮬레이션에 의존하지 않고, 다른 domain에서는 불필요한 것으로 입증된 기술들에 의존하지 않고 가능할까요?
(4)
요약하자면 data-driven reinforcement learning 방법을 개발할 수 있을 지가 바로 이 튜토리얼의 주제가 될 것입니다.
기존의 고전적인 on-policy reinforcement learning은 환경과 상호작용하여 일정량의 데이터를 수집한 후 해당 데이터를 사용하여 policy를 업데이트하고 새로운 데이터를 수집하는 환경에서 작동합니다. off-policy reinforcement learning은 다른 policy에 의해 수집된 데이터를 활용할 수 있는 알고리즘을 지칭하는 데 사용됩니다.
그러나 이러한 offline reinforcement learning 알고리즘은 여전히 진행하면서 추가 데이터를 수집하는 방식으로 운영됩니다. 예를 들어 agent가 세상과 상호 작용하여 일정량의 rollouts을 수집하고, 이를 buffer에 추가하며, buffer의 모든 데이터를 사용하여 policy를 업데이트한다고 가정해봅시다. 그러나 일반적으로 새로운 데이터는 각 연속적인 policy과 함께 계속해서 buffer에 추가됩니다.
offline reinforcement learning은 새로운 데이터가 추가되지 않는 환경을 의미합니다. 행동 policy라고 부르는 pi_beta에 의해 수집된 고정된 dataset을 갖고 있으며, 이 행동 policy는 일반적으로 알려져 있지 않으며, reinforcement learning policy조차 아닐 수 있습니다. 예를 들어 인간의 데이터, 수작업으로 설계된 시스템의 데이터일 수 있습니다. 무엇인지 알 수 없는 dataset D가 생성되며, 이 dataset을 사용하여 policy를 학습하고 그 policy를 배포하지 않고 훈련합니다. 이러한 종류의 방법이 효과적으로 작동한다면, 우리는 진정한 data-driven reinforcement learning 방법을 가질 수 있습니다.
offline reinforcement learning이라는 용어는 비교적 새로운 용어이지만 기본 아이디어는 사실 오래되었습니다. 과거 문헌에서는 종종 batch reinforcement learning이라는 용어를 사용하여 이 환경을 지칭합니다. 이 튜토리얼에서의 많은 자료는 Aviral Kumar, George Tucker, Justin Fu와 함께 작성한 튜토리얼 및 리뷰를 따를 것이며, 이 자료는 슬라이드 하단에 링크되어 있습니다.
자, 이러한 offline reinforcement learning 알고리즘을 설계할 수 있다면, 우리는 새로운 클래스의 reinforcement learning 기술을 상상할 수 있습니다. active data collection paradigm 대신, agent가 이전 작업의 다양한 경험에서 수집한 데이터나 인간 또는 기존의 수작업으로 설계된 정책에서 제공받은 데이터를 가지고, model, value function 또는 policy를 학습하여 원하는 작업을 수행하는 환경을 상상할 수 있습니다. 그리고 추가적인 online 상호작용을 통해 세부 조정이 가능할 수도 있지만, 중요한 것은 offline 단계에서 기본적인 역량을 발휘하고 매우 다양하고 많은 데이터를 활용할 수 있는 일반화 단계에 도달하는 것이 목표입니다.
이를 성공한다면, 우리는 현재의 reinforcement learning 기술이 더 넓게 일반화되도록 할 뿐만 아니라, 현재는 비현실적으로 여겨지는 domain에도 reinforcement learning을 적용할 수 있을 것입니다. 예를 들어 reinforcement learning을 통해 로봇이 전자 기기를 수리하도록 할 수 있을 뿐만 아니라, 의사가 약을 처방하는 데이터를 가져와 offline reinforcement learning을 훈련시켜 알고리즘이 치료 계획을 제안하도록 할 수 있습니다. 과학적 실험 데이터를 가져와 실험을 설계하는 계획을 제안할 수 있고 발전소의 에너지 생산량을 조절하는 데이터를 가져와 화학 공장의 물류 네트워크 네트워크를 조절할 수도 있습니다. 보다 최적의 의사 결정을 내리고 싶지만 온라인 상호작용을 통한 탐색이 너무 많은 비용이 들거나 위험한 모든 종류의 애플리케이션 영역이 여기에 해당합니다.
(5)
자, 이 튜토리얼에서는 reinforcement learning에 대한 간단한 기초를 먼저 살펴보겠습니다. 이미 reinforcement learning 전문가이신 분들은 이 섹션을 빠르게 지나가셔도 됩니다. 하지만 모두의 이해를 돕기 위해 몇 분 동안 기본적인 reinforcement learning 알고리즘 개념을 소개하는 시간을 갖겠습니다. 그런 다음 offline reinforcement learning 문제를 논의하고 importance sampling을 기반으로 한 방법 및 linear function approximation를 기반으로 한 방법을 포함하여 일부 고전적인 batch reinforcement learning 알고리즘을 다룰 것입니다.
그런 다음 여러 최신 offline reinforcement learning 알고리즘과 off-policy evaluation 및 model selection 방법을 설명할 것입니다. 그리고 마지막으로 offline reinforcement learning이 어떤 상황에서 잘 작동할 수 있는지 방법을 평가하는 방법과 그러한 기술을 벤치마킹하는 방법을 논의할 것입니다. 그리고 전체적으로 몇가지 discussion을 제공하고 이 분야의 open problems를 논의하는 것으로 마무리하겠습니다. 강화학습에 대한 간단한 입문서로 시작하겠습니다.
(6)
자, 이제 reinforcement learning methods에 대한 간단한 기초를 설명하겠습니다.
(7)
우선 terminology와 notation입니다. reinforcement learning에서는 agent와 environment가 있습니다. agent는 environment와 temporal sequential process를 통해 상호작용합니다. agent는 매 시간 단계마다 actions를 선택하고, action은 A로 표시되며, environment는 그에 따른 state S와 해당 transition에 대해 agent가 받아야 할 reward를 제공합니다. reward는 일반적으로 상태와 행동에 대한 scalar function으로, agent는 알지 못하지만 각 transition이 이루어질 때마다 관찰됩니다.
agent의 목표는 state에 대해 actions의 분포인 policy pi를 획득하는 것입니다. 결과적인 sequential process는 이 그래프 모델로 시각화할 수 있습니다. 초기 상태 분포는 P(S1), transition probability은 P(S_t+1 | S_t, A_t)입니다. 이는 agent가 알 수 없는 것이며, policy pi(A_t | S_t)는 agent가 알 수 있습니다.
중요한 것은 state가 markov property을 따른다는 것입니다. 이는 미래가 과거와 독립적이라는 것을 의미합니다. 또는 다르게 말하면, state와 action은 policy 및 transition probability에 의해 유도된 markov chain을 정의한다는 것입니다.
reinforcement learning의 objective는 이러한 확률 모델에 대한 기대값에서 총 reward의 기대값을 최대화하는 policy를 획득하는 것입니다. 여기서 D_ π(S)는 π 아래의 state distribution이며, 기본적으로 π에 의해 유도된 state distribution 및 dynamics P를 의미합니다. 여기서 gamma는 discount factor입니다. 특히 무한 수평 강화학습(infinite horizon RL) 을 고려하는 경우 먼 미래의 reward를 exponential scaling에 따라 더 먼 미래의 보상을 할인할 것입니다. 시간 범위는 무한대일 수 있습니다. derivations에서는 유한한 수평선을 사용할 사용하겠지만, T가 무한대일 수 있다는 것을 명심하세요.
구체적인 정의를 몇 가지 설명하겠습니다. S는 discrete or continuous state, A는 discrete or continuous action입니다. 저는 tau라는 기호를 사용하여 state와 action의 sequence를 나타내겠습니다.
그리고 policy는 trajectory distribution을 유도하는데, 이를 pi(s_0, a_0, ..., s_t, a_t)로 나타내겠습니다. 이는 initial state probabilities의 곱과 transition probabilities과 policy probabilities 의 전체 time steps의 곱입니다. 때로는 trajectory distribution을 나타내기 위해 pi(t)를 사용할 것입니다. d^pi_t(s_t)는 t에서의 pi의 state margin이고, 아래 첨자 t를 생략하면 discount가 적용된 전체 time step에 대한 가중 평균으로 생각할 수 있습니다. 이는 visitation frequency 라고도 하며 전체적으로 policy가 각 상태에서 얼마나 많은 시간을 소비하는지를 나타냅니다.
(8)
이제 몇 가지 기본 reinforcement learning 알고리즘에 대해 설명하겠습니다. 나중에 offline reinforcement learning methods에 대해 이야기할 때 이 용어와 개념을 많이 사용하게 될 것입니다.
가장 기본적인 reinforcement learning 알고리즘 중 하나는 policy gradient algorithm입니다. reinforcement learning objective를 살펴보자면, 우리의 목표는 상태 S_t에서 행동 A_t를 출력하는 조건부 분포를 나타내는 function approximator인 neural network와 같은 정책을 훈련하는 것입니다. 이 policy에는 파라미터가 있는데, 이를 theta로 나타내겠습니다. 따라서 policy을 πθ (A_t | S_t)로도 표현할 수 있습니다.
우리는 total discounted reward의 pi_theta에 의해 유도된 trajectory distribution 하에서 기대되는 값인 theta의 objective j라고 할 수 있습니다. 이는 상단의 reinforcement learning 목표와 동일하지만, 이를 theta의 함수로 보다 명시적으로 표현한 것입니다. 이름에서 알 수 있듯이, direct policy gradient는 J(θ)에 대한 theta의 gradient를 계산하는 것을 의미합니다.
J(θ)의 값을 추정하려면, policy을 실제 세계에서 실행하여 trajectory distribution에서 샘플을 평균하고 모든 reward를 평균하면 됩니다. J(θ)를 알고 싶다면, policy을 50번 실행하여 그 50개의 trajectories의 할인된 reward를 평균할 수 있습니다. 그러한 샘플을 비공식적으로 rollouts라고 부릅니다.
그러나 우리는 단지 J(θ)를 평가하고 싶지 않고, 그 gradient를 알고 싶습니다. J(θ) 의 gradient는 πθ(τ) 아래에서 trajectory 로그 확률의 gradient에 총 reward를 곱에 대한 기댓값으로도 작성할 수 있습니다. 이 간단한 대수적 유도이 있지만, 튜토리얼에서는 이를 다루지 않을 것입니다. 이렇게 하면 정의된 trajectory distribution을 logπ(τ)에 대입하여 다음과 같이 쓸 수 있습니다.
gradient는 πθ(τ) 아래에서 각 action의 log probabilities의 기울기(grad)에 대한 시간에 따른 합과 reward의 시간에 따른 합의 곱에 대한 기댓값과 같습니다. 이는 단순히 τ와 structure distribution의 정의에서 따릅니다.
reward의 합 중 하나를 선택해 log probabilities에 대한 합 내부로 분배할 수 있습니다. 이를 통해 time step t에서의 정책이 이전 time step의 reward에 영향을 미치지 않는다는 사실을 활용할 수 있습니다. 기본적으로 오늘 취한 action은 어제 일어난 일에 영향을 주지 않으므로, 보상의 합을 0에서 대문자 T까지 합하는 대신, t에서 대문자 T까지 합산하는 방식으로 변경할 수 있습니다. 이렇게 하면 variance가 다소 줄어듭니다
이 형태의 policy gradient는 실무에서 사람들이 사용하는 형태와 가깝습니다. 종종 정책 gradient를 작성할 때, reward의 합을 Q^(s_t, a_t)로 대체합니다. 여기서 Q-hat은 action A_t를 취하고, policy πθ를 계속 따를 때의 기대되는 총 reward에 대한 추정치를 나타냅니다.
(9)
Policy gradient를 실제로 구현하려면 어떻게 해야 할까요? 실제로는 샘플을 사용하여 J(θ)를 추정한 것과 동일한 방식으로 샘플을 사용하여 J(θ)를 추정합니다. 이로 인해 Williams의 원래 논문에 나오는 REINFORCE라고 불리는 알고리즘이 다음과 같이 작동합니다.
먼저 policy를 실행하여 일부 trajectory를 샘플링하고, 위의 공식과 방금 생성한 샘플을 사용하여 gradient를 추정한 후, learning rate α를 사용하여 gradient ascent step를 수행합니다.
따라서 이 과정은 직관적으로 rollouts을 생성하고, 그 rollouts의 reward을 추정한 다음, 좋은 rollouts의 경우 action의 log probability를 증가시키고, 나쁜 rollouts의 경우 action의 log probability를 감소시키는 것으로 생각할 수 있습니다.
(10)
이제 기본 policy gradient에 대한 논의를 마쳤으니 Q-hat에 대해 조금 더 이야기해 보겠습니다. Q-hat은 무엇이며 우리가 원하는 것은 무엇일까요?
Q-hat은 state action value function이라고 하는 Q-function에 대한 일종의 추정치입니다. Q-function은 state S_t에서 action A_t를 취하고, policy를 계속 따를 때의 total reward 또는 total discount reward의 기댓값입니다. 마찬가지로, value function은 state S_t에만 조건을 두는 것을 제외하면 동일한 것입니다. Q-function와 value function는 강화 학습에서 엄청나게 유용한 객체이며, offline rl algorithms 논의에서도 반복적으로 사용할 것입니다.
실제로 Q-function이 있다면 policy gradient를 trajectories의 기댓값이 아닌 state probabilities로 다시 쓸 수 있습니다. 이를 수행하는 방법은 s는 dπθ 하에서, a는 πθ(A∣S)에 따라 분포된 상태에서 s와 a에 대해 ∇logπ와 해당 state-action pair의 Q-value을 곱하고, time step 전체의 합산이 아닌 것을 고려하여 앞에 1/1−γ를 곱합니다. 물론 이는 상수이므로 실제 최적화할 때 이 상수를 무시할 수 있습니다.
Q-function은 Bellman equation이라고 하는 것을 따릅니다. Q_pi(S_t, A_t)는 해당 상태에서의 reward와 gamma를 곱한 것과 다음 state와 다음 action에 대한 Q 값을 더한 값의 기댓값과 동일합니다. Bellman equation은 Q-function를 추정하기 위해 function approximator를 훈련할 수 있는 방법을 제공합니다. 이 방식을 사용하여 데이터의 모든 차이와 우측 차이의 차이를 최소화할 수 있으며, 이렇게 하면 policy gradient에서 했던 것처럼 단일 sampling을 사용하는 것보다 더 나은 Q-value 추정치를 얻을 수 있습니다. 이 equation을 단순화하기 위해, expectation에 대한 첨자를 생략할 수 있습니다. 튜토리얼의 나머지 부분에서는 이 form으로 Bellman equation을 작성할 것입니다.
(11)
Q-function이, 정의되면 policy gradient method를 actor-critical algorithm으로 확장할 수 있습니다. Actor-critic algorithm에서는 일부 정책 pi_theta에 대해 Q-function을 추정할 것입니다. 표 형식에서는 실제로 행동 중인 모든 상태에서 action에 대한 Qπθ를 현재 reward + gamma * 다음 Q 함수의 기대값으로 설정하고, 이를 policy gradient formula에서 사용하여 더 나은 policy gradient 추정치를 얻고, policy parameter를 더 잘 업데이트합니다.
일반적으로, 1단계에서 Q-function을 정확하게 계산할 필요는 없습니다. function approximator가 표현하는 Q-function을 업데이트하여 이 equation의 좌측과 우측의 차이를 줄이는 것으로 충분합니다. 매우 일반적인 기술은 좌측과 우측의 차이의 제곱을 취하고 그 derivative를 계산하는 것입니다.
그렇다면 이 오류를 어떤 분포에 대해 추정해야 할까요? Q-function을 훈련할 때, 현재 policy의 동일한 분포 아래에서 이것을 수행한다고 가정합니다. 이는 on-policy 설정입니다. 하지만 이는 우리가 나중에 변화시킬 분포이며 이 분포를 변경할 때 실제로 상당히 많은 추가적인 복잡성을 가져옵니다. 일반적으로 2단계와 3단계는 몇 가지 방법을 이용해서 Qπθ의 기대값에 대해 policy πθ를 개선하기만 하면 됩니다. 이는 policy gradient일 필요는 없지만, policy gradient는 합리적인 선택입니다.
(12)
function approximation을 사용하는 일반적인 actor-critic은 두 개의 function approximation을 가지게 되는데, 하나는 state를 받아 actions에 대한 분포를 출력하며, 파라미터 theta를 가집니다. 두 번째 function approximator는 state와 action을 받아 Q-value를 출력하며, 파라미터 Φ를 가집니다. 일반적으로 다음과 같이 진행할 수 있습니다. Expected Bellman error를 줄이기 위해 QΦ를 업데이트하고, expected Q-value를 증가시키기 위해 πθ를 업데이트합니다. 이 과정을 반복합니다. 이는 generic actor critic algorithm의 기본 개요입니다.
(13)
이제 off-policy 설정으로 전환해 보겠습니다. off-policy 설정에서는 π_θ와 Q_Φ에 대한 업데이트가 다른 분포에서 추출된 데이터를 사용합니다. 이 분포(step 2에서 달라진 분포)를 dπβ라고 부르겠습니다. 이것이 여전히 올바른가요? expectation에서 State에 대한 분포를 완전히 다른 분포로 대체할 수 있나요? 일반적으로 정확하지는 않습니다. 이에 대해서는 추후에 importance sampling에 대해 이야기할 때 더 많이 다루겠습니다.
하지만 반복적으로 추가 데이터를 수집하면 이와 같은 방식이 작동할 수 있습니다. 완전히 offline 설정에서 발생하는 문제에 대해서는 나중에 논의하겠지만, 현재 널리 사용되는 많은 off-policy actor-critic 알고리즘은 일반적으로 다른 분포 dπβ를 사용합니다. 일반적으로 이는 이전 policy의 모든 데이터를 모은 분포입니다. 이러한 알고리즘에서는 지금까지 본 모든 transition으로 구성된 데이터셋(replay buffer라고도 불리는)이 있으며, Q_Φ와 π_θ 모두에 대해 off-policy 학습을 수행하고, 주기적으로 latest policy를 사용하여 세계와 상호작용하여 새로운 데이터를 버퍼에 추가합니다.
(14)
이제 policy를 완전히 제거하여 policy가 implicit 되게 할 수 있으며, 이것은 Q-learning 또는 fitted Q-iteration 알고리즘을 제공합니다. 이를 수행하는 방법은 step 2를 제거하고 Q-function의 argmax인 action을 확률 1로 취하는 implicit policy로 대체하는 것입니다. 그러나 동일한 개념적인 framework가 적용되므로 특히 discrete action이 있을 때 매우 실용적인 방법입니다. 이는 Q-learning과 fitted Q iteration의 기초가 됩니다. 앞서 논의한 모든 사항은 여전히 적용됩니다.
(15)
이제 reinforcement learning methods의 기본 내용을 빠르게 살펴보았으니, offline reinforcement learning 문제 정의와 왜 어려운지를 좀 더 자세히 이야기하겠습니다.
(16)
offline RL은 정확히 무엇을 의미할까요? 이제 reinforcement learning에 대한 notation을 다루었으니, 다시 정의해보겠습니다.
on-policy reinforcement learning에서는 policy가 항상 최신 상호작용에서 최신 데이터를 사용합니다. off-policy reinforcement learning에서는 이전의 모든 iterates에 의해 수집된 모든 데이터가 replay buffer에 수집되어 있습니다, 이는 효율성을 크게 증가시킬 수 있습니다. 하지만 여전히 본질적으로 능동적이고 online 프로세스입니다. 여전히 최신 iterate π_k를 사용하여 데이터를 수집하기 때문입니다. offline RL에서는 데이터가 behavior policy πβ를 사용하여 한 번만 수집되며, 이는 일반적으로 알려져 있지 않습니다. 따라서 transition (S_i, A_i, S_i', R_i)의 집합인 데이터셋이 제공되며, 추가적인 환경 상호작용 없이 이 데이터셋을 사용하여 최상의 policy를 획득해야 합니다.
공식적으로 데이터셋은 (S_i, A_i, S_i', R_i)라는 튜플의 집합으로, S_i'는 S_i state에서 action A_i를 취할 때 얻은 다음 state의 샘플이며, R_i는 그 transition과 관련된 reward입니다. 이 데이터셋의 ㄴstate는 우리가 모르는 어떤 분포 dπβ(s)를 따르고, dπβ(s)는 우리가 모르는 어떤 policy πβ(a|s) 에 의해 유도됩니다. 일반적으로 이 policy가 Markov 특성을 따르는지는 알 수 없으므로 주어진 모든 것이 πβ가 될 수 있습니다. 다음 state는 동일한 환경 dynamics 확률에 따라 샘플링되어야 합니다. 이 역시 우리는 모르지만 동일한 것으로 가정합니다. Reward 역시 알려져 있지 않은 reward function에서 오지만 일관성 있게 유지됩니다.
RL의 objective는 여전히 동일합니다. 환경에서 실제로 실행할 때 expected reward을 최대화하는 policy를 찾는 것입니다. 그러나 학습 중에는 환경에서 실행할 수 없습니다. 앞서 언급한 rollouts을 수행할 수 없습니다. 이 점이 offline RL을 훨씬 더 어렵게 만듭니다.
(17)
이 시점에서 다음과 같은 높은 수준의 개념적 질문을 할 수 있습니다. offline RL 환경에서 합리적인 결과를 얻는 것이 가능한가요? 짧게 대답하면 그렇습니다. offline RL이 가능해야 하는 여러 가지 이유가 있습니다.
첫째, 데이터셋이 다양한 행동을 포함하고 있다면 그중 일부는 다른 것보다 나을 수 있습니다. 단순히 좋은 행동을 찾아내어 offline RL이 데이터 생성에 사용된 policy보다 더 나은 policy를 획득할 수 있습니다.
둘째, 좋은 행동은 의미 있는 일반화를 제공할 수 있습니다. 만약 당신의 functional approximator가 효율적인 일반화를 제공한다면, 하나의 곳에서 좋은 행동은 다른 곳에서도 좋은 행동을 암시할 수 있습니다.
셋째, 서로 다른 부분의 좋은 행동을 결합할 수 있음을 의미하는 stitching effect가 있습니다. 전체 작업을 수행하는 단일 trajectory를 본 적이 없더라도 trajectory의 일부들을 새로운 방식으로 결합할 수 있습니다. 예를 들어, A에서 B로 가는 trajectory와 B에서 C로 가는 trajectory를 포함한 학습 세트가 있는 경우, 이를 결합하여 A에서 C로 가는 방법을 알아낼 수 있습니다. 다음은 이에 대한 구체적인 예입니다. 이 녹색 원이 미로를 탐색하는 dataset이 있다고 가정해 봅시다. 중요한 것은 녹색 원이 다른 장소로 계속 이동하기 때문에 실제로 우리가 원하는 작업을 수행하지 않습니다. 우리가 진정으로 원하는 작업은 왼쪽 아래 코너에서 오른쪽 위 코너로 이동하는 것입니다. 녹색 공은 그 작업을 수행하지 않지만 미로의 다양한 곳으로 이동합니다. 이 dataset은 미로를 탐색하는 데, 어떤 탐색이 가능한지를 이해하는 데 충분한 정보입니다. 그런 다음 아래 왼쪽에서 오른쪽 위로 이동하는 목표를 부여 받으면, 데이터셋에서 실제로 본 적이 없는 전체 경로일지라도, dataset에서 본 행동의 일부를 결합하여 이 작업을 수행할 수 있습니다.
(18)
이 모든 것이 왜 중요한가요? reinforcement learning에서 agent가 세계와 여러 번 상호작용해야 하며, 모델을 업데이트할 때마다 dataset을 다시 수집해야 하기 때문에 매우 비실용적일 수 있습니다.
물리적 로봇 기술을 폭넓게 일반화하거나 의료 진단과 같은 online 탐사가 실용적이지 않은 데이터에서 학습하려고 한다면, 또는 실험이 너무 비용이 많이 드는 상황에서는 다른 접근이 필요합니다. 예를 들어, 대형 전자상거래 기업이 재고 관리를 하려 할 때 모든 창고의 재고에 대해 강화 학습 알고리즘이 시행착오 학습을 하게 하기는 어려울 것입니다. 그러나 아마도 많은 양의 과거 데이터는 보유하고 있을 것입니다.
마찬가지로, 자율 주행의 경우에도 exploration 문제 때문에 오늘날 강화 학습같은 active learning 방식이 사용되기 어렵습니다. 자율 주행을 강화 학습과 결합해 생각하는 많은 사람들이 시뮬레이션 관점에서 접근한다고 보는 것이 공정한 평가일 것입니다. 그러나 이와 같은 환경에서도 offline data는 운전자에게서 쉽게 구할 수 있습니다.
(19)
기본적인 레시피가 작동하나요? offline RL을 실제로 수행할 수 있나요? 몇 년 전 로봇 grasping에 대한 사례 연구를 말씀드리겠습니다. QT-Opt 라고 불리는 이 프로젝트는 이미지에서 실제 데이터를 사용하여 로봇 조작을 학습하는 일반적인 프레임워크를 개발하는 것이 목표였습니다. 알고리즘은 제가 이미 설명한 fitted Q-iteration 방법의 고급 버전이었습니다. 유사한 원칙을 사용하며, 여러 이전 실험에서 수집된 대량의 dataset을 사용하여 학습이 수행되었습니다. offline 데이터만을 사용하여 policy를 훈련하거나 추가적인 online fine-tuning 을 수행할 수 있었습니다.
(20)
이 방법으로 훈련된 기본 시스템은 매우 잘 작동했습니다. 단일 RGB 이미지를 사용하여 다양한 물체를 직접 집어 들 수 있었습니다. 여기에서 사람이 여러 가지 방법으로 로봇을 방해하는 상황에서도 학습된 grasping 동작을 실행하는 것을 볼 수 있습니다. reinforcement learning이 새로운 환경에서 일반화할 수 있으며, 충분히 다양하고 큰 dataset이 제공될 때 일반화할 수 있음을 보여줍니다. 이전에 본 적이 없는 새로운 물체를 집어 들 수 있습니다.
하지만 우리가 논문에서 답하고자 했던 한 가지 질문이 있었습니다. 이는 본 프로젝트가 주로 robotics에 초점을 맞추고 있었기 때문에 약간의 부수적인 내용이었지만, 이 튜토리얼과 매우 관련이 있습니다. 그것은 바로 pure offline training을 할 때와 추가적인 online fine-tuning을 수행할 때 어떤 일이 일어나는지에 대한 것이었습니다.
offline 훈련을 위해 580,000개의 offline transition 데이터셋을 사용했으며, 추가적인 online fine-tuning에서는 단 28,000개의 추가 전환을 사용했습니다. 추가 데이터는 매우 적습니다. 차이가 있다면, 이는 단지 데이터셋의 크기 때문이 아니라 데이터의 출처, 즉 online 수집 때문입니다. unseen objects에 대한 완전한 offline 방법의 성공률은 87%였고, fine-tuning 후에는 96%였습니다. 아마도 큰 차이가 없다고 생각할 수도 있지만, 실패율을 보면 offline 방법의 실패율이 세 배 이상 큽니다. 일반화는 꽤 잘 되었지만, online fine-tuning이 없어서 큰 대가를 치르고 있는 것입니다. 데이터셋은 매우 좋은 dataset이었습니다. 다양하고 광범위했습니다. 그렇다면 무엇이 잘못된 것일까요? 이는 아마도 알고리즘 문제로 보입니다.
(21)
offline reinforcement learning이 어려운 이유는 무엇일까요? 여러 가지 문제가 있습니다. 첫 번째 문제는 피드백입니다. 피드백은 배포된 머신러닝 시스템이 다음에 무엇을 볼지를 변경할 때 문제가 됩니다. 당연히 RL에서는 sequential decision process가 피드백 문제를 겪습니다. 학습된 모델을 사용하여 행동하면, 보게 되는 것을 변경합니다. 간단한 예를 들어보겠습니다. 강화 학습 문제를 잊고 더 간단한 문제를 생각해봅시다. 최적의 행동을 포함한 dataset이 있다고 가정합니다. 우리는 그냥 모든 행동을 복사하기만 하면 됩니다. 문제는 최적의 행동을 학습할 때, policy πθ를 학습할 때, 작은 실수를 저지르게 되고, 그로 인해 학습되지 않은 state로 가게 되며, 결과적으로 더 큰 실수를 하게 됩니다. 이러한 실수가 누적되어 시간이 지남에 따라 정책이 데이터에 나타난 최적의 행동에서 크게 벗어나게 됩니다. 이 과정에서의 오차가 O(T^2)로 스케일링된다는 것은 잘 알려져 있습니다. 이는 Ross 등이 발표한 획기적인 논문에서 논의된 바 있는데, 그 논문의 제목은 "Reduction of Imitation Learning and Structured Prediction to No-Regret Online Learning"입니다.
물론 여기서 우리는 behavior cloning을 수행하지 않지만, 아마도 더 어려운 일에 대해서 논의하고 있습니다. behavior cloning조차도 이러한 문제가 있다면, 여기서 또한 피드백 문제가 발생할 것입니다.
(22)
offline reinforcement learning의 문제를 분석한 논문 avril kumar 등의 "Stabilizing Off-Policy Q-Learning via Bootstrapping Error Reduction"에서 우리는 무엇이 잘못 되었는지에 대해 몇 가지 가설을 세웠습니다.
한 가설은 일종의 overfitting 효과가 발생하고 있을 수 있다는 것이었습니다. 즉, 더 많은 데이터를 수집할 수 없을 때 초기에 수집한 데이터에 over fitting 되어 좋지 않은 결과가 나타날 수 있다는 것입니다. 이를 평가하기 위해 우리는 표준 벤치마크(이 경우 'half cheetah'라고 불리는)에 대해 naive offline actor-critic 알고리즘에 사용 가능한 training data의 양을 변경해 보았습니다. 파란색 곡선은 1,000개의 데이터 포인트를, 빨간색 곡선은 100만 개를 나타냅니다. 보시다시피 두 곡선이 비슷한 성능을 보이고 있습니다. 데이터의 양을 늘려도 문제가 줄어들지 않는다면, 이 문제가 overfitting 때문일 가능성은 낮아 보입니다.
그 다음으로 우리는 학습된 Q-function에게 그것이 어떻게 수행되고 있다고 생각하는지 물어보았습니다. Q-function은 예상되는 future reward의 추정치라는 점을 기억하세요. 따라서 여러분은 Q-function에게 높은 reward를 얻을 것이라고 생각하는지 물어볼 수 있습니다. 이것이 Q-function이 얻을 것이라고 생각하는 값입니다. 여기서 y축이 실제로 로그 스케일이라는 점에 주목하세요. 1,000개의 transition으로 이루어진 데이터셋에 대해 10의 20제곱의 reward를 얻을 것이라고 생각하지만, 실제로는 -250을 얻습니다. 이는 꽤 큰 차이입니다. 따라서 뭔가가 잘못되어 있다는 것을 알 수 있습니다. 알고리즘은 자신이 아주 잘 할 것이라고 생각하고 있습니다.
우리는 다른 가설들도 가지고 있었지만, 그리 흥미롭지는 않았습니다. 아마 training data가 좋지 않아서 그럴 수도 있다고 생각했지만, 일반적으로는 그렇지 않습니다. behavior policy에서 최선의 데이터를 뽑아내는 것이 때로는 이러한 naive 알고리즘보다 더 나은 성능을 보이기도 합니다. 따라서 알고리즘이 실수를 하고 있고, 이는 단순한 overfitting이나 나쁜 training data보다 더 깊은 문제입니다. 결국 이 문제의 핵심은 distributional shift에 있다는 것이 밝혀졌습니다.
(23)
결국 이 문제의 핵심은 distributional shift로 귀결됩니다.
어떤 종류의 supervised learning 문제, 즉 empirical risk minimization 문제를 풀 때, 예를 들어 어떤 distribution p(x) 하에서 f_θ(x)와 실제 값 y 사이의 차이를 최소화한다고 가정해 봅시다. 이때 x*에 대해 f_θ(x*)가 정확한지 물어볼 수 있습니다. overfitting하지 않았다면, training distribution 하에서 오차의 기대값이 낮을 것임을 알 수 있습니다. 따라서 같은 distribution에서 새로 추출한 샘플에 대해서도 오차가 낮을 것으로 예상할 수 있습니다.
하지만 일반적으로 다른 distribution p'(x)에서는, p'이 p(x)와 같지 않다면 오차가 낮을 것이라고 기대할 수 없습니다. 물론 p'이 p와 매우 가까우면 어떤 bound를 보일 수 있지만, 그들이 다르다면 일반적으로 모든 보장이 사라집니다. 사실 x*가 p(x)에서 추출되었더라도, 일반적으로 최악의 경우 성능을 bound하는 것은 매우 어렵습니다.
보통 우리는 이것을 걱정하지 않을 것이라고 말할 수 있습니다. 우리는 deep learning을 하고 있고, 이 deep net들은 정말 잘 일반화됩니다. 어떤 경우에는 실제로 그럴 수 있습니다.
하지만 약간의 변형을 고려해 봅시다. x*가 임의로 선택된 것이 아니라 학습된 함수 f_θ(x)를 최대화하도록 선택되었다면 어떨까요?
예를 들어, 녹색 곡선이 실제 곡선이고 파란색이 여러분의 fit이라고 해봅시다. 여러분의 fit은 대부분의 지점에서 꽤 좋습니다. 하지만 f_θ(x)가 가장 큰 x를 선택하면 어떻게 될까요? 가장 큰 오차를 가진 지점을 얻게 됩니다. 어떤 의미에서, 학습된 function approximator의 입력에 대해 최적화하는 것은 adversarial example을 생성하는 것과 매우 비슷합니다. function approximator가 가장 큰 값을 예측하는 x를 찾는 것이며, 일반적으로 이는 양의 방향으로 가장 큰 실수가 될 것입니다.
따라서 여러분의 deep net이 wonderfully well하게 일반화될 것이라고 믿더라도, x들이 여러분의 deep net에 대한 optimization에 의해 선택된다면, 이를 극복하기는 매우 어렵습니다.
(24)
그렇다면 reinforcement learning 어느 부분에서 distributional shift를 겪게 될까요? Bellman equation으로 돌아가 봅시다. 여기서는 Q-learning 설정에 대해 작성했지만, actor-critic 설정에서도 동일한 원리가 적용됩니다.
실제로 actor-critic 방식으로 다시 작성해 보겠습니다. 타겟 값이 어떤 distribution π_new에 따른 a'의 기대값을 가진다고 말하겠습니다. Q-learning을 하고 있다면 π_new는 Q에 대해 greedy한 policy가 될 것이고, actor-critic을 하고 있다면 이는 새로운 actor가 될 것입니다. 이 방정식의 우변을 y(s,a)라고 하고 이제 target values는 y(s,a)입니다.
Q-function을 훈련시키는 목적은 무엇일까요? off-policy 설정에서는 어떤 distribution π_β 하에서 Bellman equation의 좌변과 우변 사이의 차이의 기댓값을 최소화하는 것입니다. 여기서 π_β는 behavior policy입니다. 이는 Q가 π_β의 기대값 하에서 y와 가깝다는 것을 의미합니다. 따라서 π_β가 π_new와 같을 때 좋은 정확도를 기대할 수 있습니다. 왜냐하면 좌변에서 우리는 π_new 하에서 Q의 기대값을 평가하고 있기 때문입니다.
하지만 그런 경우가 얼마나 자주 있을까요? 전체 목적은 behavior policy보다 더 나은 policy π_new를 얻는 것입니다. 희망적으로는 좋은 방향으로 다른 policy을 얻는 것이죠. 사실 상황은 더 나쁩니다. π_new는 Q의 기대값을 최대화하도록 선택되기 때문입니다. actor-critic 알고리즘을 생각해보세요. 우리는 Q의 기대값의 argmax가 되도록 π_new를 선택합니다. 이전 슬라이드에서처럼, 우리는 본질적으로 Q-function에 대한 adversarial example이 되는 행동을 초래하는 정책을 선택하고 있는 것입니다. 이는 Q function이 그렇게 잘 수행되지 않지만 자신이 환상적으로 잘하고 있다고 생각하는 이유를 설명합니다.
(25)
offline 설정 어느 부분에서 또 distributional shift로 인한 어려움을 겪을까요? behavior cloning 경우에 대처해야 하는 것과 같은 drift 문제가 있습니다. 우리의 policy에 의해 유도된 state distribution d_π_θ는 일반적으로 behavior policy에 의해 유도된 state distribution d_π_β와 같지 않을 것입니다. 이는 π_θ가 training data에서는 훌륭할지라도 실제 제어에 사용할 때는 좋지 않을 수 있다는 것을 의미합니다.
(26)
따라서 우리는 policy를 실제로 실행할 때 state distribution의 불일치도 가지고 있으며, on-policy 경우와 마찬가지로 sampling 및 function approximation 오차도 있습니다. 다만 이제는 조금 더 문제가 됩니다. 예를 들어, online RL 설정에서 Q function이나 value function을 fitting한다고 해봅시다. 녹색 점들이 여러분의 데이터 포인트를 나타내고, 여러분이 거기에서 정말 좋은 value를 가질 것이라고 생각하며 약간 extrapolate 했다고 가정해 봅시다. 그러면 데이터를 수집할 때 그 지점을 샘플링하게 되고, 만약 그것이 나쁘다면 여러분의 추정치를 수정하는 아주 좋은 반례, 일종의 hard negative가 될 것입니다. 하지만 물론 offline 설정에서는 이러한 수정이 일어나지 않습니다. 따라서 표준 RL에서의 sampling 오차와 function approximation 오차와 관련된 기존의 과제들이 offline 설정에서는 훨씬 더 심각해집니다.
(27)
이제 튜토리얼의 다음 섹션에서는 몇 가지 고전적인 batch RL 알고리즘에 대해 간단히 설명하겠습니다. 기본적으로 과거에 사람들이 이러한 문제들을 어떻게 생각했는지에 대한 내용입니다. 그리고 그 후에 전반적으로 이러한 distributional mismatch 문제들을 해결하려고 노력하는 몇 가지 현대적인 알고리즘에 대해 이야기하겠습니다.
(28)
배치 또는 offline 강화학습 알고리즘의 한 광범위한 클래스는 policy gradient 프레임워크를 확장합니다. 이전에 설명한 방식으로 policy gradient를 계산하기 위해서는 π_θ로부터 샘플을 생성해야 합니다. 따라서 J(θ)에 대한 θ의 gradient는 대략적으로 π_θ로부터의 샘플들에 대한 평균으로, 시간에 대한 합계로 표현됩니다. 이는 log probability의 θ에 대한 gradient에 Q_hat을 곱한 것입니다.
하지만 만약 우리가 다른 분포 π_β로부터의 샘플만 가지고 있다면 어떨까요? 한 분포에서의 기대값을 원하지만 다른 분포에서의 샘플을 가지고 있을 때 사용할 수 있는 일반적인 트릭은 importance sampling을 사용하는 것입니다. 우리는 이 importance weight인 π_θ(τ_i) / π_β(τ_i)를 넣습니다. 이는 policy gradient에 대한 편향되지 않고(unbiased) 일관된(consistent) 추정량이지만, 실제로는 매우 높은 variance을 가진 추정량입니다.
(29)
importance weight를 좀 더 자세히 살펴봅시다. 참고로, 여기서 Q_hat은 이 경우 policy π_β에 대한 future reward의 합일 뿐입니다. 이에 대해서는 나중에 다시 돌아오겠지만, 먼저 importance weight를 확장해 봅시다.
Trajectory distributions 정의를 대입하면, 분자에는 p(s1)와 모든 transition probability의 시간에 대한 곱, 그리고 π_θ(a_t|s_t)가 있고, 분모에는 π_θ 대신 π_β가 있는 동일한 것이 있습니다. 이는 초기 state probability과 transition probability가 상쇄된다는 것을 의미하며, 이는 우리에게 아주 좋은 소식입니다. 왜냐하면 우리는 그것들이 무엇인지 모르기 때문입니다. 우리는 π_β가 무엇인지 알아야 합니다. π_β가 무엇인지 모른다면 importance sampling을 사용할 수 없지만, 알고 있다면 이러한 importance weight를 계산할 수 있습니다.
불행히도 이 importance weight는 horizon T에 대해 지수적으로 증가할 것입니다. 각각 1보다 작은 T개의 확률들을 곱하고 있기 때문에, s_t가 증가함에 따라 전체 분자와 분모가 지수적으로 0에 수렴할 것입니다. 이것이 RL 설정에서 이러한 방식으로 수행될 때 importance sampling이 매우 나쁜 수치적 특성을 가지는 이유입니다. 따라서 T가 커짐에 따라 weight가 퇴화될 가능성이 매우 높습니다.
그렇다면 이를 어떻게 해결할 수 있을까요? 간단히 말해서, 완전히 해결할 수는 없지만 문제를 완화하기 위해 취할 수 있는 몇 가지 단계가 있습니다.
이를 수행하는 방법을 살펴보기 위해, 먼저 action probabilities에 대한 이 곱을 두 부분으로 나누는 것이 매우 유용합니다. 첫 번째 부분은 0에서 t-1까지이고, 두 번째 부분은 t에서 T까지입니다. 물론 이들을 곱하면 0에서 T까지의 원래 곱을 얻습니다. 하지만 나는 이들을 두 부분으로 나누고, 첫 번째 부분을 ∇log π 앞에 두고 두 번째 부분을 Q_hat 앞에 둘 것입니다.
제가 이렇게 하는 이유는 직관적으로 이 두 부분의 역할이 약간 다르기 때문입니다. 첫 번째 반쪽은 본질적으로 new policy π_θ가 action policy π_β와 동일한 state-action 튜플에 도달하지 않을 수 있다는 사실을 설명합니다. 즉, 과거를 설명합니다. π_β는 π_θ가 도달할 가능성이 매우 낮은 어떤 state에 도달했을 수 있으며, 그 state로 이어진 모든 action의 곱은 이것이 발생했을 때를 감지하는 proxy 역할을 할 수 있습니다. 따라서 첫 번째 곱을 π_θ가 state s_t에 도달하고 action a_t를 취할 가능성이 얼마나 더 높거나 낮은지를 추정하는 것으로 생각할 수 있습니다.
두 번째 곱은 Q_hat이 π_θ가 아닌 π_β의 가치에 대한 추정치라는 사실을 설명합니다. 따라서 이는 가치를 수정하는 것이며, 본질적으로 미래의 reward를 설명합니다.
첫 번째 부분은 state s_t에 도달할 확률의 차이를 설명하고, 두 번째 부분은 부정확한 Q_hat을 가지고 있다는 것을 설명합니다.
우리는 첫 번째 부분을 무시할 수 있습니다. π_θ와 π_β가 서로 충분히 가깝다면 첫 번째 부분을 무시하는 것이 limited bounded 오차만을 초래한다는 것이 밝혀졌고, 실제로 진전을 이룰 수 있습니다. 이는 매우 일반적으로 수행되는 일입니다. 하지만 두 번째 부분은 정말로 무시할 수 없습니다.
첫 번째 부분을 무시하는 것이 왜 합리적인 approximation인가요? 직관적으로, π_β가 π_θ와 유사한 state에 도달한다면 이것이 잘 작동할 것으로 예상할 수 있습니다. 더 형식적으로, 실제로 π_θ와 π_β 사이의 divergence 측면에서 한 estimator를 사용한 return과 다른 estimator를 사용한 return 사이의 bound를 증명할 수 있습니다.
하지만 두 번째 항은 조금 더 문제가 됩니다. 우리는 거기서 importance weight를 제거할 수 있습니다. 그래서 많은 문헌에서 실제로 importance sampling을 사용한 더 나은 가치 추정에 초점을 맞추고 있습니다.
(30)
그렇다면 이러한 return을 어떻게 추정할 수 있을까요? 지금 Q_hat은 추정치입니다. 우리가 원하는 것은 π_θ 하에서의 expected reward의 추정치이고, 그래서 우리는 importance sampling correction을 적용합니다.
우리가 할 수 있는 한 가지 방법은 Q_θ가 시간에 따른 reward의 합이라는 사실을 고려하고 importance weight를 reward의 합 안으로 분배하는 것입니다. 기본적으로 Q_hat을 시간에 대한 합으로 대체합니다. 여기서 γ^(t'-t) * r_t'에 곱을 분배하고, t' 이후의 모든 미래 확률이 t'의 reward에 영향을 미치지 않는다는 점에 주목합니다. 따라서 곱을 취하는 변수를 t에서 T까지가 아니라 t에서 t'까지로 변경할 수 있습니다.
이것은 여전히 exponential이지만, earlier 보상에 대해서는 훨씬 적은 수의 숫자를 곱하게 됩니다. exponential하게 폭발하는 importance weight를 완전히 피하려면 value function estimation을 사용해야 합니다. 어떤 importance sampling 트릭도 이 exponential blow up을 완전히 피할 수는 없지만, 완화할 수는 있습니다.
어떻게든 Q_π_θ를 알고 있다면, 그것을 바로 대입할 수 있고, 이것이 다음 섹션에서 이야기할 내용입니다.
하지만 먼저 사람들이 이 문제에 대해 생각한 몇 가지 다른 방법을 언급하며 importance sampling에 대한 논의를 마무리하겠습니다.
(31)
여기서 언급하고 싶은 한 가지 개념은 'doubly robust estimator'라고 불리는 것입니다. doubly robust estimator는 exponential blow up을 없애지는 못하지만 variance는 줄일 수 있습니다.
먼저 표기법을 조금 단순화하겠습니다. 이것은 exponential 하며, 우리의 가치 추정치입니다. t=0부터 합산하여 표기법을 단순화하겠습니다. Generaility를 잃지 않고 현재 time step이 0이라고 가정하겠습니다. t'를 t로, t''를 t'로 바꾸고 첨자 i를 생략하겠습니다. 이렇게 하면 표기법이 정리될 것입니다.
어떤 state s0에서의 가치는 단순히 시간에 대한 합으로, 그 time step까지의 importance weight에 γ^t를 곱하고 r_t(π_β가 그 time step에서 얻은 reward)를 곱한 것입니다. 표기법을 더 정리하기 위해 ρ_t 기호를 사용하여 importance weight를 나타내겠습니다. 이렇게 하면 importance sampled return estimator를 매우 간단하게 쓸 수 있습니다.
그리고 나서 이 합과 곱을 확장할 수 있는데, 이는 당연히 더 복잡해 보이지만 특정한 재귀적 관계를 시사할 것입니다. 실제로 곱의 합을 쓰면 r_0 * ρ_0 + ρ_0 * γ * ρ_1 * r_1 + ρ_0 * γ * ρ_1 * γ * ρ_2 * r_2 등등이 됩니다. 이것들을 그룹화하면 깔끔한 재귀적 구조를 볼 수 있습니다. ρ_0 * (r_0 + γ * (ρ_1 * (r_1 + γ * ...))) 등으로 보입니다.
따라서 이를 재귀적으로 computed quantity로 쓸 수 있으며, 이를 V_bar(T)라고 부르겠습니다. V_bar(T+1-t) = ρ_t * (r_t + γ * V_bar(T-t))입니다. 우리는 이 모든 V_bar를 재귀적으로 계산할 수 있고, 이렇게 하면 importance sampled estimator를 얻게 됩니다.
이것 자체로는 아무것도 바꾸지 않았습니다. 사실 유용한 방식으로 estimator를 변경하지 않았습니다. 이는 단지 다른 방식으로 쓴 것일 뿐입니다.
(32)
하지만 이제 'doubly robust estimator'라고 불리는 매우 유용한 개념을 도입하겠습니다.
여기 bandit 경우, 즉 time step이 하나뿐인 경우에 대한 doubly robust estimator가 있습니다.
여기서 명확히 하자면, 다른 policy π_data에서 샘플을 얻었고, 이는 reward r_s,a를 초래했으며 importance weight ρ(s,a)를 가집니다. 그리고 return의 모델 Q_hat(s,a)가 있습니다. 이는 아마도 value function을 훈련시키거나 모델을 훈련시키고 일부 model-based evaluation을 수행하여 얻은 것일 수 있습니다. Q_hat(s,a)는 여러분의 function approximator이고, V_hat(s)는 새로운 policy π_θ 하에서의 기대값입니다.
이때 더 나은 추정치, 즉 doubly robust 추정치를 얻을 수 있습니다. V_hat(s)를 사용하는데 V_hat(s)는 biased 될 수 있기 때문에 여기에 importance sampled 추정치를 더하지만 Q_hat(s,a)를 빼줍니다. 이는 V_hat(s)를 더하는 것에 대한 영향을 보정하기 위함입니다. 제어 변량(Control variants)에 익숙한 분들은 이것이 본질적으로 같은 개념임을 알아차릴 것입니다.
이 아이디어를 sequential setting에 적용하기 위해, v_hat을 V_bar에 대한 doubly robust estimator로 적용할 수 있습니다. 따라서, 만약 어떤 V_hat과 Q_hat이 있다면, 기본적으로 V_bar에 대한 재귀적 관계를 변경하여 V_hat과 Q_hat을 도입할 수 있습니다.
이것이 바로 sequential setting에 doubly robust estimator를 적용한 Jiang and Li의 결과입니다. 이는 exponential problem을 해결하지는 못하지만, 원칙적으로 variance를 줄일 수 있습니다.
(32)
Importance sampling 문제를 완화하기 위해 문헌에서 탐구된 또 다른 개념으로는 marginal importance sampling이 있습니다.
여기서는 action probabilities의 곱셈을 계산하는 대신, state probabilities의 importance weight를 추정합니다. 일반적으로 state marginal dπθ 와 dπβ를 계산하는 것은 매우 어렵지만, 많은 경우에는 marginal 자체를 계산하기 보다 marginal의 비율을 계산하는 것이 더 매력적입니다. State나 state action importance weight, 즉 marginal importance weights를 계산할 수 있다면, 이를 통해 return을 추정할 수 있습니다.
일반적으로 이는 policy learning보다는 off-policy evaluation에 사용됩니다. 하지만, q estimates를 얻는 방법도 상상할 수 있습니다.
가중치는 어떻게 결정할까요? 일반적으로 이 분야의 대부분의 알고리즘들은 (자세히 다루지는 않겠지만) 일종의 consistency condition을 해결합니다. consistency condition의 한 예로, Zhang 등의 GenDICE 논문에서 나온 것이 있습니다. 이는 MDP에서 occupancy measure equations의 흐름을 작성한 다음 d_π_θ를 d_π_β * w로 대체하여 얻은 관계입니다. d_π_β * w가 바로 d_π_θ이기 때문입니다. occupancy measure flow equations을 작성하고 d_π_θ를 d_π_β * w로 대체하면, 알고 있거나 샘플 접근이 가능한 quantities로만 표현된 w에 대한 조건을 얻게 됩니다.
첫 번째 항은 해당 state에서 시작할 확률을 나타내고, 두 번째 항은 그 state로 transitioning할 확률을 나타냅니다. 이는 occupancy measure equations과 마찬가지입니다. 그런 다음 이를 consistency condition으로 바꾸고 일관된 w를 구할 수 있습니다. 일반적으로 이는 일종의 fixed point problem을 포함합니다.
(33)
이에 대해 더 자세히 알고 싶다면, 이 슬라이드에 인용된 자료들을 참고하실 수 있습니다. 슬라이드에는 importance sampling policy gradient estimation에 대한 고전적인 연구, doubly robust estimator, 일부 분석과 이론, 그리고 marginalized importance sampling에 대한 인용이 있습니다. 우리의 tutorial and survey paper의 3.1, 3.2, 3.3, 3.4 섹션에서도 이에 대해 논의했습니다. 이에 대해 더 자세히 읽고 싶으시다면, 여기서 영상을 잠시 멈추고 이 인용들을 찾아보실 수 있습니다.
(34)
다음으로 이야기할 classic batch RL algorithm은 value function estimation과 관련된 것입니다. 사람들이 offline value function estimation을 어떻게 생각했는지에 대해 이야기하겠습니다.
하나의 연구는 approximate dynamic programming과 q-learning의 아이디어를 offline settings로 확장하여, 단순한 function approximators, 특히 linear function approximators를 사용하는 경우 tractable한 솔루션을 도출하는 방법을 제시합니다. 이는 deep reinforcement learning에는 덜 관련될 수 있지만, 이러한 알고리즘은 문헌에서 흥미로운 경향과 아이디어를 제시하므로 알아볼 가치가 있습니다.
사람들이 이를 어떻게 생각하고 있는지에 대한 최신 연구는 deep nets과 같은 highly expressive function approximators을 사용하는 approximate solutions에 초점을 맞춥니다. 주요 도전 과제는 distributional shift이며, 일반적으로 최신 연구에서는 이러한 문제에 대해 다루고 있습니다. 고전 연구에서는 distributional shift에 대해 다루지 않으며, offline estimation 문제를 다루는 경향이 있습니다. 최신 연구에서는 expressive function approximators를 다루고 있으며, distributional shift에 초점을 맞춥니다. 이는 아마도 선형 모델에서는 distributional shift가 큰 문제가 아니었기 때문일 수 있습니다. 선형 모델은 더 잘 일반화되거나, 좋은 features를 제공받았기 때문일 수 있습니다.
하지만 오늘날에는 이는 매우 큰 문제입니다. 이러한 맥락에서 고전적인 offline batch RL methods를 설명하고, Aviral이 distributional shift를 다루는 최신 방법에 대해 이야기할 것입니다. 이 자료의 많은 부분은 Ron Parr이 준비한 우수한 슬라이드에서 차용되었습니다.
(35)
Warm up으로 linear models을 사용한 model-based reinforcement learning을 생각해 봅시다. feature matrix를 Φ라고 하겠습니다. feature matrix는 |S| X k 항목을 가진 행렬이며, vector-valued function 5s로도 생각할 수 있습니다. 이를 열의 수는 states 수, 행의 수는 features 수로 구성된 행렬로 생각할 수 있으며, 각각에 대해 해당 state에서 해당 feature의 값을 나타내는 숫자를 가집니다.
이 feature space에서 offline model-based RL을 수행할 수 있을까요? 다음과 같이 수행할 수 있습니다.
1단계: feature에 대한 reward을 추정합니다.
2단계: zero features의 관점에서 transition probabilites를 추정합니다.
3단계: 이를 사용하여 value function을 복구합니다.
4단계: 그 value function을 사용하여 policy를 개선합니다.
reward model 그러니까 과거에는 모든 것이 linear했기 때문에 모든 모델이 linear 할 것입니다. reward model은 Φ에 weight vector인 w_r을 곱한 값이 될 것이며 우리는 이 값이 r과 가까워지길 원합니다. w_r은 feature 수와 동일한 차원을 가진 열 벡터입니다. w_r은 reward vector r에 대한 최소 제곱을 통해 풀 수 있고, 다음은 vector r에 가장 적합한 최소 제곱으로 w_r을 풀기 위한 normal equation입니다.
지금은 모든 state에서 reward를 가진다고 가정합니다. 샘플은 나중에 다루겠습니다.
우리가 원하는 Transition model은 Φ와 일부 transition matrix PΦ를 곱한 값과 Pπ에 Φ를 적용하여 얻는 효과와 가까워야 합니다. Pπ는 dynamics and the policy를 구성하여 얻은 실제 transition matrix이므로 이는 fixed policy와 PΦ에 대한 transition model이고 PΦ는 이를 approximate하려는 것입니다.
따라서 Pπ가 state에서의 실제 transition martix이며, |S| X |S|이고 이는 state에서 주어진 policy π에 유도된 markov chain입니다. PΦ는 estimated된 feature space transition matrix이며 K X K입니다.
다시 말해서, 우리는 PΦ를 추정하기 위해서 최소 제곱을 수행하고, PΦ의 normal equation을 풀 수 있습니다. 이전과 마찬가지로 PΦ에 대한 tabular access를 가정합니다. 따라서, PπΦ를 정확하게 계산할 수 있습니다. 물론 이것은 비현실적인 가정이며, 나중에 샘플 기반 설정을 다룰 것입니다.
(36)
Reward와 transition probabilities를 얻었으므로, value function을 linear equation Φ*w_v로 추정할 수 있습니다.
w_v를 w_r과 PΦ에서 얻는 방법은 무엇일까요? 만약 tabular reinforcement problem을 풀고 싶다면 그리고 Pπ와 r에 대해 v_π를 풀고 싶다면, 벡터 표기법으로 v_π는 r + gamma * Pπ * Vπ입니다. 이는 단순히 vector notation으로 표현된 Bellman 방정식입니다. 그런 다음 gamma * Pπ * Vπ를 좌측으로 옮기고, 양쪽에 inverse를 취하면 Vπ = (I – gamma * Pπ) inverse * r이 됩니다. model-based 케이스에서도 동일한 논리를 적용하여 feature space에서도 동일한 방정식을 적용할 수 있으며, w_v = (I – gamma * PΦ)inverse * w_r을 얻을 수 있습니다. 이는 feature space에서 동일한 논리가 적용된다는 것을 의미합니다.
그렇다면 모델이 필요할까요? w_r과 PΦ를 구하려고 했지만, 실제로 필요한 것은 w_v입니다. w_r과 PΦ의 방정식을 w_v에 대입해보겠습니다. 대입하면 복잡한 방정식을 얻게 됩니다. 이 방정식이 복잡해 보일 수 있지만, 걱정하지 마세요. w_v에 대해 w_r과 PΦ를 대입한 것입니다.
간단한 선형 대수로 이 방정식을 단순화하면, w_v = (Φ_transpose * Φ – gamma * Φ_transpose * Pπ * Φ)_inverse * Φ_transpose * r이 됩니다. 훨씬 단순한 방정식이며, 더 이상 w_r이나 PΦ가 필요하지 않습니다. 직접적으로 w_v를 구할 수 있으며, 중간 단계를 건너뛸 수 있습니다. model-based 케이스와 model-free 케이스가 이 설정에서 동일함을 보여줍니다. 이 wv 방정식은 development error를 최소화 하기 위해서 least squares 을 수행하여 얻은 것과 동일한 결과입니다. 따라서, 이는 least squares temporal difference learning이라고 부릅니다.
(37)
이는 기쁘게도 samples로도 가능합니다. 샘플 기반 설정에서는 모든 state의 reward을 포함한 entire vector r을 사용할 수 없으며, entire matrix Pπ를 사용할 수 없습니다. 그러나 transition (s, a, r, s')의 데이터셋이 있으며, 이를 r 및 Pπ에서의 샘플로 사용할 수 있습니다. 데이터셋은 이 경우 π로부터의 샘플이어야 합니다.
이제 행렬은 k X s가 아니라 k X 샘플 수입니다. 우리는 PπΦ를 s'의 features로 대체할 것입니다. 이를 Φ'라고 부를 것입니다. r을 sample reward 벡터로 대체할 것입니다. 모든 것은 동일하게 작동하며, 오직 샘플링 오류만이 있습니다. 동일한 방정식과 샘플을 사용하여 w_v를 해결할 수 있습니다. 실제로 거의 동일하게 작동합니다.
(39)
이제 원래의 개요로 돌아가서, 마지막 단계를 이야기하겠습니다. 이를 통해 policy를 어떻게 개선할 수 있을까요? 1단계, 2단계, 3단계는 훨씬 간단합니다. LSTD를 사용하면 됩니다. 하지만, 4단계는 여전히 문제가 있습니다. typical policy improvement step은 policy를 Φw_v에 대한 greedy policy로 설정한 다음, v_π를 다시 추정합니다. 문제는 데이터셋이 π로부터 제공된다고 가정했기 때문에, policy가 변경되면 데이터셋이 더 이상 유효하지 않습니다. 그러므로 offline RL에 사용할 수 없습니다. Policy evaluation에는 사용이 가능하지만 offline rl에는 사용할 수 없습니다.
(40)
offline RL에는 몇 가지 작은 변경을 통해 유효한 알고리즘을 얻을 수 있습니다. LSTD를 LSTDQ로 대체합니다. LSTDQ는 Q-function의 LSTD입니다. 이로 인해 least squares policy iteration(LSPI)이라는 알고리즘이 생성됩니다. 이 경우 feature matrix는 |S||A| (states and actions) X K’(new set of features) 행렬 입니다. k'을 얻는 한 가지 방법은 모든 action에 대해 feature를 복제하는 것입니다. action feature를 사용할 수도 있습니다. 이 경우 w_Q는 이전과 동일한 방식으로 작성되며, 이제 Φ는 state action feature matrix입니다. 다른 모든 것은 동일합니다.
이제 데이터셋이 특정 policy에서 오는 것이 필요하지 않습니다. 우리는 Q-function을 평가하고 있으며, 유일하게 변경된 것은 Φ’을 계산할 때 실제로 dataset에 있는 state가 아니라 최신 policy의 action을 취한다는 것입니다. 따라서, 최신 policy에서 action을 가져와야 하므로, Φ‘을 계산하는 방법을 변경합니다. 다른 것은 여전히 동일합니다. 그리고 우리는 Q-function을 얻습니다.
LSPI는 현재 policy πk에 대해서 w_Q를 계산하고, 각 state에서 Φ(s,a)*w_Q의 argmax를 취하여 π_k+1을 계산한 다음, Φ’을 최신 policy의 action으로 설정합니다. 이를 통해 feature를 사용하여 offline RL 또는 batch RL을 수행할 수 있습니다.
그렇다면 이것이 모든 offline RL 문제를 해결할 수 없는 이유는 무엇일까요? 우리는 linear function approximators를 사용하는 대신 deep nets를 사용하고 싶어한다는 것은 명확한 대답이 될 수 있습니다. 문제는 조금 더 깊이가 있습니다.
(41)
앞서 언급한 대로, policy의 action이 변경될 때 Q-function는 일반적으로 매우 낙관적이라는 distributional shift 문제가 발생합니다. LSTD 및 LSPI는 이 문제를 해결하지 않습니다. 우리는 이 문제를 해결하기 위해 어떤 분포 하에서 최적화하는 target value를 최적화하여 얻습니다.
LSTD도 least squares를 수행하는 어떤 분포에서 동일한 문제를 가지고 있습니다. 따라서, least squares은 분포 하에서 오류를 최소화 하고 그 분포는 π 데이터에서 비롯됩니다. 우리는 하나의 πβ 행렬 π_new에서 좋은 정확도를 기대하지만 그렇지 않은 경우 당연히 문제가 발생합니다.
따라서, 일반적으로 모든 approximate dynamic programming 방법은 value iteration, Q-iteration, LSTD, LSPI에 적합하므로 action distributional shift으로 인해 어려움을 겪을 수 있으며, 이를 수정해야 합니다.
[RL] Offline Reinforcement Learning: From Algorithms to Practical Challenges 강의 해석 (2)
Offline Reinforcement Learning: From Algorithms to Practical Challenges 튜토리얼 강의이다. 이 강의는 2020년 survey 논문과 함께 나온 튜토리얼로, offline RL에 대한 전반적인 내용을 다루고 있어 도움이 많이 될 것
seoy00.tistory.com
'ML & DL > RL' 카테고리의 다른 글
[RL paper] Deep reinforcement learning in transportation research: A review (1) | 2024.09.05 |
---|---|
[RL] Offline Reinforcement Learning: From Algorithms to Practical Challenges 강의 해석 (2) (0) | 2024.08.12 |
[RL] Actor-Critic 알고리즘 간단하게 개념 정리 (0) | 2024.08.05 |
[RL] 강화학습 REINFORCE 알고리즘 (0) | 2024.07.31 |
[RL] 강화학습 Policy Gradient 수식 전개 (0) | 2024.07.31 |