Main Content

강화 학습 에이전트 훈련시키기

환경 및 강화 학습 에이전트를 만들었으면 train 함수를 사용하여 환경에서 에이전트를 훈련시킬 수 있습니다. 훈련을 구성하려면 rlTrainingOptions 객체를 사용하십시오. 예를 들어 환경 env에서 훈련 옵션 세트 opt와 훈련 에이전트 agent를 만듭니다.

opt = rlTrainingOptions(...
    MaxEpisodes=1000,...
    MaxStepsPerEpisode=1000,...
    StopTrainingCriteria="AverageReward",...
    StopTrainingValue=480);
trainResults = train(agent,env,opt);

env가 다중 에이전트 환경이라면 에이전트 인수를 배열로 지정합니다. 배열에서 에이전트의 순서는 env 생성에 사용된 에이전트 순서와 일치해야 합니다. 다중 에이전트 훈련의 경우 rlTrainingOptions 대신 rlMultiAgentTrainingOptions를 사용하십시오. rlMultiAgentTrainingOptions를 사용하면 다중 에이전트 훈련에 맞는 훈련 옵션에 액세스할 수 있습니다. 다중 에이전트 훈련에 대한 자세한 내용은 다중 에이전트 훈련 항목을 참조하십시오.

에이전트를 만드는 방법에 대한 자세한 내용은 강화 학습 에이전트 항목을 참조하십시오. 환경을 만드는 방법에 대한 자세한 내용은 Reinforcement Learning Environments 항목과 Create Custom Simulink Environments 항목을 참조하십시오.

참고

train은 훈련이 진행됨에 따라 에이전트를 업데이트합니다. 이는 에이전트가 핸들 객체이기 때문에 가능한 것입니다. 나중에 사용할 수 있도록 원래 에이전트 파라미터를 유지하려면 에이전트를 다음과 같이 MAT 파일에 저장합니다.

save("initialAgent.mat","agent")
에이전트를 새 변수에 복사하면 새 변수도 항상 업데이트된 파라미터를 가진 가장 최근의 에이전트 버전을 가리킵니다. 핸들 객체에 대한 자세한 내용은 핸들 객체 동작 항목을 참조하십시오.

rlTrainingOptions 객체의 StopTrainingCriteriaStopTrainingValue 옵션에 지정한 조건이 충족되면 훈련이 자동으로 종료됩니다. 종료 조건에 이르기 전에 훈련을 종료하려면 강화 학습 훈련 모니터에서 훈련 중지를 클릭하면 됩니다.

훈련이 종료되면 훈련 통계량과 결과가 trainResults 객체에 저장됩니다.

각 에피소드가 끝날 때마다 train이 에이전트를 업데이트하고 trainResults는 마지막 훈련 결과를 관련 데이터와 함께 저장합니다. 따라서 원하는 훈련 시나리오를 정확하게 재현하여 강화 학습 훈련 모니터를 업데이트할 수 있으며 나중에 훈련이 중지된 바로 그 지점에서 훈련을 재개할 수 있습니다. 이렇게 하려면 명령줄에 다음을 입력하십시오.

trainResults = train(agent,env,trainResults);
그러면 이전 train 호출에서 얻은 훈련 결과 객체와 에이전트 파라미터의 마지막 값에서 훈련이 시작됩니다.

trainResultsTrainingOptions 속성에는 훈련 옵션 집합을 지정하는 rlTrainingOptions 객체가 포함되어 있습니다. 따라서 업데이트된 훈련 옵션을 사용하여 훈련을 다시 시작하려면 먼저 trainResults에서 점 표기법을 사용하여 훈련 옵션을 변경하십시오. 이전 훈련 세션에서 이미 최대 에피소드 수에 이른 경우 최대 에피소드 수를 늘려야 합니다.

