강화 학습에서 제한적 행동 공간을 구현하는 방법은 무엇입니까?


13

Tensorflow 위에 구축 된 매우 우수한 Tensorforce 라이브러리 덕분에 PPO 에이전트로 강화 학습 모델을 코딩하고 있습니다.

첫 번째 버전은 매우 간단했으며 이제 각 단계에서 모든 작업을 사용할 수없는 더 복잡한 환경으로 뛰어 들었습니다.

5 개의 동작이 있고 그 가용성이 내부 상태 (이전 동작 및 / 또는 새로운 상태 / 관찰 공간에 의해 정의 됨)에 따라 다르다고 가정 해 봅시다.

  • 2 가지 조치 (0 및 1)를 항상 사용할 수 있습니다
  • 2 개의 조치 (2 및 3)는 internal_state == 0 인 경우에만 사용 가능합니다.
  • 1 조치 (4)는 internal_state == 1 인 경우에만 사용 가능합니다.

따라서 internal_state == 0 일 때 사용 가능한 작업 4 개와 internal_state == 1 일 때 사용 가능한 작업 3 개가 있습니다.

나는 그것을 구현할 수있는 몇 가지 가능성을 생각하고 있습니다.

  1. internal_state에 따라 각 단계에서 조치 공간을 변경하십시오. 나는 이것이 말도 안된다고 가정합니다.
  2. 수행 할 작업 : 모델에서 사용할 수없는 작업을 선택해도 아무런 영향이 없음을 알립니다.
  3. 거의 수행하지 않음 : 모델이 사용 불가능한 조치를 선택할 때 보상에 약간 부정적인 영향을 미칩니다.
  4. 모델을 도와주십시오 : 모델에 internal_state 값 + 불릿 포인트 2 또는 3이 무엇인지 알려주는 상태 / 관측 공간에 정수를 통합하여

이것을 구현하는 다른 방법이 있습니까? 당신의 경험에서, 어느 것이 가장 좋을까요?

답변:


5

가장 간단한 해결책은 모든 조치를 "법적"으로 만드는 것이지만 불법 행위에서 다른 법적 조치로 일관되고 결정적인 맵핑을 구현하는 것입니다. 사용중인 PPO 구현에서 잘못된 조치를 선택할 때마다이를 PPO가 맵핑 된 법적 조치로 바꾸십시오. 그러면 PPO 알고리즘은 불법 조치가 선택된 것처럼 여전히 자체적으로 업데이트 될 수 있습니다 (위법 행위는 단순히 법적 조치의 "별명"이됩니다).

예를 들어, 다음과 같은 상황에서 설명합니다.

  • 2 가지 조치 (0 및 1)를 항상 사용할 수 있습니다
  • 2 개의 조치 (2 및 3)는 internal_state == 0 인 경우에만 사용 가능합니다.
  • 1 조치 (4)는 internal_state == 1 인 경우에만 사용 가능합니다.

경우에 internal_state == 0액션이 경우, 4(불법 행위)를 선택했다, 당신은 항상 다른 작업 중 하나를 스왑 아웃 대신 하나를 재생할 수 있습니다. 일관성을 유지하는 한 어떤 이론을 고를지는 (이론적으로) 중요하지 않습니다. 알고리즘은 불법적 인 행동을 선택했다는 것을 알 필요가 없습니다. 비슷한 상태에서 앞으로 동일한 불법 행동을 다시 선택할 때마다 동일한 법적 행동에 일관되게 매핑 될 것이므로 그 행동에 따라 강화하면됩니다.


01


첫 번째 "솔루션"의 경우, "이론적으로"매핑 선택 방법이 중요하지 않다고 위에서 썼습니다. 나는 여기서 당신의 선택이 실제로 학습 속도에 영향을 줄 것으로 기대합니다. 이는 학습 과정의 초기 단계에서 거의 임의의 작업을 선택할 수 있기 때문입니다. 출력에 일부 동작이 "여러 번 나타나는"경우, 초기에 가까운 임의의 동작을 선택하면 선택 될 확률이 높아집니다. 따라서 초기 행동에 영향을 미치며, 이는 귀하가 수집 한 경험에 영향을 미치며, 이는 또한 배우는 것에 영향을 미칩니다.

internal_state변수에 입력 기능을 포함시킬 수 있다면 성능에 도움이 될 것이라고 확신 합니다.

특정 불법 행위에 "의도적으로"밀접한 일부 법적 조치가 식별 될 수있는 경우, "매핑"의 "유사한"조치를 불법에서 법적 조치로 구체적으로 연결하는 것이 성능에 유리할 수 있습니다. 그 해결책. 예를 들어, 천장이 매우 낮은 상태 (머리를 부딪 칠 수 있기 때문에)에서 "앞으로 점프"동작이 불법 인 경우 해당 동작을 "앞으로 이동"동작에 매핑하는 것이 좋습니다. "뒤로 이동"작업에 매핑하는 것보다 여전히 비슷합니다. "유사한"행동에 대한이 아이디어는 특정 도메인에만 적용 할 수 있지만, 일부 도메인에서는 행동간에 유사성이 없을 수 있습니다.


2

목표는 텐서 포스 (Tensorforce)와 같은 프레임 워크를 사용하여 상태 중심 규칙에 따라 작업 공간에 특정 제약을 갖는 근위 정책 최적화 구성 요소를 설계하는 것입니다.

