인공지능/강화학습

matlab 강화학습 onramp 8 - 에이전트 훈련시키기

이게될까 2024. 5. 9. 20:05
728x90
728x90

훈련 중에 에이전트는 환경으로부터 보상을 받고, 이러한 보상은 정책 업데이트에 사용됩니다. 훈련 알고리즘에 따라, 액터와 크리틱의 파라미터가 보상에 대한 응답으로 어떻게 수정되는지가 지정됩니다.

에이전트와 환경을 정의하는 변수가 있으면 이러한 변수를 train 함수에 전달할 수 있습니다.

에이전트와 환경을 정의하는 변수가 있으면 이러한 변수를 train 함수에 전달할 수 있습니다.기본적으로 훈련 진행 상황은 새 창에 표시됩니다. 플롯에는 각 에피소드에서 획득한 보상이 표시됩니다. 일반적으로 사용자는 훈련이 진행될수록 이러한 보상이 증가하기를 바랍니다. 하지만 에이전트의 행동 선택과 에이전트와 환경 간의 상호 작용에 임의성이 존재하기 때문에, 단일 에피소드에서 받는 보상은 변하기 마련입니다. 따라서 진행 상황은 에피소드 수에 대해 평균을 내어 평가됩니다. 빨간 선은 에피소드의 이동 윈도우에서 평균을 낸 보상을 나타냅니다.

기본적으로 훈련 진행 상황은 새 창에 표시됩니다. 플롯에는 각 에피소드에서 획득한 보상이 표시됩니다. 일반적으로 사용자는 훈련이 진행될수록 이러한 보상이 증가하기를 바랍니다. 하지만 에이전트의 행동 선택과 에이전트와 환경 간의 상호 작용에 임의성이 존재하기 때문에, 단일 에피소드에서 받는 보상은 변하기 마련입니다. 따라서 진행 상황은 에피소드 수에 대해 평균을 내어 평가됩니다. 빨간 선은 에피소드의 이동 윈도우에서 평균을 낸 보상을 나타냅니다.에이전트에 크리틱이 포함된 경우 기본적으로 진행 상황 플롯에는 각 에피소드의 보상 값에 대한 크리틱의 예측이 표시됩니다. 이상적으로는 훈련이 진행될 때 크리틱의 예측이 실제 보상과 일치하기 시작해야 합니다. 이는 크리틱이 특정 상태에 있을 때의 가치를 정확히 평가하도록 학습되고 있다는 의미입니다.

에이전트에 크리틱이 포함된 경우 기본적으로 진행 상황 플롯에는 각 에피소드의 보상 값에 대한 크리틱의 예측이 표시됩니다. 이상적으로는 훈련이 진행될 때 크리틱의 예측이 실제 보상과 일치하기 시작해야 합니다. 이는 크리틱이 특정 상태에 있을 때의 가치를 정확히 평가하도록 학습되고 있다는 의미입니다.

훈련 옵션


언제 훈련을 중지해야 할까요? 어떤 성공 기준으로 훈련 과정을 판단하고 싶나요? 다음은 훈련 진행 과정을 제어할 때 일반적으로 설정할 수 있는 옵션입니다.

 

rlTrainingOptions 함수를 사용하여 훈련 제어 옵션에 대한 설정을 포함하는 변수를 만들 수 있습니다. 입력값이 없으면 rlTrainingOptions는 디폴트 옵션을 반환합니다.
opts = rlTrainingOptions
작업
rlTrainingOptions 함수를 사용하여 디폴트 훈련 옵션을 포함하는 opts라는 변수를 만드세요. 세미콜론을 생략하여 결과를 확인할 수 있습니다.

더보기

opts = rlTrainingOptions

 

임의 개수의 입력값 쌍으로 rlTrainingOptions를 호출하여 훈련 옵션 값을 지정할 수 있습니다.
opts = rlTrainingOptions("OptionName",value)

