Rumah  >  Artikel  >  Peranti teknologi  >  Lanjutkan Q-Learning dengan Dyna-Q untuk meningkatkan pembuatan keputusan

Lanjutkan Q-Learning dengan Dyna-Q untuk meningkatkan pembuatan keputusan

尊渡假赌尊渡假赌尊渡假赌
尊渡假赌尊渡假赌尊渡假赌ke hadapan
2024-01-02 11:02:212336semak imbas

Q-Learning ialah algoritma tanpa model penting dalam pembelajaran pengukuhan yang memfokuskan pada pembelajaran nilai atau "nilai-Q" tindakan dalam keadaan tertentu. Pendekatan ini berfungsi dengan baik dalam persekitaran yang tidak dapat diramalkan kerana ia tidak memerlukan model persekitaran sekeliling yang telah ditetapkan. Ia cekap menyesuaikan diri dengan transformasi rawak dan pelbagai ganjaran, menjadikannya sesuai untuk senario dengan hasil yang tidak pasti. Fleksibiliti ini menjadikan Q-Learning sebagai alat yang berkuasa untuk aplikasi yang memerlukan pembuatan keputusan adaptif tanpa pengetahuan awal tentang dinamik persekitaran.

Lanjutkan Q-Learning dengan Dyna-Q untuk meningkatkan pembuatan keputusan

Lanjutkan Q-Learning untuk meningkatkan pembuatan keputusan dengan Dyna-Q

Terokai Dyna-Q, algoritma pembelajaran pengukuhan lanjutan yang memanjangkan Q dengan menggabungkan pengalaman dunia sebenar dengan perancangan simulasi -Belajar

Q-Learning ialah algoritma tanpa model penting dalam pembelajaran pengukuhan yang memfokuskan pada pembelajaran nilai atau "nilai-Q" sesuatu tindakan dalam keadaan tertentu. Pendekatan ini berfungsi dengan baik dalam persekitaran yang tidak dapat diramalkan kerana ia tidak memerlukan model persekitaran sekeliling yang telah ditetapkan. Ia cekap menyesuaikan diri dengan transformasi rawak dan pelbagai ganjaran, menjadikannya sesuai untuk senario dengan hasil yang tidak pasti. Fleksibiliti ini menjadikan Q-Learning sebagai alat yang berkuasa untuk aplikasi yang memerlukan pembuatan keputusan adaptif tanpa pengetahuan awal tentang dinamik persekitaran.

Proses Pembelajaran

Pembelajaran Q berfungsi dengan mengemas kini jadual nilai Q untuk setiap tindakan di setiap negeri. Ia menggunakan persamaan Bellman untuk mengemas kini nilai ini secara berulang berdasarkan ganjaran yang diperhatikan dan anggaran ganjaran masa depan mereka. Dasar - strategi untuk memilih tindakan - diperoleh daripada nilai-Q ini.

  • Nilai Q - mewakili jangkaan ganjaran masa depan yang boleh diperolehi dengan mengambil tindakan tertentu dalam keadaan tertentu
  • Peraturan kemas kini - Nilai Q dikemas kini seperti berikut:
    • Q (keadaan, tindakan) ← Q (keadaan, tindakan ) + α ( Ganjaran + maksimum γ Q (keadaan seterusnya, a) − Q (keadaan, tindakan))
    • Kadar pembelajaran α mewakili kepentingan maklumat baharu, dan pekali diskaun γ mewakili kepentingan ganjaran masa hadapan.

Kod yang disediakan digunakan sebagai fungsi latihan Q-Learner. Ia menggunakan persamaan Bellman untuk menentukan peralihan yang paling cekap antara keadaan.

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 	

Penerokaan vs. Eksploitasi

Aspek utama pembelajaran Q ialah mengimbangi penerokaan (mencuba tindakan baharu untuk menemui ganjarannya) dan eksploitasi (menggunakan maklumat yang diketahui untuk memaksimumkan ganjaran). Algoritma sering menggunakan strategi seperti ε-tamak untuk mengekalkan keseimbangan ini.

Mulakan dengan menetapkan kadar operasi rawak untuk mengimbangi penerokaan dan eksploitasi. Laksanakan kadar pereputan untuk mengurangkan rawak secara beransur-ansur apabila jadual Q mengumpul lebih banyak data. Pendekatan ini memastikan bahawa dari semasa ke semasa, apabila lebih banyak bukti terkumpul, algoritma semakin beralih kepada mengeksploitasi.

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

Pengenalan kepada Dyna-Q

Dyna-Q ialah lanjutan inovatif daripada algoritma Q-Learning tradisional dan berada di barisan hadapan dalam menggabungkan pengalaman sebenar dengan perancangan simulasi. Pendekatan ini meningkatkan proses pembelajaran dengan ketara dengan menyepadukan interaksi sebenar dan pengalaman simulasi, membolehkan ejen menyesuaikan diri dengan cepat dan membuat keputusan termaklum dalam persekitaran yang kompleks. Dengan memanfaatkan pembelajaran langsung daripada maklum balas alam sekitar dan cerapan yang diperoleh melalui simulasi, Dyna-Q menyediakan strategi yang komprehensif dan berkesan untuk menangani cabaran di mana data dunia sebenar adalah terhad atau mahal untuk diperoleh.

Dyna-Q的组件

  1. Q-Learning:从真实经验中学习
  2. 模型学习:学习环境模型
  3. 规划:使用模型生成模拟体验

模型学习

  • 该模型跟踪转换和奖励。对于每个状态-动作对 (s, a),模型存储下一个状态 s′ 和奖励 r。
  • 当智能体观察到转换 (s, a,r,s′) 时,它会更新模型。

使用模拟体验进行规划

  • 在每个步骤中,代理从真实体验更新其 Q 值后,还会根据模拟体验更新 Q 值。
  • 这些体验是使用学习模型生成的:对于选定的状态-动作对(s,a),它预测下一个状态和奖励,并且Q值被更新,就好像已经经历了这种转变一样。

算法 Dyna-Q

  1. 初始化所有状态-动作对的 Q 值 Q(s, a) 和模型 (s, a)。
  2. 循环(每集):
    • 初始化状态 s。
    • 循环(针对剧集的每个步骤):
      • 使用派生自 Q 从状态 s 中选择操作 a(例如,ε-greedy )
      • 采取行动 a,观察奖励 r,然后下一个状态 s′
      • 直接学习:使用观察到的跃迁(s、a、r、s′)更新 Q 值
      • 模型学习:使用转换(s、a、r、s′)更新模型
      • 计划:重复 n 次:
        • 随机选择以前经历过的状态-动作对 (s, a)。
        • 使用模型生成预测的下一个状态 s′ 并奖励 r
        • 使用模拟跃迁 (s, a,r,s′) 更新 Q 值
        • s← s′。
  3. 结束循环 此功能将 Dyna-Q 计划阶段合并到前面提到的 Q-Learner 中,从而能够指定在每一集中运行的所需模拟量,其中操作是随机选择的。此功能增强了 Q-Learn 的整体功能和多功能性。
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,人工智能和机器学习领域的专家和爱好者可以为各种实际问题设计出有弹性的解决方案。本教程的目的不是介绍概念和算法,而是在这个引人入胜的研究领域激发创造性应用和未来进展的创造力。

Atas ialah kandungan terperinci Lanjutkan Q-Learning dengan Dyna-Q untuk meningkatkan pembuatan keputusan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:dzone.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam