주요 콘텐츠

PPO(근위 정책 최적화) 에이전트

PPO(근위 정책 최적화)는 이산 행동 공간 또는 연속 행동 공간이 있는 환경에 대한 온-폴리시 정책 경사 강화 학습 방법입니다. 이 알고리즘은 정책의 값을 추정하기 위해 확률적 정책을 직접 추정하고 가치 함수 크리틱을 사용합니다. 이 알고리즘은 환경 상호 작용을 통해 데이터를 추출하는 작업과 확률적 경사하강법을 사용하여 잘린 대리 목적 함수를 최적화하는 작업을 번갈아 수행합니다. 잘린 대리 목적 함수는 각 단계에서 정책 변경의 크기를 제한하여 훈련 안정성을 높입니다[1]. 연속 행동 공간의 경우, 이 에이전트는 행동 사양에 설정된 제약 조건을 강제로 적용하지 않습니다. 따라서 행동 제약 조건을 적용해야 하는 경우 환경 내에서 적용해야 합니다.

PPO는 TRPO의 단순화된 버전입니다. 특히 PPO는 하이퍼파라미터 수가 더 적기 때문에 조정하기가 더 쉽고, TRPO보다 계산량이 적습니다. TRPO 에이전트에 대한 자세한 내용은 Trust Region Policy Optimization (TRPO) Agent 항목을 참조하십시오. 다양한 유형의 강화 학습 에이전트에 대한 자세한 내용은 강화 학습 에이전트 항목을 참조하십시오.

Reinforcement Learning Toolbox™에서 근위 정책 최적화 에이전트는 rlPPOAgent 객체에 의해 구현됩니다.

다음과 같은 관측값 공간과 행동 공간이 있는 환경에서 근위 정책 최적화 에이전트를 훈련시킬 수 있습니다.

관측값 공간행동 공간
이산 또는 연속이산 또는 연속

근위 정책 최적화 에이전트는 다음 액터와 크리틱을 사용합니다.

크리틱액터

rlValueFunction을 사용하여 만드는 가치 함수 크리틱 V(S)

rlDiscreteCategoricalActor(이산 행동 공간의 경우) 또는 rlContinuousGaussianActor(연속 행동 공간의 경우)를 사용하여 만드는 확률적 정책 액터 π(S)

훈련 중에 근위 정책 최적화 에이전트는 다음을 수행합니다.

  • 행동 공간에서 각 행동을 취할 확률을 추정하고 확률 분포에 따라 무작위로 행동을 선택합니다.

  • 현재 정책을 사용하여 여러 단계에 걸쳐 환경과 상호 작용한 후에 미니 배치를 사용하여 여러 Epoch에 걸쳐 액터 속성과 크리틱 속성을 업데이트합니다.

에이전트의 UseExplorationPolicy 옵션이 false로 설정된 경우 항상 simgeneratePolicyFunction에서 최대가능도를 갖는 행동이 사용됩니다. 결과적으로, 시뮬레이션된 에이전트와 생성된 정책은 결정적으로 동작합니다.

UseExplorationPolicytrue로 설정된 경우 에이전트는 확률 분포를 샘플링하여 행동을 선택합니다. 따라서 정책은 확률적이며 에이전트는 관측값 공간을 탐색합니다.

참고

UseExplorationPolicy 옵션은 시뮬레이션과 배포에만 영향을 미치고 훈련에는 영향을 미치지 않습니다. train을 사용하여 에이전트를 훈련시킬 경우 에이전트는 이 속성의 값에 관계없이 항상 자신의 탐색 정책을 사용합니다.

PPO 에이전트에 사용되는 액터 및 크리틱

정책과 가치 함수를 추정하기 위해 근위 정책 최적화 에이전트는 다음과 같은 2개의 함수 근사기를 관리합니다.

  • 액터 π(A|S;θ) — 파라미터 θ가 있는 액터는 S 상태에 있을 때 각 행동 A를 취할 조건부 확률을 다음 중 하나로 출력합니다.

    • 이산 행동 공간 — 각 이산 행동을 취할 확률입니다. 모든 행동에 걸쳐 이러한 확률의 합은 1입니다.

    • 연속 행동 공간 — 각 연속 행동에 대한 가우스 확률 분포의 평균과 표준편차입니다.

  • 크리틱 V(S;ϕ) — 파라미터 ϕ가 있는 크리틱은 관측값 S를 받고 대응하는 감가된 장기 보상의 기대값을 반환합니다.

훈련이 진행되는 동안 액터는 정책을 개선하기 위해 θ의 파라미터 값을 조정합니다. 마찬가지로 훈련이 진행되는 동안 크리틱은 가치 함수 추정값을 개선하기 위해 ϕ의 파라미터 값을 조정합니다. 훈련을 마친 후 파라미터는 훈련된 에이전트 내부의 액터와 크리틱에서 조정된 값으로 유지됩니다.

