Q Python으로 학습: 정의, 정의 [코딩 예제]

게시 됨: 2020-03-26

강화 학습은 학습 에이전트가 지속적인 상호 작용을 통해 환경에 따라 최적으로 행동하는 방법을 배우는 것입니다. 에이전트는 상태라고도 하는 다양한 상황을 거칩니다. 짐작하셨겠지만, 강화 학습은 우리 세계에서 많은 응용 분야를 가지고 있습니다. 데이터 과학 알고리즘에 대해 자세히 알아보려면 자세히 알아보세요.

또한 많은 알고리즘이 있으며 가장 인기 있는 알고리즘은 Q learning 입니다. 이 기사에서는 이 알고리즘이 무엇이며 어떻게 작동하는지 논의할 것입니다.

이제 더 이상 고민하지 않고 시작하겠습니다.

목차

Q학습이란?

Q 학습은 강화 학습 알고리즘이며 특정 상황에 대한 최상의 조치를 찾는 데 중점을 둡니다. Q 학습 기능이 학습하는 작업이 기존 정책 외부에 있으므로 정책이 필요하지 않습니다. 총 보상을 증가시키는 정책을 학습하는 데 중점을 둡니다. 행동 값(또는 Q-값)을 사용하여 학습 에이전트의 행동을 향상시키는 단순한 형태의 강화 학습입니다.

Q 학습은 이해하고 구현하기가 어렵지 않기 때문에 강화 학습에서 가장 인기 있는 알고리즘 중 하나입니다. Q 학습에서 'Q'는 품질을 나타냅니다. 앞서 언급했듯이 Q 학습은 특정 상황에 가장 적합한 조치를 찾는 데 중점을 둡니다. 그리고 품질은 특정 행동이 얼마나 유용한지, 도달하는 데 도움이 될 수 있는 보상을 보여줍니다.

중요한 정의

어떻게 작동하는지 논의하기 전에 먼저 q 학습의 몇 가지 필수 개념을 살펴봐야 합니다. 시작하자.

Q-값

Q 값은 작업 값이라고도 합니다. 그것들은 Q(S, A)로 표시되며, 행동 ​​A가 S 상태에서 취하는 것이 얼마나 좋은지에 대한 추정치를 제공합니다. 모델은 나중에 논의한 시간차 업데이트 규칙을 사용하여 이 추정치를 반복적으로 계산합니다. 이 섹션의.

에피소드 및 보상

에이전트는 시작 상태에서 시작하여 여러 전환을 거친 후 작업과 환경에 따라 현재 상태에서 다음 상태로 이동합니다. 에이전트가 조치를 취할 때마다 약간의 보상을 받습니다. 그리고 가능한 전환이 없을 때, 그것은 에피소드의 완성입니다.

TD-업데이트(시간차)

다음은 TD-업데이트 또는 시간적 차이 규칙입니다.

Q(S,A) Q(S,A) + (R + Q(S',A')-Q(S,A))

여기서 S는 에이전트의 현재 상태를 나타내고 S'는 다음 상태를 나타냅니다. A는 현재 행동을 나타내고, A'는 Q-값 추정에 따른 다음의 최선의 행동을 나타내고, R은 현재 행동에 따른 현재 보상을 나타내고, 할인 인자를 나타내며 , 스텝 길이를 나타낸다.

읽어보기: 데이터 과학의 전제 조건. 시간이 지남에 따라 어떻게 변합니까?

Q 학습 파이썬의 예

Q 학습 Python을 이해하는 가장 좋은 방법은 예제를 보는 것입니다. 이 예에서는 OpenAI의 체육관 환경을 사용하고 이를 사용하여 모델을 훈련합니다. 먼저 환경을 설치해야 합니다. 다음 명령으로 수행할 수 있습니다.

핍 설치 체육관

이제 이 예제에 필요한 라이브러리를 가져옵니다.

수입체육관

가져오기 itertools

가져오기 matplotlib

가져오기 matplotlib.style

numpy를 np로 가져오기

pandas를 pd로 가져오기

수입 시스템

컬렉션에서 defaultdict 가져오기

windy_gridworld에서 WindyGridworldEnv 가져오기

가져오기 플로팅

matplotlib.style.use('ggplot')

필요한 라이브러리가 없으면 이러한 작업을 성공적으로 수행할 수 없습니다. 라이브러리를 가져온 후 환경을 생성합니다.

환경 = WindyGridworldEnv()

이제 -greedy 정책을 생성합니다.

def createEpsilonGreedyPolicy(Q, 엡실론, num_actions):

""

기반으로 엡실론 욕심 많은 정책을 만듭니다.

주어진 Q-함수와 엡실론에서.

상태를 취하는 함수를 반환합니다.

입력으로 확률을 반환

numpy 배열 형태의 각 작업에 대해

행동 공간의 길이(가능한 응답의 집합).

""

def policyFunction(상태):

Action_probabilities = np.ones(num_actions,

dtype = float) * 엡실론 / num_actions

best_action = np.argmax(Q[상태])

Action_probabilities[best_action] += (1.0 – 엡실론)

Action_probabilities 반환

반품 정책기능

다음은 q-러닝 모델을 구축하는 코드입니다.

def qLearning(환경, num_episodes, discount_factor = 1.0,

알파 = 0.6, 엡실론 = 0.1):

""

Q-Learning 알고리즘: 오프 정책 TD 제어.

개선하면서 최적의 greedy 정책을 찾습니다.

엡실론 탐욕 정책에 따라””

# 액션 가치 함수

# 매핑하는 중첩 사전

# 상태 -> (액션 -> 액션-값).