대개 각각의 주사위 게임은 길이가 짧기 때문에, 단일 에피소드의 최대 길이는 낮추고 에피소드의 최대 개수를 높이는 것이 합리적입니다.
작업
rlTrainingOptions 함수를 사용하여 "MaxStepsPerEpisode" 옵션을 20으로, "MaxEpisodes" 옵션을 2000으로 설정하는 diceopts라는 변수를 만드세요.

더보기

diceopts = rlTrainingOptions("MaxStepsPerEpisode",20,"MaxEpisodes",2000)

 


훈련 옵션 변수가 있으면, variable.Property 구문을 사용하여 옵션을 수정할 수 있습니다.
opts.OptionName = optionvalue

임의 변동이 큰 에피소드가 여러 개 있는 경우, 평균값을 계산할 에피소드 수를 늘리는 것이 합리적입니다.
작업
값 100을 갖도록 diceopts의 ScoreAveragingWindowLength 속성을 수정하세요.

더보기

diceopts.ScoreAveragingWindowLength  = 100

 

기본적으로 훈련은 에피소드가 평균적으로 최대 스텝 수(500)를 수행하면 중지됩니다. 공중을 맴도는 드론이나 장애물을 피하는 탐사 차량같이 에이전트가 실패 없이 작업을 계속 수행하도록 하려는 경우 에피소드 길이가 좋은 성공 기준이 됩니다. 하지만 주사위 게임에서는 에피소드 길이가 짧을수록 더 좋기 때문에, 보상을 중지 조건으로 사용하는 것이 더 합리적입니다.
작업
diceopts의 StopTrainingCriteria 속성은 값 "AverageReward"를 갖고, StopTrainingCriteria 속성은 값 -3을 갖도록 수정하세요.

더보기

diceopts.StopTrainingCriteria = "AverageReward";
diceopts.StopTrainingValue = -3

 

주석 처리된 명령에는 훈련 옵션 변수를 추가 인수로 train 함수에 전달할 수 있는 방법이 나와 있습니다. 해당 라인의 주석을 해제하여 에이전트를 훈련시킬 수 있습니다. 하지만 이 작업은 몇 분이 걸릴 수 있습니다. 훈련을 조기에 끝내려면 항상 훈련 중지 버튼을 사용하면 됩니다.

운 좋게도 훈련되지 않은 에이전트가 높은 에피소드 점수를 받을 수도 있습니다. 훈련 초기에 이런 상황이 발생하는 경우, 평균 보상 임계값에 도달했기 때문에 훈련이 즉시 중지될 수 있습니다. 이 경우 훈련을 다시 실행할 수 있습니다.

다음 명령을 추가하여
trainedcritic = getCritic(agent);
visualizeQ(trainedcritic)
훈련된 에이전트의 Q 테이블을 시각화할 수 있습니다. 또한 다음 명령을 사용하여
[n,win] = playdice(agent,slEnv)
훈련된 에이전트로 게임을 시뮬레이션할 수 있습니다.

 

처음에는 가치를 잘 모른다.

게임을 진행하면 피드백을 통해 가치를 잘 알 수 있다.

경사 하강법을 통해 파라미터를 업데이트한다.

처음부터 가치를 알 수 없다. 한번 진행해야 알 수 있다.

끝까지 해보지 않고는 평가할 수 없다.

현재 전략을 얼마나 오래 사용해야 할까?

 

다양한 rl*Agent 함수를 사용하여 여러 종류의 에이전트를 만들 수 있습니다. 이러한 각 함수에는 대응되는 rl*AgentOptions 함수가 있으며, 이를 사용해 에이전트의 학습 방법을 제어할 수 있습니다.

모든 에이전트에 대해 감가 인자와 샘플 시간을 설정할 수 있습니다.

감가 인자는 개별 시간 스텝에서의 보상에 어떻게 가중치를 적용할지를 결정합니다. 이를 통해 에이전트의 시야를 좁게 또는 넓게 만들 수 있습니다.

