首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

用于深度强化学习的结构化控制网络(ICML 论文讲解)

摘要:近年来,深度强化学习在解决序列决策的几个重要基准问题方面取得了令人瞩目的进展。许多控制应用程序使用通用多层感知器(MLP),用于策略网络的非视觉部分。在本工作中,我们为策略网络表示提出了一种新的神经网络架构,该架构简单而有效。所提出的结构化控制网(Structured Control Net ,SCN)将通用多层感知器MLP分成两个独立的子模块:非线性控制模块和线性控制模块。直观地,非线性控制用于前视角和全局控制,而线性控制围绕全局控制以外的局部动态变量的稳定。我们假设这这种方法具有线性和非线性策略的优点:可以提高训练效率、最终的奖励得分,以及保证学习策略的泛化性能,同时只需要较小的网络并可以使用不同的通用训练方法。我们通过OpenAI MuJoCo,Roboschool,Atari和定制的2维城市驾驶环境的模拟验证了我们的假设的正确性,其中包括多种泛化性测试,使用多种黑盒和策略梯度训练方法进行训练。通过将特定问题的先验结合到架构中,所提出的架构有可能改进更广泛的控制任务。我们采用生物中心模拟生成器(CPG)作为非线性控制模块部分的结构来研究运动任务这个案例,结果了表面的该运动任务的性能被极大提高。

02

干货 | 用于深度强化学习的结构化控制网络(ICML 论文讲解)

摘要:近年来,深度强化学习在解决序列决策的几个重要基准问题方面取得了令人瞩目的进展。许多控制应用程序使用通用多层感知器(MLP),用于策略网络的非视觉部分。在本工作中,我们为策略网络表示提出了一种新的神经网络架构,该架构简单而有效。所提出的结构化控制网(Structured Control Net ,SCN)将通用多层感知器MLP分成两个独立的子模块:非线性控制模块和线性控制模块。直观地,非线性控制用于前视角和全局控制,而线性控制围绕全局控制以外的局部动态变量的稳定。我们假设这这种方法具有线性和非线性策略的优点:可以提高训练效率、最终的奖励得分,以及保证学习策略的泛化性能,同时只需要较小的网络并可以使用不同的通用训练方法。我们通过OpenAI MuJoCo,Roboschool,Atari和定制的2维城市驾驶环境的模拟验证了我们的假设的正确性,其中包括多种泛化性测试,使用多种黑盒和策略梯度训练方法进行训练。通过将特定问题的先验结合到架构中,所提出的架构有可能改进更广泛的控制任务。我们采用生物中心模拟生成器(CPG)作为非线性控制模块部分的结构来研究运动任务这个案例,结果了表面的该运动任务的性能被极大提高。

03

leetcode-43. 字符串相乘

这道题的思路是让一个字符串每个字符与另一个字符串的每一个字符相乘,该进位就进位,该补 0 就补 0,每一次相乘后将结果相加,加到最终就是相乘的结果。   若两个字符串任一为 0,则相乘结果就是 0,直接返回 0 即可。定义一个储存结果集的变量,按照题目要求是字符串,分别求出两个字符串的长度,对 num2 从右边开始遍历,因为右边是低位,定义一个可拼接的 StringBuffer 类型的变量,定义一个储存进位值的变量,i 向左移动是向高位移动,移动几位就要补几个零,读取每一个字符与 ‘0’ 作差得到整形的结果,这是因为 ASCII 码值的字符 ‘0’~‘9’ 是紧挨着的。 同样的,对 num1 从低位进行遍历,先获取字符对应的整形值,两整形相乘加上上一个进位,将结果对 10 求余,得出个位的值,十位的当进位处理,并将结果除以 10 取整,相当于只获取了十位的值,最后的进位是当新的一位处理,直接拼接即可,以上各种拼接后,数值大的在右边,而现实的数,数值大的在右边,所以需要进行一次反转,调用字符串相加的算法得出结果后加入结果集,最后返回最终结果集即可。   字符串相加的算法:思路是将其每个字符转换成整型相加得出结果再转换成字符串。首先获取传进来的两个字符串的长度,且定义一个保存进位的 add 变量,定义结果集,只要以上三个变量不为任一一个不为 0 都能进入循环,只要 num1 或者 num2 的长度不为 0 则进行取值。这里的 num1.charAt(i) - '0' 主要是利用字符 ‘0’ 到 ‘9’ 的 ASCII 码值是连续的,让其作差即可得到字符的本身的整型值。   取完值,两字符串相加再加上上一步的进位,对结果求余作为本次运算的结果,再对结果除以 10 获得进位的值,同步维护两个指针,最后要记得将答案反转一下,因为拼接字符串是从左到右拼接的,但是我们的数是从又到左数值越大的,返回最终答案,记得 toString 变成 String 类型。

04

leetcode-415. 字符串相加

这道字符串相加的思路是将其每个字符转换成整型相加得出结果再转换成字符串。首先获取传进来的两个字符串的长度,且定义一个保存进位的 add 变量,定义结果集,只要以上三个变量不为任一一个不为 0 都能进入循环,只要 num1 或者 num2 的长度不为 0 则进行取值。这里的 num1.charAt(i) - '0' 主要是利用字符 ‘0’ 到 ‘9’ 的 ASCII 码值是连续的,让其作差即可得到字符的本身的整型值。   取完值,两字符串相加再加上上一步的进位,对结果求余作为本次运算的结果,再对结果除以 10 获得进位的值,同步维护两个指针,最后要记得将答案反转一下,因为拼接字符串是从左到右拼接的,但是我们的数是从又到左数值越大的,返回最终答案,记得 toString 变成 String 类型。

03

python中的变量

什么是变量?总结不好也记不得它的完整定义,就举个例子来便于自己学习总结吧。假如我们要计算1+2的值,那么首先在内存中要存储两个值,一个是:1,一个是:2。内存中有了这两个值,计算的时候就会找到它们进行计算。但是我们可能是计算任意两个数相加,数学中我们常用 x+y 来表示两个任意的数相加。假如在程序中我们用a+b来表示两个数相加,那么当a=1,b=2时,就可以计算出1+2=3,此时这个a和b就是变量,它们也可以等于其他数值,结果也是随着数值的改变而改变的。a和b的值能变动,就叫变量。刚才说了内存中存了1和2,那么a和b与内存中的1和2有什么联系呢,可以理解为a=1,b=2就是把内存中的1取个名字叫a,内存中的2取个名字叫b。这样按名字就能找到它的值了。

01
领券