摘要
本次演讲内容主要分为三个方面,首先会简单介绍一下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的方式。
这是写诗机器人写的一首“藏头诗”。
同样的模型还可以用于生成音乐。(播放音乐)
一点感受
最后是一点个人的心得体会:
因为深度学习的模型参数非常多,所以用这个模型可以做出很多出人意料的东西,不妨大胆的去尝试。
目前阶段的人工智能还有很大的局限性:人工智能适合做辅助,但不适合做决策;它适合用作专用用途,不适合作通用。
我今天的分享就到这里,谢谢大家!