샘플 시간은 에이전트와 환경 간의 상호 작용 빈도를 결정합니다. Simulink 모델은 환경의 내부 상태를 업데이트할 시간 스텝을 선택하여, 시간 경과에 따른 환경의 동특성을 시뮬레이션합니다. 이는 에이전트의 샘플 시간과는 관계가 없습니다. 에이전트는 환경의 내부 동특성과 관계없이 관측값을 받고 SampleTime의 증분에 따라 한 번씩 행동을 취합니다.

모든 에이전트에 대해 감가 인자와 샘플 시간을 설정할 수 있습니다.

감가 인자는 개별 시간 스텝에서의 보상에 어떻게 가중치를 적용할지를 결정합니다. 이를 통해 에이전트의 시야를 좁게 또는 넓게 만들 수 있습니다.

샘플 시간은 에이전트와 환경 간의 상호 작용 빈도를 결정합니다. Simulink 모델은 환경의 내부 상태를 업데이트할 시간 스텝을 선택하여, 시간 경과에 따른 환경의 동특성을 시뮬레이션합니다. 이는 에이전트의 샘플 시간과는 관계가 없습니다. 에이전트는 환경의 내부 동특성과 관계없이 관측값을 받고 SampleTime의 증분에 따라 한 번씩 행동을 취합니다.각 에이전트는 또한 특정 옵션을 가집니다. 일반적으로 이러한 옵션은 다음과 같은 에이전트의 작동 방법을 제어합니다
정책에 따라 또는 무작위로 행동을 취함으로써 에이전트가 가능한 상태 및 행동의 공간을 탐색하는 방법
이전 경험을 저장하고 사용하여 학습하는 방법
액터-크리틱 에이전트가 크리틱을 업데이트해야 하는 빈도와 같은 정책 업데이트 방법

각 에이전트 유형별 옵션에 대한 세부 정보는 도움말 문서를 확인해 보세요.

훈련 중에 에이전트의 액터와 크리틱의 업데이트 방법을 제어하는 옵션도 지정할 수 있습니다.

특히, 새 경험에 대한 응답으로 파라미터를 얼마나 과감하게 변경할지 결정하는 학습률(LearnRate 옵션)을 조정해야 할 수 있습니다.

일반적으로 훈련에서는 일종의 경사하강법을 사용하여 파라미터를 조정합니다. 따라서 파라미터가 변경되는 정도는 학습률 및 경사 크기 모두와 관련이 있습니다. 업데이트 크기를 제한하려면 GradientThreshold 옵션을 사용하여 경사 크기에 상한을 설정하면 됩니다.

경사하강법 알고리즘은 궁극적으로 최적화 알고리즘입니다(이 사례에서는 액터 또는 크리틱의 원하는 출력값의 오류를 최소화함). 따라서 옵션은 에이전트 옵션의 ActorOptimizerOptions 속성과 CriticOptimizerOptions 속성에 저장되어 있습니다.

rlOptimizerOptions 함수를 사용하여 액터와 크리틱에 대한 설정을 유지할 변수를 만들 수 있습니다. 이러한 변수를 에이전트의 ActorOptimizerOptions 속성과 CriticOptimizerOptions 속성의 값으로 사용하세요.

 

임의 개수의 입력값 쌍으로 rlOptimizerOptions 함수를 호출하여 액터 또는 크리틱에 대한 옵션을 지정할 수 있습니다.
opts = rlOptimizerOptions( "OptionName",optionvalue)

훈련이 합리적인 정책으로 수렴하지 않는 것처럼 보이면, 학습률을 낮추거나 경사 크기를 제한하여 파라미터를 다소 소극적으로 업데이트해 볼 수 있습니다.
작업
rlOptimizerOptions 함수를 사용하여 "LearnRate" 옵션을 0.001로, "GradientThreshold" 옵션을 1로 설정하는 criticopts라는 변수를 만드세요.

더보기

criticopts = rlOptimizerOptions("LearnRate", 0.001,"GradientThreshold",1)

 