액터와 크리틱에 대한 자세한 내용은 Create Policies and Value Functions 항목을 참조하십시오.

PPO 에이전트 생성

MATLAB® 명령줄에서 또는 강화 학습 디자이너 앱을 사용하여 근위 정책 최적화 에이전트를 만들고 훈련시킬 수 있습니다. 강화 학습 디자이너를 사용하여 에이전트를 만드는 방법에 대한 자세한 내용은 Create Agents Using Reinforcement Learning Designer 항목을 참조하십시오.

명령줄에서 환경의 관측값 사양과 행동 사양을 기반으로 디폴트 액터와 크리틱을 사용하는 PPO 에이전트를 만들 수 있습니다. 이렇게 하려면 다음 단계를 수행하십시오.

  1. 환경에 대한 관측값 사양을 만듭니다. 환경 객체가 이미 있는 경우 getObservationInfo를 사용하여 이러한 사양을 가져올 수 있습니다.

  2. 환경에 대한 행동 사양을 만듭니다. 환경 객체가 이미 있는 경우 getActionInfo를 사용하여 이러한 사양을 가져올 수 있습니다.

  3. 필요한 경우, 디폴트 신경망에 있는 각 학습 가능한 계층의 뉴런 개수를 지정하거나 LSTM 계층을 사용할지 여부를 지정합니다. 이렇게 하려면 rlAgentInitializationOptions를 사용하여 agent initialization option 객체를 만드십시오.

  4. rlPPOAgentOptions 객체를 사용하여 에이전트 옵션을 지정합니다. 또는 이 단계를 건너뛰고 나중에 점 표기법을 사용하여 에이전트 옵션을 수정할 수 있습니다.

  5. rlPPOAgent를 사용하여 에이전트를 만듭니다.

또는, 액터와 크리틱을 만들고 이러한 객체를 사용하여 에이전트를 만들 수 있습니다. 이 경우 액터와 크리틱의 입력 차원, 출력 차원이 환경의 대응하는 행동 사양, 관측값 사양과 일치하도록 해야 합니다.

  1. 환경에 대한 관측값 사양을 만듭니다. 환경 객체가 이미 있는 경우 getObservationInfo를 사용하여 이러한 사양을 가져올 수 있습니다.

  2. 환경에 대한 행동 사양을 만듭니다. 환경 객체가 이미 있는 경우 getActionInfo를 사용하여 이러한 사양을 가져올 수 있습니다.

  3. 액터에 대한 근사 모델을 만듭니다. 연속 행동 공간의 경우 이 모델은 신경망 객체여야 합니다. 이산 행동 공간의 경우 초기 파라미터 값을 갖는 사용자 지정 기저 함수를 사용하는 옵션도 있습니다.

  4. rlDiscreteCategoricalActor(이산 행동 공간의 경우) 또는 rlContinuousGaussianActor(연속 행동 공간의 경우)를 사용하여 액터를 만듭니다. 이전 단계에서 만든 모델을 첫 번째 입력 인수로 사용하십시오.

  5. 크리틱에 대한 근사 모델을 만듭니다. 연속 행동 공간의 경우 초기 파라미터 값을 갖는 사용자 지정 기저 함수나 신경망 객체를 사용해야 합니다. 이산 행동 공간의 경우 rlTable 객체를 사용하는 옵션도 있습니다.

  6. rlValueFunction을 사용하여 크리틱을 만듭니다. 이전 단계에서 만든 모델을 첫 번째 입력 인수로 사용하십시오.

  7. 필요한 경우, rlPPOAgentOptions 객체를 사용하여 에이전트 옵션을 지정합니다. 또는 이 단계를 건너뛰고 나중에 점 표기법을 사용하여 에이전트 옵션을 수정할 수 있습니다.

  8. rlPPOAgent를 사용하여 에이전트를 만듭니다.

PPO 에이전트는 순환 심층 신경망을 함수 근사기로 사용하는 액터와 크리틱을 지원합니다.

함수 근사를 위해 액터와 크리틱을 만드는 방법에 대한 자세한 내용은 Create Policies and Value Functions 항목을 참조하십시오.

PPO 훈련 알고리즘

