首页 > 其他分享 >强化学习(Value Function Approximation)-Today9

强化学习(Value Function Approximation)-Today9

时间:2024-07-07 17:56:54浏览次数:11  
标签:Function function 函数 Value value Approximation state Today9 使用

Value Function Approximation主要是使用神经网络来求最优解问题,主要包括Algorithm for state value function、Sarsa和value function approximation的结合、Q-learning和value function approximation的结合、Deep Q-learning。

由于tables的数据不能处理很大的state space或者state space 连续的情况,因此引出函数曲线拟合来泛化state space,使其不用全部访问,访问一些状态即可进行全部改变。

①Algorithm for state value function状态值估计法分为三步:选取目标函数、算法最优化、v\hat{}(s,w)的选取

(1)Objiective function选取目标函数

使估计值v\hat{}(s,w)目标函数接近真实v_{\pi }(s),需要寻找最优的w来定义目标函数以及优化目标函数,使J(w)=E[v_{\pi }(s)-v\hat{}(s,w)]=||v\hat{}-v_{\pi }||^{2}_{D}最小

可以选择概率分布来求解上式子,如:

①选择uniform distribution 均匀分布:

J(w)=E[v_{\pi }(s)-v\hat{}(s,w)]=\frac{1}{|s|}\sum _{s\in S}(v_{\pi }(s)-v\hat{}(s,w))^{2}

②选择stationary distribution:

J(w)=E[v_{\pi }(s)-v\hat{}(s,w)]=\sum _{s\in S}d_{\pi }(s)(v_{\pi }(s)-v\hat{}(s,w))^{2}

d_{\pi }(s)是s的概率且d_{\pi }(s)\geq 0,\sum _{s\in S}d_{\pi }(s)=1

(2)Optimization algotithm算法最优化

①求解minJ(w)使用gredient-descent算法求解:

w_{k+1}=w_{k}-\alpha _{k}\triangledown _{w}J(w_{k})

\triangledown _{w}J(w)=\triangledown _{w}E[(v_{\pi }(s)-v\hat{}(s,w))^{2}]

                 =E[\triangledown _{w}(v_{\pi }(s)-v\hat{}(s,w))^{2}]

                              =-2E[v_{\pi }(s)-v\hat{}(s,w)]\triangledown _{w}v\hat{}(s,w)

②使用stochastic gradient计算:

由于v_{\pi }(s)计算不出来,因此使用Monte Carlo方法,使用g_{t}代替:

w_{t+1}=w_{t}+\alpha _{t}[v_{\pi }(s)-v\hat{}(s,w)]\triangledown _{w}v\hat{}(s,w)

w_{t+1}=w_{t}+\alpha _{t}[g_{t}-v\hat{}(s,w)]\triangledown _{w}v\hat{}(s,w)

w_{t+1}=w_{t}+\alpha _{t}[r_{t+1}+\gamma v\hat{}(s_{t+1},w_{t})-v\hat{}(s,w)]\triangledown _{w}v\hat{}(s,w)

v\hat{}(s,w)的选取

[1]linear function

v\hat{}(s,w)=\Phi ^{T}(s)w,v\hat{}(s,w)是s的线性函数,\triangledown _{w}v\hat{}(s,w)=\Phi (s)

w_{t+1}=w_{t}+\alpha _{t}[r_{t+1}+\gamma \Phi ^{T}(s_{t+1})w_{t}-\Phi ^{T}(s_{t})w_{t}]\Phi (s_{t})

[2]nonliner function

使用神经网络进行选取。

②Sarsa和value function approximation的结合

给定一个策略\pi _{t}(s_{t}),从r_{t+1},s_{t+1},看a_{t+1},其实就是将Algorithm for state value function的state value换为action value

(1)Value Update

w_{t+1}=w_{t}+\alpha _{t}[r_{t+1}+\gamma q\hat{}(s_{t+1},a_{t+1},w_{t})-q\hat{}(s_{t},a_{t},w_{t})]\triangledown _{w}q\hat{}(s_{t+1},a_{t+1},w_{t})

(2)Policy update(使用\varepsilon -Greedy)

\pi _{t+1}(a|s_{t})=1-\frac{\varepsilon }{|A|}(|A|-1),a=argmax_{a\in A(s_{t})}q\hat{}(s_{t+1},a,w_{t})

\pi _{t+1}(a|s_{t})=\frac{\varepsilon }{|A|},其他

③Q-learning和value function approximation的结合

给定一个策略\pi _{t}(s_{t}),产生r_{t+1},s_{t+1},看a_{t+1},其实就是将Sarsa的贝尔曼公式部分换为贝尔曼最优公式

(1)Value Update

w_{t+1}=w_{t}+\alpha _{t}[r_{t+1}+\gamma max_{a\in A(s_{t+1})}q\hat{}(s_{t+1},a,w_{t})-q\hat{}(s_{t},a_{t},w_{t})]\triangledown _{w}q\hat{}(s_{t+1},a_{t+1},w_{t})

(2)Policy update(使用\varepsilon -Greedy)

\pi _{t+1}(a|s_{t})=1-\frac{\varepsilon }{|A|}(|A|-1),a=argmax_{a\in A(s_{t})}q\hat{}(s_{t+1},a,w_{t})

