教你用深度学习LSTM网络预测流行音乐趋势(附代码)

一、 LSTM网络原理


1.1 要点介绍

  • LSTM网络用来处理带“序列”(sequence)性质的数据。比如时间序列的数据,像每天的股价走势情况,机械振动信号的时域波形,以及类似于自然语言这种本身带有顺序性质的由有序单词组合的数据。 
  • LSTM本身不是一个独立存在的网络结构,只是整个神经网络的一部分,即由LSTM结构取代原始网络中的隐层单元部分。 
  • LSTM网络具有“记忆性”。其原因在于不同“时间点”之间的网络存在连接,而不是单个时间点处的网络存在前馈或者反馈。如下图2中的LSTM单元(隐层单元)所示。图3是不同时刻情况下的网络展开图。图中虚线连接代表时刻,“本身的网络”结构连接用实线表示。 


1.2 LSTM单元结构图 

图4,5是现在比较常用的LSTM单元结构示意图: 

其主要结构成分包含如下: 

  • 输入节点input node:接受上一时刻隐层单元的输出及当前时刻是样本输入; 
  • 输入门input gate:可以看到输入门会和输入节点的值相乘,组成LSTM中internal state单元值的一部分,当门的输出为1时,输入节点的激活值全部流向internal state,当门的输出为0时,输入节点的值对internal state没有影响。 
  • 内部状态internal state。 
  • 遗忘门forget gate:用于刷新internal state的状态,控制internal state的上一状态对当前状态的影响。 

各节点及门与隐藏单元输出的关系参见图4,图5所示。

二、代码示例

后台回复关键词“音乐”,下载完整代码及数据集

运行环境:windows下的spyder 
语言:python 2.7,以及Keras深度学习库。

由于看这个赛题前,没有一点Python基础,所以也是边想思路边学Python,对Python中的数据结构不怎么了解,所以代码写得有点烂。但整个代码是可以运行无误的。这也是初赛时代码的最终版本。

2.1 示例介绍 

主要以今年参加的“2016年阿里流行音乐趋势预测”为例。 

时间过得很快,今天已是第二赛季的最后一天了,我从5.18开始接触赛题,到6.14上午10点第一赛季截止,这一期间,由于是线下赛,可以用到各种模型,而自已又是做深度学习(deep learning)方向的研究,所以选择了基于LSTM的循环神经网络模型,结果也很幸运,进入到了第二赛季。开始接触深度学习也有大半年了,能够将自已所学用到这次真正的实际生活应用中,结果也还可以,自已感觉很欣慰。突然意识到,自已学习生涯这么多年,我想“学有所成,学有所用”该是我今后努力的方向和动力了吧。 

下面我简单的介绍一下赛题: 

官方给的“输入”,共两张表:

  • 一张是用户行为表(时间跨度20150301-20150830)mars_tianchi_user_actions,主要描述用户对歌曲的收藏,下载,播放等行为;
  • 一张是歌曲信息表mars_tianchi_songs,主要用来描述歌曲所属的艺人,及歌曲的相关信息,如发行时间,初始热度,语言等。 

样例: 

样例: 

官方要求“输出”:预测随后2个月(20150901-20151030)每个歌手每天的播放量。输出格式: 

2.2 初赛所用模型思路 


由于是对歌手的播放量进行预测,所以直接对每个歌手的“播放量”这一对象进行统计,查看在20150301-20151030这8个月内歌手的播放量变化趋势,并以每天的播放量,连续3天的播放均值,连续3天的播放方差,作为一个时间点的样本,“滑动”构建神经网络的训练集。网络的构成如下: 

  • 输入层:3个神经元,分别代表播放量,播放均值,播放方差; 
  • 第一隐层:LSTM结构单元,带有35个LSTM单元; 
  • 第二隐层:LSTM结构单元,带有10个LSTM单元; 
  • 输出层:3个神经元,代表和输入层相同的含义。 

目标函数:重构误差。 

下图是某些歌手的播放统计曲线: 


2.2 预测结果 


蓝色代表歌手真实的播放曲线,绿色代表预测曲线: 

原文发布时间为:2017-12-11

时间: 2024-09-28 14:40:03

教你用深度学习LSTM网络预测流行音乐趋势(附代码)的相关文章

《中国人工智能学会通讯》——第3章 3.1基于深度学习的网络表示研究进展

第3章 3.1基于深度学习的网络表示研究进展 网络结构在现实世界中无处不在(如航线网络.通信网络.论文引用网络.世界万维网和社交网络等),在此基础之上的应用和研究问题受到了学术界和工业界的广泛关注,这些研究问题包括链接预测[1] .网络节点分类 [2-3] .推荐 [4]和异常检测[5]等.随着计算机信息技术的高速发展和迅速普及,现实世界中的网络结构,尤其是以 Twitter.Facebook和 Weibo 为代表的大规模社交网络进入了亿级节点时代.除网络结构之外,网络节点自身也会产生大量的相关

2017就在眼前,深度学习有哪十大趋势值得关注?