예를 들어 강화 학습 훈련 모니터에서 훈련 진행 상황을 표시하는 것을 비활성화하고, 명령줄에서 훈련 진행 상황을 표시하도록 Verbose 옵션을 활성화하고, 최대 에피소드 수를 2000개로 변경한 다음, 훈련을 다시 시작합니다. 그러면 새 trainResults 객체가 출력값으로 반환됩니다.

trainResults.TrainingOptions.MaxEpisodes = 2000;
trainResults.TrainingOptions.Plots = "none";
trainResults.TrainingOptions.Verbose = 1;
trainResultsNew = train(agent,env,trainResults);

참고

훈련이 종료되면 agent는 최종 훈련 에피소드가 끝날 때의 각 에이전트 상태를 반영합니다. 연속 탐색이므로, 최종 에이전트가 획득한 보상이 반드시 훈련 중에 달성한 최고치가 아닐 수 있습니다. 훈련 중에 에이전트를 저장하려면, SaveAgentCriteriaSaveAgentValue 속성을 지정하여 rlTrainingOptions 객체를 만들고 이를 traintrainOpts 인수로 전달하십시오. 에이전트를 평가하는 방법에 대한 자세한 내용은 훈련 중 에이전트 평가하기 항목을 참조하십시오.

훈련 알고리즘

대개 훈련은 다음 단계에 따라 진행됩니다.

  1. 에이전트를 초기화합니다.

  2. 각 에피소드에 대해 다음을 수행합니다.

    1. 환경을 재설정합니다.

    2. 환경에서 초기 관측값 s0을 가져옵니다.

    3. 초기 행동 a0 = μ(s0)을 계산합니다. 여기서 μ(s)는 현재 정책입니다.

    4. 현재 행동을 초기 행동으로 설정하고(a←a0), 현재 관측값을 초기 관측값으로 설정합니다(s←s0).

    5. 에피소드가 완료되거나 종료되지 않는 동안 다음 단계를 수행합니다.

      1. 행동 a를 환경에 적용하고, 다음 관측값 s'' 및 보상 r을 구합니다.

      2. 환경 세트(s,a,r,s')에서 학습합니다.

      3. 다음 행동 a' = μ(s')을 계산합니다.

      4. 다음 행동으로 현재 행동을 업데이트하고(a←a'), 다음 관측값으로 현재 관측값을 업데이트합니다(s←s').

      5. 환경에 정의된 종료 조건이 충족되면 에피소드를 종료합니다.

  3. 훈련 종료 조건이 충족되면 훈련을 종료합니다. 그렇지 않으면 다음 에피소드를 시작합니다.

이러한 단계의 세부 수행 방식은 에이전트와 환경의 구성에 따라 다릅니다. 예를 들어 각 에피소드 시작 시 환경을 재설정하는 경우 환경에서 초기 상태 값이 무작위로 할당되도록 구성할 수 있습니다. 에이전트 및 훈련 알고리즘에 대한 자세한 내용은 강화 학습 에이전트 항목을 참조하십시오. 병렬 처리와 GPU를 사용하여 훈련 속도를 높이려면 Train Agents Using Parallel Computing and GPUs 항목을 참조하십시오.

강화 학습 훈련 모니터

기본적으로 train 함수를 호출하면 강화 학습 훈련 모니터가 열리고, 여기서 훈련 진행 상황을 시각화할 수 있습니다.

Reinforcement Learning Training Monitor window showing the completion of the training for a DQN agent on the predefined pendulum environment.

강화 학습 훈련 모니터는 각 에피소드에 대한 보상(EpisodeReward)과 이동 평균 보상 값(AverageReward)을 플롯에 표시합니다.

크리틱을 사용하는 에이전트의 경우, 환경의 초기 관측값이 주어지면 에피소드 Q0은 각 에피소드가 시작할 시점에 추정한 감가 장기 보상입니다. 크리틱이 잘 설계되어 성공적으로 학습이 이루어지면, 훈련이 진행됨에 따라 에피소드 Q0은 평균적으로 실제 감가 장기 보상에 근접하게 되며, 이는 감가 때문에 EpisodeReward 값에서 오프셋된 값일 수 있습니다. 잘 설계된 크리틱이 감가되지 않은 보상(DiscountFactor1임)을 사용하는 경우에는 위 Figure에 표시된 것처럼 에피소드 Q0이 평균적으로 실제 에피소드 보상에 근접하게 됩니다.

