迈向强AI, OpenAI进化策略算法ES (Evolution Strategy)代替传统RL强化学习

一切高级智能的优化过程, 要有尽可能少的人为干预, 也许有一天人们会明白, 强AI的实现是人类放弃”自作聪明”的过程 — David 9

Deepmind拓展深度学习的边界, OpenAI似乎对强AI和强化学习更有执念, 前些时候的进化策略算法(Evolution Strategy,以下简称ES算法) 在10分钟内就能训练一个master级别的MuJoCo 3D行走模型:

来自: https://blog.openai.com/evolution-strategies/

着实给了Deepmind强化学习一个下马威.

ES算法摒弃了强化学习在行动Action域的惯性思维, 复兴了与遗传算法同是80年代的进化策略算法思路。达到了目前强化学习也能有实验结果. 先来看看ES和遗传算法的异同:

没错, 像上面指出的, ES算法和遗传算法的思路非常相似, 只是前者适用于连续空间, 后者更适用于离散空间.

那么ES算法RL强化学习又有什么差别呢 ? 继续阅读迈向强AI, OpenAI进化策略算法ES (Evolution Strategy)代替传统RL强化学习

CVPR 2017之#CNN论文精选, PointNet:端到端3D图像(点集)分类与分割

计算机科学很大程度上是权衡“现实”和“理想”的方法学 — David 9

3D图像的分类与分割问题,虽然理想上可以用3D卷积构造深度网络,但事实上, 其巨大计算开销不允许我们直接使用卷积对3D云图集进行训练.  试想2D卷积(GoogleNet, ResNet, Alexnet)训练时间就已经让人捉急了, 何况样本是3D云图:

幸运的是现实再残酷, 人类总能找到暂时解决问题的方法, PointNet就是一个权宜之计:它实现端到端3D图像(点集)分类与分割:

论文不使用3D卷积, 而是用深度网络模拟通用对称函数

来自:https://arxiv.org/pdf/1612.00593.pdf

输入总共n个点的无序云图点集({x1,x2 … , xn}), 通用函数f 输出该云图分类(汽车,书桌,飞机)。 继续阅读CVPR 2017之#CNN论文精选, PointNet:端到端3D图像(点集)分类与分割

CVPR 2017之#RNN论文精选, 小数据学习: 基于关注点的循环比较器(Attentive Recurrent Comparators)

“小数据”激发我们从人类学习本质的角度思考问题. — David 9

如果要得到生成模型分类模型, 我们可以用GAN或CNN等深度网络. 而对于”小数据“我们往往要换一种思路, 利用RNN的”记忆”能力在图片中反复”琢磨”图像的线条等特征:

来自: https://github.com/sanyam5/arc-pytorch

通过反复寻求好的”关注点”, 我们用一张样本图片, 就能比较新图片与之差异, 以及和原图片是同一个文字的可能性. 这正是所谓的one shot learning, 即, 从一个样本学习到该样本的整个类. 没错 , “小数据”的泛化能力真是惊人 ! 甚至击败了KNNSIAMESE NETWORK等传统相似度比较方式。 继续阅读CVPR 2017之#RNN论文精选, 小数据学习: 基于关注点的循环比较器(Attentive Recurrent Comparators)

OpenFace手把手入门之 — 快速训练一个人脸识别模型,比一比你像哪个明星,亲测可用,python torch lua

OpenFace是一款优秀的开源深度学习人脸识别库。如果你熟悉torch,python或者lua,这款丰富的人脸识别库更是一款不可多得的工具。

今天David 9 就带大家手把手训练一个人脸识别模型,测试一下你像哪个明星?

1.  下载openface的docker镜像,免去你配置openface的过程:

docker pull bamos/openface

2. 跑这个docker镜像,进入项目目录:

docker run -v /Users:/host/Users -p 9000:9000 -p 8000:8000 -t -i bamos/openface /bin/bash
cd /root/openface

注意 -v /Users:/host/Users 这个参数是必要的。因为docker中的openface项目还没有训练数据集,把你本地的/Users目录挂载到docker镜像中的/host/Users目录,可以方便你复制一些用于训练的图片数据集。 继续阅读OpenFace手把手入门之 — 快速训练一个人脸识别模型,比一比你像哪个明星,亲测可用,python torch lua

KDD 2017精选#1 用”模仿和类比”挖掘加速创新 , GRU循环神经网络新用法(Best paper award 最佳论文奖)

An essential [of an inventor] is a logical mind that sees analogies. — Thomas Edison

很难想象如果所有创新工作交给AI去做, 人类存在的意义是什么?

今年KDD2017最佳论文(Accelerating Innovation Through Analogy Mining) 向这个方向迈进了一步. 作者试图从庞大的专利和文献库中, 挑选出可以激发发明者灵感的想法, 呈现给发明者(USPTO上就有900万多的专利)

如对于一个带电池的手机壳的初始idea:

来自: https://arxiv.org/pdf/1706.05585.pdf

通过”模仿和类别“挖掘, 模型可以搜索并提供下面idea的提示, 呈现给发明者:

上图是一个Flash充电时的卡扣装置, 和一个自带电源的USB插座, 都是对比模仿初始idea从庞大文献中找出的两个类似idea.

最后, 一个发明人看到以上这些启发和提示, 发明出了以下产品:

来自: https://arxiv.org/pdf/1706.05585.pdf

