深度学习生成舞蹈影片01之MDN

阅读难度:★★★★☆

技能要求:机器学习基础

字数:1136字

阅读时长:6分钟

视频内容

先案例一个Github的项目:

DanceNet

Dance generator using Variational Autoencoder, LSTM and Mixture Density Network.

自动生成舞蹈动作的深度网络,结合了变分自编码器VAE、LSTM 与混合密度网络MDN。该网络的主要思想即使用VAE生成单张舞蹈图片,并使用 LSTM 将这些舞蹈图片组合成一系列完整的动作,最后联合训练就能生成非常逼真的舞蹈动作。训练完成后,生成的舞蹈效果如下:

本文先介绍MDN:

点击即可GET知识卡片

1

用神经网络拟合任意连续函数

基本上所有的深度学习教程的第一课,都是让大家练习用神经网络拟合任意连续函数。例如tensorflow.js的练习之一:

Fitting a Curve to Synthetic Data

有兴趣可以自行练习下:

https://js.tensorflow.org/tutorials/fit-curve.html

我们如果要拟合:f(x) = 7.0sin(0.75x) + 0.5x,我们很容易通过定义一个包含一个隐藏层和20个节点的神经网络来拟合,结果如下:

如果把x轴跟y轴的数据对换下,再套用之前的神经网络进行拟合,效果并不理想:

x 可能会对应多个 y,我们不管增加多少层,增大多少节点数,都不能拟合多值函数曲线。上图这个是一个多值函数,每一个输入都至少会对应一个输出,而且有些会对应不止一个输出:

有什么办法可以拟合多值函数曲线呢?采用MDN可以很容易做得到。

2

深度混合密度模型

deep mixture density network

MDN

你也许会想,用神经网络输出多个值并不难,只要定义最后的输出层节点数大于 1 就可以了。是的,你可以定义一个多输出的网络(比如 3),然后每次输出 3 个预测值,然而这个网络的效果肯定是非常差的(你可以自己思考一下为什么)。

现在我们换一种思路——假如我们输出的不是一个值,而是目标值的一个可能分布,比如当 x=1 时,我们得到 y 有两个取值 { 1, -1 },并且每个取值的概率都是 0.5。使用这个思想设计的网络就叫混合密度网络Mixture Density Network:

早在1994年,Christopher M. Bishop就提出Mixture Density Networks,MDN 结合了常规的深度神经网络和高斯混合模型GMM,MDN的结构如上图所示:

neural network + mixture model

下面我们继续了解GMM。

3

高斯混合模型

Gaussian Mixed Model

指的是多个高斯分布函数(正态分布曲线)的线性组合。如下图所示的多个正态分布曲线,拟合出一个分布:

理论上GMM可以拟合出任意类型的分布。回到上文提到的多值函数,使用多个高斯分布的线性组合就可以拟合出来。

高斯分布

4

MDN的应用

MDN我们知道可以用来拟合多值函数后,还有哪些应用呢?除了上文的DanceNet使用了MDN,还可以用于手写字的生成,用连续的概率分布估计横、纵方向的位移,即MDN来估算下一笔的位移,采用的也是LSTM+MDN。

其他的一些应用:

4.1 解决天文学的星体测距问题

http://cbonnett.github.io/MDN.html

4.2 解决篮球轨迹预测问题

https://github.com/RobRomijnders/RNN_basketball

4.3 生成手写数字

https://github.com/rndbrtrnd/kadenze-deep-creative-apps/blob/master/final-project/glyphs-rnn.ipynb

参考资料:

http://blog.otoro.net/2015/11/24/mixture-density-networks-with-tensorflow

https://github.com/jsn5/dancenet

附上keras实现的MDN:

https://github.com/cpmpercussion/keras-mdn-layer

原文发布于微信公众号 - 无界社区mixlab(Design-AI-Lab)

原文发表时间:2018-08-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏自学笔记

The Optimization of the Adaboost and Gradient Boosted Decision Tree

再回到我们上篇文章讲到的Adaboost算法,我们要从Adaboost算法推导出GBDT。首先回顾一下上篇文章的Adaboost,主要思想就是把弱分类器集中起来...

972
来自专栏人工智能LeadAI

iOS 图片风格转换(CoreML)

前言 图片风格转换最早进入人们的视野,估计就是Prisma这款来自俄罗斯的网红App。他利用神经网络(多层卷积神经网络)将图片转换成为特定风格艺术照片。利用图片...

4548
来自专栏Deep learning进阶路

深度学习论文(八)---DeepLabV1-SEMANTIC IMAGE SEGMENTATION WITH DEEP CONVOLUTIONAL NETS AND FULLY CONNECTED C

注:本篇算是半讲解半翻译吧,我真的觉得这篇论文写的很难理解.......可能是我水平不够,也可能作者省略了一些具体信息,主要是提供了他的idea吧。 但是De...

8691
来自专栏州的先生

Python AI极简入门4:使用机器学习回归模型预测房价

2197
来自专栏ATYUN订阅号

使用Python实现无监督学习

人工智能研究的负责人Yan Lecun说,非监督式的学习——教机器自己学习,而不用被明确告知他们做的每一件事是对还是错——是实现“真”AI的关键。

1725
来自专栏ATYUN订阅号

【学术】在Google Sheet中创建深度神经网络

深度卷积神经网络并不像听起来的那样令人生畏。我将向你们展示我在Google Sheet中做的一个实现。复制它,你可以尝试一下,看看不同的因素如何影响模型的预测。...

3036
来自专栏数据处理

推导svm约束条件为等式求极值下面看看不等式约束,求极值,可行域变大了推导svmSVM—线性不可分—核函数

1884
来自专栏技术沉淀

KNN算法实现及其交叉验证

2853
来自专栏云时之间

深度学习与TensorFlow:FCN论文翻译(三)

We test our FCN on semantic segmentation and scene parsing, exploring PASCAL VOC...

2271
来自专栏小小挖掘机

推荐系统遇上深度学习(二)--FFM模型理论和实践

推荐系统遇上深度学习系列: 推荐系统遇上深度学习(一)--FM模型理论和实践 1、FFM理论 在CTR预估中,经常会遇到one-hot类型的变量,one-ho...

9394

扫码关注云+社区

领取腾讯云代金券