강화 학습 훈련 모니터에는 여러 에피소드와 훈련 통계량도 표시됩니다. train 함수를 사용하여 에피소드와 훈련 정보를 반환할 수도 있습니다. 강화 학습 훈련 모니터에 훈련 정보가 표시되지 않도록 하려면 rlTrainingOptionsPlots 옵션을 "none"으로 설정하십시오.

후보 에이전트 저장하기

훈련 중에, rlTrainingOptions 객체의 SaveAgentCriteriaSaveAgentValue 옵션에 지정한 조건을 충족하는 후보 에이전트를 저장할 수 있습니다. 예를 들어 훈련 종료에 대한 전반적인 조건을 아직 충족하지 못하더라도 에피소드 보상이 특정 값을 초과하는 에이전트를 저장할 수 있습니다. 예를 들어 다음과 같이 에피소드 보상이 100보다 크면 에이전트를 저장할 수 있습니다.

opt = rlTrainingOptions(SaveAgentCriteria="EpisodeReward",SaveAgentValue=100);

train은 저장된 에이전트를 rlTrainingOptionsSaveAgentDirectory 옵션을 사용하여 지정한 폴더의 MAT 파일에 저장합니다. 저장된 에이전트는 장시간 실행되는 훈련 과정에서 생성된 후보 에이전트를 테스트하는 경우 등에 유용할 수 있습니다. 저장 기준 및 저장 위치에 대한 자세한 내용은 rlTrainingOptions 항목을 참조하십시오.

훈련이 완료되면 save 함수를 사용하여 MATLAB® 작업 공간에서 훈련된 최종 에이전트를 저장할 수 있습니다. 예를 들어 다음과 같이 에이전트 myAgent를 현재 작업 디렉터리의 파일 finalAgent.mat에 저장할 수 있습니다.

save(opt.SaveAgentDirectory + "/finalAgent.mat",'agent')

기본적으로 DDPG 에이전트와 DQN 에이전트가 저장될 때 경험 버퍼 데이터는 저장되지 않습니다. 저장된 에이전트를 추가로 훈련시킬 계획이면 이전 경험 버퍼를 시작점으로 사용하여 훈련을 시작할 수 있습니다. 이 경우 SaveExperienceBufferWithAgent 옵션을 true로 설정합니다. 일부 에이전트(예: 큰 크기의 경험 버퍼와 영상 기반 관측값을 사용하는 에이전트)의 경우 경험 버퍼를 저장하는 데 많은 메모리가 필요합니다. 이러한 경우에는 저장된 에이전트에 충분한 메모리를 사용할 수 있어야 합니다.

훈련된 정책 검증하기

훈련된 에이전트를 검증하기 위해 sim 함수를 사용하여 훈련 환경 내에서 에이전트를 시뮬레이션할 수 있습니다. 시뮬레이션을 구성하려면 rlSimulationOptions 객체를 사용하십시오.

에이전트 검증 시 에이전트가 다음을 어떻게 처리하는지 확인하는 것이 좋습니다.

Parallel Computing Toolbox™가 있는 경우, 병렬 훈련에서와 마찬가지로 멀티코어 컴퓨터에서 다중 병렬 시뮬레이션을 실행할 수 있습니다. MATLAB Parallel Server™가 있는 경우 컴퓨터 클러스터 또는 클라우드 리소스에서 다중 병렬 시뮬레이션을 실행할 수 있습니다. 병렬 연산을 사용하도록 시뮬레이션을 구성하는 방법에 대한 자세한 내용은 rlSimulationOptionsUseParallelParallelizationOptions 항목을 참조하십시오.