미래 보상에 대한 가중치 적용

크리틱이 제공하는 가치는 현재 시점부터 에피소드의 나머지 부분까지의 총 보상이 누적된 것입니다. 하지만 일반적으로 행동이 환경의 미래 상태에 미치는 영향은 시간이 갈수록 줄어듭니다. 예를 들어 로봇에 힘을 가하면 로봇의 상태가 즉시 변합니다. 그러면 그 상태는 이후 상태에 단기적으로 영향을 미칩니다. 결과적으로 그러한 단기적 영향이 에이전트의 장기적인 성공이나 실패에 영향을 미칩니다. 하지만 미래 행동 또한 장기 동작에 영향을 미치며, 그 영향은 현재 행동보다 더 직접적입니다.

그러므로 미래 보상은 일반적으로 감가됩니다. 즉, 미래 상태일수록 그 보상은 더 낮아진 값으로 현재 상태의 가치에 산입됩니다. 따라서 크리틱이 제공하는 가치는 감가된 총 누적 보상입니다. 즉, 현재 가치 = 즉각적인 보상 + (감가 인자)*(미래 가치)입니다.

감가 인자(대개 γ로 표시됨)는 설정이 가능한 옵션입니다.


감가 인자가 1이면 모든 미래 보상에 동일한 가중치가 적용된다는 의미입니다. 인자가 0이면 즉각적인 보상만 고려됩니다. 0과 1 사이의 값은 미래 보상이 시간 경과에 따라 기하급수적으로 감가된다는 의미입니다. MATLAB에서 에이전트의 디폴트 감가 인자는 0.99입니다.

감쇠인자라고 부르는 것 이네요

 

선택한 에이전트에 대응되는 rl*AgentOptions 함수를 호출하여 에이전트에 대한 옵션을 지정할 수 있습니다. 예를 들어 DQN 에이전트에 대한 옵션을 지정하려면 rlDQNAgentOptions를 사용합니다.

모든 옵션 함수를 사용할 때처럼, 임의 개수의 입력값 쌍을 지정할 수 있습니다.
opts = rlDQNAgentOptions( "OptionName",optionvalue)

주사위 게임의 목표는 가능한 한 스텝 수를 줄이고 목표값에 도달하는 것입니다. 이는 에이전트가 전체 에피소드에서 보상을 고려해야 한다는 의미입니다. 에이전트가 가능한 한 장기적 안목을 갖도록 하려면, 보상 감가 인자를 최댓값(1)으로 설정합니다.
작업
rlDQNAgentOptions 함수를 사용하여, "DiscountFactor" 옵션을 1로 설정하는 agopts라는 변수를 만드세요.

더보기

agopts = rlDQNAgentOptions( "DiscountFactor",1)

 

 

점 표기법을 사용하여 기존 옵션 변수의 속성을 수정할 수 있습니다.
opts = rlOptimizerOptions(...)
opts.Property = value
작업
criticopts에 저장된 옵션을 포함하도록 점 표기법을 사용해 agopts의 CriticOptimizerOptions 속성을 수정하세요.

더보기
agopts.CriticOptimizerOptions = criticopts
 

 

무작위 탐색



훈련하는 동안 Q-러닝 에이전트는 ε-그리디 정책을 따릅니다. 즉, 0과 1 사이의 난수를 생성하고 난수가 ε보다 크면 가장 큰 가치를 가진 행동을 취합니다. 그렇지 않으면 임의로 행동을 선택합니다.

파라미터 ε은 에이전트가 임의 행동을 취하는 횟수의 비율입니다. 이 파라미터에 따라 에이전트가 탐색하는 규모가 결정됩니다. ε = 1이면, 에이전트는 항상 무작위로 탐색합니다. ε = 0이면, 에이전트는 항상 가장 높은 가치를 가진 정책을 따르며 전혀 탐색하지 않습니다.

