• 카테고리

    질문 & 답변
  • 세부 분야

    딥러닝 · 머신러닝

  • 해결 여부

    미해결

DQN 질문

22.12.06 05:55 작성 조회수 331

0

DQN 기본 개념.png

답변 1

답변을 작성해보세요.

0

안녕하세요 ljp4122님 수강해 주셔서 감사합니다.

변수 w를 사용하는 인공신경망을 통해 행동가치함수를 근사할 수 있고 경사하강법으로 사용해서 참행동가치함수와 근사된 행동가치함수의 차이값을 최소화하는 방향으로 w를 업데이트하다 보면 참행동가치함수와 아주 유사한 인공신경망을 찾을 수 있습니다.

qw는 학습 과정에서 나오는 인공신경망의 결과값입니다. 프로그래머가 qw를 계산해서 수식에 값을 넣어주는 것이 아니라. 프로그래머는 rt + γqt+1 값만 계산해서 인공신경망에 넣어주면 qw는 인공신경망 내에서 알아서 계산됩니다.

cost function 부분에서 앞부분에 있는 r + qt+1이 에이전트가 실행됐을 때 얻을 수 있는 q값이고, qw는 인공신경망에서 계산한 q값입니다. 두 값의 차이를 최소화하는 방향으로 인공신경망을 계속 update하면 결국 참행동가치함수를 표현할 수 있는 인공신경망(정책)을 찾을 수 있습니다.

감사합니다.

ljp4122님의 프로필

ljp4122

질문자

2022.12.07

qt+1을 알 수 있는 값인가요? 우리가 환경에서 얻을 수 있는 값은 at, st+1, rt+1 밖에 없는 거 아닌가요?

인공신경망에서 나오는 출력값 max q가 qt라고 하면 qt+1를 어떻게 구하나요?

다음 상태를 현재의 인공신경망에 다시 넣어서 구하는 건가요?

프로그래머가 비용함수를 업데이트 하기 위한 값 중에 qt+1을 어떻게 구하는지 모르겠습니다.

image

안녕하세요 ljp4122님.

이 부분이 잘 이해가 가지 않으시면, "섹션 2. 강화학습 기본 알고리즘", "섹션 3. 인공지능 개념", "섹션 4. 함수 근사법 부분"을 시간이 좀 걸리시더라도 다시 학습하는 것이 좋습니다. 인공신경망 개념도 어렵고 강화학습 개념도 어렵기 때문에 이해가 잘 안되는 것 같습니다. 저도 처음 강화학습을 공부할 때 ljp4122님과 똑같은 과정을 겪었습니다. 동일한 자료를 20번 넘게 읽어본 경험도 있습니다.

개념이 다소 재귀적일 수 있어서 이해가 안가실 수 있는데, 다시한번 설명드리겠습니다. 그래도 이해가 안가시면 앞에서 말씀드린 것 처럼 강의를 다시 들어보시는 것을 추천드립니다.

qw는 인공신경망을 대표하는 기호입니다. 여기에서 w는 인공신경망의 특성을 나타내는 가중치입니다. 인공신경망 학습의 목적은 인공신경망의 가중치를 알아내는 것입니다. 즉 여기에서 인공신경망은 참행동가치함수를 표현해야하고, 이것을 기호로 qw라고 쓰고 있습니다. 즉 인공신경망을 학습해서 w를 알아내면 참행동가치함수를 알 수 있습니다.

"qt+1을 알 수 있는 값인가요? 우리가 환경에서 얻을 수 있는 값은 at, st+1, rt+1 밖에 없는 거 아닌가요?"

-> qt+1은 인공신경망에 st+1을 입력해서 나온 출력입니다. 당연히 알 수 있는 값입니다.

(이 부분은 코드를 보면 좀 더 쉽게 이해할 수 있습니다.)

"인공신경망에서 나오는 출력값 max q가 qt라고 하면 qt+1를 어떻게 구하나요?"

-> st+1을 인공신경망에 입력해서 출력으로 나오는 값의 max는 at+1(정책은 행동을 선택하는 것입니다. 가장 좋은 정책은 Q값이 가장 큰 행동을 선택하는 것입니다)입니다. qt는 이전 타임스텝(t)에서 이런 방식으로 얻은 인공신경망의 출력 값입니다.

[이 부분이 이해가 가지 않으시면 "TD와 SARDA" 부분을 다시 학습하시면 됩니다.]

"다음 상태를 현재의 인공신경망에 다시 넣어서 구하는 건가요?"

-> 현재상태(st)를 환경(environment)에 입력으로 넣어 얻은 rt+1과 다음상태(st+1)를 인공신경망에 입력해서 얻은 qt+1을 다음과 같은 식으로 계산해서 " rt+1 + 할인률*qt+1" 인공신경망에 넣어 인공신경망 내부적으로 구해지는 qw와 MSE를 최소화되는 방향으로 인공신경망을 학습(가중치변경)합니다.

[이 부분이 이해가 가지 않으시면 프로그램 코드와 "TD와 SARDA" 부분을 다시 학습하시면 됩니다.]

"이렇게 선택된 값이 qw인가 아니면 qt+1인가?"

-> 인공신경망 출력이 qt+1이고, 여기에 max 값을 구한 것이 at+1입니다(정확히 말하면 가장 큰 q 값을 가지고 있는 배열의 인덱스). qw는 코드 상에 직접적으로 나오지 않습니다. 인공신경망 내부적으로 계산되는 값입니다.

"인공신경망에서 출력된 max q값으로 선택한 행동 a에 대한 다음 환경 s'에 대한 인공신경망 값이 q'인가? 그게 아니라면 qw는 머지? 어떻게 구해지는 값이지?"

-> st를 인공신경망에 넣어 출력한 값이 qt입니다. 이에 대한 max 값이 at입니다.

감사합니다.