前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >深度学习生成舞蹈影片01之MDN

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

作者头像
mixlab
发布2018-10-09 11:24:16
1.5K0
发布2018-10-09 11:24:16
举报
文章被收录于专栏:MixLab科技+设计实验室

阅读难度:★★★★☆

技能要求:机器学习基础

字数: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

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

本文分享自 无界社区mixlab 微信公众号,前往查看

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

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

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