주로 훈련을 시작할 때는 탐색을 늘렸다가, 에이전트가 Q 값 함수의 추정값을 만들기 시작하면 탐색을 줄이기를 원합니다. 이를 위한 일반적인 접근 방식은 높은 값의 ε으로 시작한 다음, 각 훈련 에피소드가 끝나면 그 값을 줄이는 것입니다. 이때 에이전트가 많은 훈련 에피소드를 마쳤더라도 탐색을 계속하도록 하기 위해 대개 어느 정도의 최소 임계값을 사용합니다.

ε의 초기값, 값이 줄어드는 비율과 최솟값은 모두 Q-러닝 에이전트의 훈련 방식을 제어하는 파라미터입니다.

 

감가 인자 같은 일부 옵션은 값일 뿐입니다. 다른 옵션은 여러 속성을 가진 변수입니다. variable.Property 구문을 사용하여 이러한 옵션의 속성에 액세스하고 수정할 수 있습니다.
opts.OptionName.Property = value
작업
agopts의 EpsilonGreedyExploration 옵션에서 EpsilonDecay 속성을 값 0.001을 갖도록 수정하세요.

더보기

agopts.EpsilonGreedyExploration.EpsilonDecay  = 0.001

 

모든 rl*Agent 함수는 대응되는 rl*AgentOptions 함수를 생성한 옵션 변수를 받습니다.

opts = rlDQNAgentOptions(...)
agent = rlDQNAgent(...,opts)


작업
agopts에 저장된 옵션과 함께 rlDQNAgent 함수를 사용하여 agent라는 에이전트를 만드세요. 관측값과 행동 정보는 각각 변수 obsInfo와 actInfo에 저장되어 있습니다.

더보기

agent = rlDQNAgent(obsInfo,actInfo,agopts)

 

주석 처리된 부분의 명령에 따라 특정 훈련 옵션 세트로 에이전트가 훈련됩니다. 해당 라인의 주석을 해제하여 에이전트를 훈련시킬 수 있습니다. 하지만 이 작업은 몇 분이 걸릴 수 있습니다. 또한 오른쪽 위 코너에 있는 도움말 메뉴에서 교육과정 파일을 다운로드할 수 있습니다.

또는 명령 load trainedagent를 사용하여 파일에서 이전에 훈련된 에이전트를 불러올 수 있습니다.

어느 방법이든, 다음 명령을 사용하여
visualizeQ(agent)
훈련된 에이전트의 Q 테이블을 시각화할 수 있습니다. 또한 다음 명령을 사용하여
[n,win] = playdice(agent,slEnv)
훈련된 에이전트로 게임을 시뮬레이션할 수 있습니다.

 

창고 로봇 에이전트 훈련시키기

지금까지,
창고 로봇을 목표까지 안내하도록 설계된 보상 함수와 함께 창고 로봇에 대한 환경을 정의하고,
디폴트 액터 신경망과 디폴트 크리틱 신경망으로 DDPG 에이전트를 만들었습니다.


하지만 디폴트 옵션으로 훈련시킬 경우 좋은 결과를 내지 못합니다.

옵션 조정 없이 훈련이 제대로 작동하는 경우는 극히 드뭅니다. 이 활동에서는 로봇 에이전트를 효과적으로 훈련시킬 수 있는 옵션 중 일부를 설정합니다.

 

디폴트 옵션으로 창고 로봇을 훈련시키면, 에피소드 보상이 무작위로 급변할 수 있습니다. 로봇은 유용한 어떤 내용도 학습하지 않습니다. 이는 훈련 알고리즘이 에이전트를 업데이트하는 방법에 있어서 너무 적극적이라는 것을 의미할 수 있습니다. 이 문제를 해결하는 일반적인 방법은 학습률을 낮추거나 경사 크기를 제한하는 것입니다.
작업
rlOptimizerOptions 함수를 사용하여 "LearnRate" 옵션을 5e-5로, "GradientThreshold" 옵션을 10으로 설정하는 learnopts라는 변수를 만드세요

더보기

