PyTorch实现Policy Gradient

Reinforcement Learning

先来回忆一下几个变量的定义,Policy Gradient的关键是通过Gradient来更新Policy $$\theta_{k+1} = \theta_{k} + a \nabla _{\theta}J(\pi_{\theta})|_{\theta_k}$$ 其中$\pi_{\theta}$是参数话的policy,$\theta$是它的系数,$J(\pi_{\theta})$用来衡量当前policy $\pi_{\theta}$的性能,咱们这里用$\pi_{\theta}$的期望收益$E_{\tau \sim \pi_{\theta}}[R(\tau)]$作为policy的性能,$R(\tau)$表示一局游戏的收益,$\tau \sim \pi_{\theta}$表示是在当前policy $\pi_{\theta}$下。 $\nabla _{\theta}J(\pi_{\theta})$等于下面这一串 $$\nabla _{\theta}J(\pi_{\theta}) = E_{\tau \sim \pi_{\theta}} \left [ \sum_{t=0}^{T} \nabla_{\theta} […]

Policy Gradient

Base, Reinforcement Learning

Q Learning 先学到一个value function,之后基于value function可以得到最优的policy。那Policy Gradient名字已经很直白了,直接对Policy进行建模,就很直接。 我们来看下原始论文是怎么推导的。

KL divergence

Uncategorized

KL divergence (Kullback-Leibler divergence)用来衡量两个分布的差异,一般标记为$D_{KL}(P||Q)$,离散形式的计算公式是 $$D_{KL}(P||Q) = \sum_{x\in\chi}P(x) \log \frac{P(x)}{Q(x)}$$ 从公式上看,它计算的是$P(x)$和$Q(x)$的log差的均值,$x$服从$P(x)$分布,因为$\log \frac{P(x)}{Q(x)} = \log P(x) – \log Q(x)$。 在通信领域它叫相对熵(relative entropy),在机器学习任务中可以通过最小化KL divergence来学习目标分布$P(x)$,不够我们更常用的是交叉熵(Cross Entropy),把KL divergence公式展开就可以得到交叉熵的计算公式 $$D_{KL}(P||Q) = \sum_{x\in\chi}P(x) \log \frac{P(x)}{Q(x)} = […]