Main Content

rlFunctionEnv

재설정 함수와 스텝 함수를 사용하여 사용자 지정 강화 학습 환경 만들기

R2019a 이후

설명

rlFunctionEnv를 사용하여 자신만의 재설정 및 스텝 MATLAB® 함수를 제공함으로써 사용자 지정 강화 학습 환경을 만듭니다. 이 객체는 rlPredefinedEnv로 사용 가능한 내장 환경과는 다른 환경을 만들려는 경우 유용합니다. 사용자 환경의 동작을 검증하기 위해 rlFunctionEnv는 환경을 만든 후 자동으로 validateEnvironment를 호출합니다.

생성

설명

예제

env = rlFunctionEnv(observationInfo,actionInfo,stepFcn,resetFcn)은 제공된 관측값 사양과 행동 사양인 observationInfoactionInfo를 각각 사용하여 강화 학습 환경을 만듭니다. stepFcn 인수와 resetFcn 인수는 각각 스텝 및 재설정 MATLAB 함수의 이름으로, envStepFcn 속성과 ResetFcn 속성을 설정하는 데 사용됩니다.

입력 인수

모두 확장

관측값 사양으로, rlFiniteSetSpec 객체나 rlNumericSpec 객체, 또는 이러한 객체가 혼합된 배열로 지정됩니다. 배열의 각 요소는 환경 관측값 채널의 속성(예: 차원, 데이터형, 이름)을 정의합니다.

행동 사양으로, rlFiniteSetSpec 객체(이산 행동 공간의 경우) 또는 rlNumericSpec 객체(연속 행동 공간의 경우)로 지정됩니다. 이 객체는 환경 행동 채널의 속성(예: 차원, 데이터형, 이름)을 정의합니다.

참고

하나의 행동 채널만 허용됩니다.

속성

모두 확장

환경 스텝 함수로, 함수 이름, 함수 핸들 또는 익명 함수에 대한 핸들로 지정됩니다. sim 함수와 train 함수는 StepFcn을 호출하여 매 시뮬레이션 또는 훈련 스텝마다 환경을 업데이트합니다.

이 함수는 다음 시그니처에 기술된 대로 2개의 입력값과 4개의 출력값을 가져야 합니다.

[NextObservation,Reward,IsDone,UpdatedInfo] = myStepFunction(Action,Info)

주어진 행동 입력값에 대해 스텝 함수는 다음 관측값과 보상 값을 포함하여, 에피소드 종료 여부를 나타내는 논리값과 업데이트된 환경 정보 변수를 반환합니다.

구체적으로 필수 입력 인수와 출력 인수는 다음과 같습니다.

  • Action — 에이전트의 현재 행동으로, actionInfo에 지정된 차원 및 데이터형과 일치해야 합니다.

  • Info — 한 스텝에서 다음 스텝으로 전달하려는 데이터입니다. 이는 상태와 파라미터를 포함하는, 환경 상태 또는 구조체일 수 있습니다. 시뮬레이션 또는 훈련 함수(train 또는 sim)는 이 변수를 다음과 같이 처리합니다.

    1. ResetFcn에서 반환된 두 번째 출력 인수를 에피소드 시작 시 사용하여 Info 초기화

    2. 각 훈련 스텝 또는 시뮬레이션 스텝에서 Info를 두 번째 입력 인수로 StepFcn에 전달

    3. StepFcn에서 반환된 네 번째 출력 인수(UpdatedInfo)를 사용하여 Info 업데이트

  • NextObservation — 다음 관측값. 이는 Action에 의해 현재 상태에서 다음 상태로 천이됨으로써 생성된 관측값입니다. 반환되는 값은 observationInfo에 지정된 차원 및 데이터형과 일치해야 합니다.

  • RewardAction에 의해 현재 상태에서 다음 상태로 천이됨으로써 생성된 보상입니다. 반환되는 값은 스칼라여야 합니다.

  • IsDone — 시뮬레이션 에피소드 또는 훈련 에피소드를 종료할지 여부를 나타내는 논리값입니다.

허용된 두 입력 인수 외에 추가 입력 인수를 사용하려면, 예제 Create Custom Environment Using Step and Reset Functions에 설명된 것처럼 MATLAB 작업 공간에서 추가 인수를 정의한 다음 stepFcn을 익명 함수로 지정하십시오. 그러면 이 함수가 작업 공간에 정의된 추가 인수와 함께 사용자 지정 함수를 호출합니다.

예: StepFcn="myStepFcn"

환경 재설정 함수로, 함수 이름, 함수 핸들 또는 익명 함수에 대한 핸들로 지정됩니다. sim 함수는 각 시뮬레이션이 시작될 때 재설정 함수를 호출하여 환경을 재설정하고, train 함수는 각 훈련 에피소드가 시작될 때 재설정 함수를 호출합니다.

사용자가 제공하는 재설정 함수는 다음 시그니처에 기술된 대로 입력값이 없고 2개의 출력값을 가져야 합니다.

[InitialObservation,Info] = myResetFunction