一个履带式的发电器, 戴在身上, 人体移动时, 就可以发电蓄电. 可见, 模型做出的前两个发明提示对发明者有一定的帮助. (模型给出了不完全相似但是很相关的启发) 继续阅读KDD 2017精选#1 用”模仿和类比”挖掘加速创新 , GRU循环神经网络新用法(Best paper award 最佳论文奖)

ICML 2017论文精选#2 用”策略草稿”进行模块化的多任务增强学习

人类日常行为中自觉或不自觉地总结抽象的”套路”, 以便将来在相同的情况下使用.  分层的增强学习正是研究了在较高的抽象任务中, 应该如何看待以前总结的”套路”, 并且如何在较低层的行为中使用它们. — David 9

正如我们之前提到过, 深度神经网络的迅速发展, 不会阻碍类似增强学习这样的高层学习框架发展, 而是会成为高层框架的重要底层支撑.

今年ICML最佳论文提名中的一篇(Modular Multitask Reinforcement Learning with Policy Sketches), 正是属于分层增强学习: 用”策略草稿“进行模块化的多任务增强学习.

说的通俗一点, 就是教会神经网络学习在各个不同的任务中总结通用的”套路”(或者说策略草稿,行为序列):

来自: https://arxiv.org/pdf/1611.01796.pdf

上图左右两图, 分别代表两个高层任务(“制作木板”(make planks) 和 “制作木棍”(make sticks)). 事实上, 这两个高层任务的完成, 都需要一个子策略π1的必要条件, 即  : 我们需要首先拿到木材 ! 继续阅读ICML 2017论文精选#2 用”策略草稿”进行模块化的多任务增强学习

TensorFlow如何充分使用所有CPU核数,提高TensorFlow的CPU使用率,以及Intel的MKL加速

许多朋友使用服务器时,碰巧服务器没有安装GPU或者GPU都被占满了。可是,服务器有很多CPU都是空闲的,其实,把这些CPU都充分利用起来,也可以有不错的训练效果。

但是,如果你是用CPU版的TF,有时TensorFlow并不能把所有CPU核数使用到,这时有个小技巧David 9要告诉大家:

with tf.Session(config=tf.ConfigProto(
  device_count={"CPU":12},
  inter_op_parallelism_threads=1,
  intra_op_parallelism_threads=1,
  gpu_options=gpu_options,
)) as sess:

在Session定义时,ConfigProto中可以尝试指定下面三个参数: 继续阅读TensorFlow如何充分使用所有CPU核数,提高TensorFlow的CPU使用率,以及Intel的MKL加速

ICML 2017论文精选#1 用影响函数(Influence Functions)理解机器学习中的黑盒预测(Best paper award 最佳论文奖@斯坦福)

无论是机器学习还是人类学习,似乎一个永恒的问题摆在外部指导者的面前:“我究竟做错了什么使得它(他)的学习效果不理想?” — David 9

之前我们提到过,端到端学习是未来机器学习的重要趋势。

可以想象在不久的将来,一切机器学习模型可以精妙到酷似一个“黑盒”,大多数情况下,用户不再需要辛苦地调整超参数,选择损失函数,尝试各种模型架构,而是像老师指导学生一样,越来越关注这样一个问题:我究竟做错了什么使得它的学习效果不理想?是我的训练数据哪里给的不对?

今年来自斯坦福的ICML最佳论文正是围绕这一主题,用影响函数(influence functions)来理解机器模型这一“黑盒”的行为,洞察每个训练样本对模型预测结果的影响。

文章开篇结合影响函数给出单个训练样本 z 对所有模型参数 θ 的影响程度 的计算:

其中 ε 是样本 z 相对于其他训练样本的权重, 如果有 n 个样本就可以理解为 1/n 。

Hessian二阶偏导矩阵, 蕴含所有训练样本(总共 n 个)对模型参数θ 的影响情况.

而梯度

蕴含单个训练样本 z模型参数 θ 的影响大小. 继续阅读ICML 2017论文精选#1 用影响函数(Influence Functions)理解机器学习中的黑盒预测(Best paper award 最佳论文奖@斯坦福)

迁移学习101: Transfer learning, pretrained learning, fine tuning 代码与例程分析 源码实践

目前的迁移学习太粗浅, 归因于我们对表征的理解太粗浅. 但这是一个好方向, 如果我们能从”迁移学习”上升到”继承学习”, 任何模型都是”可继承”的, 不用担心今天的模型到了明天就毫无用处, 就像人类的基因一代代地演变, 是不是会有点意思 ? — David 9

太多初学者总是混淆迁移学习预训练模型, David 9一直想为大家区分两者, 其实迁移学习预训练并不难区分:

  1. 把模型的所有参数保存起来, 都可以宽泛地叫做预训练, 所以预训练比迁移学习宽泛的多. 我们并不设限预训练的保存模型未来的用处 (部署 or 继续优化 or 迁移学习)
  2. 把预训练的模型用在其他应用的训练可以称为迁移学习. 

迁移学习(Transfer learning) 的原理相当简单:

如上图, 复用之前预训练的复杂深度网络(第一行大蓝框), 我们复用倒数第二层对图像的输出特征作为新的训练输入.

使用这个输入, 我们再训练一个迷你的浅层网络(第二行绿底网络), 就可以应用在其他领域. 继续阅读迁移学习101: Transfer learning, pretrained learning, fine tuning 代码与例程分析 源码实践