다중 무장 도적 소개

TensorFlow.org에서 보기 Google Colab에서 실행 GitHub에서 소스 보기 노트북 다운로드

소개

MAB(Multi-Armed Bandit)는 장기적으로 누적 보상을 극대화하기 위해 에이전트가 액션(arm)을 선택해야 하는 머신 러닝 프레임워크입니다. 각 라운드에서 에이전트는 현재 상태(컨텍스트)에 대한 일부 정보를 받은 다음 이 정보와 이전 라운드에서 수집한 경험을 기반으로 작업을 선택합니다. 각 라운드가 끝날 때 에이전트는 선택한 작업과 관련된 보상을 받습니다.

아마도 가장 순수한 예는 MAB에 그것의 이름을 빌려하는 문제이다 : 우리가 직면 상상 k 슬롯 머신 (한 - 무장 산적), 너무 많은 돈을 잃지 않으면 서 우리는 하나가 최고의 성향을 가지고있는 알아낼 필요가있다.

다중 무장 도적

각 기계를 한 번 시도한 다음 가장 많은 비용을 지불하는 기계를 선택하는 것은 좋은 전략이 아닙니다. 에이전트는 처음에는 운이 좋은 결과를 보였지만 일반적으로 최적이 아닌 기계를 선택하게 될 수 있습니다. 그 대신 에이전트는 더 많은 정보를 수집하기 위해 별로 좋아 보이지 않는 머신을 반복적으로 선택해야 합니다. 이것이 Multi-Armed Bandits의 주요 과제입니다. 에이전트는 최적의 행동을 간과하지 않도록 사전 지식을 활용하는 것과 탐색하는 것 사이에서 적절한 조합을 찾아야 합니다.

MAB의 보다 실용적인 사례는 학습자가 결정을 내릴 때마다 부수적인 정보를 포함합니다. 우리는 이 부가 정보를 "컨텍스트" 또는 "관찰"이라고 부릅니다.

다중 무장 도적과 강화 학습

TF-Agents 라이브러리에 MAB Suite가 있는 이유는 무엇입니까? RL과 MAB의 관계는 무엇입니까? Multi-Armed Bandits는 강화 학습의 특별한 경우로 생각할 수 있습니다. 인용 RL에 소개를 :

각 시간 단계에서, 에이전트는 그 정책에 기반 환경에서 작업 얻어 \(\pi(a_t|s_t)\), \(s_t\) 환경으로부터 현재 관측이다 및 보상 수신 \(r_{t+1}\) , 다음 관측 \(s_{t+1}\) 환경으로부터 . 목표는 보상(리턴)의 합을 최대화하도록 정책을 개선하는 것입니다.

일반 RL의 경우, 다음 관측 \(s_{t+1}\) 이전의 상태에 따라 달라집니다 \(s_t\) 와 액션 \(a_t\) 정책에 의해 촬영. 이 마지막 부분은 MAB와 RL을 구분하는 부분입니다. MAB에서 관찰인 다음 상태는 에이전트가 선택한 작업에 의존하지 않습니다.

이러한 유사성을 통해 TF 에이전트에 존재하는 모든 개념을 재사용할 수 있습니다.

  • 환경은 보상과 행동을 관찰하고, 응답을 출력합니다.
  • 정책은 관찰에 기초하여 액션을 출력하고,
  • 에이전트는 반복적으로 이전 관찰 액션 - 보상 튜플을 기반으로 정책을 업데이트합니다.

버섯 환경

설명을 위해 "버섯 환경"이라는 장난감 예제를 사용합니다. 버섯 데이터 세트 ( Schlimmer, 1981 ) 식용과 독버섯의 표시 예로 구성되어 있습니다. 기능에는 모양, 색상, 버섯의 다른 부분의 크기, 냄새 등이 포함됩니다.

버섯