훈련 중 메모리 문제 해결하기

일부 Simulink® 환경에서는 실행 시 상당한 양의 데이터가 저장됩니다. 특히, sim (Simulink) 명령의 출력값으로 나오는 모든 내용이 기본적으로 저장됩니다. 이로 인해 이러한 종류의 환경에서 에이전트를 훈련시키거나 시뮬레이션할 때 메모리 부족 문제가 발생할 수 있습니다. 3가지 훈련(또는 시뮬레이션) 옵션을 사용하여 메모리 관련 문제를 방지할 수 있습니다.

  • SimulationStorageType — 이 옵션은 Simulink 환경에서 훈련하거나 시뮬레이션할 때 생성되는 데이터에 사용할 저장공간 유형을 지정합니다. 디폴트 값은 "memory"로, 데이터가 메모리에 저장됨을 나타냅니다. 환경 데이터를 디스크에 저장하려면 이 옵션을 "file"로 설정하십시오. 이 옵션을 "none"으로 설정하면 환경 데이터가 저장되지 않습니다.

  • SaveSimulationDirectorySimulationStorageType"file"로 설정된 경우 이 옵션은 환경 데이터를 저장할 디렉터리를 지정합니다. 디폴트 값은 "savedSims"입니다.

  • SaveFileVersion — 이 옵션은 환경 데이터에 대한 MAT 파일 버전을 지정합니다. 디폴트 값은 "-v7"입니다. 다른 가능한 옵션은 "-v7.3""-v6"입니다.

자세한 내용은 rlTrainingOptions, rlMultiAgentTrainingOptions, rlEvolutionStrategyTrainingOptionsrlSimulationOptions 항목을 참조하십시오.

환경 시각화

훈련 환경에서 plot 메서드를 구현한 경우 훈련과 시뮬레이션 중에 환경 동작을 시각화할 수 있습니다. 훈련 또는 시뮬레이션 전에 plot(env)(여기서 env는 환경 객체임)를 호출하면, 훈련 중에 시각화가 업데이트되므로 각 에피소드 또는 시뮬레이션의 진행 상황을 시각화할 수 있습니다.

병렬 연산을 사용하여 에이전트를 훈련시키거나 시뮬레이션할 경우 환경 시각화는 지원되지 않습니다.

사용자 지정 환경에서는 사용자가 직접 plot 메서드를 구현해야 합니다. plot 함수를 사용하여 사용자 지정 환경을 만드는 방법에 대한 자세한 내용은 클래스 템플릿에서 사용자 지정 환경 만들기 항목을 참조하십시오.

훈련 중 에이전트 평가하기

훈련 중에 규칙적인 간격으로 에이전트를 자동으로 평가할 수 있습니다. 그렇게 하면 실제 훈련 진행 상황을 관찰하다가 사전 지정된 조건이 충족되었을 때 자동으로 훈련을 중지하거나 에이전트를 저장할 수 있습니다.

에이전트에 대한 평가 옵션을 구성하려면 먼저 rlEvaluator를 사용하여 evaluator 객체를 만드십시오. 평가 통계량의 유형이나 평가 에피소드의 발생 빈도, 평가 에피소드 동안 탐색을 허용할지 등의 속성을 지정할 수 있습니다.

에이전트를 훈련시키고 훈련 중에 평가하려면 이 객체를 train에 전달하십시오.

또한 사용자 지정 evaluator 객체를 만들어서 사용자가 제공하는 사용자 지정 평가 함수를 사용할 수도 있습니다. 그렇게 하려면 rlCustomEvaluator를 사용하십시오.

자세한 내용은 trainEvaluationStatistic 항목도 참조하십시오.

오프라인 훈련

환경 대신 기존 데이터셋을 사용하여 오프-폴리시 에이전트(DQN, SAC, DDPG, TD3)를 오프라인으로 훈련시킬 수 있습니다.