근위 정책 최적화 에이전트는 다음 훈련 알고리즘을 사용합니다. 훈련 알고리즘을 구성하려면 rlPPOAgentOptions 객체를 사용하여 옵션을 지정하십시오.

  1. 임의 파라미터 값 θ로 액터 π(A|S;θ)를 초기화합니다.

  2. 임의 파라미터 값 ϕ로 크리틱 V(S;ϕ)를 초기화합니다.

  3. 현재 정책을 따라 E개 경험을 만듭니다(여러 에피소드를 실행할 수 있음). 구체적으로 다음과 같습니다.

    1. 각 에피소드가 시작할 때 환경에서 초기 관측값을 가져옵니다.

    2. 현재 관측값 S에 대해 π(A|S;θ)의 정책을 사용하여 행동 A를 선택합니다.

    3. 행동 A를 실행합니다. 보상 R과 다음 관측값 S'을 관측합니다.

    4. 경험(S,A,R,S')을 저장합니다.

    E를 지정하려면 LearningFrequency 옵션을 사용하십시오.

  4. E개 경험을 각각 N개 경험을 가진 시퀀스로 나누고 ts부터 ts+N까지 번호를 매깁니다. 각 경험 시퀀스에 종료 상태가 포함되지 않은 경우 NExperienceHorizon 옵션 값과 같습니다. 그렇지 않으면 NExperienceHorizon보다 작고 SN은 종료 상태입니다.

  5. 각 시퀀스의 각 단계 t = ts, ts+1, …, ts+N-1에 대해 AdvantageEstimateMethod 옵션으로 지정한 방법을 사용하여 리턴값과 어드밴티지 함수를 계산합니다.

    • 유한 지평(AdvantageEstimateMethod = "finite-horizon") — 해당 단계에 대한 보상과 감가된 미래 보상의 합인 리턴값 Gt를 계산합니다[2].

      Gt=k=t+1ts+N(γkt1Rk)+bγts+NtV(Sts+N;ϕ)

      여기서 bSts+N이 종료 상태인 경우 0이고, 그렇지 않은 경우 1입니다. 즉, Sts+N이 종료 상태가 아닌 경우 감가된 미래 보상에는 크리틱 근사기 V를 사용하여 계산된 감가된 상태 가치 함수가 포함됩니다.

      어드밴티지 함수 Dt를 계산합니다.

      Dt=GtV(St;ϕ)

    • 일반화된 어드밴티지 추정기(AdvantageEstimateMethod = "gae") — 시간 차이 오차[3]의 감가된 합인 어드밴티지 함수 Dt를 계산합니다.

      Dt=k=tts+N1(γλ)ktδkδk=Rk+1+bγV(Sk+1;ϕ)V(Sk;ϕ)

      여기서 bSts+N가 종료 상태인 경우 0이고, 그렇지 않은 경우 1입니다. λGAEFactor 옵션을 사용하여 지정된 평활화 인자입니다.

      리턴값 Gt를 계산합니다.

      Gt=Dt+V(St;ϕ)

    어떤 방법에든 감가 인자 γ를 지정하려면 DiscountFactor 옵션을 사용하십시오.

  6. 다음 두 작업을 NumEpoch번 수행합니다.

    1. 수집된 모든 경험을 활용하여 최대 B개의 서로 다른 미니 배치를 만듭니다. B를 지정하려면 MaxMiniBatchPerEpoch 옵션을 사용하십시오. 각 미니 배치에는 경험 버퍼에서 무작위로 샘플링된 M개의 서로 다른(일반적으로 비연속적인) 경험(Si,Ai,Ri,S'i)이 포함되어 있습니다(각 경험은 하나의 미니 배치에만 포함될 수 있음). M을 지정하려면 MiniBatchSize 옵션을 사용하십시오.

      에이전트에 순환 신경망이 포함되어 있는 경우 각 미니 배치에는 M개의 서로 다른 시퀀스가 포함됩니다. 각 시퀀스에는 K개의 연속된 경험(무작위로 샘플링된 경험에서 시작)이 포함되어 있습니다. K를 지정하려면 SequenceLength 옵션을 사용하십시오.

    2. (무작위로 선택된) 각 미니 배치에 대해 미니 배치 학습 연산에 설명된 학습 연산을 수행합니다.

미니 배치 학습 연산

각 미니 배치에 대해 수행되는 연산입니다.

  1. 모든 샘플링된 미니 배치 데이터에 걸쳐 손실 Lcritic의 최소화를 통해 크리틱 파라미터를 업데이트합니다.

    Lcritic(ϕ)=12Mi=1M(GiV(Si;ϕ))2

  2. 정규화되지 않은 최신 어드밴티지 값을 기반으로 어드밴티지 값 Di를 정규화합니다.

    • NormalizedAdvantageMethod 옵션이 "none"인 경우에는 어드밴티지 값을 정규화하지 않습니다.

      D^iDi

    • NormalizedAdvantageMethod 옵션이 "current"인 경우에는 현재 미니 배치의 정규화되지 않은 어드밴티지를 기반으로 어드밴티지 값을 정규화합니다.

      D^iDimean(D1,D2,,DM)std(D1,D2,,DM)

    • NormalizedAdvantageMethod 옵션이 "moving"인 경우에는 현재 어드밴티지 값을 포함하여 가장 최근의 N개 어드밴티지에 대한 정규화되지 않은 어드밴티지를 기반으로 어드밴티지 값을 정규화합니다. 윈도우 크기 N을 지정하려면 AdvantageNormalizingWindow 옵션을 사용하십시오.

      D^iDimean(D1,D2,,DN)std(D1,D2,,DN)

  3. 모든 샘플링된 미니 배치 데이터에 걸쳐 액터 손실 함수 Lactor의 최소화를 통해 액터 파라미터를 업데이트합니다.

    Lactor(θ)=1Mi=1M(min(ri(θ)D^i,ci(θ)D^i)wi(θ,Si))ri(θ)=π(Ai|Si;θ)π(Ai|Si;θold)ci(θ)=max(min(ri(θ),1+ε),1ε)

    여기서 각 요소는 다음과 같습니다.

    • DiGi는 각각 미니 배치의 i번째 요소에 대한 어드밴티지 함수와 리턴값입니다.

    • π(Ai|Si;θ)는 업데이트된 정책 파라미터 θ가 주어지고 상태 Si에 있을 때 행동 Ai를 취할 확률입니다.

    • π(Ai|Si;θold)는 현재 학습 Epoch 이전의 정책 파라미터 θold가 주어지고 상태 Si에 있을 때 행동 Ai를 취할 확률입니다.

    • εClipFactor 옵션을 사용하여 지정된 자르기 인자입니다.

    • i(θ,Si)는 엔트로피 손실이고 wEntropyLossWeight 옵션을 사용하여 지정된 엔트로피 손실 가중치 인자입니다. 엔트로피 손실에 대한 자세한 내용은 엔트로피 손실 항목을 참조하십시오.

엔트로피 손실

에이전트 탐색을 촉진하기 위해 엔트로피 손실 항 wi(θ,Si)를 액터 손실 함수에서 뺄 수 있습니다. 여기서 w는 엔트로피 손실 가중치이고 i(θ,Si)는 엔트로피입니다.

에이전트가 다음에 어떤 행동을 취해야 할지 불확실할수록 엔트로피 값은 더 높아집니다. 따라서 엔트로피 손실 항을 최대화(음의 엔트로피 손실 최소화)하면 에이전트 불확실성이 증가하여 탐색이 촉진됩니다. 에이전트가 국소 최적해에서 빠져나오는 데 도움이 되는 추가 탐색을 촉진하려면 더 큰 엔트로피 손실 가중치를 지정할 수 있습니다.

이산 행동 공간의 경우 에이전트는 다음과 같은 엔트로피 값을 사용합니다. 이 경우 액터는 각각의 가능한 이산 행동을 취할 확률을 출력합니다.

i(θ,Si)=k=1Pπ(Ak|Si;θ)lnπ(Ak|Si;θ)

여기서 각 요소는 다음과 같습니다.

  • P는 가능한 이산 행동의 개수입니다.

  • π(Ak|Si;θ)는 상태 Si에 있을 때 현재 정책에 따라 행동 Ak를 취할 확률입니다.

연속 행동 공간의 경우 에이전트는 다음과 같은 엔트로피 값을 사용합니다. 이 경우 액터는 각 연속 행동에 대한 가우스 분포의 평균과 표준편차를 출력합니다.

i(θ,Si)=12k=1Cln(2πeσk,i2)

여기서 각 요소는 다음과 같습니다.

  • C는 액터에서 출력된 연속 행동의 개수입니다.

  • σk,i는 상태 Si에 있을 때 현재 정책에 따른 행동 k의 표준편차입니다.

참고 문헌

[1] Schulman, John, Filip Wolski, Prafulla Dhariwal, Alec Radford, and Oleg Klimov. “Proximal Policy Optimization Algorithms.” ArXiv:1707.06347 [Cs], July 19, 2017. https://arxiv.org/abs/1707.06347.

[2] Mnih, Volodymyr, Adrià Puigdomènech Badia, Mehdi Mirza, Alex Graves, Timothy P. Lillicrap, Tim Harley, David Silver, and Koray Kavukcuoglu. “Asynchronous Methods for Deep Reinforcement Learning.” ArXiv:1602.01783 [Cs], February 4, 2016. https://arxiv.org/abs/1602.01783.

[3] Schulman, John, Philipp Moritz, Sergey Levine, Michael Jordan, and Pieter Abbeel. “High-Dimensional Continuous Control Using Generalized Advantage Estimation.” ArXiv:1506.02438 [Cs], October 20, 2018. https://arxiv.org/abs/1506.02438.

참고 항목

객체

도움말 항목