질문에 나열된 디자인 옵션

아래의 초기 분석을 읽을 때 빠른 참조를 위해 이러한 옵션이 여기에 나열됩니다.

  • internal_state에 따라 각 단계에서 조치 공간을 변경하십시오. 나는 이것이 말도 안된다고 가정합니다.
  • 수행 할 작업 : 모델에서 사용할 수없는 작업을 선택해도 아무런 영향이 없음을 알립니다.
  • 거의 수행하지 않음 : 모델이 사용 불가능한 조치를 선택할 때 보상에 약간 부정적인 영향을 미칩니다.
  • 모델을 도와주십시오 : 모델에 internal_state 값 + 불릿 포인트 2 또는 3이 무엇인지 알려주는 상태 / 관측 공간에 정수를 통합하여

초기 분석

각 움직임에 대한 행동 공간을 바꾸는 것이 현명합니다. 즉, 실제로 언급 된 문제와 사람이 게임을하는 일반적인 방법, 체스와 고에서 컴퓨터가 사람을 때리는 방식에 대한 적절한 표현입니다.

이 아이디어의 명백한 무의미는 단지 Tensorforce 프로젝트 로드맵을 따른 진행과 강화 이론을 따르는 진행의 인공물 일뿐입니다. Tensorforce 설명서 및 FAQ를 읽으면 프레임 워크가 규칙 엔진을 연결하여 작업 공간을 결정하도록 설계된 것으로 보이지 않습니다. 이것은 오픈 소스의 단점이 아닙니다. 규칙에 따라 조정 된 Markov 체인 결정에 이론을 제시하거나 알고리즘을 제안하는 논문은없는 것으로 보입니다.

Do-nothing 옵션은 문헌에 표시된 현재 사용 가능한 전략에 맞는 옵션입니다. 거의 아무것도하지 않는 것은 아마도보다 안정적이고 즉각적인 바람직한 행동을 만들어내는 접근법 일 것입니다.

모델을 돕는 개념의 문제는 모델을 확장하는 것만 큼 강력하지 않다는 것입니다. 오픈 소스에서는 모델을 나타내는 클래스를 확장하여 코드를 작성하기 전에 이론적 인 작업이 필요합니다.

    a. Represent rule-conditioned learning in nomenclature
    b. Represent convergence mathematically using the new nomenclature
    c. Determining a method of convergence
    d. Proving convergence
    e. Rechecking
    f. Defining a smooth and efficient algorithm
    g. Providing PAC learning information for planning
    f. Peer review
    g. Extending the classes of the library
    h. Proof of concept with the current problem above
    i. Additional cases and metrics comparing the approach with the others
    j. Extending the library flexibility to support more such dev

규칙 제약 사례를 다루기 위해 학습 시스템을 확장하는 것은 박사 학위 논문에 대한 좋은 아이디어이며 가능한 많은 응용 프로그램과 함께 프로젝트 제안으로 연구 실험실에서 날아갈 수 있습니다. 모든 단계가 연구원을 설득시키지 마십시오. 기본적으로 박사 학위 논문 또는 자금 지원 AI 실험실 프로젝트를위한 단계 목록입니다.

단기 솔루션의 경우 모델을 돕는 것이 도움이 될 수 있지만 강화 학습 경로를 따라 AI의 아이디어를 발전시키기위한 올바른 전략은 아닙니다. 특정 문제에 대한 단기 해결책으로 잘 작동 할 수 있습니다. 거의 아무것도하지 않는 아이디어는 Tensorforce가 사용하고있는 특정 구현으로 이어진 수렴 증명 내에 맞기 때문에 더 건전 할 수 있습니다.

거의 아무것도하지 않는 것에서 보조 수렴으로 이름을 바꾸면 시도하기 전에 올바른 관점을 개발하는 데 도움이 될 수 있습니다. 학습 속도와 마찬가지로 오버 슈트를 피하기 위해 수렴에 접근 할 때 보조를 약화시켜야 할 수도 있습니다.


3
예를 들어 AlphaGo에서 일반적으로 일어나는 일은 신경망의 저수준 표현이 매우 큰 동작 공간을 나타내며, 대부분 현재 상태에서는 불가능합니다 (고정 크기 벡터를 출력하는 간단한 NN의 한계로 인해 수행됨). ). 그런 다음 코드의 다른 부분은 필터를 적용하여 허용 된 이동에 대해서만 확률을 선택하고 정규화합니다. 결합 된 NN 및 필터는 에이전트의 일부입니다. 따라서 에이전트가 전체적으로 "각 이동에 대한 작업 공간을 바꿀 것"이라고 말하는 것이 공정합니다. 그러나 Tensorforce 라이브러리 내에서 이것이 어떻게 달성 될 수 있을지는 모르겠습니다.
Neil Slater

1

일반적으로 에이전트가 실행할 수있는 일련의 작업은 시간이 지나도 변경되지 않지만 일부 상태에서는 일부 작업이 불가능할 수 있습니다 (예 : TicTacToe 게임의 모든 위치에서 모든 이동이 가능한 것은 아님).

https://github.com/haje01/gym-tictactoe/blob/master/examples/base_agent.py 코드의 pice를 예로 들어보십시오 .

ava_actions = env.available_actions()
action = agent.act(state, ava_actions)
state, reward, done, info = env.step(action)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.