기존 데이터셋에서 에이전트를 훈련시키려면 먼저 rlTrainingFromDataOptions를 사용하여 data option 객체에서 훈련을 만드십시오. 그런 다음 (환경 및 에이전트와 함께) 이 option 객체를 trainFromData에 전달하여 에이전트를 훈련시키십시오.

데이터셋의 확률 분포와 환경에서 생성된 확률 분포 사이에 발생할 수 있는 차이를 처리하려면, 오프-폴리시 에이전트에 대해 제공되는 배치 데이터 정규화 옵션을 사용하십시오. 자세한 내용을 보려면 오프-폴리시 agent options 객체의 새 BatchDataRegularizerOptions 속성뿐 아니라 새 rlBehaviorCloningRegularizerOptionsrlConservativeQLearningOptions 객체도 참조하십시오.

진화 전략 사용하기

진화 알고리즘을 사용하여 DDPG, TD3 및 SAC 에이전트를 훈련시킬 수 있습니다.

진화적 강화 학습 적응 전략에서는 생물학적 진화에서 영감을 받은 선택 과정을 사용하여 에이전트의 가중치를 업데이트합니다. 진화 알고리즘은 기울기 기반의 접근 방식보다 역전파에 대한 의존도가 낮고 병렬화가 수월하며 국소 최솟값에 대한 민감도가 줄어듭니다. 또한 이 알고리즘은 대체로 양호한(국소적이지 않은) 탐색 능력과 강인성을 보여주며, 특히 데이터가 불완전하거나 잡음이 있거나 보상이 희소하거나 상충하는 복잡한 시나리오에서 더욱 그러합니다.

진화 알고리즘을 사용하여 에이전트를 훈련시키려면 먼저 rlEvolutionStrategyTrainingOptions를 사용하여 evolution strategy training option 객체를 만드십시오. 그런 다음 (환경 및 에이전트와 함께) 이 option 객체를 trainWithEvolutionStrategy에 전달하여 에이전트를 훈련시키십시오.

예제는 Train Biped Robot to Walk Using Evolution Strategy-Reinforcement Learning Agents 항목을 참조하십시오.

다중 에이전트 훈련

동일한 환경에서 함께 동작하는 여러 개의 에이전트를 만들고 훈련시킬 수 있습니다. 이렇게 하려면 먼저 다중 에이전트 환경을 만드십시오.

MATLAB 함수를 사용하여 두 종류의 사용자 지정 다중 에이전트 환경을 만들 수 있습니다.

  • 공통의 샘플 시간을 사용하는 다중 에이전트 환경(모든 에이전트가 동일한 스텝에서 실행됨). 이러한 환경을 만들 때 사용자가 자체적인 reset 함수와 step 함수뿐 아니라 관측값 사양과 행동 사양까지rlMultiAgentFunctionEnv에 제공할 수 있습니다.

  • 순서 기반 함수 환경(에이전트가 차례로 실행됨). 이 환경에서는 한 번에 하나의 에이전트 그룹에만 실행이 할당되며, 해당 그룹은 자신의 순서가 되면 실행됩니다. 이러한 환경을 만들 때 사용자가 자체적인 reset 함수와 step 함수뿐 아니라 관측값 사양과 행동 사양까지 rlTurnBasedFunctionEnv에 제공할 수 있습니다. 예제는 Train Agent to Play Turn-Based Game 항목을 참조하십시오.

이 두 종류의 다중 에이전트 환경에서 관측값 사양과 행동 사양은 사양 객체로 구성된 셀형 배열이며 각 요소가 하나의 에이전트에 해당합니다.

또한 사용자 지정된 다중 에이전트 Simulink 환경을 만들 수도 있습니다. 이 방식을 선택하면 다중 속도로 실행되는 환경을 모델링할 수 있으며 각 에이전트가 자체 실행 속도를 가질 수 있습니다.

