来源:大数据挖掘DT数据分析

本文长度为1500字,建议阅读5分钟

本文为你介绍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 预测结果 


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


参考文献


  • LSTM入门介绍比较好的文章:A Critical review of rnn for sequence learning

  • LSTM学习思路,参见知乎的一个介绍,很详细:https://www.zhihu.com/question /29411132

  • Python入门视频教程—可看南京大学张莉老师在coursera上的公开课《用Python玩转数据》,有例子介绍,很实用:https://www. coursera.org/learn/hipython/home/welcome

  • Keras介绍—参看官方文档

    http://keras.io/

原文地址:

http://blog.csdn.net/u012609509/article/details/51910405

编辑:黄继彦

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

  1. 推荐 : 利用深度学习和机器学习预测股票市场(附代码)

    来源:AISHWARYA SINGH, 2018年10月25日:翻译:赵雪尧:校对:车前子 本文约8000字,建议阅读15+分钟. 本文介绍了如何运用深度学习法预测股票市场. 简介 预测股市将如何变化 ...

  2. 独家 | 利用深度学习和机器学习预测股票市场(附代码)

    来源:AISHWARYA SINGH, 2018年10月25日 翻译:赵雪尧 校对:车前子 本文约8000字,建议阅读15+分钟. 本文介绍了如何运用深度学习法预测股票市场. 简介 预测股市将如何变化 ...

  3. 【AI超级美发师】深度学习算法打造染发特效(附代码)

    [新智元导读]如今,在类似天天P图.美图秀秀等手机APP中,给指定照片或视频中的人物更换头发颜色已经是再正常不过的事情了.那么本文便介绍了该功能背后如AI头发分割模块.头发换色.颜色增强与修正模块等技 ...

  4. 基于深度学习模型的花卉图像分类代码_实战 | 基于深度学习模型VGG的图像识别(附代码)...

    本文演示了如何使用百度公司的PaddlePaddle实现基于深度学习模型VGG的图像识别. 准备工作 VGG简介 牛津大学VGG(Visual Geometry Group)组在2014年ILSVRC ...

  5. 手把手教你估算深度神经网络的最优学习率(附代码教程)

    来源:机器之心 作者:Pavel Surmenok 本文长度为2000字,建议阅读4分钟 学习率(learning rate)是调整深度神经网络最重要的超参数之一,本文作者Pavel Surmenok ...

  6. 换发型算法_【AI超级美发师】深度学习算法打造染发特效(附代码)

    原标题:[AI超级美发师]深度学习算法打造染发特效(附代码) 来源:OpenCV学堂 作者:胡耀武 [新智元导读]如今,在类似天天P图.美图秀秀等手机APP中,给指定照片或视频中的人物更换头发颜色已经 ...

  7. 基于深度学习的语音分类识别(附代码)

    音频与我们生活有着十分联系. 我们的大脑不断处理和理解音频数据,并为您提供有关环境的信息. 一个简单的例子就是你每天与人交谈. 这个演讲被另一个人看出来进行讨论. 即使你认为自己处于一个安静的环境中, ...

  8. 深度学习篇之数据集划分方法-附代码python详细注释

    在深度学习训练模型过程中,我们第一步就是要收集相应的数据集,之后我们就是要将数据划分为训练集train和验证集val,但是有时间我们时常面临数据量庞大的问题,手动划分显然是不现实的,因为太麻烦了,而且 ...

  9. 基于深度学习LSTM分类进行故障检测(Matlab代码实现)

最新文章

  1. MySQL 学习笔记(15)— 连接查询(内连接、左外连接、右外连接、全外连接、交叉连接、自然连接等)
  2. 万字长文总结机器学习的模型评估与调参
  3. 3大主流NoSQL数据库性能对比测试报告
  4. Mac连接路由器后没有反应_无线WiFi无法连接到网络怎么办【解决方法】
  5. eventfd以及epoll原理分析
  6. oracle查看视图数据,查看oracle 10g 视图-数据库专栏,ORACLE
  7. K02-01通过简单exe介绍pro基本配置
  8. 9-汇编转移指令-offset+jmp+jcc+loop
  9. 继承中的盲点,成员或者析构函数,成员函数中为什么有时候需要定义,有时候不需要呢,(已解决)...
  10. 图:出场顺序号码随机抽取及公开展示,并行随机抽取多个题目号码及公开展示-软件原型设计
  11. matlab白噪音wav,为声音文件添加白噪音
  12. 黑苹果虚拟机——显卡只有7M玩玩就行
  13. 学习笔记:计算机字符编码标准之GB2312-1980中文字符编码
  14. 创业不是 闹着玩的,水很深,
  15. 快速理解三角函数:积化和差、和差化积
  16. java爬虫爬取B站弹幕
  17. 计算机辅助建筑设计英文全称是,“CAAD”是“Computer Aided Architectural Design”的缩写,意思是“计算机辅助建筑设计”...
  18. discuzapi插件_discuz 代码api
  19. 迈阿密大学计算机科学排名,迈阿密大学各大专业排名情况如何呢?
  20. 函数的参数作为引用时的一些问题

热门文章

  1. Window 下 Redis 安装
  2. 【小程序】汇编实现判断回文
  3. Oracle 表的访问方式(2)-----索引扫描
  4. gpg的一些常用操作
  5. 经典密码学——行置换加密法
  6. Android之关于图表
  7. mysql img格式缩放,再学 GDI+[89]: TGPImage(9) - 图像缩放时的质量(算法)
  8. python 检验数据正态分布程度_Python DataFrame 检验数据正态分布及平均值差异检验...
  9. php推荐引擎算法,推荐系统,第 2 部分: 开源引擎简介
  10. python替换字符串内容