learnopts = rlOptimizerOptions ("LearnRate",5e-5,"GradientThreshold",10)

 

에이전트는 환경의 상태를 관측하고 고정된 속도로 행동을 취합니다. 창고에서 길을 찾아가는 로봇의 경우 얼마나 빠르게 측정을 수행하고 모터를 작동시킬 수 있는지(또는 그래야 하는지)에 대한 하드웨어 제한이 있습니다. 에이전트의 관측과 행동의 빈도는 "SampleTime" 옵션으로 설정됩니다. 이 옵션은 에이전트를 훈련시키기 전에 반드시 설정해야 한다는 점에 유의하세요. 이 활동에서 설정하는 그 밖의 옵션은 훈련 성능에 대한 응답으로 조정됩니다.

액터 신경망과 크리틱 신경망은 확률적 경사하강법을 사용하여 업데이트됩니다. 즉, 경사(신경망 가중치를 업데이트할 방향)는 경험의 임의 표본으로부터 추정됩니다. 표본 크기가 커지면 더 정확한 추정값을 제공할 수 있습니다. "ExperienceBufferLength" 옵션을 사용하여, 저장할 총 에피소드 스텝 수를 설정할 수 있습니다. 경사 추정을 위해 버퍼에서 가져올 임의 표본 수가 "MiniBatchSize" 옵션입니다.
작업
rlDDPGAgentOptions 함수를 사용하여 "SampleTime"을 0.25로, "ExperienceBufferLength"를 1e6(100만)으로, "MiniBatchSize"를 128로 설정하는 agentopts라는 변수를 만드세요.

더보기

agentopts = rlDDPGAgentOptions ("SampleTime",0.25,"ExperienceBufferLength",1e6,"MiniBatchSize",128)

 

액터와 크리틱은 동일한 옵션을 공유하거나 서로 다른 옵션을 가질 수 있습니다.
작업
learnopts에 저장된 옵션을 포함하도록 점 표기법을 사용해 agentopts의 ActorOptimizerOptions 속성을 수정하세요. 마찬가지로, learnopts를 포함하도록 CriticOptimizerOptions 속성도 수정하세요.

더보기


agentopts.ActorOptimizerOptions  = learnopts
agentopts.CriticOptimizerOptions   =learnopts

 

opts에 저장된 옵션과 함께 rlDDPGAgent 함수를 사용하여 agent라는 DDPG 에이전트를 만드세요.

관측값과 행동 정보는 각각 변수 obsInfo와 actInfo에 저장되어 있습니다.

더보기

agent = rlDDPGAgent (obsInfo,actInfo,agentopts)

주석 처리된 부분의 명령에 따라 특정 훈련 옵션 세트로 에이전트가 훈련됩니다. 이 에이전트를 훈련시키는 데에는 몇 시간이 걸립니다.

sim 함수를 사용하여 로봇이 임의 가중치에서 어떻게 동작하는지 확인할 수 있습니다. 또는 premadeagents.mat에서 에이전트를 불러올 수 있습니다. 이 파일에는 2000개의 에피소드로 훈련된 partiallytrained라는 에이전트와 훈련 옵션에 주어진 평균 보상 목표를 달성할 때까지 훈련된 fullytrained라는 에이전트가 있습니다.

오른쪽 위 코너에 있는 도움말 메뉴에서 교육과정 파일을 다운로드하여, 이 예제를 직접 시험해 볼 수 있습니다.

 

훈련 개선하기

 

훈련 개선을 위한 전략
강화 학습은 까다로운 작업입니다. 성공적인 훈련을 위해서는 대개 여러 번 반복하면서 옵션과 하이퍼파라미터를 조정해야 합니다. 에이전트가 제대로 학습하지 않는 듯하면 어떤 작업을 시도해 볼 수 있을까요?