사용자 지정된 다중 에이전트 Simulink를 만들려면, 먼저 각 에이전트마다 하나의 행동 입력값과 한 세트의 출력값(관측값, 보상, is-done)을 갖는 Simulink 모델을 만드십시오. 그런 다음 각 에이전트에 대해 에이전트 블록을 수동으로 추가하십시오. 블록을 연결한 후 rlSimulinkEnv를 사용하여 환경 객체를 만드십시오. 각 에이전트 블록이 MATLAB 작업 공간에 있는 agent 객체를 아직 참조하고 있지 않다면, 관측값 행동 사양 객체가 포함된 두 셀형 배열을 rlSimulinkEnv에 입력 인수로 각각 제공해야 합니다. 예제는 여러 개의 에이전트가 협업해서 작업을 수행하도록 훈련시키기 항목을 참조하십시오.

다중 에이전트 환경을 만든 후에는 rlMultiAgentTrainingOptions 객체를 만들고 구성하여 다중 에이전트 훈련을 위한 옵션을 지정하십시오. 그러면 서로 다른 그룹의 에이전트에 대한 훈련 방식을 분산식으로 할지, 중앙 집중식으로 할지 지정할 수 있습니다. 분산식 훈련을 받는 에이전트 그룹의 각 에이전트는 자신만의 경험 세트를 수집하고 그 경험 세트로부터 학습합니다. 중앙 집중식 훈련을 받는 에이전트 그룹의 각 에이전트는 자신의 경험을 해당 그룹의 다른 에이전트와 공유하고 해당 그룹의 각 에이전트는 집단적 공유 경험으로부터 학습합니다. 일반적으로, 중앙 집중식 학습은 에이전트가 협업 작업이나 동일한 작업을 수행하는 응용 분야에서 탐색을 강화하고 학습을 촉진합니다.

다중 에이전트 환경과 다중 에이전트 훈련 옵션 객체가 준비되었으면 trainsim을 해당 옵션 객체와 함께 사용하여 에이전트를 훈련시키고 시뮬레이션할 수 있습니다. 강화 학습 훈련 관리자를 사용하여 모든 에이전트의 훈련 진행 상황을 시각화할 수 있습니다.

다중 에이전트 훈련에 대한 추가 예제를 보려면 Train Multiple Agents for Area CoverageTrain Multiple Agents for Path Following Control 항목도 참조하십시오.

훈련이 수렴되지 않는 이유는 무엇인가요?

일반적으로 환경과 알고리즘, 함수 근사기에 대한 많은 가정을 충분히 검증하지 않는 한, 강화 학습 알고리즘은 심지어 국소 최적값 근처까지라도 수렴이 가능하다고 보장할 수 없습니다. 보통 이러한 가정에는 환경의 상태가 얼마나 제공되는지, 유한한 상태 공간과 행동 공간이 주어지는지, 알려진 동특성이 있는지, 테이블 형식 함수 근사나 선형 함수 근사가 사용되는지, 적합한 (그리고 감쇠하는) 탐색률과 학습률을 적용하는지 등이 포함됩니다.

