强化学习中Sara算法和Q-Learning算法的区别

2023-10-16 20:10

本文主要是介绍强化学习中Sara算法和Q-Learning算法的区别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 Q-Learning算法:

1,在环境S1中选出动作a1

2,得到a1这一步的动作价值

Q-target = R + γ*在状态S2中最优的下一步Q(s2, *a)的值

3,更新s1,a1这个状态的Q值

4,做出a1动作得到s2

Sara算法:

1,在环境S1中选出动作a1并得到S2

2,由环境S2选出将要下一步要进行的a2

3,由a1的奖励R,和Q(s2,a2)得到Q-target

 

4,由Q-target和原先的Q(s1,a1)去更新得到新的Q(s1,a1)

注:Q(s1,a1) = Q(s1, a1)+ α(Q-target - Q(s1,a1)) #  α是学习率

        二者在流程上是十分相似的,其区别在于Q-Learning在计算下一步的Q值时是用的S2状态中最好的那个Q值,但由于greedy在,所以实际上可能并不会采取这个动作。而Sara算法计算下一步Q值时是直接用已经得出的那个a2动作的Q值。

        换句话说,当走到S2这个状态时,如果S2是个“好状态”,那么Sara一定会选择最优的那一步a2,而Q-Learning可能会“冒险”选择其他动作(要看动作选择函数中的greedy police的值)。

        可以这么理解:面对一道难题,Sara比较老实,直接回答自己知道的答案,然后再检查自己这道题的是否拿到了分。而Q-Learning这个学生很聪明,他知道这道题(这个状态)的最优答案,但他也很调皮,他觉得这道题已经知道答案了所以先把这分加上,然后可能会去尝试其他答案。

        对于同样的(s1,a1)得到的S2,Sara是先做出了a2动作,再计算这个动作对应的Q值,而Q-learning是得到S2后思考这个S2这个状态最优的动作是什么后就加上这个最优动作的Q值,然后再去选动作。

        所以在模型训练表现上来看,Sara会看上去相对胆小,选错了就得到选错了的Q值,而Q-learning会更激进,哪怕选错了,也要得到这一步最优的Q值。

        在这个阶段,如果将greedy police(探索程度)的值设为1,也就是说Q-learning一定会选择计算Q-target时的那个动作,Sara也会选择S2对应的最优动作(不会选错),那么Q-learning和Sara算法某种程度上可以看做是一样的。(我个人看法)

这篇关于强化学习中Sara算法和Q-Learning算法的区别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/220530

相关文章

解读Pandas和Polars的区别及说明

《解读Pandas和Polars的区别及说明》Pandas和Polars是Python中用于数据处理的两个库,Pandas适用于中小规模数据的快速原型开发和复杂数据操作,而Polars则专注于高效数据... 目录Pandas vs Polars 对比表使用场景对比Pandas 的使用场景Polars 的使用

golang字符串匹配算法解读

《golang字符串匹配算法解读》文章介绍了字符串匹配算法的原理,特别是Knuth-Morris-Pratt(KMP)算法,该算法通过构建模式串的前缀表来减少匹配时的不必要的字符比较,从而提高效率,在... 目录简介KMP实现代码总结简介字符串匹配算法主要用于在一个较长的文本串中查找一个较短的字符串(称为

通俗易懂的Java常见限流算法具体实现

《通俗易懂的Java常见限流算法具体实现》:本文主要介绍Java常见限流算法具体实现的相关资料,包括漏桶算法、令牌桶算法、Nginx限流和Redis+Lua限流的实现原理和具体步骤,并比较了它们的... 目录一、漏桶算法1.漏桶算法的思想和原理2.具体实现二、令牌桶算法1.令牌桶算法流程:2.具体实现2.1

Java中ArrayList和LinkedList有什么区别举例详解

《Java中ArrayList和LinkedList有什么区别举例详解》:本文主要介绍Java中ArrayList和LinkedList区别的相关资料,包括数据结构特性、核心操作性能、内存与GC影... 目录一、底层数据结构二、核心操作性能对比三、内存与 GC 影响四、扩容机制五、线程安全与并发方案六、工程

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

java中不同版本JSONObject区别小结

《java中不同版本JSONObject区别小结》本文主要介绍了java中不同版本JSONObject区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录1. FastjsON2. Jackson3. Gson4. org.json6. 总结在Jav

数据库使用之union、union all、各种join的用法区别解析

《数据库使用之union、unionall、各种join的用法区别解析》:本文主要介绍SQL中的Union和UnionAll的区别,包括去重与否以及使用时的注意事项,还详细解释了Join关键字,... 目录一、Union 和Union All1、区别:2、注意点:3、具体举例二、Join关键字的区别&php

java中的HashSet与 == 和 equals的区别示例解析

《java中的HashSet与==和equals的区别示例解析》HashSet是Java中基于哈希表实现的集合类,特点包括:元素唯一、无序和可包含null,本文给大家介绍java中的HashSe... 目录什么是HashSetHashSet 的主要特点是HashSet 的常用方法hasSet存储为啥是无序的

2.1/5.1和7.1声道系统有什么区别? 音频声道的专业知识科普

《2.1/5.1和7.1声道系统有什么区别?音频声道的专业知识科普》当设置环绕声系统时,会遇到2.1、5.1、7.1、7.1.2、9.1等数字,当一遍又一遍地看到它们时,可能想知道它们是什... 想要把智能电视自带的音响升级成专业级的家庭影院系统吗?那么你将面临一个重要的选择——使用 2.1、5.1 还是

Python中@classmethod和@staticmethod的区别

《Python中@classmethod和@staticmethod的区别》本文主要介绍了Python中@classmethod和@staticmethod的区别,文中通过示例代码介绍的非常详细,对大... 目录1.@classmethod2.@staticmethod3.例子1.@classmethod