Main Content

rlOptimizerOptions

액터와 크리틱에 대한 최적화 옵션

R2022a 이후

    설명

    rlOptimizerOptions 객체를 사용하여 액터와 크리틱에 대한 최적화 옵션 세트를 지정합니다.

    생성

    설명

    예제

    optOpts = rlOptimizerOptions는 디폴트 최적화 옵션 세트를 만듭니다. 이 옵션 세트를 agent option 객체의 CriticOptimizerOptions 또는 ActorOptimizerOptions 속성으로 사용하거나, optimizer 객체를 만들 때 rlOptimizer의 마지막 인수로 사용할 수 있습니다. 점 표기법을 사용하여 객체 속성을 수정할 수 있습니다.

    예제

    optOpts = rlOptimizerOptions(Name=Value)는 하나 이상의 이름-값 쌍의 인수를 사용하여 지정된 속성을 갖는 옵션 세트를 만듭니다.

    속성

    모두 확장

    액터 또는 크리틱 함수 근사기 훈련에 사용되는 학습률로, 양의 스칼라로 지정됩니다. 학습률이 너무 낮으면 훈련 시간이 오래 걸립니다. 학습률이 너무 높으면 훈련이 최적의 결과보다 못한 값에 도달하거나 발산할 수 있습니다.

    예: LearnRate=0.025

    액터 또는 크리틱 함수 근사기 훈련에 사용되는 기울기 임계값으로, Inf 또는 양의 스칼라로 지정됩니다. 기울기가 이 값을 초과하면 기울기는 GradientThresholdMethod 옵션에서 지정한 대로 잘립니다. 기울기 자르기를 사용하면 훈련 반복에서 신경망 파라미터가 변경될 수 있는 정도가 제한됩니다.

    예: GradientThreshold=1

    액터 또는 크리틱 함수 근사기 훈련에 사용되는 기울기 임계값 방법입니다. 이는 기울기 임계값을 초과하는 기울기 값을 자를 때 사용할 특정 방법으로, 다음 값 중 하나로 지정됩니다.

    • "l2norm" — 계층의 가중치 또는 편향과 관련된 기울기 성분을 포함하는 벡터 Glyr의 L2 노름이 GradientThreshold보다 큰 경우, 이 옵션은 GradientThreshold/L배만큼 Glyr을 스케일링합니다. 여기서 L은 Glyr의 L2 노름입니다. 이 옵션을 사용할 경우 반환된 기울기에서 Glyr의 L2 노름은 GradientThreshold를 초과할 수 없습니다. 예를 들어 완전 연결 계층이 두 개의 파라미터 배열 WeightsBias를 갖는다고 가정해 보겠습니다. 이 경우 임계값은 WeightsBias와 관련된 기울기 성분의 L2 노름에 개별적으로 적용됩니다.

    • "global-l2norm" — 학습 가능한 모든 신경망 파라미터에 대해 기울기 G의 L2 노름이 GradientThreshold보다 큰 경우, 이 옵션은 L배만큼 G를 스케일링합니다. 여기서 L은 G의 L2 노름입니다. 이 옵션을 사용할 경우 반환된 기울기의 L2 노름은 GradientThreshold를 초과할 수 없습니다.

    • "absolute-value" — 학습 가능한 모든 신경망 파라미터에 대해 기울기 G의 개별 (스칼라) 편도함수의 절댓값이 GradientThreshold보다 큰 경우, 이 옵션은 반환된 기울기의 해당 성분 크기가 GradientThreshold와 같고 원래 편도함수의 부호를 그대로 갖도록 편도함수를 스케일링합니다. 이 옵션을 사용할 경우 반환된 기울기의 성분 절댓값은 GradientThreshold를 초과할 수 없습니다.

    자세한 내용은 Deep Learning Toolbox™에서 trainingOptions의 알고리즘 섹션에 있는 기울기 제한 항목을 참조하십시오.

    예: GradientThresholdMethod="absolute-value"

    액터 또는 크리틱 함수 근사기 훈련에 사용되는 L2 정규화(가중치 감쇠) 인자로, 음이 아닌 스칼라로 지정됩니다. 자세한 내용은 Deep Learning Toolbox에서 trainingOptions의 알고리즘 섹션에 있는 L2 정규화 항목을 참조하십시오.

    파라미터가 많이 있는 표현을 사용할 때 과적합을 방지하려면 L2RegularizationFactor 옵션을 늘리는 것을 고려하십시오.

    예: L2RegularizationFactor=0.0005

    액터 또는 크리틱 함수 근사기 훈련에 사용되는 알고리즘으로, 다음 값 중 하나로 지정됩니다.

    • "adam" — Adam(Adaptive movement Estimation: 적응적 움직임 추정) 알고리즘을 사용합니다. OptimizerParameters 옵션의 GradientDecayFactor 필드와 SquaredGradientDecayFactor 필드를 사용하여 기울기 이동평균의 감쇠율과 제곱 기울기 이동평균의 감쇠율을 지정할 수 있습니다.

    • "sgdm" — SGDM(Stochastic Gradient Descent with Momentum: 모멘텀을 사용한 확률적 경사하강법) 알고리즘을 사용합니다. OptimizerParameters 옵션의 Momentum 필드를 사용하여 모멘텀 값을 지정할 수 있습니다.

    • "rmsprop" — RMSProp 알고리즘을 사용합니다. OptimizerParameters 옵션의 SquaredGradientDecayFactor 필드를 사용하여 제곱 기울기 이동평균의 감쇠율을 지정할 수 있습니다.

    이러한 알고리즘에 대한 자세한 내용은 Deep Learning Toolbox에서 trainingOptions의 알고리즘 섹션을 참조하십시오.

    예: Optimizer="sgdm"

    액터 또는 크리틱 함수 근사기 훈련에 사용되는 훈련 알고리즘의 파라미터로, 다음과 같은 파라미터를 갖는 OptimizerParameters 객체로 지정됩니다.

    파라미터설명
    Momentum

    이전 스텝의 기여로, 0과 1 사이의 스칼라로 지정됩니다. 값이 0이면 이전 스텝의 기여가 없음을 의미합니다. 값이 1이면 최대 기여를 의미합니다.

    이 파라미터는 Optimizer"sgdm"인 경우에만 적용됩니다. 이 경우 디폴트 값은 0.9입니다. 대부분의 경우 이 디폴트 값이 잘 동작합니다.

    Epsilon

    분모 오프셋으로, 양의 스칼라로 지정됩니다. 최적화 함수는 0으로 나누기를 방지하기 위해 신경망 파라미터 업데이트에서 분모에 이 오프셋을 더합니다.

    이 파라미터는 Optimizer"adam" 또는 "rmsprop"인 경우에만 적용됩니다. 이 경우 디폴트 값은 10–8입니다. 대부분의 경우 이 디폴트 값이 잘 동작합니다.

    GradientDecayFactor

    기울기 이동평균의 감쇠율로, 0과 1 사이의 양의 스칼라로 지정됩니다.

    이 파라미터는 Optimizer"adam"인 경우에만 적용됩니다. 이 경우 디폴트 값은 0.9입니다. 대부분의 경우 이 디폴트 값이 잘 동작합니다.

    SquaredGradientDecayFactor

    제곱 기울기 이동평균의 감쇠율로, 0과 1 사이의 양의 스칼라로 지정됩니다.

    이 파라미터는 Optimizer"adam" 또는 "rmsprop"인 경우에만 적용됩니다. 이 경우 디폴트 값은 0.999입니다. 대부분의 경우 이 디폴트 값이 잘 동작합니다.

    OptimizerParameters의 특정 속성이 Algorithm에 지정된 최적화 함수 유형에 적용되지 않는 경우, 해당 속성은 "Not applicable"로 설정됩니다.

    속성값을 변경하려면 rlOptimizerOptions 객체를 만들고 점 표기법으로 OptimizerParameters의 속성에 액세스하여 값을 변경하십시오.

    repOpts = rlRepresentationOptions;
    repOpts.OptimizerParameters.GradientDecayFactor = 0.95;

    객체 함수

    rlQAgentOptionsQ-러닝 에이전트에 대한 옵션
    rlSARSAAgentOptionsSARSA 에이전트에 대한 옵션
    rlDQNAgentOptionsDQN 에이전트에 대한 옵션
    rlPGAgentOptionsOptions for PG agent
    rlDDPGAgentOptionsDDPG 에이전트에 대한 옵션
    rlTD3AgentOptionsTD3 에이전트에 대한 옵션
    rlACAgentOptionsOptions for AC agent
    rlPPOAgentOptionsOptions for PPO agent
    rlTRPOAgentOptionsOptions for TRPO agent
    rlSACAgentOptionsOptions for SAC agent
    rlOptimizerCreates an optimizer object for actors and critics

    예제

    모두 축소

    rlOprimizerOptions를 사용하여, 크리틱 함수 근사기 훈련에 사용할 디폴트 optimizer option 객체를 만듭니다.

    myCriticOpts = rlOptimizerOptions
    myCriticOpts = 
      rlOptimizerOptions with properties:
    
                      LearnRate: 0.0100
              GradientThreshold: Inf
        GradientThresholdMethod: "l2norm"
         L2RegularizationFactor: 1.0000e-04
                      Algorithm: "adam"
            OptimizerParameters: [1x1 rl.option.OptimizerParameters]
    
    

    점 표기법을 사용하여, 훈련 알고리즘을 SGDM(모멘텀을 사용한 확률적 경사하강법)으로 변경하고 모멘텀 파라미터의 값을 0.6으로 설정합니다.

    myCriticOpts.Algorithm = "sgdm";
    myCriticOpts.OptimizerParameters.Momentum = 0.6;

    AC agent option 객체를 만들고 이 객체의 CriticOptimizerOptions 속성을 myCriticOpts로 설정합니다.

    myAgentOpt = rlACAgentOptions;
    myAgentOpt.CriticOptimizerOptions = myCriticOpts;

    이제 AC 에이전트를 만들 때 myAgentOptrlACAgent에 대한 마지막 입력 인수로 사용할 수 있습니다.

    rlOprimizerOptions를 사용하여, 액터 함수 근사기 훈련에 사용할 optimizer option 객체를 만듭니다. 학습률을 0.2로 지정하고 GradientThresholdMethod"absolute-value"로 설정합니다.

    myActorOpts=rlOptimizerOptions(LearnRate=0.2, ...
        GradientThresholdMethod="absolute-value")
    myActorOpts = 
      rlOptimizerOptions with properties:
    
                      LearnRate: 0.2000
              GradientThreshold: Inf
        GradientThresholdMethod: "absolute-value"
         L2RegularizationFactor: 1.0000e-04
                      Algorithm: "adam"
            OptimizerParameters: [1x1 rl.option.OptimizerParameters]
    
    

    점 표기법을 사용하여 GradientThreshold10으로 변경합니다.

    myActorOpts.GradientThreshold = 10;

    AC agent option 객체를 만들고 이 객체의 ActorOptimizerOptions 속성을 myActorOpts로 설정합니다.

    myAgentOpt = rlACAgentOptions( ...
        ActorOptimizerOptions=myActorOpts);

    이제 AC 에이전트를 만들 때 myAgentOptrlACAgent에 대한 마지막 입력 인수로 사용할 수 있습니다.

    버전 내역

    R2022a에 개발됨