Tensorflow 在艺术创作领域应用

内容来源:2017年8月12日,TensorFlow中文社区创始人黄琨在“网易博学实践日:大数据与人工智能技术大会”进行《Tensorflow 在艺术创作领域应用》演讲分享。IT 大咖说(ID:itdakashuo)作为独家视频合作方,经主办方和讲者审阅授权发布。

阅读字数:2120 | 6分钟阅读

获取嘉宾演讲视频回放及PPT,请点击:http://t.cn/Rk0aLkG

摘要

本次演讲内容主要分为三个方面,首先会简单介绍一下Tensorflow,然后简单讲解可以用Tensorflow实现的深度神经网络算法,之后再介绍这些算法的一个有趣应用场景,也就是generative model与艺术创作。

Tensorflow简介

Tensorflow是Google开源的一个通用计算框架,当然它最有特色的地方就是擅长做机器学习方面的应用,这集中反映在它对Tensor运算的处理能力上。

Tensor在机器学习问题中是数据或模型参数的表达形式。Tensor主要擅长三类操作,第一种是对一组变量做完全相同的处理,也就是元素(批量)操作;另一类是对样本数据做完全相同的批处理,这可以看作是元素(批量)操作的一种;还有就是线性运算。一个“神经元”的典型计算单元如下图所示:

正是因为在我们的机器学习中遇到的运算通常都是这种类型的,所以我们会用Tensor来表达所遇到的数据和参数变量。

有了Tensor的概念之后,我们就可以来讨论一下Tensorflow的编程模式。

Tensorflow的编程模式就像接水管的游戏,有“进水口”和“出水口”,中间有一些“管道”,我们通过调整这些“管道”结构把它们连通起来。调整好之后拧开“水龙头”,让“水流”顺利地从“进水口”流到“出水口”。

这里的“水流”就是Tensor,“管道”就相当于对数据的流式操作。也就是说在编程中分为两步,第一步是连接“管道”,第二步就是打开“水龙头”,让Tensor真正地运行起来。

可视化分析工具

下面我们来看一下Tensorflow集成的另一个很好用的工具Tensorboard。因为它非常直观,所以它对于我们分析神经网络的拓扑结构以及研究具体算法,或者debug是有帮助的。

Tensorboard还提供了其它功能,比如可以用它来绘制二维图表,也可以用于展示我们训练的数据。

Tensorflow其它特点

支持多核(CPU、GPU)计算;

支持分布式计算(Tensorflow+Kubernetes);

易学性:和numpy,theano等有相似性;

通用性:low/high-level function,跨平台,便于产品化;

易用性:Keras,tf.contrib.(learn,seq2seq等)

社区活跃性。

小结

Tensorflow是一个足够好的平台,或者说它提供了一个足够完整的开发生态。它有足够多的“轮子”,让我们可以专注于研究具体应用、具体算法。

Deep Learning:神经网络算法概述

深度学习的基本思想其实就是数据“拟合”:

但和传统的“拟合”问题相比,其运算规模非常庞大:

数据量级:我们最常用的Imagent中有14197122张图片,即使是入门级的MNIST也有60000多张图片。

参数量级:以比较有名的VGG model为例,它里面有138000000个参数。

怎样寻找最优解

在实际的工程算法中,找模型最小值一般采用的是梯度下降法。我们可以把cost function相对于模型参数的关系看作一个曲面,在这个曲面上任意取一点,假设在这一点上放个小球,在迭代运算中,每向前迭代一步,小球就朝着下坡的方向滚动一点。经过多次迭代,就可以找到整个系统的最小值。

由于参数量级非常大,为了系统地找到并改变参数,因此深度学习中有所谓的“逆传播”机制,它本质上其实就是微分“链式”法则而已。

SGD的局限性

梯度下降算法第一个问题就是,cost function对应的曲面可能不止一个极小值的点,这是它局部极小值的“陷阱”。我们在实际训练模型的时候经常会遇到这种问题。

第二个问题就是如果模型参数是离散值的话,例如binary network,也就是说模型当中的参数只能是0或者1,在这种情况时梯度下降算法也会失效。

机器学习中有不少研究工作是围绕这些问题展开的。在不久的将来,类似于“d-wave”这样的量子计算机也许能系统地克服梯度下降算法的局限性。

神经网络基本条件

最早期流行的是玻尔兹曼机,现在卷积神经网络如日中天,还有比较流行的是递归神经网络。卷积神经网络有一些变种,像fractional cnn和diated cnn。递归神经网络也有更精致的版本LSTM等。

神经网络高阶模型

利用这些基本构件,我们能构造出一些高阶模型,例如:

小结

实现深度神经网络需要两步。第一步是通过一些基本构件来构建一个高阶模型,用于描述理论概分布。然后通过梯度下降算法之类的方法找到模型的最优解。

generative model与艺术创作

上图中利用的是VGG Network,它定义了一个cost function。比如有两张图片A和B,cost function其中有一项可以衡量A的内容,另一项可以衡量B的风格,通过解决最优化问题就可以得到上图中所展示的效果。

下面我们简单介绍一下“生成对抗神经网络”模型:

如图所示,假如一个建筑师用不同色块来标记他想要做的事情,然后只要画一张基本的色块草图,就可以用机器自动生成一张高保真的实景图效果。也可以让画家勾勒出一个画的轮廓,用机器生成一个漂亮的图像,这对于设计师来说是一件非常好的事情。它还能给图片上色,效果也很不错。

这个模型的基本原理如图所示:

下面我们介绍另一个生成模型在文学创作方面的应用,写诗机器人:

写诗机器人的训练数据是全唐诗,在生成样本的时候采用了beam search的方式。

这是写诗机器人写的一首“藏头诗”。

同样的模型还可以用于生成音乐。(播放音乐)

一点感受

最后是一点个人的心得体会:

因为深度学习的模型参数非常多,所以用这个模型可以做出很多出人意料的东西,不妨大胆的去尝试。

目前阶段的人工智能还有很大的局限性:人工智能适合做辅助,但不适合做决策;它适合用作专用用途,不适合作通用。

我今天的分享就到这里,谢谢大家!

你可能感兴趣的:(Tensorflow 在艺术创作领域应用)