#让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强化学习