재설정 함수는 환경을 초기 상태로 설정하고 관측값의 초기값을 계산합니다. 예를 들어, 각 훈련 에피소드가 매번 다른 초기 조건에서 시작하도록 특정 상태 값을 무작위로 할당하는 재설정 함수를 만들 수 있습니다. InitialObservation 출력값은 observationInfo의 차원 및 데이터형과 일치해야 합니다.

ResetFcnInfo 출력값은 환경의 Info 속성을 초기화하고, 한 스텝에서 다음 스텝으로 전달하려는 데이터를 포함합니다. 이는 상태와 파라미터를 포함하는, 환경 상태 또는 구조체일 수 있습니다. 시뮬레이션 함수 또는 훈련 함수(train 또는 sim)는 Info의 현재 값을 StepFcn의 두 번째 입력 인수로 제공한 다음, StepFcn에서 반환된 네 번째 출력 인수를 사용하여 Info의 값을 업데이트합니다.

허용된 두 입력 인수 외에 추가 입력 인수를 사용하려면, 예제 Create Custom Environment Using Step and Reset Functions에 설명된 것처럼 MATLAB 작업 공간에서 인수를 정의한 다음 stepFcn을 익명 함수로 지정하십시오. 그러면 이 함수가 작업 공간에 정의된 추가 인수와 함께 사용자 지정 함수를 호출합니다.

예: ResetFcn="myResetFcn"

다음 스텝에 전달할 정보. 이는 상태와 파라미터를 포함하는, 환경 상태 또는 구조체일 수 있습니다. ResetFcn을 호출할 때 무엇을 ResetFcnInfo 출력값으로 정의하든 해당 정보로 이 속성을 초기화합니다. 스텝이 발생할 때 시뮬레이션 함수 또는 훈련 함수(train 또는 sim)는 Info의 현재 값을 StepFcn에 대한 두 번째 입력 인수로 사용합니다. StepFcn이 완료되면, 시뮬레이션 함수 또는 훈련 함수가 StepFcn에서 반환된 네 번째 출력 인수를 사용하여 Info의 현재 값을 업데이트합니다.

예: Info=[-1 0 2.2]

객체 함수

getActionInfo강화 학습 환경, 에이전트 또는 경험 버퍼에서 행동 데이터 사양 가져오기
getObservationInfo강화 학습 환경, 에이전트 또는 경험 버퍼에서 관측값 데이터 사양 가져오기
trainTrain reinforcement learning agents within a specified environment
simSimulate trained reinforcement learning agents within specified environment
validateEnvironmentValidate custom reinforcement learning environment

예제

모두 축소

MATLAB®에 사용자 지정 동적 함수를 제공하여 강화 학습 환경을 만듭니다. rlFunctionEnv를 사용하여 관측값 사양, 행동 사양, 사용자가 정의하는 스텝 함수 및 재설정 함수로부터 MATLAB 강화 학습 환경을 만들 수 있습니다.

이 예제에서는 카트 위에서 폴의 균형을 유지하는 시스템을 표현하는 환경을 만듭니다. 환경에서 관측하는 값은 카트 위치, 카트 속도, 진자 각, 진자 각속도입니다. 이 환경에 대한 자세한 내용은 Create Custom Environment Using Step and Reset Functions 항목을 참조하십시오. 이러한 신호에 대한 관측값 사양을 만듭니다.

obsinfo = rlNumericSpec([4 1]);
obsinfo.Name = "CartPole States";
obsinfo.Description = 'x, dx, theta, dtheta';

환경에는 에이전트가 힘 값 –10N 또는 10N 중 하나를 카트에 적용할 수 있는 이산 행동 공간이 있습니다. 이러한 행동에 대한 행동 사양을 만듭니다.

actInfo = rlFiniteSetSpec([-10 10]);
actInfo.Name = "CartPole Action";

그다음, 스텝 함수와 재설정 함수를 지정합니다. 이 예제에서는 제공된 함수 myResetFunction.mmyStepFunction.m을 사용합니다. 이러한 함수와 함수 생성 방법에 대한 자세한 내용은 Create Custom Environment Using Step and Reset Functions 항목을 참조하십시오.

rlFuntionEnv에 전달해야 하는 사용자 지정 재설정 함수와 스텝 함수는 인수가 각각 정확히 0개와 2개여야 하지만, 익명 함수를 사용하면 이 제약을 피할 수 있습니다. 구체적으로 설명하면, rlFuntionEnv에 전달하는 재설정 함수와 스텝 함수를 인수가 각각 0개와 2개인 익명 함수로 정의하면, 결과적으로 추가 인수를 갖는 사용자 지정 함수가 호출됩니다. 이 방법에 대한 자세한 내용은 Create Custom Environment Using Step and Reset Functions 항목을 참조하십시오.

정의된 관측값 사양, 행동 사양, 함수 이름을 사용하여 사용자 지정 환경을 만듭니다.

env = rlFunctionEnv(obsinfo,actInfo,"myStepFunction","myResetFunction")
env = 
  rlFunctionEnv with properties:

     StepFcn: "myStepFunction"
    ResetFcn: "myResetFunction"
        Info: [4x1 double]

이제 다른 환경에서와 마찬가지로 env에 대한 에이전트를 만들고 이 에이전트를 훈련시키거나 시뮬레이션할 수 있습니다.

버전 내역

R2019a에 개발됨

모두 확장