Q-learning과 SARSA의 차이점은 무엇입니까?


88

SARSA 는 정책에 따르고 Q 학습 은 정책에서 벗어난 것을 알고 있지만 공식을 보면이 두 알고리즘의 차이점을 확인하기가 어렵습니다.

Reinforcement Learning : An Introduction (by Sutton and Barto) 책에 따르면 . SARSA 알고리즘에서 정책이 주어지면 해당 작업-값 함수 Q (상태 s 및 작업 a, 시간 단계 t에서), 즉 Q (s t , a t )는 다음과 같이 업데이트 될 수 있습니다.

Q (s t , a t ) = Q (s t , a t ) + α * (r t + γ * Q (s t + 1 , a t + 1 )-Q (s t , a t ))

반면 Q-learning 알고리즘의 업데이트 단계는 다음과 같습니다.

Q (s t , a t ) = Q (s t , a t ) + α * (r t + γ * max a Q (s t + 1 , a)-Q (s t , a t ))

다음과 같이 쓸 수도 있습니다.

Q (s t , a t ) = (1-α) * Q (s t , a t ) + α * (r t + γ * max a Q (s t + 1 , a))

여기서 γ (감마)는 할인 계수이고 r t 는 시간 단계 t에서 환경으로부터받은 보상입니다.

이 두 알고리즘의 차이점은 SARSA가 다음 정책 값만 조회하고 Q-learning은 다음 최대 정책 값을 조회한다는 사실 입니까?

TLDR (및 내 답변)

내가 처음 질문 한 이후로이 질문에 답 해주신 모든 분들께 감사드립니다. Q-Learning을 사용 하여 github 저장소를 만들고 차이점이 무엇인지 경험적으로 이해했습니다. 이 방법에 대한 모든 금액 은 다음 최고의 액션 선택 알고리즘 관점에서 할 수 있습니다, 평균 , 최대 또는 가장 당신이 그것을 구현하기 위해 선택하는 방법에 따라 조치를.

다른 주요 차이점은 경우 이 선택이 일어나고있다 (예를 들어, 온라인오프라인 ) 방법 / 그 학습에 영향을 미치는 이유. 2019 년에이 글을 읽고 있고 실습에 가깝다면 RL 장난감 문제를 가지고 노는 것이 차이점을 이해하는 가장 좋은 방법 일 것입니다.

마지막으로 중요한 점은 Suton & Barto와 Wikipedia 모두 다음 주 최고 / 최대 조치 및 보상 과 관련하여 종종 혼합, 혼동 또는 잘못된 공식 표현을 가지고 있다는 것입니다 .

r (t + 1)

사실이다

r (t)

이것이 누군가가 이것에 붙어있는 데 도움이되기를 바랍니다.

답변:


57

예, 이것이 유일한 차이점입니다. 정책에 따른 SARSA는 따르는 정책과 관련된 행동 값을 학습하는 반면, 정책을 벗어난 Q-Learning은 탐욕스러운 정책과 관련하여이를 수행합니다. 일부 일반적인 조건에서는 둘 다 실제 가치 함수로 수렴되지만 속도는 다릅니다. Q-Learning은 약간 느리게 수렴하는 경향이 있지만 정책을 변경하면서 계속 학습 할 수있는 능력이 있습니다. 또한 Q-Learning은 선형 근사와 결합 될 때 수렴이 보장되지 않습니다.

실질적으로 ε- 욕심쟁이 정책에 따라 Q-Learning은 Q (s, a)와 최대 행동 값의 차이를 계산하고 SARSA는 Q (s, a)와 평균 행동의 가중 합계 간의 차이를 계산합니다. 값 및 최대 :

Q- 학습 : Q (s t + 1 , a t + 1 ) = max a Q (s t + 1 , a)

SARSA : Q (s t + 1 , a t + 1 ) = ε · 평균 a Q (s t + 1 , a) + (1-ε) · max a Q (s t + 1 , a)


4
좋아, 그럼 Sarsa는 정책을 어떻게 선택합니까? Qlearning은 항상 차선책 정책으로 이동하기위한 조치를 약속하는 정책을 따를 것입니다. Sarsa에서 다음 정책을 선택하기위한 기준은 무엇입니까 (기본적으로 제가 알고 싶은 것은 정책 Q (S, A)를 평가하는 방법에 대한 최선의 조치를 선택하는 방법입니다). 그것은 동일하지 않습니까? 즉, 가장 높은 (즉, 최대) Q '(S, A)를 가질 행동 A 인 상태 S를 선택하는 것입니까?
Ælex 2011