모든 지도 학습 데이터 세트와 마찬가지로 버섯 데이터 세트는 상황별 MAB 문제로 전환될 수 있습니다. 우리는 또한이 사용하는 방법을 사용 리켈메 등을. (2018) . 이 변환에서 에이전트는 버섯의 특징을 받아 먹을지 말지를 결정합니다. 식용 버섯을 먹으면 +5의 보상이 주어지며, 독버섯을 먹으면 같은 확률로 +5 또는 -35의 보상을 얻습니다. 버섯을 먹지 않으면 버섯의 종류와 상관없이 보상이 0이 됩니다. 다음 표에는 보상 할당이 요약되어 있습니다.

           | edible | poisonous
-----------|--------|----------
eating it  |     +5 | -35 / +5
leaving it |      0 |        0

LinUCB 에이전트

상황에 맞는 밴딧 환경에서 잘 수행하려면 관찰이 주어진 각 행동의 보상 기능에 대한 적절한 추정이 필요합니다. 한 가지 가능성은 선형 함수로 보상 함수를 추정하는 것입니다. 모든 행동에 대한 것을 \(i\), 우리는 매개 변수 찾기 위해 노력하고있다 \(\theta_i\in\mathbb R^d\) 추정치를 들어

\(r_{t, i} \sim \langle v_t, \theta_i\rangle\)

최대한 현실에 가깝다. 여기 \(v_t\in\mathbb R^d\) 시간 단계에서 수신 된 상황이다 \(t\). 에이전트는 추정에 매우 확신한다면, 그것은 선택할 수 있습니다 \(\arg\max_{1, ..., K}\langle v_t, \theta_k\rangle\) 가장 높은 것으로 보상을받을 수 있습니다.

위에서 설명한 것처럼 단순히 가장 좋은 추정 보상이 있는 팔을 선택하는 것만으로는 좋은 전략으로 이어지지 않습니다. (참조 예를 들어,이 선형 추정 에이전트의 개발 및 탐사를 혼합하는 방법에는 여러 가지가 있으며, 가장 유명한 중 하나는 (LinUCB) 알고리즘 바운드 선형 어퍼 신뢰입니다 리 외. 2010 ). LinUCB에는 두 가지 주요 빌딩 블록이 있습니다(일부 세부 사항은 생략됨).

  1. 그것은 모든 선형 최소 제곱와 팔의 매개 변수에 대한 추정치 유지 : \(\hat\theta_i\sim X^+_i r_i\), \(X_i\) 및 \(r_i\) 암 스택 상황과 라운드의 보상이다 \(i\) 선택되었다, 그리고 \(()^+\) 의사 역입니다 .
  2. 그것은 역 공분산에 의해 정의 된 신뢰 타원체 유지 \(X_i^\top X_i\) 위의 추정치를.

LinUCB의 주요 아이디어는 "불확실성에 직면한 낙관주의"입니다. 에이전트는 추정치의 분산에 해당하는 양만큼 추정치를 부스팅하여 탐색을 통합합니다. 신뢰 타원체가 그림으로 오는 곳이다 : 모든 암에 대해 낙관적 인 추정은 \(\hat r_i = \max_{\theta\in E_i}\langle v_t, \theta\rangle\), \(E_i\) 타원체 주위의 인 \(\hat\theta_i\). 에이전트 선택한다면 가장 팔을 찾고 \(\arg\max_i\hat r_i\).

물론 위의 설명은 LinUCB가 하는 일에 대한 직관적이지만 피상적인 요약입니다. 구현은 우리의 코드베이스에서 찾을 수 있습니다 여기에

무엇 향후 계획?

당신이 우리의 산적 라이브러리에 대한 자세한 튜토리얼을 원한다면 우리 한 번 봐 걸릴 도둑에 대한 자습서를 . 대신, 당신이 바로 우리의 라이브러리를 탐험을 시작하려는 경우, 당신은 그것을 찾을 수 있습니다 여기에 . 당신은 더 많은 열망 우리의 엔드 - 투 - 엔드 예 중 일부에서 훈련 모습을 시작하는 경우 여기 LinUCB와 상기 버섯 환경을 포함하여, 여기 .