Q ラーニングは、特定の状態におけるアクションの値または「Q 値」の学習に焦点を当てた、強化学習における重要なモデルフリー アルゴリズムです。このアプローチは、周囲の環境の事前定義されたモデルを必要としないため、予測不可能な環境でうまく機能します。ランダムな変換やさまざまな報酬に効率的に適応するため、結果が不確実なシナリオに適しています。この柔軟性により、Q-Learning は、環境力学に関する事前知識がなくても適応的な意思決定が必要なアプリケーションにとって強力なツールになります。
Q ラーニングは、特定の状態におけるアクションの値または「Q 値」の学習に焦点を当てた、強化学習における重要なモデルフリー アルゴリズムです。このアプローチは、周囲の環境の事前定義されたモデルを必要としないため、予測不可能な環境でうまく機能します。ランダムな変換やさまざまな報酬に効率的に適応するため、結果が不確実なシナリオに適しています。この柔軟性により、Q-Learning は、環境力学に関する事前知識がなくても適応的な意思決定が必要なアプリケーションにとって強力なツールになります。
Q 学習は、各状態の各アクションの Q 値テーブルを更新することによって機能します。ベルマン方程式を使用して、観察された報酬と将来の報酬の推定に基づいてこれらの値を繰り返し更新します。ポリシー、つまりアクションを選択するための戦略は、これらの Q 値から導出されます。
提供されたコードは、Q-Learner のトレーニング機能として使用されます。ベルマン方程式を利用して、状態間の最も効率的な遷移を決定します。
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 ラーニングの重要な側面は、探索 (報酬を発見するために新しいアクションを試す) と活用 (報酬を最大化するために既知の情報を使用する) のバランスを取ることです。アルゴリズムでは、このバランスを維持するために、ε-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 ラーニング アルゴリズムの革新的な拡張であり、現実世界の経験とシミュレーションされた計画を組み合わせる最前線にあります。このアプローチは、実際のインタラクションとシミュレートされたエクスペリエンスを統合することで学習プロセスを大幅に強化し、エージェントが複雑な環境に迅速に適応し、情報に基づいた意思決定を行えるようにします。 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 中国語 Web サイトの他の関連記事を参照してください。