7
정책은 다음 작업을 선택하기위한 규칙입니다. 알고리즘을 구현할 때 선택해야하는 것입니다. 가장 간단한 정책은 탐욕스러운 정책으로 에이전트가 항상 최선의 조치를 선택합니다. 이 정책으로 SARSA와 Q-Learning은 동일합니다. 학습을위한 더 나은 선택은 일부 행동이 무작위로 선택되는 ε- 욕심쟁이 정책입니다.
Don Reba 2011

2
좋아요, 이것이 제가 처음에 질문 한 이유입니다.이 경우에는 둘 다 동일합니다. 대단히 감사합니다! e-Greedy를 사용하고 있습니다. 따라서 Qlearning은 Off-Policy의 경우에만 다릅니다. 여기서 작업은 무작위로 선택되지만 Q-learning으로 업데이트하면 정책 값이 최대화됩니다.
Ælex 2011

2
ε- 욕심쟁이 정책에서 SARSA의 기대 값은 평균 행동 가치와 최고 행동 가치의 가중 합입니다. Q (s_t + 1, a_t + 1) = ε · mean (Q (s, a)) + (1-ε) · 최대 (Q (s, a)). 교과서는 5.4 장 On-Policy Monte Carlo Control에서 제공합니다.
Don Reba 2011

77

이 부분을 배울 때도 매우 혼란스러워서 R.Sutton과 AGBarto의 두 의사 코드를 조합하여 차이를 더 명확하게 만들었습니다.

여기에 이미지 설명 입력

파란색 상자는 두 알고리즘이 실제로 다른 부분을 강조합니다. 숫자는 나중에 설명 할 더 자세한 차이점을 강조합니다.

TL; NR :

|             | SARSA | Q-learning |
|:-----------:|:-----:|:----------:|
| Choosing A' |   π   |      π     |
| Updating Q  |   π   |      μ     |

여기서 π는 탐욕스러운 정책 (예 : ε> 0 탐사)이고, μ는 탐욕스러운 정책 (예 : ε == 0, 탐사 없음)입니다.

  1. Q-learning은 다음 행동 A '를 선택하고 Q를 업데이트하는 데 서로 다른 정책을 사용하고 있다는 점을 감안할 때 다른 정책 μ를 따르면서 π를 평가하려고하므로 정책을 벗어난 알고리즘입니다.

  2. 반대로 SARSA는 항상 π를 사용하므로 정책에 따른 알고리즘입니다.

더 자세한 설명 :

  1. 둘 사이의 가장 중요한 차이점은 각 작업 후에 Q가 업데이트되는 방식입니다. SARSA는 ε- 욕심쟁이 정책을 따르는 Q '를 정확히 사용합니다. 대조적으로, Q- 학습은 다음 단계를 위해 가능한 모든 행동에 대해 최대 Q '를 사용합니다. 이것은 ε = 0으로 탐욕스러운 정책을 따르는 것처럼 보이게합니다. 즉,이 부분에서 탐색이 없습니다.

  2. 그러나 실제로 행동을 취할 때 Q-learning은 여전히 ​​ε- 욕심쟁이 정책에서 취한 행동을 사용합니다. 이것이 "Choose A ..."가 반복 루프 안에있는 이유입니다.

  3. Q-learning의 루프 로직에 따라 A '는 여전히 ε-greedy 정책에서 왔습니다.


5
아름다운 그래픽과 사진을 축하합니다. 이 질문을 한 지 몇 년 후 저는 상태 및 조치 반복과 정책 가치 반복 및 업데이트가 두 가지 다른 프로세스라는 것을 깨달았습니다. 슬프게도 Sutton과 Barto는 이것을 명확하게 밝히지 않습니다. 작업을 결정하는 방법은 설명한대로 알고리즘에 영향을줍니다. Q-Learning에서 최대 행동은 일반적으로 다음으로 좋은 Q (s, a) (예 : 탐욕스러운 행동)를 선택하는 것을 의미합니다. Sarsa에서는 그렇지 않습니다. 정책 (온라인)을 따르거나 무작위 확률에 따라 새로운 정책을 탐색합니다. 설명이 정확합니다!
Ælex

