[原创] 强化学习里的 on-policy 和 off-policy 的区别

转载需注明出处:https://www.codelast.com/

强化学习(Reinforcement Learning,简称RL)是机器学习的一个领域,刚接触的时候,大多数人可能会被它的应用领域领域所吸引,觉得非常有意思,比如用来训练AI玩游戏,用来让机器人学会做某些事情,等等,但是当你越往里看,就会发现跟传统机器学习相比,RL里面的名词简直太多了吧!多到完全可以绕晕人。比如RL里经常会提到的agent,environment,episode(rollout),policy,on-policy,off-policy,state,trajectory,reward,replay buffer,model-based,model-free,MD,TD,PG,AC,等等。强化学习的高手对这些词很熟悉,但对新手来说可能就很痛苦。
在RL领域,on-policy和off-policy是两个非常重要的概念,这两个词,把RL方法分成了两个类别。你可以从网上搜到很多很人提问on-policy的强化学习方法和off-policy的强化学习方法有什么区别,作为一个智商相当平庸的人,鬼知道我当初看了多少教程才认为自己大概搞清楚了它们之间的区别。
所以我在这篇文章里想把自己的肤浅理解分享出来,希望能帮助到少部分人。… Read More

[原创] 怎么理解DDPG(Deep Deterministic Policy Gradient)里的Deterministic

转载需注明出处:https://www.codelast.com/

DDPG(Deep Deterministic Policy Gradient,深度确定性策略梯度)是强化学习领域的一种知名算法。
如何理解其中的Deterministic(确定性)这个名词?
通俗地说,对一个状态(state)来说,根据这个state所采取的action有可能是带有随机性的。在两次与environment交互的时候,即使是一模一样的state,所采取的action也有可能不同,这就不是一种“确定性”的策略。
对一种“确定性”的策略来说,只要state相同,它给出的action必然相同。… Read More

[原创] 如何取出 tf.layers.dense 定义的全连接层的weight和bias参数值

转载需注明出处:https://www.codelast.com/

TensorFlow版本:1.14.0
Python版本:3.6.8

在TensorFlow中,tf.layers.dense 定义了一个全连接层,其实现的是(来自官方文档):

This layer implements the operation: outputs = activation(inputs * kernel + bias) Where activation is the activation function passed as the activation argument (if not None), kernel is a weights matrix created by the layer, and bias is a bias vector created by the layer (only if use_bias is True).

Read More

[原创] 如何打印出TensorFlow保存的checkpoint里的参数名

转载需注明出处:https://www.codelast.com/

TensorFlow版本:1.14.0
Python版本:3.6.8

checkpoint文件是TensorFlow保存出来的一种模型文件格式。通常save下来的时候会得到4个文件,例如:

checkpoint
model.ckpt-1.data-00000-of-00001
model.ckpt-1.index
model.ckpt-1.meta

如何查看这些文件里的模型参数名称呢?… Read More

[原创] tf.tile() 用法举例(TensorFlow)

转载需注明出处:https://www.codelast.com/

tile 的含义:

n. 瓦 / 瓷砖 / 软木片 / 亚麻油地毡片
v. 用瓦盖 / 贴砖于 / 铺以瓦 / 铺以瓷砖

函数定义:

def tile(input, multiples, name=None):

函数功能:

Constructs a tensor by tiling a given tensor.

即:通过“平铺”一个给定的 tensor 来构造一个新的 tensor。用人话讲就是:把输入的 tensor,在指定的维度上复制N遍(就像铺瓷砖一样),来创建出一个新的 tensor。
3个参数:
input:输入的tensor
multiples:在指定的维度上复制原tensor的次数
name:operation的名字
Read More

[原创] 如何减少map-only的Pig job的输出文件数

转载需注明出处:https://www.codelast.com/

如果一个Pig job是map-only的job,并且其输入文件数很多的话,那么输出的文件数也会同样多,此时,如果每个文件大小又比较小的话,长久下去就会对Haodoop NameNode造成很大压力。我们可以通过给Pig job添加一个reduce过程来减少输出文件数。… Read More

