前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >艺术领域中的Tensorflow应用

艺术领域中的Tensorflow应用

作者头像
IT大咖说
发布2018-04-03 18:01:25
9220
发布2018-04-03 18:01:25
举报
文章被收录于专栏:IT大咖说IT大咖说

摘要

本次演讲内容主要分为三个方面,首先会简单介绍一下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的方式。

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

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

一点感受

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

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

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

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-10-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT大咖说 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档