@SilentCrash, 아니, π를 평가하고 있습니다. μ는 행동을 선택하기위한 탐욕스러운 정책입니다.
zyxue

1
@zyxue 그러나 표에서 당신은 실제로 ε- 욕심쟁이 정책 π를 따르는 동안 μ를 따르는 것처럼 (μ를 평가하는 것처럼) Q를 업데이트한다고 썼습니다.
SilentCrash

정책을 벗어난 방법은 인간 행동 (π)에서 A '를 선택하고 탐욕스러운 정책 (μ)에서 Q를 업데이트 할 수 있습니까?
Robert

1
내가 말하고 싶은 또 다른 요점은 SARSA와 Q-learning에서 다음 작업을 선택할 때 모두 엡실론 탐욕 정책을 사용하지만 모든 Q 값이 같으면 엡실론의 임의 부분을 무시하면 같은 작업을 선택해야한다는 것입니다. 욕심. 그러나 SARSA와 Q-learning의 업데이트 방정식이 다르기 때문에 학습 중 어느 시점에서 Q 값이 더 달라 지므로 동일한 엡실론 탐욕 정책 개선 전략을 사용하더라도 다른 행동을 선택하게 될 수 있습니다. 즉, 반복되는 정책이 달라집니다.
StayFoolish

18

수학적으로 차이점은 무엇입니까?

대부분의 다른 답변에서 이미 설명했듯이 수학적으로 두 업데이트의 차이점은 실제로 상태-작업 쌍 (S t , A t )에 대한 Q 값을 업데이트 할 때 다음과 같습니다.

  • Sarsa는 행동 정책 (즉, 에이전트가 환경에서 경험을 생성하는 데 사용하는 정책 (일반적으로 엡실론 탐욕))을 사용하여 추가 작업 A t + 1 을 선택한 다음 Q (S t + 1 , A t +1 ) ( 감마로 할인 ) 업데이트 대상 계산에서 예상되는 미래 수익률입니다.
  • Q- learning은 행동 정책을 사용하여 추가 작업 A t + 1 을 선택하지 않습니다 . 대신 업데이트 규칙에서 예상되는 미래 수익률을 max A Q (S t + 1 , A)로 추정합니다 . 여기에 사용 된 최대 연산자는 완전히 탐욕스러운 정책을 "따르는"것으로 볼 수 있습니다. 에이전트는 실제로 탐욕스러운 정책을 따르지 않습니다 . 업데이트 규칙에서 "지금부터 욕심쟁이 정책을 따르기 시작한다고 가정하면 내 예상 미래 수익은 어떻게 될까요?"라고만 나와 있습니다.

이것은 직관적으로 무엇을 의미합니까?

다른 답변에서 언급했듯이 위에서 설명한 차이점은 기술 용어를 사용하여 Sarsa가 정책 기반 학습 알고리즘이고 Q- 학습이 정책을 벗어난 학습 알고리즘이라는 것을 의미합니다.

한계 (경험을 생성하고 학습하는 데 무한한 시간 이 주어짐)와 몇 가지 추가 가정 하에서 이것은 Sarsa와 Q-learning이 서로 다른 솔루션 / "최적"정책으로 수렴됨을 의미합니다 .

  • Sarsa경험을 생성하는 데 사용 된 것과 동일한 정책을 계속 따른다가정하에 최적의 솔루션으로 수렴합니다 . 이것은 종종 엡실론 탐욕 과 같은 임의의 요소 ( "어리석은")의 일부 요소를 포함하는 정책이 될 것입니다. 그렇지 않으면 우리가 어떤 것에 수렴 할 것이라고 보장 할 수 없기 때문입니다.
  • Q-Learning경험과 교육을 생성 한 후 탐욕스러운 정책으로 전환한다는 가정하에 최적의 솔루션으로 수렴됩니다 .

어떤 알고리즘을 사용해야합니까?