훈련 중에 Simulink 모델의 스코프나 다른 시각화 블록 등을 통해 에이전트의 동작을 관측합니다. 그러면 정책의 발전을 확인할 수 있습니다. 예를 들어 창고 로봇은 제자리에서 회전하고, 직진하고, 선반으로 향하고, 중앙으로 나아가는 등의 동작을 수행하는 기간을 거칩니다. 에이전트가 잘못된 정책에 빠져 있나요? 에이전트가 의도치 않은 방식으로 보상을 이용하도록 학습하나요?
훈련에는 시간이 걸립니다. 에이전트는 다른 정책을 시도할 때마다 성능이 더 좋아지거나 나빠지는 시기를 거칠 수 있습니다. 에이전트가 아직 성능이 좋지 못하더라도 더 이상 유용한 내용을 학습하지 않는다는 것이 명백하지 않은 한, 계속 훈련하도록 둡니다. 최대 훈련 에피소드 수에 도달했지만 에이전트가 계속 진전을 보인다면 에피소드 수를 늘립니다.
탐색은 매우 중요합니다. 에이전트가 충분히 탐색하지 않으면 좋지 못한 정책에 안주하게 됩니다. 에이전트가 학습을 중지한 것으로 보이면, 더 나은 탐색을 촉진하기 위해 다른 탐색 옵션을 사용해 봅니다.
근본적으로 에이전트의 학습은 보상 함수에 의해 규정됩니다. 에이전트가 보상의 “허점”을 이용하도록 학습하지는 않는지 확인합니다. 예를 들어 로봇이 음의 보상을 피하기 위해 에피소드를 일찍 종료하려고 선반 쪽으로 움직이지는 않는지 확인합니다. 에이전트를 원하는 상태로 안내하도록 보상 함수를 설계해 봅니다. 희소 보상(예: 작업에 성공했을 때 주어지는 보상)만 사용하는 것은 훈련을 어렵게 만들 수 있습니다. 에이전트가 무작위 탐색을 통해서는 보상을 얻지 못할 수 있기 때문입니다.
학습률이 너무 낮으면 훈련 시간이 길어질 수 있습니다. 하지만 학습률이 너무 높으면 학습이 불안정해질 수 있습니다. 가능한 한 높은 학습률을 사용해 봅니다. 하지만 평균 보상이 개선되지 않으면서 에이전트의 정책이 무작위로 바뀌는 것 같으면 학습률이 지나치게 높은 것일 수 있습니다.
특정 문제에서 다른 에이전트보다 성과가 더 뛰어난 에이전트가 있습니다. 도움말 문서에 에이전트 선택 방법에 대한 안내가 나와 있습니다.
충분한 뉴런이 포함되어 있는 신경망은 매우 복잡한 함수를 표현할 수 있습니다. 하지만 뉴런이 많을수록 파라미터도 많아져서, 더 많은 훈련이 필요하게 됩니다. 처음에는 단순한 신경망부터 시작합니다. 즉, 디폴트 신경망을 사용하거나 비슷한 예제에서 아키텍처를 복사합니다. 하지만 에이전트가 학습이 불가능해 보이면 어떤 작업에서든 신경망의 은닉 뉴런 수를 늘려볼 수 있습니다.

 

MATLAB 작업 공간에서 에이전트 변수와 환경 변수를 가져올 수 있습니다.
앱에서 직접 새 에이전트를 만들 수 있습니다.  호환되는 알고리즘 (Compatible algorithm) 메뉴에는 사용자 환경에 유효한 에이전트 유형만 나열됩니다.
에이전트를 마련한 후, 액터와 크리틱에 대한 옵션을 포함한 기타 옵션을 설정할 수 있습니다. 에이전트에 대한 설정이 만족스러우면  훈련 (Train)을 클릭합니다.
옵션을 설정하고 훈련을 시작할 수 있습니다.
훈련이 완료된 후, 이 훈련된 에이전트로 시뮬레이션하여 동작을 확인할 수 있습니다.
시뮬레이션 결과에 대한 요약을 보거나 개별 시뮬레이션을 자세히 살펴봄으로써 관측값, 행동, 보상을 확인할 수 있습니다.

728x90