\pi _{t+1}(a|s_{t})=\frac{\varepsilon }{|A|},其他

④Deep Q-learning(DNQ)

使用深度神经网络+强化学习:

J(w)=E[(R+\gamma max_{a\in A(S{}')}q\hat{}(S{}',a,w))-q\hat{}(S,A,W))]

y=R+\gamma max_{a\in A(S{}')}q\hat{}(S{}',a,w)

使用 main network:q\hat{}(s,a,w),target network:q\hat{}(s,a,w_{T})

w_{T}不动,计算w梯度,再使用求得的w更新w_{T}

\triangledown _{w}J(w)=E[(R+\gamma max_{a\in A(S{}')}q\hat{}(S{}',a,w))-q\hat{}(S,A,W))\triangledown _{w}q\hat{}(S,A,W)]

标签:Function,function,函数,Value,value,Approximation,state,Today9,使用
From: https://blog.csdn.net/m0_52094641/article/details/140248220

相关文章

  • xctf smarty 利用 LD_PRELOAD 环境变量绕过disable_functions
    进来看页面一眼看出为smarty注入,尝试查看smarty版本再进行下一步操作。可以看到是3.1.30那么就可以利用if标签来进行注入。利用file_put_contents上传木马。接下来蚁剑访问,发现没有权限,想到可能需要绕过disable_functions,而绕过disable_functions就那么几种,尝试利用LD_PRELOAD......
  • 《Single Image Deblurring Using Motion Density Functions》
    这篇论文《SingleImageDeblurringUsingMotionDensityFunctions》由AnkitGupta、NeelJoshi、C.LawrenceZitnick、MichaelCohen和BrianCurless合作完成,主要研究了一种新颖的单图像去模糊技术,用于估计由相机抖动引起的空间变化模糊。下面是对论文内容的解读:摘要......
  • this.$refs[tab.$attrs.id].scrollIntoView is not a function
    打印this.$refs[tab.$attrs.id].scrollIntoView 在控制台看到的是一个undefined是因为this.$refs[tab.$attrs.id]不是一个dom是一个vuecomponent如图所示:所以我用的这个document.querySelector(`.${tab.$attrs.id}`)获取domdocument.querySelector(`.${tab.$attrs......
  • function 函数
    很快,我们开始学函数了,还记得在我的某一篇帖子提过吗,不知道的点我。在以前的帖子的最后,我自己封装了俩函数。这篇帖子将会解释它们的意思定义我们要敲一个结构:TypFunct(Typ1Param1,Typ2Param2,...,Typn,Paramn){ ...... returnVal;}它的意思是:定义一个返......
  • java中的函数式接口:(Consumer、BiConsumer、Supplier、Predicate、Function、BiFunctio
    Consumer说明:(1)consumer接口来自java8中引入的Java.util.function包(2)Consumer是一个功能接口,用来作为lambda表达式或方法引用的任务目标(传递一个参数执行指定的方法)。功能:Consumer的功能接口是一个接受单一参数并且不返回任何结果的操作。必要时,"结果"可以存在在集合......
  • Azure Function App With Python 3.11
    有一段python代码,原来都跑在本地,既然functionapp可以运行python,还是比较新的python3.11,就想着直接用functionapp来跑了,省的进行sql逻辑改造,并且不吹不黑,python的pandas在处理dataframe上非常灵活。想法是好的,本地VSCODE搭起来python运行环境也很快,直接AZsignin就部署到自己......
  • Cobra - How to avoid access global variables in a global variable or init() func
    在同一个package中的init()函数是按照所在文件文件名的字母顺序执行的,如果一个文件排在root.go之前,那么在其中字义的<文件名>Cmd全局变量赋值时将不能使用在root.go中初始化并赋值的全局变量(如globalflags),同样在其init()函数中也不能使用那些全局变量,如果使用则会报空指针错误。......
  • Java8 Consumer、Supplier、Predicate、Function
    今天我们还讲讲Consumer、Supplier、Predicate、Function这几个接口的用法,在Java8的用法当中,这几个接口虽然没有明目张胆的使用,但是,却是润物细无声的。为什么这么说呢?这几个接口都在java.util.function包下的,分别是Consumer(消费型)、supplier(供给型)、predicate(谓词型)、functi......
  • def __init__(self,parameterlist)初始化方法和def __functionName__(self,parameterl
    问题描述:def__init__(self,parameterlist)初始化方法和def__functionName__(self,parameterlist)实例方法,其中functionName是具体方法的名字,比如表示奔跑、或者狗叫的方法。对于上面这两种方法有什么区别?问题解答:在Python类中,__init__方法和其他实例方法(如__functionName_......
  • a regrex for function title
    正则表达式简明扼要,一行代码就能实现挺复杂的功能。deftitle(s):returnre.sub(rb"[A-Za-z]+('[A-Za-z]+)?",lambdamo:mo.group(0)[0:1].upper()+lambdamo:mo.group(0)[1:].lower(),s)解释正则表达式"[A-Za-z]+('[A-Za-z]+)?"的作用是匹配一个或多个英文字母(大小写......