일반적으로 Sarsa 와 같은 알고리즘 은 경험을 학습 / 생성하는 과정에서 에이전트의 성능에 관심이있는 상황에서 선호 됩니다 . 예를 들어 에이전트가 절벽 아래로 떨어지면 부서지는 값 비싼 로봇이라고 생각해보십시오. 비용이 많이 들기 때문에 학습 과정에서 너무 자주 떨어지지 않는 것이 좋습니다. 따라서 학습 과정에서 성능에 관심이 있습니다. 그러나 때때로 무작위로 행동해야한다는 것도 알고 있습니다 (예 : 엡실론 탐욕스러운). 이것은 로봇이 절벽을 따라 걷는 것이 매우 위험하다는 것을 의미합니다. 엡실론 확률로 무작위로 행동하고 쓰러 질 수 있기 때문입니다. 따라서 우리는 절벽에 가까이있는 것이 위험하다는 것을 빨리 배우는 것이 좋습니다.탐욕스러운 정책이 떨어지지 않고 바로 옆으로 걸을 수 있다고하더라도, 우리는 무작위로 엡실론 탐욕스러운 정책을 따르고 있다는 것을 알고 있으며 때때로 어리 석을 수 있다는 것을 알고 있으므로 성능을 최적화하는 데 관심이 있습니다 . 이것은 Sarsa가 선호되는 상황입니다.

Q-learning 과 같은 알고리즘은 우리가 훈련 과정에서 에이전트의 성능에 신경 쓰지 않는 상황에서 선호 될 수 있지만 결국 우리가 전환 할 최적의 탐욕스러운 정책을 배우기를 원합니다. 예를 들어, 우리가 몇 가지 연습 게임을하고 (때때로 무작위성 때문에지는 것을 신경 쓰지 않는 곳), 그 후에 중요한 토너먼트 (배움을 멈추고 엡실론 탐욕에서 탐욕스러운 정책으로 전환하는 곳)을한다고 생각해보십시오. ). 이것은 Q- 학습이 더 나은 곳입니다.


2
이것은 알고리즘에 관계없이 절대적으로 최상의 설명 정책입니다
Ege

4

Q-Learning 공식에 색인 오류가 있습니다. Sutton과 Barto의 148 페이지.

Q (st, at) <-Q (st, at) + 알파 * [r (t + 1) + 감마 * 최대 Q (st + 1, a)-Q (st, at)]

오타는 최대 인수에 있습니다.

인덱스는 st + 1 및 a이지만 귀하의 질문에는 st + 1 및 at + 1입니다 (SARSA에 맞습니다).

이것이 조금 도움이되기를 바랍니다.


1

Q-Learning에서

Q-Learning : Q (St, At) = Q (St, At) + a [R (t + 1) + discount * max Q (St + 1, At )-Q (St, At)]

Q-Learning으로 변경해야합니다. Q (St, At) = Q (St, At) + a [R (t + 1) + discount * max Q (St + 1, a )-Q (St, At)]

말했듯이 업데이트 eq에 대한 최대 Q- 값을 찾아야합니다. 변화에 의해 , 그럼 당신은 새로운 Q (성,시)를해야합니다. 조심스럽게 최대 Q 값을 제공 하는 a 는 다음 작업이 아닙니다. 이 단계에서는 다음 상태 (St + 1) 만 알고 있으며 다음 라운드로 이동하기 전에 St + 1 (St <-St + 1)로 St를 업데이트하려고합니다.

각 루프에 대해;

  • Q 값을 사용하여 St에서 At를 선택하십시오.

  • At를 취하고 Rt + 1 및 St + 1을 관찰합니다.

  • eq를 사용하여 Q- 값을 업데이트합니다.

  • St <-St + 1

St가 터미널이 될 때까지


실제로 그들은 청중을 혼란스럽게했습니다. 그것은 R [t + 1]이 아니라 R [t]이지만 책의 한 지점에서 실제로 R [t + 1]로 보여줍니다. 그러나 (내 말을 믿지 말고 직접 시도하십시오) R [t + 1]을 설정하면 보상 값이 0-1 사이에서 확장되지 않으며, Q [t ] = R [t] 상태가 터미널 일 때, R [t + 1]을 사용하면 참이 아닙니다. 위키피디아가 틀렸고 (제가 편집했습니다) Sutton과 Barto는 그 이유를 설명하지 않고 책에서 두 가지 변형을 사용합니다.
Ælex

0

SARSA와 Qlearning의 유일한 차이점은 SARSA는 현재 정책에 따라 다음 조치를 취하는 반면 qlearning은 다음 상태의 최대 활용도로 조치를 취한다는 것입니다.


이것은 사실이 아닙니다. 두 방법 모두 동일한 동작 (ε- 욕심)을 수행합니다. 차이점은 (다른 답변에서 언급했듯이) Q 기능을 업데이트하기 위해 다른 정책을 사용한다는 것입니다.
mobeets
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.