#让AI替你写代码, pix2code: 从图片生成前端代码, 用CNN+LSTM构建端到端网络

将来, AI会替你完成一部分项目代码, 也许就从简单的前端代码开始 — David 9

不久前Uizard 放出一篇有意思的论文(详见youtube上demo), 目标很简单: 试图从设计原型图直接生成源代码, 为了证实可行性, 文章的做法是, 首先从原型图生成DSL(领域专用语言):

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

左边是设计原型图, 右边是对应的DSL, 是描述了GUI的格式化语言. 如: 第一行有一个label和一个switch按钮.

剩下的只要把DSL语言编程成源代码即可 .

cd compiler

# compile .gui file to Android XML UI
./android-compiler.py <input file path>.gui

# compile .gui file to iOS Storyboard
./ios-compiler.py <input file path>.gui

# compile .gui file to HTML/CSS (Bootstrap style)
./web-compiler.py <input file path>.gui

最吸引David 9的, 其实是作者结合CNN与LSTM的方法. 我们知道, CNN擅长抽取图片特征, 而RNN擅长学习文本和序列规律, 只要把这两组”上下文”集成起来, 我们就有信心知道一张设计原型图的”语义”, 每个语义对应一个DSL, 最后根据DSL生成源代码即可.

来看看文章中的做法: 继续阅读#让AI替你写代码, pix2code: 从图片生成前端代码, 用CNN+LSTM构建端到端网络

独家 | GAN大盘点,聊聊这些年的生成对抗网络 : LSGAN, WGAN, CGAN, infoGAN, EBGAN, BEGAN, VAE

训练”稳定”,样本的”多样性”和”清晰度”似乎是GAN的 3大指标 — David 9

VAE与GAN

聊到随机样本生成, 不得不提VAEGAN, VAE用KL-divergence和encoder-decoder的方式逼近真实分布. 但这些年GAN因其”端到端”灵活性和隐式的目标函数得到广泛青睐. 而且, GAN更倾向于生成清晰的图像:

VAE与GAN生成对比

GAN在10次Epoch后就可以生成较清晰的样本, 而VAE的生成样本依旧比较模糊. 所以GAN大盘点前, 我们先比较一下VAE与GAN的结构差别:

VAE与GAN结构比较

VAE训练完全依靠一个假设的loss函数和KL-divergence逼近真实分布:

GAN则没有假设单个loss函数, 而是让判别器D生成器G之间进行一种零和博弈, 继续阅读独家 | GAN大盘点,聊聊这些年的生成对抗网络 : LSGAN, WGAN, CGAN, infoGAN, EBGAN, BEGAN, VAE

迈向强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之#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)

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论文精选#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 最佳论文奖@斯坦福)

CVPR 2017论文精选#3 不可思议的研究: EEG脑电波深度学习在视觉分类中的应用

大脑是天然的特征提取器, 如果不能理解它, 或许可以模拟它, 它蕴含的泛化能力真是惊人 — David 9

许多人相信VR或AR硬件可能是人机交互的未来,  这些欺骗人眼睛和感官的技术, 都是来源于我们对这些感官更深层次的理解. 越是对这些感官了解透彻, 越是容易创造出魔法般的人机交互. 今天David 9想要分析的论文就和感官交互有关, 特别之处是它是人体最复杂的感官 — 大脑 .

很难想象今年CVPR上竟然有这样一篇近乎科幻不可思议的研究, 相信读完你也会兴奋的.

这篇文章本质上的研究, 是从EEG脑电波提取视觉特征, 从而进行我们常见的视觉分类任务(狗? 吉他? 鞋子? 披萨?):

来自: https://www.youtube.com/watch?v=9eKtMjW7T7w&t=343s

最后一层全连接层做的视觉分类任务是非常常见的.

不同的是前面层不再是从头训练Alexnet, GoogleNet或者VGG, 也不是预训练的神经网络. 而是通过收集脑电波信息, 分析脑电波提取的抽象特征. 继续阅读CVPR 2017论文精选#3 不可思议的研究: EEG脑电波深度学习在视觉分类中的应用