본문 바로가기

ReinforcementLearning

확률 기반 PG최적화 학습

- 폴리시 그래디언트 메서드

- Reinforce 알고리즘

  PG메서드의 더 간단한 버전을 Reinforce라고 함

  Reinforce는 완전한 궤도로부터 실제 리턴true return을 계산하는 MC리턴의 특성으로 편향이 없는 unbiased 좋은 특성을 가지고있다.

  하지만, 이러한 불편 추정unbiased estimate은 궤도의 길이에 따라 값이 증가하는 특성을 갖는 분산에는 바람직 하지 않다.

  간단한 reinforce는 편향이 없다는 장점이 있지만,

  분산variance이 상대적으로 크다는 단점이 있다.

- 베이스라인이 있는 Reinforce

  베이스라인을 추가하면 불편 특성을 유지하는 동안(근사적으로 이알고리즘은 로컬 최소값에 수렴한다.) 분산을 낮출 수 있다.

 하지만 베이스라인이 있는 Reinforce는 수렴이 매우 느리며 환경과 끊임 없이 상호작용해야 하는 문제가 있다.

 

- AC알고리즘 학습시키기

  AC알고리즘과 Reinforce의 차이점 

  1. n-스텝 미래 보상 계산

  2. 어드벤티지 함수 계산

  3. 메인 함수의 일부 조정

 

 

 

분산을 줄이고 알고리즘의 수렴 특성을 높이기 위해 Reinforce에 베이스라인을 추가하는 방법을 제안

AC알고리즘은 크리틱을 사용해 완전궤도 full trajectorries가 아니더라도 학습할 수있다.

  • PG 알고리즘은 목적함수를 어떻게 최대화하는가?
    • 목적함수를 최대화 하는것이 목표이므로 그래디언트와 동일한 방향을 취해야 한다.
    • 폴리시그래디언트PG (Policy Gradient)메서드에서 목적함수를 최대화 하려면 목적 함수의 그래디언트인 ~를 사용한다.
    • 그래디언트 상승을 이용해 목적함수가 증가하는 방향의 그래디언트로 파라미터를 변경해 개선할 수 있다.
  • 폴리시 그래디언트 알고리즘의 기본 개념은 무엇인가?
    • 강화학습의 목적은 궤도의 예상 리턴 값(디스카운트 또는 디스카운트하지 않은 총 보상)을 최대화 하는 것.
  • Reinforce에 베이스라인을 도입할 떄 해당 알고리즘이 평향되지 않는 이유는 무엇인가?
    • 리턴값 추정에서 베이스라인 b를 도입해 분산을 줄이고 알고리즘의 안정성과 성능을 향상 시킬 수 있다.
  • Reinforce는 어떠한 유형의 알고리즘인가?
    • 처음 사용한 가장 간단한 방법은 몬테카를로montecarlo리턴을 이용해 해당 리턴 값을 추정하는것 -> reinforce는 MC알고리즘으로 분류한다
  • AC메서드에서 크리딕은 Reinforce의 베이스라인으로 사용되는 가치함수와 어떻게 다른가?
    • Reinforce에서는 현재 상태의 가치state value를 베이스라인으로만 사용한다. AC에서 상태-가치 함수는 다음 상태의 가치를 추정하는데 사용하며, Q(s,a)를 추정하려면 현재 보상만 필요하다.
    • 따라서 원스탭one-step AC모델은 완전 온라인 증분알고리즘 fully online incremental algorithm이라고 할수있다.
  • 에이전트가 이동하는 방법을 학습해야 하는 알고리즘을 개발해야 한다면 Reinforce와 AC중 어느것이 바람직한가?
  • n-스텝 AC알고리즘을 Reinforce알고리즘으로 사용할 수있는가?
    • 시간차 학습TD learning에서 봤듯이 완전 온라인 알고리즘은 MC학습과는 반대로 분산은 작지만 바이어스가 크다. 따라서 완전 온라인과 MC메서드 사이의 중간 전략이  대체로 좋다.
    • 이러한 절충관게의 균형을 맞추기 위해  온라인 알고리즘의 원-스템 리턴을 n-스텝 리턴으로 대체 할 수 있다.

 

 

 

 

 

 

 

파이썬 기반 강화학습 알고리듬 책을 읽고, 그 책의 질문 부분에 대한 답변을 작성한것 입니다.

 

'ReinforcementLearning' 카테고리의 다른 글

DDPG와 TD3 애플리케이션  (0) 2023.04.02
TRPO와 PRO 구현  (0) 2023.04.02
Deep Q-Network  (0) 2023.04.02
Q-러닝과 SARSA 애플리케이션  (0) 2023.04.02
동적 프로그래밍으로 문제 해결하기  (0) 2023.04.02