Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

rlFunctionEnv

함수를 사용하여 사용자 지정된 강화 학습 환경 동특성 지정

설명

rlFunctionEnv를 사용하여 사용자 지정 강화 학습 환경을 정의합니다. 환경에 대한 스텝 및 재설정 동작을 정의하는 MATLAB® 함수를 제공합니다. 이 객체는 rlPredefinedEnv로 사용 가능한 미리 정의된 환경이 아니라 자신만의 사용자 지정된 환경을 만들려는 경우 유용합니다.

생성

설명

예제

env = rlFunctionEnv(obsInfo,actInfo,stepfcn,resetfcn)은 제공된 관측값 사양과 행동 사양인 obsInfoactInfo를 각각 사용하여 강화 학습 환경을 만듭니다. 또한 사용자가 MATLAB 함수를 사용하여 StepFcnResetFcn 속성을 설정합니다.

입력 인수

모두 확장

관측값 사양으로, rlFiniteSetSpec 객체나 rlNumericSpec 객체, 또는 이러한 객체가 혼합된 배열로 지정됩니다. 이러한 객체는 차원, 데이터형, 관측값 신호의 이름과 같은 속성을 정의합니다.

행동 사양으로, rlFiniteSetSpec 또는 rlNumericSpec 객체로 지정됩니다. 이러한 객체는 차원, 데이터형, 행동 신호의 이름과 같은 속성을 정의합니다.

속성

모두 확장

환경에 대한 스텝 동작으로, 함수 이름, 함수 핸들 또는 익명 함수로 지정됩니다.

StepFcn은 사용자가 제공하는 함수로, 환경이 주어진 행동에서 다음 상태로 진행하는 방법을 설명합니다. 함수 이름이나 함수 핸들을 사용할 경우 이 함수는 다음 시그니처에 기술된 대로 2개의 입력값과 4개의 출력값을 가져야 합니다.

[Observation,Reward,IsDone,LoggedSignals] = myStepFunction(Action,LoggedSignals)

필수 세트 외에 추가 입력 인수를 사용하려면 익명 함수 핸들을 사용하여 StepFcn을 지정하십시오.

스텝 함수는 환경에서 주어진 행동에 대해 관측값과 보상 값을 계산합니다. 필수 입력 인수와 출력 인수는 다음과 같습니다.

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

  • Observation — 반환되는 관측값으로, obsInfo에 지정된 차원 및 데이터형과 일치해야 합니다.

  • Reward — 현재 스텝에 대한 보상으로, 스칼라 값으로 반환됩니다.

  • IsDone — 시뮬레이션 에피소드를 종료할지 여부를 나타내는 논리값입니다. 사용자가 정의하는 스텝 함수는 관측값, 보상 또는 기타 다른 값을 기반으로 하여 시뮬레이션을 종료할지 여부를 결정하는 논리를 포함할 수 있습니다.

  • LoggedSignals — 한 스텝에서 다음 스텝으로 전달하려는 데이터로, 구조체로 지정됩니다.

스텝 함수를 정의하는 여러 가지 방법을 보여주는 예제는 사용자 지정 함수를 사용하여 MATLAB 환경 만들기 항목을 참조하십시오.

환경에 대한 재설정 동작으로, 함수, 함수 핸들 또는 익명 함수 핸들로 지정됩니다.

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

[InitialObservation,LoggedSignals] = myResetFunction

재설정 함수에 입력 인수를 사용하려면 익명 함수 핸들을 사용하여 ResetFcn을 지정하십시오.

재설정 함수는 환경을 초기 상태로 설정하고 관측값 신호의 초기값을 계산합니다. 예를 들어, 각 훈련 에피소드가 매번 다른 초기 조건에서 시작하도록 특정 상태 값을 무작위로 할당하는 재설정 함수를 만들 수 있습니다.

sim 함수는 각 시뮬레이션이 시작될 때 재설정 함수를 호출하여 환경을 재설정하고, train 함수는 각 훈련 에피소드가 시작될 때 재설정 함수를 호출합니다.

InitialObservation 출력값은 obsInfo의 차원 및 데이터형과 일치해야 합니다.

재설정 조건의 정보를 첫 번째 스텝으로 전달하려면 재설정 함수에서 이 정보를 출력 구조체 LoggedSignals로 지정하십시오.

재설정 함수를 정의하는 여러 가지 방법을 보여주는 예제는 사용자 지정 함수를 사용하여 MATLAB 환경 만들기 항목을 참조하십시오.

다음 스텝에 전달할 정보로, 구조체로 지정됩니다. 환경을 만들 때 무엇을 ResetFcnLoggedSignals 출력값으로 정의하든 해당 정보로 이 속성을 초기화합니다. 스텝이 발생할 때 StepFcn에 정의된 대로 다음 스텝에 전달할 데이터로 이 속성이 채워집니다.

객체 함수

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를 사용하여 관측값 사양, 행동 사양, 사용자가 정의하는 step 함수 및 reset 함수로부터 MATLAB 강화 학습 환경을 만들 수 있습니다.

이 예제에서는 카트 위에서 폴의 균형을 유지하는 시스템을 표현하는 환경을 만듭니다. 환경에서 관측하는 값은 카트 위치, 카트 속도, 진자 각, 진자 각 도함수입니다. (이 환경에 대한 자세한 내용은 사용자 지정 함수를 사용하여 MATLAB 환경 만들기 항목을 참조하십시오.) 이러한 신호에 대한 관측값 사양을 만듭니다.

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

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

ActionInfo = rlFiniteSetSpec([-10 10]);
ActionInfo.Name = 'CartPole Action';

다음으로, 사용자 지정 step 함수와 reset 함수를 지정합니다. 이 예제에서는 제공된 함수 myResetFunction.mmyStepFunction.m을 사용합니다. 이러한 함수와 함수 생성 방법에 대한 자세한 내용은 사용자 지정 함수를 사용하여 MATLAB 환경 만들기 항목을 참조하십시오.

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

env = rlFunctionEnv(oinfo,ActionInfo,'myStepFunction','myResetFunction');

다른 강화 학습 환경에서와 마찬가지로 env에 대한 에이전트를 만들고 환경 내에서 이 에이전트를 훈련시킬 수 있습니다.

함수 이름을 사용하는 대신, 함수를 함수 핸들로 지정할 수 있습니다. 자세한 내용과 예제는 사용자 지정 함수를 사용하여 MATLAB 환경 만들기 항목을 참조하십시오.

버전 내역

R2019a에 개발됨