2017-04-13 1 views
2

복잡한 보 조 조건에 도달 할 때까지 주어진 점 집합에서 원점에 가장 가까운 점을 반복적으로 선택하기 위해 보강 학습을 사용하려고합니다. (이것은 내 주요 문제를 단순화 한 것입니다.)보강 학습으로 원점에 가장 가까운 점 선택

가능한 포인트가 포함 된 2D 배열이 보강 학습 알고리즘에 전달되어 가장 이상적이라고 생각되는 포인트를 선택합니다. 이 경우

A [1, 10] 
B [100, 0] 
C [30, 30] 
D [5, 7] 
E [20, 50] 

, D 진정한 최고의 선택이 될 것입니다. 내가 알고리즘을 훈련 할 때마다 (이 알고리즘은해야 범위 4- 0.에서, 3 이상적으로 출력) 그러나

, "개념"이 무엇인지 배울 것 대신 단지의 선택은, 말하자면, C입니다 보통이 최선이므로 선택해야합니다.

import numpy as np 
import rl.core as krl 


class FindOriginEnv(krl.Env): 

    def observe(self): 
     return np.array([ 
      [np.random.randint(100), np.random.randint(100)] for _ in range(5) 
     ]) 

    def step(self, action): 

     observation = self.observe() 

     done = np.random.rand() < 0.01 # eventually 

     reward = 1 if done else 0 

     return observation, reward, done, {} 

    # ... 

달성하려는 목표에 대해 실제로 알 수 있도록 알고리즘을 수정해야합니까?

  • 관측 모양?
  • 보상 기능?
  • 조치 방법?

Keras 코드가 좋지만 필수는 아닙니다. 순전히 알고리즘적인 설명도 매우 유용 할 것입니다.

답변

2

당신의 묘사에서 민주당을 스케치, 몇 가지 문제가 있습니다 :

귀하의 관찰 기능이 [0 상태가 10 개 정수의 모든 구성 될 수 있음을 의미하므로, 5 점을 반환하는 것으로 보인다
  • , 99]. 그것은 100^10 개의 가능한 상태입니다! 주 공간은 훨씬 작아야합니다. 서면에 따르면 observe은 주 관측이 아닌 가능한 동작을 생성하는 것처럼 보입니다.

  • [0,4]에서 작업을 선택하는 것이 좋습니다. 여기서 각 작업은 본질적으로 에이전트가 사용할 수있는 포인트 배열의 인덱스입니다. 행동 공간에 대한이 정의는 에이전트가 당신이 원하는 것을 구분할 수있는 충분한 정보를 제공하지 않습니다 (작은 진도 점이 더 낫습니다). 이 작업을 수행하기 위해 공식을 약간 조정하려면 [0,99]의 각 차원에서 2D 점을 선택하는 작업을 정의해야합니다. 이것은 100^2 개의 가능한 전체 조치가 있음을 의미하지만 객관식 측면을 유지하기 위해 에이전트는 현재 상태를 기반으로 주어진 단계 (5 가지 가능한 조치)에서 서브 세트 사이에서 선택하도록 에이전트를 제한합니다.

  • 마지막으로 보상이 종료 될 때까지 보상을 제공하는 보상 기능을 사용하면 가능한 많은 최적의 정책을 허용하게됩니다. 근본적으로, 에피소드가 걸린 시간과 관계없이 종료되는 정책은 최적입니다! 신속하게 종료되는 정책을 권장하려면 각 단계에서 작은 부정적인 보상으로 상담원에게 벌점을 주어야합니다.