Q = defaultdict(람다: np.zeros(env.action_space.n))

# 유용한 통계를 추적합니다.

통계 = 플로팅.EpisodeStats(

에피소드 길이 = np.zeros(num_episodes),

에피소드_보상 = np.zeros(num_episodes))

# 엡실론 탐욕 정책 함수 생성

# 환경 행동 공간에 적합

정책 = createEpsilonGreedyPolicy(Q, 엡실론, env.action_space.n)

# 에피소드마다

범위(num_episodes)의 ith_episode에 대해:

# 환경을 재설정하고 첫 번째 작업을 선택합니다.

상태 = 환경 재설정()

itertools.count()의 t에 대해:

# 현재 상태에서 모든 행동의 확률을 얻습니다.

action_probabilities = 정책(상태)

# 에 따라 행동을 선택

# 확률 분포

액션 = np.random.choice(np.arange(

len(action_probabilities)),

p = action_probabilities)

# 조치를 취하고 보상을 받고 다음 상태로 전환

next_state, reward, done, _ = env.step(action)

# 통계 업데이트

stats.episode_rewards[i_episode] += 보상

stats.episode_lengths[i_episode] = t

# TD 업데이트

best_next_action = np.argmax(Q[next_state])

td_target = reward + discount_factor * Q[next_state][best_next_action]

td_delta = td_target – Q[상태][동작]

Q[상태][액션] += 알파 * td_delta

# done은 에피소드가 종료되면 True입니다.

완료되면:

부서지다

상태 = 다음_상태

Q, 통계 반환

이제 모델을 학습시켜 보겠습니다.

Q, 통계 = qLearning(env, 1000)

모델을 만들고 훈련한 후에는 동일한 필수 통계를 표시할 수 있습니다.

plotting.plot_episode_stats(통계)

이 코드를 사용하여 모델을 실행하고 그래프를 플로팅합니다. 어떤 결과가 보이나요? 결과를 공유하고 혼란이나 의심이 있으면 알려주십시오.

더 읽어보기: 데이터 과학을 위한 기계 학습 알고리즘

세계 최고의 대학에서 데이터 과학 과정배우십시오 . 이그 제 큐 티브 PG 프로그램, 고급 인증 프로그램 또는 석사 프로그램을 획득하여 경력을 빠르게 추적하십시오.

마지막 생각들

그래프를 그리면 에피소드당 보상이 시간이 지남에 따라 점진적으로 증가하는 것을 볼 수 있습니다. 그리고 특정 에피소드 이후에는 플롯이 에피소드당 높은 보상 한도를 평준화한다는 점도 반영합니다. 이것은 무엇을 나타냅니까?

이는 모델이 최적으로 작동하도록 하여 에피소드에서 얻을 수 있는 총 보상을 늘리는 방법을 배웠음을 의미합니다. 또한 q 학습 Python이 많은 산업 및 영역에서 응용 프로그램을 보는 이유를 보았을 것입니다.

강화 학습의 단점은 무엇입니까?

1. 과도한 강화 학습은 상태를 초과하여 결과의 ​​품질을 저하시킬 수 있습니다.
2. 강화 학습은 쉬운 문제 해결을 위해 권장하지 않습니다.
3. 강화 학습은 많은 양의 데이터와 계산을 필요로 합니다.
4. 강화 학습에는 도전적인 훈련 설계 설정 및 탐색과 강화의 균형 문제와 같이 고유하고 매우 복잡한 장애물이 있습니다.

Q 학습은 모델 기반입니까?

아니요, Q 학습은 모델에 의존하지 않습니다. Q-러닝은 주어진 상태에서 특정 행동의 가치를 결정하기 위한 모델 없는 강화 학습 기법입니다. Q 학습은 모델이 없는 여러 현재 강화 학습 알고리즘 중 하나입니다. 즉, 다양한 컨텍스트에서 사용될 수 있고 새롭고 알려지지 않은 조건에 빠르게 적응할 수 있습니다. 적응 요구 사항 없이 확률적 전환 및 보상과 관련된 문제를 처리할 수 있으며 환경 모델이 필요하지 않습니다. Q-learning은 값을 기반으로 하는 학습 알고리즘입니다. 값 기반 알고리즘은 방정식을 사용하여 값 함수(특히 Bellman 방정식)를 업데이트합니다.

Q learning과 SARSA는 어떻게 다른가요?

SARSA는 탐색하면서 거의 최적에 가까운 정책을 학습하는 반면 Q-러닝은 최적의 정책을 직접 학습합니다. Off-policy SARSA는 따르고 있는 정책과 관련하여 행동 가치를 학습하는 반면 on-policy SARSA는 따르고 있는 정책과 관련하여 행동 가치를 학습합니다. greedy 정책과 관련하여 Q-Learning이 합니다. 둘 다 몇 가지 유사한 조건에서 실제 값 함수로 수렴하지만 속도는 다릅니다. Q-Learning은 수렴하는 데 시간이 조금 더 걸리지만 규정이 변경되는 동안 계속 학습할 수 있습니다. 선형 근사와 결합할 때 Q-Learning은 수렴을 보장하지 않습니다. SARSA는 수렴에 접근할 때 탐색 단계의 패널티를 고려하지만 Q-러닝은 그렇지 않습니다. 이상적인 경로를 따라 상당한 부정적인 보상의 기회가 있는 경우 Q-learning은 탐색하는 동안 이를 트리거하려고 시도하지만 SARSA는 위험한 최적 경로를 피하려고 시도하고 탐색 매개변수가 감소한 후에만 이를 활용하는 방법을 배웁니다.