Q-Learning은 특정 상태에서 행동의 가치 또는 "Q-값"을 학습하는 데 초점을 맞춘 강화 학습의 중요한 모델 없는 알고리즘입니다. 이 접근 방식은 주변 환경에 대해 미리 정의된 모델이 필요하지 않기 때문에 예측 불가능한 환경에서 잘 작동합니다. 무작위 변형과 다양한 보상에 효율적으로 적응하므로 결과가 불확실한 시나리오에 적합합니다. 이러한 유연성 덕분에 Q-Learning은 환경 역학에 대한 사전 지식 없이 적응형 의사 결정이 필요한 애플리케이션을 위한 강력한 도구가 됩니다.
Q-Learning은 특정 상태에서 행동의 가치 또는 "Q-값"을 학습하는 데 초점을 맞춘 강화 학습의 중요한 모델 없는 알고리즘입니다. 이 접근 방식은 주변 환경에 대해 미리 정의된 모델이 필요하지 않기 때문에 예측 불가능한 환경에서 잘 작동합니다. 무작위 변형과 다양한 보상에 효율적으로 적응하므로 결과가 불확실한 시나리오에 적합합니다. 이러한 유연성 덕분에 Q-Learning은 환경 역학에 대한 사전 지식 없이 적응형 의사 결정이 필요한 애플리케이션을 위한 강력한 도구가 됩니다.
Q-learning은 각 상태의 각 작업에 대한 Q-값 테이블을 업데이트하여 작동합니다. Bellman 방정식을 사용하여 관찰된 보상과 미래 보상 추정치를 기반으로 이러한 값을 반복적으로 업데이트합니다. 정책(행동 선택 전략)은 이러한 Q-값에서 파생됩니다.
제공된 코드는 Q-Learner의 훈련 기능으로 사용됩니다. Bellman 방정식을 활용하여 상태 간 가장 효율적인 전환을 결정합니다.
def train_Q(self,s_prime,r): self.QTable[self.s,self.action] = (1-self.alpha)*self.QTable[self.s, self.action] + \ self.alpha * (r + self.gamma * (self.QTable[s_prime, np.argmax(self.QTable[s_prime])])) self.experiences.append((self.s, self.action, s_prime, r)) self.num_experiences = self.num_experiences + 1 self.s = s_prime self.action = action return action
Q-learning의 핵심 측면은 탐색(보상을 발견하기 위해 새로운 행동 시도)과 활용(알려진 정보를 사용하여 보상 최대화)의 균형을 맞추는 것입니다. 알고리즘은 종종 이러한 균형을 유지하기 위해 ε-greedy와 같은 전략을 사용합니다.
탐색과 활용의 균형을 맞추기 위해 무작위 작업 비율을 설정하는 것부터 시작하세요. Q-테이블에 더 많은 데이터가 축적됨에 따라 무작위성을 점진적으로 줄이기 위해 붕괴율을 구현합니다. 이 접근 방식을 사용하면 시간이 지남에 따라 더 많은 증거가 축적됨에 따라 알고리즘이 점점 더 악용으로 전환됩니다.
if rand.random() >= self.random_action_rate: action = np.argmax(self.QTable[s_prime,:]) #Exploit: Select Action that leads to a State with the Best Reward else: action = rand.randint(0,self.num_actions - 1) #Explore: Randomly select an Action. # Use a decay rate to reduce the randomness (Exploration) as the Q-Table gets more evidence self.random_action_rate = self.random_action_rate * self.random_action_decay_rate
Dyna-Q는 기존 Q-Learning 알고리즘을 혁신적으로 확장한 것이며 실제 경험과 시뮬레이션 계획을 결합하는 데 앞장서고 있습니다. 이 접근 방식은 실제 상호 작용과 시뮬레이션된 경험을 통합하여 학습 프로세스를 크게 향상시켜 에이전트가 복잡한 환경에서 신속하게 적응하고 정보에 기초한 결정을 내릴 수 있도록 합니다. Dyna-Q는 시뮬레이션을 통해 얻은 환경 피드백과 통찰력을 통한 직접적인 학습을 활용하여 실제 데이터가 부족하거나 획득하는 데 비용이 많이 드는 문제를 해결하기 위한 포괄적이고 효과적인 전략을 제공합니다.
def train_DynaQ(self,s_prime,r): self.QTable[self.s,self.action] = (1-self.alpha)*self.QTable[self.s, self.action] + \ self.alpha * (r + self.gamma * (self.QTable[s_prime, np.argmax(self.QTable[s_prime])])) self.experiences.append((self.s, self.action, s_prime, r)) self.num_experiences = self.num_experiences + 1 # Dyna-Q Planning - Start if self.dyna_planning_steps > 0: # Number of simulations to perform idx_array = np.random.randint(0, self.num_experiences, self.dyna) for exp in range(0, self.dyna): # Pick random experiences and update QTable idx = idx_array[exp] self.QTable[self.experiences[idx][0],self.experiences[idx][1]] = (1-self.alpha)*self.QTable[self.experiences[idx][0], self.experiences[idx][1]] + \ self.alpha * (self.experiences[idx][3] + self.gamma * (self.QTable[self.experiences[idx][2], np.argmax(self.QTable[self.experiences[idx][2],:])])) # Dyna-Q Planning - End if rand.random() >= self.random_action_rate: action = np.argmax(self.QTable[s_prime,:]) #Exploit: Select Action that leads to a State with the Best Reward else: action = rand.randint(0,self.num_actions - 1) #Explore: Randomly select an Action. # Use a decay rate to reduce the randomness (Exploration) as the Q-Table gets more evidence self.random_action_rate = self.random_action_rate * self.random_action_decay_rate self.s = s_prime self.action = action return action
Dyna Q 代表了一种进步,我们追求设计能够在复杂和不确定的环境中学习和适应的代理。通过理解和实施 Dyna Q,人工智能和机器学习领域的专家和爱好者可以为各种实际问题设计出有弹性的解决方案。本教程的目的不是介绍概念和算法,而是在这个引人入胜的研究领域激发创造性应用和未来进展的创造力。
위 내용은 Dyna-Q로 Q-Learning을 확장하여 의사결정 강화의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!