0%

PPO

TRPO的最终替代函数为:

因为用到了重要性采样,保留了之前策略的动作与状态分布,CPI(Conservation Policy Iteration)保留策略迭代。

记概率比值$r_t(\theta) = \frac{\tilde\pi_\theta(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t) }$,得到$L^{CPI}(\theta)=\mathbb{E}_t\big[ r_t(\theta)A_t\big]$

问题

没有约束条件的话,最大化$L^{CPI}$会导致大幅度的策略更新,因此要想办法通过改变目标函数,来对那些$r_t(\theta)$项离1很远的情况进行惩罚。

阅读全文 »

TRPO

重要性采样

原理:

$\mathbb{E}_{x \sim p(x)}[f(x)] = \int p(x)f(x)\, {\rm d}x = \int q(x)\frac{p(x)}{q(x)}f(x)\,{\rm d}x = \mathbb{E}_{x \sim q(x)}[\frac{p(x)}{q(x)}f(x)] $

从q(x)中采样来替代从p(x)中采样

修改:

应用到目标函数

$ J(\theta) = \mathbb{E}_{\tau \sim p_{\theta}(\tau)}[r(\tau)] = \mathbb{E}_{\tau \sim p_{\theta^{old}}(\tau)}\bigg[\frac{p_{\theta}(\tau)}{p_{\theta^{old}}(\tau) }r(\tau)\bigg]$

比值项

$\frac{p_{\theta}(\tau)}{p_{\theta^{old}}(\tau)} = \frac{p(s_{1})\prod \limits_{t=1}^{T}\pi_{\theta}(a_{t}|s_{t})p(s_{t+1}|s_{t},a_{t})}{p(s_{1})\prod \limits_{t=1}^{T}\pi_{\theta^{old}}(a_{t}|s_{t})p(s_{t+1}|s_{t},a_{t})} = \frac{\prod \limits_{t=1}^{T}\pi_{\theta}(a_{t}|s_{t})}{\prod \limits_{t=1}^{T}\pi_{\theta^{old}}(a_{t}|s_{t})}$

得出

$\nabla_{\theta}J(\theta) = \mathbb{E}_{\tau \sim p_{\theta}(\tau)}\bigg[\sum \limits_{t=1}^{T} \nabla_{\theta} log \pi_{\theta}(a_t|s_t)\bigg(\prod \limits_{t’=1}^{t} \frac{\pi_{\theta}(a_{t’}|s_{t’})}{\pi_{\theta^{old}}(a_{t’}|s_{t’})}\bigg)\bigg(\sum \limits_{t’ =t}^{T}r(s_{t’},a_{t’})-b\bigg)\bigg]$

连乘可能趋于0’

阅读全文 »

《Graph Convolutional Policy Network for Goal-Directed Molecular Graph Generation》

GCPN

应用目标导向

  1. 分子空间大:$10^{60}$
  2. 化学空间离散,分子性质对微小的结构改变也很敏感

GCPN

  1. 图卷积策略网络,引导生成特定期望目标同时用基本化学规则限制输出空间
  2. 图表示+强化学习+对抗训练
阅读全文 »

策略梯度方法推导

轨迹$\tau = (s_{0},a_{0},…,s_{h},a_{h})$

目标:找到最优神经网络参数$\theta^{*}$最大化收益关于轨迹分布的期望

$\theta^{*}=\mathop{\arg\max}\limits_{\theta} \mathbb{E}_{\tau \sim p_{\theta}(\tau)}\bigg[\sum\limits_{t}r(s_{t},a_{t})\bigg]$

目标函数 $J(\theta)=\mathbb{E}_{\tau\sim p_{\theta}(\tau)}\bigg[\sum\limits_{t}r(s_t,a_t)\bigg]$

定义轨迹收益$r(\tau)=\sum\limits_t r(s_t,a_t)$,目标函数变成$J(\theta)=\mathbb{E}_{\tau\sim p_{\theta}(\tau)}[r(\tau)]$

阅读全文 »

Morris中序遍历

中序遍历

二叉树的中序(inorder)遍历,也就是二叉树最平常的遍历算法。对于树中每个节点,递归遍历左子树,之后遍历本节点,最后遍历右子树。其中分为迭代与递归两种等价写法,迭代实现需要手动维护一个节点栈。

这个遍历算法的时间复杂度为$O(N)$,其中N为二叉树的节点数,空间复杂度为$O(N)$(若用数组存储遍历序列),或$O(H)$,$H$为二叉树高度(用迭代实现,栈中存储结点)。

然而,存在一个常数空间算法来解决这个问题:

Morris 遍历

阅读全文 »

回文对问题

题目

给定一组 互不相同 的单词, 找出所有不同 的索引对(i, j),使得列表中的两个单词, words[i] + words[j] ,可拼接成回文串。

示例 1:

1
2
3
>输入:["abcd","dcba","lls","s","sssll"]
>输出:[[0,1],[1,0],[3,2],[2,4]]
>解释:可拼接成的回文串为 ["dcbaabcd","abcddcba","slls","llssssll"]

示例 2:

1
2
3
>输入:["bat","tab","cat"]
>输出:[[0,1],[1,0]]
>解释:可拼接成的回文串为 ["battab","tabbat"]
阅读全文 »

leetcode 207 课程表

题目

你这个学期必须选修 numCourse 门课程,记为 0 到 numCourse-1 。

在选修某些课程之前需要一些先修课程。 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们:[0,1]

给定课程总量以及它们的先决条件,请你判断是否可能完成所有课程的学习?

阅读全文 »

博客终于配置得差不多,就随便写一些测试一下

最近有些闲下来了,为了防止自己报复性娱乐,开个博客提醒着。提醒自己弄弄专业,提醒自己多做事少想事。这段时间应该会多写点东西,毕竟还有个新鲜劲。不管以后还会不会有兴趣、精力,现在做事总是好的。

计算机系统大作业——Hello的一生

摘 要

本文以hello.c为例,探寻程序由代码一步步经过预处理、编译、链接、之后成为进程,并被系统进行管理的过程。从而窥探程序由出生到死去的过程中,计算机系统各个部分是如何协调工作的,随着hello.c的一步步变化逐渐理解机器的运行机制。

关键词:计算机系统;P2P;程序运行全过程;

阅读全文 »