실제 상황에서 훈련이 만족스러운 해로 수렴하지 못하는 원인은 다양합니다.

  • 탐색을 충분히 수행하지 못함: 에이전트가 다양한 행동과 상태를 적절하게 탐색하지 않으면 최적의 정책을 발견하지 못할 수 있습니다. 탐색이 부족하면 최적이 아닌 결과를 초래하거나 국소 최적해에 고착될 수 있습니다.

  • 상태 공간이나 행동 공간이 고차원임: 상태 공간이나 행동 공간이 크면 에이전트가 효과적으로 탐색하고 학습하는 것이 어려워집니다. 차원의 저주로 인해 합리적인 시간 프레임 내에 최적의 정책을 찾기가 어려울 수 있습니다.

  • 함수 근사의 한계: 함수 근사기가 가치 함수나 정책을 적절하게 근사할 수 있는지, 그리고 동시에 경험으로부터 적절하게 일반화할 수 있는지 고려하는 것이 중요합니다. 그렇지 않으면 수렴 문제가 발생할 수 있습니다. 관측값 신호가 적절하게 선택되지 않았을 경우 불가피하게 근사오차가 발생한다는 점에 유의하십시오. 적합한 관측값 신호를 선택하는 방법에 대한 자세한 내용은 Define Reward and Observation Signals in Custom Environments의 관측값 섹션을 참조하십시오.

  • 관측값 신호나 행동 신호가 적절하게 스케일링되지 않음: 범위가 크게 다른 신호들은 학습 과정을 왜곡하여 근사기가 중요한 특징을 제대로 학습하기 어렵게 만듭니다. 스케일링 문제를 방지하려면 관측값을 일관된 스케일로 정규화하십시오. 일반적인 정규화 기법은 관측값을 [0, 1] 범위로 스케일링하거나, 평균 0과 단위 분산을 갖도록 표준화하는 것입니다.

  • 보상 신호가 잘못 설계됨: 보상 신호는 강화 학습에서 결정적인 역할을 수행합니다. 보상이 적절하게 설계되지 않았거나 원하는 동작이 반영되지 않은 경우 에이전트가 최적의 정책을 학습하는 것이 어려울 수 있습니다. 보상이 일관되지 않거나 희소하면 학습 과정이 불안정해지고 느려질 수 있습니다. 적합한 보상 신호를 선택하는 방법에 대한 자세한 내용은 Define Reward and Observation Signals in Custom Environments의 보상 섹션을 참조하십시오.

  • 훈련 시간이나 리소스가 부족함: 강화 학습 알고리즘이 수렴하려면 종종 많은 훈련 시간과 계산 리소스를 필요로 합니다. 훈련 시간이나 리소스가 제한적이면 알고리즘이 최적의 정책에 수렴할 만큼 충분한 반복을 하지 못할 수 있습니다. 병렬 연산을 사용하여 에이전트를 훈련시키는 방법에 대한 자세한 내용은 Train Agents Using Parallel Computing and GPUs 항목을 참조하십시오.

  • 알고리즘이나 하이퍼파라미터가 부적절함: 부적절한 알고리즘을 선택하거나 잘못된 하이퍼파라미터를 설정하면 수렴에 상당한 영향을 미칠 수 있습니다. 특정 문제 영역마다 적합한 알고리즘과 하이퍼파라미터가 각기 다를 수 있으며, 잘못된 것을 선택하면 수렴을 방해할 수 있습니다. 에이전트 선택에 대한 자세한 내용은 강화 학습 에이전트의 마지막 섹션을 참조하십시오.

  • 환경이 비정상임(Non-stationary): 에이전트가 동작하는 환경이 시간 경과에 따라 변화하는 환경이라면 학습 알고리즘이 이에 적응하는 데 어려움을 겪을 수 있습니다. 비정상(Non-stationary) 환경에서는 추가적인 어려움이 있을 수 있는데, 그것은 알고리즘이 변화를 반영하기 위해 계속해서 정책을 업데이트해야 한다는 점입니다.

위와 같은 수렴 문제를 해결하기 위해 시도할 수 있는 방법으로 탐색(exploration)과 활용(exploitation) 간의 상충 조정, 보상 형성의 개선, 하이퍼파라미터 미세 조정, 경험 재생 사용, 더 개선된 알고리즘 사용 등을 고려할 수 있습니다.

참고

강화 학습의 효과적인 훈련과 수행을 위해서는 적합한 관측값과 행동의 집합을 선택하는 것이 매우 중요합니다. 관측값은 에이전트가 정보 기반의 의사 결정을 내릴 수 있도록 현재 환경 상태에 대한 충분한 정보를 제공해야 하고, 행동은 환경 동작을 적절히 조종할 수 있어야 합니다. 적합한 관측값 신호와 보상 신호를 선택하는 방법에 대한 자세한 내용은 Define Reward and Observation Signals in Custom Environments 항목을 참조하십시오.

참고 항목

함수

객체

관련 예제

세부 정보