雷锋网按:本文作者 Carlos E. Perez ,他来自机器学习技术公司 Intuition Machine,主要研究深度学习类型.方法论.以及行业战略. 发布于 Medium 的这篇文章主要对 2017 年深度学习的十大趋势做出了预测,雷锋网(公众号:雷锋网)编译,未经许可不得转载. 作为一名人工智能领域里的圈内人士,上次写科技预测要追溯到 6 年前了,当时我写了一篇"2011 软件开发趋势及预测"的文章,文中对行业做了十点预测,其中六个预测准确,分别是 Javascript V

教你用javascript实现随机标签云效果_附代码_javascript技巧

标签云是一套相关的标签以及与此相应的权重.典型的标签云有30至150个标签.权重影响使用的字体大小或其他视觉效果.同时,直方图或饼图表是最常用的代表约12种不同的权数.因此,标签云彩能代表更多的权,尽管不那么准确.此外,标签云通常是可以交互的:标签是典型的超链接,让用户可以仔细了解他们的内容.   大概可以理解为一堆相关或者不相关的标签混到一块,根据不同的重要程度,或者其他维度的不同来为每个标签设置不同的样式已凸显他们的不同,这样的一堆标签在一起就是我们通常说的标签云了.   下面我们大概说一下

MIT 开了一门只有九小时的课,教你用深度学习构建自动驾驶

MIT 紧跟时代步伐,开设的 6.S094 课程名为<为自动驾驶构建深度学习>的课程,旨在教学生们为自动驾驶搭建一个深度学习系统,授课者为 Lex Fridman.课程要求学生拥有基本的编程知识(最好是 Python). 全课只有九节一小时的课程,于 1 月 9 日开课,今天就结课啦.而且!据雷锋网从议程表上了解到,从开课一直到 1 月 16 日,官网表示会陆续放出 PPT 及视频文件,雷锋网(公众号:雷锋网)会持续关注. DeepTesla 与 DeepTraffic 就是 MIT 这门课程

手把手教你安装深度学习软件环境(附代码)

为了进行强化学习研究,我最近购置了一台基于 Ubuntu 和英伟达 GPU 的深度学习机器.尽管目前在网络中能找到一些环境部署指南,但目前仍然没有全面的安装说明.另外,我也不得不阅读了很多文档来试图理解安装细节--其中的一些并不完整,甚至包含语法错误.因此,本文试图解决这个问题,提供一个详尽的软件环境安装指南. 本文将指导你安装 操作系统(Ubuntu) 4 种驱动和库(GPU 驱动.CUDA.cuDNN 和 pip) 5 种 Python 深度学习库(TensorFlow.Theano.CNT

从这开始了解深度学习——视觉的深度学习与网络

已经很久没有更新内容了,今天抽空来给大家分享一些关于计算机视觉领域的一个重点,那就是 "深度学习",接下来就来详细聊聊深度学习(为什么要深度学习特征???),然后来说说深度网络的搭建,最后让我们自己用手 DIY 属于自己的网络,现在就开始 ing...... 介绍 一说起 "深度学习",大家有想过为什么要去搭建复杂网络,去学习更高级的特征呢?其实很简单,因为趋势是朝着类脑那个大方向,现在类脑工作已经得到很多研究员的关注. 类脑计算实际上存在两个技术层面:第 1 层面

2017年深度学习必读31篇论文(附下载地址)

2017年即将擦肩而过,Kloud Strife在其博客上盘点了今年最值得关注的有关深度学习的论文,包括架构/模型.生成模型.强化学习.SGD & 优化及理论等各个方面,有些论文名扬四海,有些论文则非常低调. 一如既往,首先,标准免责声明适用,因为今年仅与GAN有关的论文就超过1660篇.我肯定会有疏漏,试图缩减到每两周一篇论文,包含了Imperial Deep Learning Reading Group上的大量素材.无论如何,我们开始吧. 架构/模型 今年的Convnet网络架构已经少得多,

教你用Python发现即将流失的客户(附代码、安装教程、学习资源)

烦恼 作为一名数据分析师,你来到这家跨国银行工作已经半年了. 今天上午,老板把你叫到办公室,面色凝重. 你心里直打鼓,以为自己捅了什么篓子.幸好老板的话让你很快打消了顾虑. 他发愁,是因为最近欧洲区的客户流失严重,许多客户都跑到了竞争对手那里接受服务了.老板问你该怎么办? 你脱口而出"做好客户关系管理啊!" 老板看了你一眼,缓慢地说"我们想知道哪些客户最可能在近期流失". 没错,在有鱼的地方钓鱼,才是上策. 你明白了自己的任务--通过数据锁定即将流失的客户.这个工作

解析深度学习的未来十大趋势

本周,我在加拿大蒙特利尔参加了NIPS(Neural Information Processing Systems,神经信息处理系统)2015年论坛.这是一次令人难以置信的经历,就像从信息海洋中汲水一样.特别感谢我的雇主Dropbox派遣我参加这场会议(我们正在招人). 这里是本周我注意到的一些趋势:注意到这些趋势更偏向于深度学习和强化学习(reinforcement learning),因为它们是我在这次论坛中参加的主要部分. 神经网络框架变得越来越复杂而精密 在感知.语言翻译等等方面的大部分