[原创] Apache Pig问题:Encountered IOException. org.apache.pig.tools.parameters.ParseException: Encountered ""

转载需注明出处:https://www.codelast.com/

查看本系列文章合集,请点击这里

运行Pig脚本时报错:

Error before Pig is launched
----------------------------
ERROR 2997: Encountered IOException. org.apache.pig.tools.parameters.ParseException: Encountered "<EOF>" at line 1, column 8.
Was expecting one of:
    <IDENTIFIER> ...
    <OTHER> ...
    <LITERAL> ...
    <SHELLCMD> ...
Read More

[原创] 重要性采样/Importance Sampling

转载需注明出处:https://www.codelast.com/

查看本系列文章合集,请点击这里

在前面的文章中,我们看到,随机采样是一个蒙特卡罗方法中很关键的步骤。而采样是需要技巧的,单纯地增加采样次数太没有效率了,比如说,如果随机采样一亿次,你可以把结果计算得特别精确,但是采样一亿次需要的时间非常长,长得远远超过了我们能接受的范围,这又有什么意义呢?
人们发现,有一些方法可以让随机采的样本“特别好”。那么什么算“特别好”呢?比如说,本来使用没有任何原则的采样方法,需要采样1万个点,才能让计算出来的结果很接近真实值;现在使用一个“特别好”的采样方法,可以让我们只需要采样100个点,就可以让计算出来的结果很接近真实值了,这样就极大地减少了计算量。… Read More

[原创] 蒙特卡罗算法 对比 拉斯维加斯算法

转载需注明出处:https://www.codelast.com/

查看本系列文章合集,请点击这里

  • 区别

讲到这里,稍微提一下,随机算法可以分为两类:蒙特卡洛算法 & 拉斯维加斯算法。
对蒙特卡洛算法来说,采样越多,越近似最优解
对拉斯维加斯算法来说,它永远给出正确解的随机化算法,总是给出正确结果,或是返回失败。… Read More

[原创] 蒙特卡罗方法的实例2:计算定积分

转载需注明出处:https://www.codelast.com/

查看本系列文章合集,请点击这里

为了对蒙特卡罗方法有一个直观的印象,本文再举一个实例(计算定积分),以说明蒙特卡罗方法的用途。

  • 什么是定积分

对于一个给定的正实值函数 f(x) ,它在一个实数区间 [a,b]上的定积分 \int_a^b {f(x)dx} 可以理解为在 OXY 坐标平面上,由曲线 (x,f(x))、直线 x=a,x=b以及x轴围成的曲边梯形的面积值。

Read More

[原创] 蒙特卡罗方法的定义、历史以及存在意义

转载需注明出处:https://www.codelast.com/

查看本系列文章合集,请点击这里

  • 定义

来自维基百科:

蒙特卡罗(洛)方法(Monte Carlo method),也称统计模拟方法,是1940年代中期由于科学技术的发展和电子计算机的发明,而提出的一种以概率统计理论为指导的数值计算方法。是指使用随机数来解决很多计算问题的方法。

也就是说,蒙特卡罗方法并不是指一种特定的算法,而是一类算法的总称,这种算法主要利用了“随机”来实现。… Read More

[原创] 用人话解释蒙特卡罗方法/Monte Carlo method(文章合集)

转载需注明出处:https://www.codelast.com/

蒙特卡罗(洛)方法(Monte Carlo method),也称统计模拟方法,是1940年代中期由于科学技术的发展和电子计算机的发明,而提出的一种以概率统计理论为指导的数值计算方法。是指使用随机数来解决很多计算问题的方法。… Read More

[原创] Flutter相关配置

转载请注明出处:https://www.codelast.com/
Flutter是什么?

Flutter是Google开源的移动应用程序SDK,一份代码可以同时生成iOS和Android两个高性能、高保真的应用程序。
Flutter目标是使开发人员能够交付在不同平台上都感觉自然流畅的高性能应用程序。我们兼容滚动行为、排版、图标等方面的差异。

在Ubuntu系统下,从零开始运行起来第一个Flutter程序不是那么容易的事情,有一些tricky的配置可能会浪费你很多时间。… Read More