标签归档:分享总结

高级数据科学家阿萨姆:如何应对机器学习过程中的多项选择问题?| 分享总结

雷锋网AI研习社按:随着硬件算力的上升、数据量的加大以及各种新算法的浮现,机器学习也变得一天比一天火热。不夸张的说,这是机器学习的时代。然而,机器学习虽然能够给出惊艳的结果,但其有限的解释性也常被人戏称为“黑箱”。而实践者在使用机器学习的过程中往往也会面临各种各样的选择。本文的目的就是帮助实践者在使用机器学习过程中做出正确的选择和判断。文章内容根据知乎人气答主阿萨姆在雷锋网AI研习社上直播分享整理而成。如您想直接看视频回放,可点击这里

阿萨姆,普华永道高级数据科学家,负责统计学习模型开发。有丰富的工业及学术经验,擅长将理论知识应用于实践中。曾以第一作者发表过多篇不同领域的学术文章,如人机互动、智能系统等。研究兴趣包括异常检测、集成学习、跨领域机器学习。以笔名“阿萨姆”在知乎上创作了多篇机器学习相关的文章,曾数次被知乎及知乎日报收录。乐于技术分享,近期正在进行机器学习实践书籍创作。

以下是阿萨姆的直播分享内容:

机器学习无处不在的选择

数据如何清理?使用哪个模型?如何进行评估?如何发现过拟合与欠拟合?这些问题都还没有准确的答案,往往依赖于使用者的经验与直觉。在今天的分享课中,我们将会集中讨论在机器学习中所面临的选择,并给出一些实用的经验建议。

实际问题抽象化

机器学习和深度学习听起来非常酷炫,但不要为了使用模型而创造问题:机器学习的目标是解决问题。不要为了使用机器学习而创造问题。

机器学习可以预测很多东西,要学会确定“最小预测单元”,每当你把精度加深的时候,预测的难度就会加大。

切记盲目追求通过一个模型预测多个目标,尽量拆分问题。

确定最优框架,在可以使用监督学习,半监督学习,无监督学习,强化学习的情况下,优先使用监督学习

监督学习和无监督学习是”准确“和”探索“之间的平衡。

在了解了怎么定义一个最小单元,也知道选择什么样的框架后,下面需要考虑的问题是时间与空间上的依赖性。如果不考虑时空依赖性,问题会得到简化,但可能有严重偏差。如果需要考虑时间与空间上的依赖性,优先从简单的角度入手。

因为在实际生产中需要的是一个能用的模型,而不是要一个完美的模型,这是一个迭代的过程。

在了解了时空依赖性对于机器学习问题的意义,下一个问题谈的是回归和分类。

什么情况下是适合进行回归到分类的转化。

另外一个问题,数据质量往往不是连贯的。如果情况没有那么好,可以舍弃一部分数据或对数据切分。

小结

  • 确定要预测的目标,找到项目痛点,不追求同事预测多个目标。

  • 确定解决问题的框架,优先使用监督学习

  • 结合已有的规则, 尝试融合机器学习模型和人为规则

  • 如果可能,优先尝试分类任务,也可以尝试将回归转为分类

  • 从易到难,确定尝试哪些机器学习模型

  • 要解决的问题是否对于”时空“存在依赖性,如果可以回避依懒性,可以先试试简单模型

  • 如果发现使用全部数据效果不好,可以尝试抛弃部分数据或分段处理。

如何选择并处理数据

首先,大家要知道,数据不是越多越好,要根据领域经验挑选相关特征。有一个误区就是信息越多越好。其实不然,无关信息可能与预测值存在某种巧合,导致对检测结果造成负面影响。所以只选择与预测值可能有关联的信息。

如何判断特征与结果之间的相关性

相关性分析的意义,可以发现数据中的问题,发现数据中有意思的部分,评估模型的能力。如果多个特征高度相关,那可能模型预测能力效果有限。

如果发现很多特征高度相关,是否应该移除?

总结来看,如果不存在特别严重的相关性,去相关性不是必要步骤。从理论和实验角度来看,去掉或者合并相关性特征不一定会提高模型的预测能力。

从实践角度来看,树模型对于相关性的鲁棒性强,如果可能,可以先使用未处理的特征在树模型进行尝试。

如果有必要移除相关性,下面是移除相关性的方法:

  • 特征选择

  • 设定阈值,去除高线性相关的特征组。

连续特征离散化

数据与特征工程小结

  • 在处理数据上,数据并非越多越好,多余的无关特征会因为伪相关、巧合而影响模型。

  • 对数据做相关性分析的时候,善用可视化可以一目了然发现问题。

  • 对于高度相关的特征,移除或者合并前要三思,可能并不会提高模型能力。

  • 如果选用了线性模型,可能需要对特征进行离散化

  • 对于大部分模型来说,归一化或者标准化是必不可少的步骤,至少”无害“

  • 如果问题较为复杂,尽量选择非线性的鲁棒性强的模型

模型选择与评估的小结

以下是我推荐的模型选择及评估流程:

  • 根据要解决的问题和对数据的理解,大致决定出模型的搜索范围,如尝试SVM,逻辑回归,随机森林等。如资源允许,可扩大模型候选名单。

  • 根据要解决的问题和对数据的理解,决定模型的评估标准。虽然建议选择单一的评估标准进行对比,但推荐计算所有可能的评估标准。

  • 根据具体问题中的数据量大小,以及模型稳定性,决定是否使用交叉验证。

  • 结合参数搜索、交叉验证方法,通过选定的评估标准从候选模型中找到表现最好的模型。

  • 对上一步中的所选模型进行微调。

  • 迭代以上步骤直到找到最优的模型。

如何调试机器学习模型

我们常常看到的一种调试方法是分析一个模型的泛化能力,主要看他的偏差与方差。

量化模型泛化能力-过拟合

量化模型泛化能力的诊断方式

模型问题诊断-高偏差和模型问题诊断-高方差

使用集成学习降低方差与偏差

机器学习模型调试小结

机器学习互动问答

更多精彩内容,请观看雷锋网AI慕课学院视频回放

雷锋网

清华大学廖方舟:产生和防御对抗样本的新方法 | 分享总结

雷锋网AI研习社按:对抗样本是一类被恶意设计来攻击机器学习模型的样本。它们与真实样本的区别几乎无法用肉眼分辨,但是却会导致模型进行错误的判断。本文就来大家普及一下对抗样本的基础知识,以及如何做好对抗样本的攻与防。

在近期雷锋网AI研习社举办的线上公开课上,来自清华大学的在读博士生廖方舟分享了他们团队在 NIPS 2017 上一个对抗样本攻防大赛中提到的两个新方法,这两个方法在大赛中分别获得了攻击方和防守方的第一名。点击可视频回放

廖方舟,清华大学化学系学士,生医系在读博士。研究方向为计算神经学,神经网络和计算机视觉。参加多次 Kaggle 竞赛,是 Data Science Bowl 2017 冠军,NIPS 2017 对抗样本比赛冠军。Kaggle 最高排名世界第10。

分享主题:

动量迭代攻击和高层引导去噪:产生和防御对抗样本的新方法

分享内容:

大家好,我是廖方舟,今天分享的主题是对抗样本的攻和防。对抗样本的存在会使得深度学习在安全敏感性领域的应用收到威胁,如何对其进行有效的防御是很重要的研究课题。 我将从以下几方面做分享。

  • 什么是对抗样本

  • 传统的攻击方法

  • 传统的防守方法

  • 动量迭代攻击

  • 去噪方法

  • 高层引导去噪方法

什么是对抗样本

对抗样本的性质不仅仅是图片所拥有的性质,也不仅仅是深度学习神经网络独有的性质。因此它是把机器学习模型应用到一些安全敏感性领域里的一个障碍。

当时,机器学习大牛Good fellow找了些船、车图片,他想逐渐加入一些特征,让模型对这些船,车的识别逐渐变成飞机,到最后发现人眼观测到的图片依然是船、车,但模型已经把船、车当做飞机。

我们之前的工作发现样本不仅仅是对最后的预测产生误导,对特征的提取也产生误导。这是一个可视化的过程。

当把一个正常样本放到神经网络后,神经元会专门观察鸟的头部,但我们给它一些对抗样本,这些对抗样本也都全部设计为鸟,就发现神经网络提取出来的特征都是乱七八糟,和鸟头没有太大的关系。也就是说欺骗不是从最后才发生的,欺骗在从模型的中间就开始产生的。

下图是最简单的攻击方法——Fast Gradient Sign Method 

除了FGSM单步攻击的方法,它的一个延伸就是多步攻击,即重复使用FGSM。由于有一个最大值的限制,所以单步的步长也会相应缩小。比如这里有一个攻击三步迭代,每一步迭代的攻击步长也会相应缩小。

产生图片所用的CNN和需要攻击的CNN是同一个,我们称为白盒攻击。与之相反的攻击类型称为黑盒攻击,也就是对需要攻击的模型一无所知。

以上所说的都是Non Targeted, 只要最后得到的目标预测不正确就可以了。另一种攻击Targeted FGSM,目标是不仅要分的不正确,而且还要分到指定的类型。

一个提高黑盒攻击成功率行之有效的办法,是攻击一个集合。

而目前为止一个行之有效的防守策略就是对抗训练。在模型训练过程中,训练样本不仅仅是干净样本,而是干净样本加上对抗样本。随着模型训练越来越多,一方面干净图片的准确率会增加,另一方面,对对抗样本的鲁棒性也会增加。

下面简单介绍一下NIPS 2017 上的这个比赛规则

比赛结构

两个限制条件:容忍范围不能太大;不能花太长时间产生一个对抗样本,或者防守一个对抗样本

FGSM算法结果

图中绿色模型为攻击范围,最后两栏灰色是黑盒模型,随着迭代数量的增加, 攻击成功率反而上升。这就给攻击造成了难题。

我们解决的办法就是在迭代与迭代中间加入动量

加入动量之后,白盒攻击变强了,而且对黑盒模型攻击的成功率也大大提升了。

总结:

以前方法(iterative attack)的弱点是在迭代数量增多的情况下,它们的迁移性,也就是黑盒攻击性会减弱,在我们提出加入动量之后,这个问题得到了解决,可以很放心使用非常多的迭代数量进行攻击。

在NIPS 2017 比赛上得到最高的分数

需要提到的一点,上面提到的都是Non-targeted , 在Targeted攻击里面,这个策略有所不同。在Targeted攻击里面,基本没有观察到迁移性,也就是黑盒成功率一直很差,即便是加入动量,它的迁移程度也非常差。

下面讲一下防守

首先想到的就是去噪声,我们尝试用了一些传统的去噪方法(median filter 、BM3D)效果都不好。之后我们尝试使用了两个不同架构的神经网络去噪。一个是 Denoising Autoencoder,另一个是Denoising Additive U-Net。

我们的训练样本是从ImageNet数据集中取了三万张图片 ,使用了七个不同的攻击方法对三万张图片攻击,得到21万张对抗样本图片以及三万张对应的原始图片。除了训练集,我们还做了两个测试集。一个白盒攻击测试集和一个黑盒攻击测试集。

训练效果

我们发现经过去噪以后,正确率反而有点下降。我们分析了一下原因,输入一个干净图片,再输入一个对抗图片,然后计算每一层网络在这两张图片上表示的差距,我们发现这个差距是逐层放大的。

图中蓝线发现放大的幅度非常大,图中红线是去噪过后的图片,仍然在放大,导致最后还是被分错。

为了解决这个问题,我们提出了经过改良后的网络 HGD

HGD 的几个变种

和之前的方法相比,改良后的网络 HGD防守准确率得到很大的提升

HGD 有很好的迁移性

最后比赛中,我们集成了四个不同的模型,以及训练了他们各自的去噪, ,最终把它们合并起来提交了上去。

HGD网络总结

优点:

  • 效果显著比其他队伍的模型好。

  • 比前人的方法使用更少的训练图片和更少的训练时间。

  • 可迁移。

缺点:

  • 还依赖于微小变化的可测量

  • 问题并没有完全解决

  • 仍然会受到白盒攻击,除非假设对手不知道HGD的存在

雷锋网AI慕课学院提供了本次分享的视频回放:http://www.mooc.ai/open/course/383

雷锋网

清华大学冯珺:当强化学习遇见自然语言处理有哪些奇妙的化学反应?| 分享总结

雷锋网AI科技评论按:随着强化学习在机器人和游戏 AI 等领域的成功,该方法也引起了越来越多的关注。在近期雷锋网GAIR大讲堂上,来自清华大学计算机系的博士生冯珺,为大家介绍了如何利用强化学习技术,更好地解决自然语言处理中的两个经典任务:关系抽取和文本分类。 本文根据视频直播分享整理而成,内容若有疏漏,以原视频嘉宾所讲为准。

视频回放地址:http://www.mooc.ai/open/course/318

在关系抽取任务中,尝试利用强化学习,解决远程监督方法自动生成的训练数据中的噪音问题。在文本分类任务中,利用强化学习得到更好的句子的结构化表示,并利用该表示得到了更好的文本分类效果。本次分享的两个工作均发表于 AAAI2018。

冯珺,清华大学计算机系博士五年级,师从朱小燕和黄民烈教授,主要研究方向为知识图谱,强化学习。目前已在 AAAI,COLING,WSDM 等国际会议上发表多篇文章。

分享内容:

大家好,我是来自清华大学的冯珺,分享的主题是当强化学习遇见自然语言处理,分享内容主要是以下三方面:

  • 强化学习基本概念简要介绍

  • 基于强化学习的关系抽取方法,解决远程监督方法自动生成的训练数据中的噪音问题

  • 基于强化学习的句子结构化表示学习方法


强化学习的基本概念

状态,是agent从环境中得到的动作;agent,是基于它得到的当前状态后做出相应的动作。reward ,是环境给agent 的一个反馈,收到这个reward就知道做的这个动作是好还是不好。agent 的目标就是选动作,将全部reward最大化。

agent会和环境做很多的交互,环境每次做的动作可能会有一个长期的影响,而不仅仅是影响当前的reward。reward 也有可能延迟。在这里简单介绍一下policy的概念。policy是决定一个agent的动作的一个函数。

如果读者对上述概念还不清楚可以观看视频中的迷宫例子:http://www.mooc.ai/open/course/318

我们组做的两个工作是关系抽取和文本分类。

首先是第一个工作:利用增强学习从噪声数据中进行关系抽取 (Reinforcement Learning for Relation Classification from Noisy Data)

任务背景

关系分类任务需要做的是,判断实体之间是什么关系,句子中包含的实体对儿是已知的。关系分类任务是强监督学习,需要人工对每一句话都做标注,因此之前的数据集比较小。

之前也有人提出Distant Supervision 方法,希望能利用已有资源对句子自动打上标签,使得得到更大的数据集。但这种方法是基于已有知识图谱中的实体关系来对一句话的实体关系进行预测,它的标注未必正确。

这篇文章就是用强化学习来解决这个问题。之前也有一些方法是基于multi-instance learning 的方法来做的。

这样做的局现性是不能很好处理句级预测。

基于以上不足,我们设定了新模型。包括两个部分: Instance Selector 和 Relation Calssifier。

这个模型有两个挑战,第一是不知道每句话的标注是否正确‘;第二个挑战是怎么将两个部分合到一块 ,让它们互相影响。

Instance Selector 和 Relation Calssifier 的结构图

在Instance Selector中的“状态”就表示为,当前的句子是哪一句,之前选了哪些句子,以及当前句子包含的实体对儿。

 Relation Classifier 是直接用了一个CNN的结构得到句子的表示。

模型训练步骤

实验部分关于数据集和baseline来源

总结

我们提到一个新的模型,在有噪声的情况下也能句子级别的关系分类,而不仅仅是bags级别的关系预测。

第二个任务

任务背景

如果做一个句子分类,首先要给句子做一个表示 ,经过sentence representation得到句子表示,把“表示”输入分类器中,最终就会得到这个句子属于哪一类。

传统的sentence representation 有以下几个经典模型:

  • bag-of-words

  • CNN

  • RNN

  • 加入注意力机制的方法

以上几种方法有一个共同的不足之处,完全没有考虑句子的结构信息。所有就有第五种 tree-structured LSTM。

不过这种方法也有一定的不足,虽然用到了结构信息,但是用到的是需要预处理才能得到的语法树结构。并且在不同的任务中可能都是同样的结构,因为语法都是一样的。

所以我们希望能够学到和任务相关的结构,并且基于学到的结构给句子做表示,从而希望能得到更好的分类结构。但面临的挑战是我们并不知道什么样的结构对于这个任务是好的,我们并没有一个结构标注能够指导我们去学这个结构。但我们可以根据新的结构做出的分类结果好不好从而判断这个结构好不好。

这个任务同样可以建模为强化学习问题,用强化学习的思想来解。同样的,在这个任务中的reward也是有延迟的,因为需要把整个结构都学到后,才能得到句子的表示,才能用句子的表示做分类,中间的过程是不知道这个结构是好的还是不好的。

实验部分的数据集来源

实验的分类结果;最后两行是我们的方法。

总结

在这个工作中,我们学习了跟任务相关的句子结构,基于句子机构得到了不同的句子表示,并且得到个更好的文本分类方法。我们提出两种不同的表示方法,ID-LSTM和HS-LSTM。这两个表示也得到了很好的分类结果,得到了非常有意思的和任务相关的表示 。

雷锋网提供视频直播回放,如果对文中有不清楚的地方,可点击观看视频 :http://www.mooc.ai/open/course/318。

雷锋网

资深算法工程师万宫玺:Java工程师转型AI的秘密法宝——深度学习框架Deeplearning4j | 分享总结

雷锋网AI研习社按:深度学习是人工智能发展最为迅速的领域之一,Google、Facebook、Microsoft等巨头都围绕深度学习重点投资了一系列新兴项目,他们也一直在支持一些开源深度学习框架。目前研究人员使用的深度学习框架有 TensorFlow、Torch 、Caffe、Theano、Deeplearning4j等,而Deeplearning4j是为数不多以Java/JVM为基础,能与Apache Spark无缝结合,支持CPU/GPU集群分布式计算的开源框架。本文就来为大家详细介绍一下深度学习框架Deeplearning4j的重要组件,不同环境下的操作用法及实例分享。

在近期雷锋网AI研习社的线上分享会,来自苏宁易购搜索技术研发部的资深算法工程师万宫玺为大家介绍了Deeplearning4框架的构成、主要功能模块并结合实例讲述具体的使用方法。

视频回放链接:http://www.mooc.ai/open/course/333

万宫玺,苏州大学硕士,现就职于苏宁易购搜索技术研发部,从事自然语言处理、机器视觉等领域的应用开发工作。熟悉诸如Deeplearning4j、Keras等开源深度学习框架。

以下为主要分享内容:

分享主题为:基于Java的开源深度学习框架-Deeplearning4j的介绍与实例分享。(

分享内容可概括以下四方面:

  • Deeplearning4j生态圈主要功能模块的介绍

  • Deeplearning4j单机/并行/分布式建模过程介绍

  • Deeplearning4j对迁移学习、强化学习的支持

  • 基于Fashion Mnist数据集的图像分类应用的开发、部署、上线实例

第一部分内容具体为DL4j的开源库背景,目前的项目进展情况和背后的支撑团队。

第二部分为DL4j的生态圈,主要介绍生态圈中最重要的三个模块:DL4j本身,它所依赖的张量预算库ND4j、DL4j当中做数据ETL的库DataVec。

DL4j本身,它定义并且实现了比较经典的神经网络结构,比如图片中比较常用的卷积神经网络。机器学习都需要依赖一个张量运算框架,对于DL4j,他依赖的是ND4j这样一个框架,libnd4j是ND4j调用的一个库。

Model Zoo 是官方给出的经典神经网络结构的实现。包括AlexNet,GoogLenet ,DeepFace,YOLO等。Modle Zoo在0.9.0版本之前是作为一个独立的工程存在的,0.9.0之后的版本作为DL4j本身的一个模块,已经嵌入进去。

DL4j所依赖的张量运算库ND4J,ND4j可当作JAVA 版的Numpy。

ND4j内存管理情况:

ND4j利用了堆外内存和堆上内存两个部分的内存做相应的计算。当用ND4j去声明一个具体的张量时候,是在堆外内存存储张量对象,堆上内存只存储张量对象的引用。设计的原因主要是我们所依赖张量运算库,大部分的运算空间都是在堆外内存上,把数据放到堆外内存可提高运行效率。

需要注意的是,用ND4j做神经网络的训练时,堆外内存一定要调的非常大,因为大量的工作都是在堆外内存做相应的张量运算。堆外内存要远远大于堆上内存。

ND4j具体例子,第一个是如何去创建一个张量,并且把这个张量在底层存储的顺序打印出来。

第二个是hadmard乘积实现。用直白的话解释就是,两个张量相应的位置去做乘积,把这个结果形成新的向量,作为下一部分利用的结果,这个操作在包括卷积上面都是比较常用的。

数据ETL库,称之为DataVec, 它的主要功能就是把语音信号,图片文件,文本文档转化为张量形式,做数据ETL.

总结DataVec库的作用:它可以将非结构化数据经过处理转化变成张量型数据,也支持结构化数据的读取。

第三个部分怎么建模。分三个场景,第一个是本地单机建模;第二个是有多个CPU或多个GPU卡情况下怎么做并行建模;第三个是怎么和Spark结合做分布式的DL4j模型的建模。

建模的四个步骤并不是固定的,可以根据实际情况做灵活的处理。大致思路首先是生成这样一个训练,测试,验证数据集。

本地单机建模,首先是加载数据(包括本地数据和测试数据),其次是配置模型结构以及超参数,并初始化模型参数。最后,训练神经网络模型,并利用测试数据集进行评估。

数据并行化:

并行建模如图所示:

怎么和Spark结合做一个分布式的Dp4j模型的建模:

想要在Spark上面开发的同学,需要注意Spark的版本,因为DL4j支持1.5、1.6 还有2.0之后的版本。框架接近1.0版本的发布,真正原生态支持Spark 并不多,DL4j和Spark的结合是它的一大亮点。

第四部分是强化学习模块,称之为RL4j ,也是生态系统当中的一个组件。

迁移学习和强化学习在DL4j的支持情况:

具体应用实例分享:

关于Deeplearning4j 的总结:

个人在做AI方面的心得体会:

  • 机器学习是AI的主要解决方案,但不是唯一方案。

  • 深度学习并不是万能的,对于非结构化数据:图像、文本、语音会有出色的效果,但传统机器学习模型同样很重要。

  • 数据的质和量在实际的应用中共同决定了模型的泛化能力。

  • 转型AI同样可以从Hello World 入手。

  • 提升AI内功必须精通原理,而不仅仅跑出Demo。

  • 不要局限于某一特定工具框架,可以取长补短。

  • 迁移学习和强化学习可能代表AI的未来。

如果想详细了解深度学习的应用,如何做开发,怎么去训练他的模型,怎么去调优,怎么去部署上线点击下面的视频可回顾本期内容。

雷锋网AI慕课学院视频回放链接:http://www.mooc.ai/open/course/333

雷锋网

香港科技大学施行健:深度学习用于短临降雨预报的一个基准和一个新模型 | 分享总结

雷锋网AI科技评论按:本文介绍了NIPS 2017论文: Deep Learning for Precipitation Nowcasting: A Benchmark and A New Model 中提到的核心算法模型。在近期雷锋网举办的GAIR大讲堂线上直播课中,该论文的作者之一施行健给我们详细讲解了论文中的核心思想以及模型的演进过程,AI科技评论为大家整理了此次分享的主要内容。

施行健,香港科技大学四年级博士,师从杨瓞仁教授。现于Amazon AWS Deep Learning组实习,岗位为应用科学家。本科就读于上海交通大学,导师为李武军教授和王士林教授。他的主要研究方向为深度学习,时空序列分析和计算机视觉。他是apache/mxnet的开发成员,同时是DMLC协会会员。

视频回放链接:http://www.mooc.ai/open/course/369

分享主题:深度学习用于短临降雨预报:一个基准和一个新模型

分享大纲:

  • 简要介绍短临降雨预报和之前用于解决此问题的ConvLSTM网络。

  • 介绍新的TrajGRU网络

  • 介绍HKO-7基准

  • 总结

分享内容

短临降雨预报是指对一个区域未来短时间段内的降雨进行预测。这一段时间通常是0到6小时。预测主要基于雷达回波图或者是雨量阵的信息或者其他信息进行辅助预测。

雷达回波图和雨量有一个直接对应关系。所以在文章中,我们只用了雷达回波图预测。所以这个问题就变成了及时通过雷达回波序列之前的几帧来预测未来的几帧。

这个问题有很多应用场景,和居民生活息息相关。比如预测道路的积水情况,为航班提供天气指引,在城市内给出短期强降水预警。由于大气内部复杂的动态变化和短临降雨要求的实时,我们需要大规模和高精度的预报,这个问题给气象领域和机器学习领域提出了非常大的挑战。

传统降雨预测有的两种方法

NWP 是对大气进行一个物理建模,通过模拟物理模型去进行之后的预测。这种方法的好处是对于更长时间范围的预测比较准确,但是在头一两小时并不能进行预报,所以对于短临降预报不是使用NWP方法。

另一种在实际系统中的应用是基于光流矢量的方法。它的思想是先通过两个雷达回波图像来估算光流矢量,这个光流矢量可以理解为这些云是往哪个方向运动的。然后去使用这个光流矢量是不会变的,对最后一张雷达图进行外推,得到最后的预测。这种方法在前一两小时预测的准确度更高。香港天文台就是基于光流矢量做的短临降预测。

关于新模型ConvLSTM介绍

2015年,我们提出一种卷积长短期记忆网络(Convolutional  LSTM),这种基于深度学习方法的特点是基于机器学习,端到端的去解决这个问题的方案。

这种方案相比较光流矢量法有一些问题。

第一,因为这种方案第一步是去估算光流矢量,第二步是拿光流矢量做外推,这两步是分开来做的,所以会存在累计误差。

第二,光流矢量不是基于机器学习,所以不能发挥出雷达回波图的优势。

第三,在预测光流矢量方法中采用的是相邻两帧,并不能考虑更长时间段的一些关系,比如说三帧,四帧,五帧的光流矢量是预测不到的。

但是用深度学习来解决这个问题除了弥补光流失量法的缺陷,也有以下两点难点。

  • 我们要预测的东西是一个序列,所以说多步预测是一个难点。

  • 我们要处理的是时空数据,所以我们的模型要充分利用时空数据的特点进行建模。

首先我们对这一问题进行简述。

通过用一个编码网络对我们可以观测到的东西进行一个特征描述。我们使用RNN 作为编码器和预报器。

因为要提到RNN,如果使用LSTM作为encoder-forecaster的一个基本网络,我们的模型可能是这样的

这种方案的问题是LSTM并没有对时空序列做一些特殊设计。所以我们提出了Convolutional  LSTM, 它是专门针对时空序列所设计的一个结构。他们之间的区别是一般的LSTM是用全连接来作为不同状态之间的转换,而ConvLSTM不是使用全连接而是卷积。

我们的做法是把LSTM换为ConvLSTM来建立最后的模型,比较效果图

卷积LSTM网络并不是最优的,原因是在状态转换里面使用卷积相当于把循环连接结构变成了一个时空恒定的结构,但对于自然界出现的大部分运动而言, 时空并不是恒定的。比如旋转,放缩,所以用递归卷积来刻画这种运动关系肯定不是最优的。

第二个问题是之前这篇文章衡量这个模型的方案式远远还没达到实际应用的标准。之前只是在一个很小的数据集上衡量,而且这是只选了一个阈值。

所以深度学习用于短临降雨预报实际上还在一个初期阶段,我们还不清楚到底如何来衡量这些模型,

为了解决这两个问题,我们在这篇文章中提出一个新模型 TrajGRU(轨迹GRU), 它可以主动去学习卷积结构,我们还提出了一个新的基准称为HKO-7,它的特点是有些新的贴近实际生活的性能评估。

简单回顾一下基准模型ConvGRU, 它是和ConvLSTM比较类似的模型。不同之处是ConvGRU有两个门(gate),一个更新门(update Gate),一个复位门(reset gate)。 ConvLSTM有三个Gate.

从ConvGRU到TrajGRU

我们还提出了一个Encoder-Forecaster 结构

我们为了理解这个模型以及方便和基准模型ConvGRU做一个简单的比较,我们在Moving MNIST++的数据集上做了一个实验。

MovingMNIST可视化效果图

关于新基准HKO-7 

这个数据是香港天文台提供的2009年到2015年降雨雷达图数据,简单的来说我们用2009年到2014年数据作为训练和确认, 用2015年数据作为测试数据。

数据去噪声图

在实际生活中,不断有新的降雨数据进来,所以我们可以不断用新数据动态训练模型。实际上,大雨在现实生活中的影响是更加大的,我们的解决方案是在衡量模型的时候,对大的雨量给一个更加高的权重,就得到了新的B-MSE和B-MAE。

衡量结果

总结

在这篇文章中,我们提出了一个轨迹GRU,它的特点就是可以动态学习网络递归结构,这种轨迹GRU在sythetic MovingMNIST++数据集和我们新的HKO-7基准上都是比ConvGRU效果好的。

第二点,我们提了一个新的HKO-7衡量标准。我们发现所有的深度模型都比光流失量效果要好的。TrajGRU模型是表现最好的。

第三点,动态的微调是对提升模型的表现是有效果的。

我们正在尝试把这套算法融入到香港天文台的系统里面。

雷锋网视频回放链接:http://www.mooc.ai/open/course/369

雷锋网

中科院曹婍:基于深度学习的社交网络流行度预测研究 | 分享总结

雷锋网AI科技评论按:随着诸如 Twitter、Facebook、新浪微博等社交平台的兴起,每天有成千上万的消息在这些平台上产生并传播。在如此大体量的消息中,如何能提前预测某条消息在未来的关注转发量(流行度),对于用户和平台而言都具有很大的意义。因此,本文将为大家介绍目前的网络信息流行度预测研究进展,以及中科院博士生曹婍提出的基于深度学习技术的端到端流行度预测框架(DeepHawkes 模型)。该工作已被国际会议 CIKM 2017 录用并发表。

曹婍,目前就读于中国科学院计算技术研究所的网络数据科学与技术重点实验室,硕博生。硕士导师为沈华伟研究员,博士导师为李国杰院士。本科毕业于中国人民大学信息学院。目前主要研究方向为社交网络上的信息传播建模及预测。

分享题目:基于深度学习的社交网络流行度预测研究

分享视频链接地址:http://www.mooc.ai/open/course/356

分享内容

  • 社交网络上消息流行度预测问题的背景简介

  • 现有消息流行度预测的方法以及存在的问题

  • 介绍本人最新提出的基于深度学习技术的端到端流行度预测框架(DeepHawkes 模型)

  • 对于流行度预测问题的一些思考以及心得体会

相关背景

现有的社交平台的兴起,为我们信息的产生和转播带来了极大的便利。光新浪微博每天至少有一千万条微博产生,但并不是所有信息都能获得同样的关注度。在社交网络上,消息之间的关注度也是很不均匀的,大致也遵从二八法则。

信息在社交网络上的传播有什么特性?

不同于传统的信息传播平台,像电视,报纸,更像是一对多的广播平台,也就是有一个源发者。而在微博等社交网络上存在一个关注关系和转发关系,所以在信息的传播上过程中,会产生一个级联现象。

这种现象在社交网络上是独有的,同时也给社交网络上的信息传播预测带来很大的困难。中间任何一个人的参与转发,最终都可能导致信息在最后的流行度有很大的变化。比如有一个大V转发,信息传播可能就会有一个爆发式的增长。

如何形式化定义这个问题?

第一种是把它当做分类问题,也就是预测消息在未来的流行度是否达到一个特定的预值,或者呈现一个翻倍的情况。第二种是把它当做回归问题,也就是说预测消息在未来具体流行度的量级。相对来说,第二个回归问题较难。

把它当做一个回归问题后,如何定义这个问题?

首先给定一个观测时间后,我们能够观测到消息在观测时间内的转发情况。要预测的目标就是在观测时间窗口到最终预测时间窗口之间的流行度的增长量。

为了能更好体现预测的难度,我们把已知的观测时间窗口内的流行度直接去掉,直接来预测观测时间到预测时间中间的增量流行度情况。

现有的研究方法都有哪些?

现有方法可分为两类。第一类是基于特征的方法,第二类是基于生成式过程的方式。

第一类是站在非常传统经典的机器学习角度来做的,大家的主要贡献点在于特征的提取上。现有的方法主要提取以下这四类特征:

  • 消息内容特征

  • 原发者或转发者相关特征

  • 传播结构特征

  • 时序特征

以内容特征为例,在提取内容特征的时候,包括会提取文字里面是否包含特定特征,还有整篇文字情感的正负向比例。这些都属于消息的内容特征。

用户的特征,包括原发用户和转发用户特征,原发用户特征提取包括年龄,性别,注册时间,活跃度以及他的粉丝数等等。转发用户的特征提取和原发用户类似。

结构特征包括两个,第一个是在原始的社交网络上形成的结构,第二个是在某条特定消息传播过程中所形成的传播图结构。会提取图的连通性,广度,深度,以及初度,入度等等。

时序特征,主要是指在传播过程中,传播速率有什么变化。

这样一类通过特征提取,然后利用机器学习方式来进行流行度预测建模的方法是比较传统和比较宽泛的。但我们可以看到在这过程中,并没有对信息传播的深入动态过程进行理解。而只是通过提取各种各样特征尽可能拟合这样一个结果。它是直接受未来流行度预测监督指导的,一般这样的模型预测比较好,但对于我们理解信息传播过程是有缺陷的,因为没有对传播过程进行建模。

第二类生成式方法,是在原有的特征提取基础之上,能够建模信息传播动态过程,能够探寻信息在传播过程中的一些机制,把这些机制建模好。

自增强泊松过程

Hawkes过程,每一次的转发都会对未来消息带来新的激励

生成式方法中,它是为每一条消息单独建模训练的,它会对观测时间窗口内的每一个事件进行观测,建模的时候,是通过使观测时间内的事件发生概率最大化来学习得到参数的。它一方面有非常好的可理解性,但同时由于监督的数据是观测时间窗口内的每个事件的发生,而不是未来要预测的增量流行度。预测的性能是有缺失的。

因此促使我们希望能够设计一个模型,在受未来流行度监督之下,怎样把生成式过程中关键机制和因子刻画到,这样就能即具有比较好的预测性能,同时也对消息的传播过程有一个较好的理解能力。我们提出了DeepHawkes模型。

DeepHawkes 整体运行框架

实验数据来源及场景

以下分别是微博场景下预测一条消息在未来的转发度和在论文场景下预测未来论文引用量。

总结:我们提出DeepHawkes模型,在端到端直接通过未来流行度监督的深度学习框架之下,刻画了已有的Hawkes模型当中的信息传播过程中比较关键的因子或机制。同时,我们对这三个机制也进行了一定的改进和扩展,包括用用户学到的embeding来替代原先启发式的用户粉丝数,以及建模了整个转发路径的影响,而不仅仅是当前的转发用户。还有,我们使用了非参方式来灵活刻画学习特征和学习时间的衰减效应。

感兴趣的同学可以在ACM的论文库里下载这篇论文。论文题目:DeepHawkes:Bridging the Gap between Prediction and Understanding of Information Cascade

雷锋网提醒大家,如果您对DeepHawkes模型的细节感兴趣,可以观看GAIR大讲堂回放视频。

视频链接地址:http://www.mooc.ai/open/course/356

雷锋网

雷锋网

中科院孙冰杰博士:基于网络化数据表示学习的重叠社区发现研究 | 分享总结

雷锋网AI科技评论按:网络是大数据的重要组织形式,然而网络化的数据由于缺少高效可用的节点表示,而难于直接应用。网络化数据表示学习通过将高维稀疏难于应用的数据转化为低维紧凑易于应用的表达而受到广泛关注。网络化数据表示学习的一个重要任务就是重叠社区发现。本文就是为大家介绍基于网络化数据表示学习的重叠社区发现的最新研究。文章内容根据中科院孙冰杰博士在雷锋网GAIR大讲堂的线上直播公开课整理而成。

在近日雷锋网 GAIR 大讲堂线上直播课上,来自中科院计算所网络数据科学与技术重点实验室的孙冰杰博士为大家做了一场主题为「基于网络化数据表示学习的重叠社区发现研究」的分享,详细介绍了他们团队最近在基于网络化数据表示学习的重叠社区发现研究上的相关工作。

孙冰杰,中科院计算所博士研究生,主要研究方向为网络结构分析,网络表示学习。

分享内容:

我将从以下四个方面对我们团队最近所做的研究做详细介绍。

  • 研究背景及挑战

  • 对称编解码重叠社区发现方法:SEND

  • 重叠社区发现方法加速研究

  • 总结

首先看我们研究工作的背景及挑战。

大数据领域中大部分数据是以网络形式进行组织的,比如社交媒体中的社交网络,科研领域中的引用网络,生物领域的中蛋白质相互作用网络,以及交通领域中的航空网路或路网。网络化数据之后节点之间的复杂关系是导致大数据处理困难的重要原因。

网络化数据在不同粒度下对应的理论与应用研究也是不同的。在微观粒度上,主要研究的是节点层面上的任务,当节点聚集形成社区的时候,研究的是社区层面上的任务。在宏观层面上,我们研究的是在整个网络上的任务。

在这次分享上,我们主要研究在中观粒度下的社区发现任务。它主要由三元闭包理论和强弱连接理论为支撑,主要支撑的应用有社区发现应用等。

中观粒度上的社区发现任务:向下可通过节点表示支持微观粒度的任务,向上可通过网络生成支持宏观粒度的任务。

基于网络化数据表示学习的重叠社区发现所面临的问题和挑战

相对于传统节点表示,它的功能是比较单一的,只支持重叠社区指示,无法支持一些其他的任务。但现有的重叠社区指示方法没办法用在大规模网络上。这是针对社区指示能力和多任务支持能力之间的矛盾以及海量数据处理任务的挑战。

为此我们团队做了两方面的工作。

工作一:非负对称编解码模型

节点表示的社区指示能力需要满足多种约束条件。一般需要满足三个约束条件,非负性,稀疏性和分布性。

节点表示的多任务支持能力

需要节点表示能充分恢复数据在原始空间中的相似性关系,对节点表示添加的约束越多,对数据的恢复能力影响越大。因此这之间是矛盾的。矛盾主要体现在基于网络化数据表示的社区发现相关工作。     

工作一是针对重叠社区得到节点表示的社区表示能力和数据还原能力之间的矛盾。目标是保证节点表示的社区指示能力和对原始数据的还原能力。

所面临的问题:

  • 如何在数据恢复过程中对节点表示进行约束增加指示能力。

  • 传统的OCD只优化解码过程,节点表示功能单一,不能应用于其他任务。

  • OCD节点表示的显示约束使优化困难

解决方案:用户点表示同时对原始数据进行编解码操作,保证学习到高质量节点表示。通过编解码过程对对称性节点表示进行隐式约束,保证指示能力。

具体来说,OCD模型通过重构输入数据学习节点表示,通过正则项等对节点表示进行显式约束,保证节点表示的指示能力。但传统的OCD目标函数相当于只优化了解码过程(生成原始数据)

OCD目标函数忽略了编码过程,导致模型学习到的节点表示无法充分体现节点在原空间中的相似性,因此应用在下游任务上准备性较低,且无法处理新样本数据。

以上提出的对称编解码模型可以同时解决节点表示的指示能力和对多种下游任务的支持能力。

通过优化编码和解码过程保证节点表示的数据还原能力,通过隐式约束保证节点表示的社区表示能力,从而最终在多种类型网络的多个任务上取得了目前最好的效果。

进一步介绍这个模型的普适性,我们希望这个节点表示能够用在更多的任务上。因此我们采用了多种类型的网络,比如说二部网络,有向网络、有权网络、层次网络等,也采用了多种类型输入,比如说节点序列输入,邻接矩阵输入等。

工作小结:本文工作针对重叠社区发现得到的节点表示存在的“指示能力和多任务支持”之间的矛盾,设计了一种同时优化编解码过程的模型,可以保证节点表示的指示能力并且在多种类型网络的多个任务上取得了最好的效果。

工作二:重叠社区发现方法加速研究

现有的重叠社区发现方法存在“速度与精度”之间的矛盾,在面临大规模网络时,无法拿来急用。

关于问题一,如何选择高质量的参数迭代初始点。提出利用一个与非凸目标函数近似的凸目标函数的优化结果作为非凸目标函数优化的迭代初始点,以保证最终速度和效果。

 

重叠社区发现的模型选择

关于问题二,解决由迭代过程的复杂性带来的优化困难问题。传统的应对迭代过程复杂性的方法是采样和近似。这类方法是影响精度且仍然不够快

解决方案:网络结构局部聚集特性和节点表示的稀疏性,相应地设计了“维度级”和“连边级”两级加速策略,对模型进行加速。 

工作小结:针对基于泊松模型的重叠社区发现方法,目标函数的非凸性和迭代过程的复杂性,提出了两种加速策略,分别解决了初始点选择问题和迭代过程复杂问题。可以处理真实大规模网络。

综上所述:针对重叠社区发现任务,我们主要解决了三个问题。编解码模型解决了重叠社区发现得到的节点表示的社区指示能力和数据恢复能力之间的矛盾。快速初值模型解决了目标函数非凸性带来的可扩展性问题。两级加速模型解决了优化过程复杂性带来的可扩展性问题。

视频回放链接:http://www.mooc.ai/open/course/357

雷锋网

平安科技罗冬日:如何用RNN实现语音识别?| 分享总结

雷锋网AI研习社按:循环神经网络(RNN)已经在众多自然语言处理中取得了大量的成功以及广泛的应用。但是,网上目前关于RNNs的基础介绍很少,本文便是介绍RNNs的基础知识,原理以及在自然语言处理任务重是如何实现的。文章内容根据雷锋网AI研习社线上分享视频整理而成。

在近期雷锋网AI研习社的线上分享会上,来自平安科技的人工智能实验室的算法研究员罗冬日为大家普及了RNN的基础知识,分享内容包括其基本机构,优点和不足,以及如何利用LSTM网络实现语音识别。

罗冬日,目前就职于平安科技人工智能实验室,曾就职于百度、大众点评,担任算法研究员;中国科学院研究生院硕士,主要研究方向为语音识别,自然语言处理。

分享主题:循环神经网络(RNN)基础

主要内容:

  • 普通RNN结构

  • 普通RNN的不足

  • LSTM单元

  • GRU单元

  • 采用LSTM实现语音识别的例子

RNN和CNN的区别

普通卷积神经网络(CNN)处理的是“静态”数据,样本数据之间独立,没有关系。

循环神经网络(RNN)处理的数据是“序列化”数据。 训练的样本前后是有关联的,即一个序列的当前的输出与前面的输出也有关。比如语音识别,一段语音是有时间序列的,说的话前后是有关系的。

总结:在空间或局部上有关联图像数据适合卷积神经网络来处理,在时间序列上有关联的数据适合用循环时间网络处理。但目前也会用卷积神经网络处理语音问题, 或自然言语理解问题,其实也是把卷积神经网络的计算方法用到这上面。

RNN 的基本结构和结构展开示意图:

普通RNN的不足之处

首先是神经网络里面的计算,可以大致分为三类:函数合成,函数相加,加权计算。

在计算过程中,经常会用到激活函数,比如Sigmoid激活函数。残差在往前传播的过程中,每经过一个Sigmoid函数,就要乘以一个Sigmoid函数的导数值,残差值至少会因此消减为原来的0.25倍。神经网络每多一层,残差往前传递的时候,就会减少至少3/4。如果层数太多,残差传递到前面已经为0,导致前层网络中国呢的参数无法更新,这就是梯度消失。

LSTM单元和普通RNN单元的区别

主要大的区别是,采用一个叫“细胞状态(state)”的通道贯穿了整个时间序列。


通过精心设计的称作“门”的结构来去除或增加信息到细胞状态的能力。

"忘记门”

“输入门”的打开关闭也是由当前输入和上一个时间点的输出决定的。

“输出门”,控制输出多少,最终仅仅会输出确定输出的那部分。

所有的公式汇总:

增加peephole的LSTM单元

让几个“门”的输入数据除了正常的输入数据和上一个时刻的输出以外,再接受“细胞状态”的输入。

GRU单元

它是各种变种之一,将“忘记门”和“输入们”合成了一个单一的“更新门”,同时还混合了细胞状态和隐藏状态。

接下来用RNN做一个实验,给大家介绍一个简单的语音识别例子:

关于LSTM+CTC背景知识

2015年,百度公开发布的采用神经网络的LSTM+CTC模型大幅度降低了语音识别的错误率。采用这种技术在安静环境下的标准普通话的识别率接近97%。


CTC是Connectionist Temporal Classification 的缩写,详细的论文介绍见论文“Connectionist Temporal Classification: Labelling Unsegmented Sequence Data with Recurrent Neural Networks”


CTC的计算实际上是计算损失值的过程,就像其他损失函数一样,它的计算结果也是评估网络的输出值和真实差多少。

声音波形示意图

在开始之前,需要对原始声波进行数据处理,输入数据是提取过声学特征的数据,以帧长25ms、帧移10ms的分帧为例,一秒钟的语音数据大概会有100帧左右的数据。

采用MFCC提取特征,默认情况下一帧语音数据会提取13个特征值,那么一秒钟大概会提取100*13个特征值。用矩阵表示是一个100行13列的矩阵。

把语音数据特征提取完之后,其实就和图像数据差不多了。只不过图像数据把整个矩阵作为一个整体输入到神经网络里面处理,序列化数据是一帧一帧的数据放到网络处理。

 如果是训练英文的一句话,假设输入给LSTM的是一个100*13的数据,发音因素的种类数是26(26个字母),则经过LSTM处理之后,输入给CTC的数据要求是100*28的形状的矩阵(28=26+2)。其中100是原始序列的长度,即多少帧的数据,28表示这一帧数据在28个分类上的各自概率。在这28个分类中,其中26个是发音因素,剩下的两个分别代表空白和没有标签。

设计的基本网络机构

原始的wav文件经过声学特征提取变成N*13,N代表这段数据有多长,13是每一帧数据有多少特征值。N不是固定的。然后把N*13矩阵输入给LSTM网络,这里涉及到两层双向LSTM网络,隐藏节点是40个,经过LSTM网络之后,如果是单向的,输出会变成40个维度,双向的就会变成80个维度。再经过全连接,对这些特征值分类,再经过softmax计算各个分类的概率。后面再接CDC,再接正确的音素序列。

真实的语音识别环境要复杂很多。实验中要求的是标准普通话和安静无噪声的环境。

如果对代码讲解(详细代码讲解请点击视频)感兴趣的话,可以复制链接中的代码:https://github.com/thewintersun/tensorflowbook/tree/master/Chapter6

运行结果如下:

如果对开发内容感兴趣,请关注雷锋网公众号:AI研习社。

雷锋网

复旦大学Ph.D沈志强:用于目标检测的DSOD模型(ICCV 2017) | 分享总结

雷锋网 AI科技评论按,目标检测作为一个基础的计算机视觉任务,在自动驾驶、视频监控等领域拥有非常广泛的应用前景。目前主流的目标检测方法都严重依赖于在大规模数据集(如ImageNet)上预训练初始模型。而在DSOD: Learning Deeply Supervised Object Detectors from Scratch这篇论文中,作者通过分析深度检测模型从头训练存在的问题,提出了四个原则,他们根据这些原则构建了DSOD模型,该模型在三个标准数据集(PASCAL VOC 07, 12和COCO)上都达到了顶尖的性能。这篇论文已被ICCV2017收录。

在近期雷锋网 AI研习社的线上分享会上,该论文的第一作者——复旦大学Ph.D沈志强为我们带来了对DSOD的详细解读,与此同时也介绍了他在CVPR 2017和ICCV 2017上的一些其它研究工作。

沈志强,复旦大学Ph.D,UIUC ECE系访问学者,导师Thomas S. Huang教授。研究兴趣包括:计算机视觉(目标检测、视频描述、细粒度分类等),深度学习,机器学习等。他曾在因特尔中国研究院(Intel Labs China)进行为期一年的实习研究,期间合作者包括研究院Jianguo Li博士和在读博士生Zhuang Liu等。

分享内容:

很高兴与大家分享我们的最新的工作DSOD,这篇论文已经被ICCV 2017 所收录。

众所周知,计算机视觉有几个比较重要的分类,包括目标分类、定位、目标检测、实例分割,前两个分类是针对单个目标,后两个分类是针对多个目标,DSOD主要是针对目标检测。

说到目标检测,大家可能会想到如下几个比较有代表性的方法:R-CNN、Faster-RCNN、YOLO、SSD。下图是关于他们的一些介绍。

ImageNet预训练模型的限制:一是模型结构是固定的,你不可能改变它的结构,二是会有learning bias,三是会出现domain不匹配的情况。我们的思路是从头训练检测器,但是我们用R-CNN和Faster-RCNN都没能得到较好的表现。

简单回顾下Rol pooling,如下图所示:

它其实就是一个max pooling:

可以在下图中看到forward和backward情况,把Rol pooling去掉这个框架就类似于YOLO和SSD。

几个原则:一是Proposal-free。去掉Rol pooling,虽然对模型的表现影响不大,但这一点非常重要。

二是Deep Supervision。采用Dense Block,能避免梯度消失的情况。


三是Dense Prediction Structure。大大减少了模型的参数量,特征包含更多信息。

四是Stem Block。采用stem结构,好处是能减少输入图片信息的丢失。

下面是DSOD整体结构:

这是我们做的一些对比实验,可以看到增加这些结构之后性能提升的百分点:

下面是在PASCAL VOC2007上的实验结果,可以看到Faster-RCNN和R-CNN速度很慢,YOLO和SSD的速度非常快,但是mAP不高。最下面是我们没有用预训练模型做的一些对比实验,可以看到Faster-RCNN和R-CNN均以失败告终,最后的一行的实验加入COCO后mAP值提升,说明DSOD模型本身的泛化能力非常强。

下面是在PASCAL VOC2012上的实验结果,可以看到DSOD有不错的mAP值。

接下来是在COCO上面的一些结果,对比起来DSOD的也有很好的性能。

最后是一些实际的检测结果,可以看到bounding box对目标的检测非常贴合。

论文地址: https://arxiv.org/abs/1708.01241

代码:https://github.com/szq0214/DSOD

模型可视化示例:http://ethereon.github.io/netscope/#/gist/b17d01f3131e2a60f9057b5d3eb9e04d

最后简单介绍下我们在CVPR 2017的相关工作Dense Video captioning,主要是做视频描述。在视频当中包含很多内容,而这些内容并不一致,因此视频描述相对来说会比较困难。下图是一些示例。

网络结构如下图所示。具体细节大家可以参见我们的论文Weakly Supervised Dense Video Captioning,论文地址:https://arxiv.org/abs/1704.01502

接下来是我们在ICCV 2017上的工作,主要是做网络压缩。我们用了一个衡量channel是否重要的值来训练模型,然后剔除掉不太重要的特征层。论文代码我们也放在github上了。具体细节大家可以参见论文Learning Efficient Convolutional Networks through Network Slimming,论文地址:https://arxiv.org/abs/1708.06519

本次分享的视频如下:

雷锋网 AI科技评论整理编辑。

雷锋网

搜狗研究员讲解基于深度学习的语音分离 | 分享总结

雷锋网 AI 科技评论按:基于深度学习的有监督语音分离在学术界和工业界越来越受到关注,也是深度学习在语音领域的应用中重要的一部分。作为雷锋网AI研习社近期组织的一系列语音领域应用的分享会之一,本次我们请到了来自搜狗的研究员文仕学对语音分离方面主要的研究课题和相关方法做一些介绍。

文仕学,过去学物理,后来学EE,现在从事Deep Learning工作,未来投身AI和CM事业。他的研究兴趣在于语音信号处理和深度学习。在加入搜狗之前,曾在中国科学技术大学学习,在该领域的期刊和会议上发表了若干篇论文。现在在搜狗语音团队任副研究员。

雷锋网 AI 科技评论将本次分享的内容整理如下。

分享主题:基于深度学习的语音分离

文仕学首先介绍了“语音分离”(Speech Separation)是怎么样的一种任务。这个问题来自于“鸡尾酒会问题”,采集的音频信号中除了主说话人之外,还有其他人说话声的干扰和噪音干扰。语音分离的目标就是从这些干扰中分离出主说话人的语音。

根据干扰的不同,语音分离任务可以分为三类:

  • 当干扰为噪声信号时,可以称为“语音增强”(Speech Enhancement)

  • 当干扰为其他说话人时,可以称为“多说话人分离”(Speaker Separation)

  • 当干扰为目标说话人自己声音的反射波时,可以称为“解混响”(De-reverberation)

由于麦克风采集到的声音中可能包括噪声、其他人说话的声音、混响等干扰,不做语音分离、直接进行识别的话,会影响到识别的准确率。因此在语音识别的前端加上语音分离技术,把目标说话人的声音和其它干扰分开就可以提高语音识别系统的鲁棒性,这从而也成为现代语音识别系统中不可或缺的一环。

基于深度学习的语音分离,主要是用基于深度学习的方法,从训练数据中学习语音、说话人和噪音的特征,从而实现语音分离的目标。

这次分享的内容有以下这5个部分:分离使用的模型、训练目标的设置、训练数据的生成、单通道语音分离算法的介绍和讨论。

基于深度学习的语音分离方法使用的模型

第一类模型是多层感知机,DNN,可以先做RBM预训练,再做微调(fine-tune);不过文仕学介绍,他们团队通过实验发现,在大数据集上不需要预训练也可以收敛。

LSTM(长短时记忆网络)的方法中把语音作为一个随时间变化的序列进行建模,比较适合语音数据;CNN(卷积神经网络)通过共享权值,可以在减少训练参数的同时获得比全连接的DNN更好的性能。

近些年也有人用GAN(对抗性生成式网络)做语音增强。模型中通常会把生成器设置为全部是卷积层,为了减少训练参数从而缩短训练时间;判别器负责向生成器提供生成数据的真伪信息,帮助生成器向着“生成干净声音”的方向微调。

训练目标的设置

训练目标包括两类,一类是基于Mask的方法,另一类是基于频谱映射的方法。

基于Mask的方法又可以分为几类

  • “理想二值掩蔽”(Ideal Binary Mask)中的分离任务就成为了一个二分类问题。这类方法根据听觉感知特性,把音频信号分成不同的子带,根据每个时频单元上的信噪比,把对应的时频单元的能量设为0(噪音占主导的情况下)或者保持原样(目标语音占主导的情况下)。

  • 第二类基于Mask的方法是IRM(Ideal Ratio Mask),它同样对每个时频单元进行计算,但不同于IBM的“非零即一”,IRM中会计算语音信号和噪音之间的能量比,得到介于0到1之间的一个数,然后据此改变时频单元的能量大小。IRM是对IBM的演进,反映了各个时频单元上对噪声的抑制程度,可以进一步提高分离后语音的质量和可懂度。

  • TBM与IRM类似,但不是对每个时频单元计算其中语音和噪声的信噪比,而是计算其中语音和一个固定噪声的信噪比

  • SMM是IRM在幅度上的一种形式

  • PSM中加入了干净语音和带噪语音中的相位差信息,有更高的自由度

虽然基于Mask的方法有这么多,但最常用的还是开头的IBM和IRM两种

如果使用频谱映射,分离问题就成为了一个回归问题。

频谱映射可以使用幅度谱、功率谱、梅尔谱以及Gammatone功率谱。Gammatone是模拟人耳耳蜗滤波后的特征。为了压缩参数的动态范围以及考虑人耳的听觉效应,通常还会加上对数操作,比如对数功率谱。

基于频谱映射的方法,是让模型通过有监督学习,自己学习有干扰的频谱到无干扰的频谱(干净语音)之间的映射关系;模型可以是DNN、CNN、LSTM甚至GAN。

这一页是使用相同的DNN模型、相同的输入特征、不同的训练目标得到的结果。

左边的STOI指语音的可懂度,得分在0到1之间,越高越好;右边的PESQ是语音的听觉质量、听感,范围为-0.5到4.5,也是越高越好。

基于Mask的方法STOI表现较好,原因是有共振峰的能量得到了较好的保留,而相邻共振峰之间波谷处的声音虽然失真较大,但人耳对这类失真并不敏感;两类方法在PESQ中表现相当。

训练数据的生成

针对语音分离中的语音增强任务,首先可以通过人为加噪的方法生成带噪语音和干净语音对,分别作为输入和输出(有标注数据),对有监督学习模型进行训练。加入的噪声可以是各种收集到的真实世界中的噪声。

不过收集噪声需要成本,而且人工能够收集到的噪音总是有限的,最好能够有一套完备、合理的方案,用仿真的方式生成任意需要的噪声。 在今年的MLSP(信号处理机器学习)会议上,搜狗语音团队就发表了一项关于噪声基的工作,通过构造一个噪声基模型,在不使用任何真实噪音数据的情况下,生成带噪语音对语音增强模型进行训练,达到了与使用50种真实噪音的情况下相当的性能(下图)。

如果将这50种真实噪声和噪声基产生的数据混合在一起,性能可以比单独使用真实噪音的情况得到进一步提高。这也说明噪声基生成的噪声和真实噪声数据之间有着互补性,在实际应用中也可以解开一些真实噪声数据不足带来的限制。

单通道语音分离算法

如开头所说,语音分离任务可以分为三类,语音增强、多说话人分离和解混响。不同任务的处理方法也有所不同。

对于语音增强,基于Mask的方法首先进行耳蜗滤波,然后特征提取、时频单元分类、二值掩蔽、后处理,就可以得到增强后的语音了。

语音增强的另一类基于频谱映射的方法中,先特征提取,用深度神经网络学习带噪语音和干净语音的对数功率谱之间映射关系,再加上波形重建,就可以得到增强后的语音。

基于有监督学习的算法都存在推广性(generalization)的问题,语音增强这里也不例外。针对噪音类型、信噪比和说话人的推广性都还有提升的空间。

对于解混响,同样可以使用基于频谱映射的方法。解混响中也需要生成训练数据,但不同于带噪语音生成时做时域的相加,带混响的语音是在时域上进行卷积;同样都把干净语音作为带标注数据。

在基于频谱映射的方法基础上还可以加以改进。对于不同的混响时间,深度神经网络需要学习的时间窗口长度是不一样的,因而改进方法中加入了告知混响时间的功能,根据帧移R和扩帧数目N提特征后解码,可以获得更好的解混响效果。

多说话人分离分为三种情况

  • 目标说话人和干扰说话人都固定,Speaker dependent,有监督分离

  • 目标说话人固定,训练阶段和测试阶段的干扰说话人可变,Target dependent,半监督分离

  • 目标说话人和干扰说话人都可变,Speaker independent,无监督分离

对于有监督和半监督分离,可以使用基于频谱映射的方法,与前面使用基于频谱映射的方法做语音增强类似。

对于无监督分类,有无监督聚类、深度聚类以及最近的序列不变训练(PIT)方法。PIT方法的核心是红框中标出的部分,在误差回传的时候,分别计算输出序列和标注序列间各种组合的均方误差,然后从这些均方误差中找到最小的那个作为回传误差,也就是根据自动找到的声源间的最佳匹配进行优化,避免出现序列模糊的问题。

讨论两个问题

最后,文仕学给大家留了两个思考题,欢迎大家在评论区给出自己的见解。

  • 第一个问题是语音分离任务中,是按传统思路先变换到频域,然后在频域上进行处理,还是直接在时域上处理比较好?后者的好处是端到端训练,不用考虑频域方法做傅立叶反变换时相位的问题。

  • 第二个问题是对于语音增强任务,应该使用真实噪声加噪还是使用人工仿真生成的噪声进行降噪?

感谢文仕学此次的分享以及对文本的指正,也欢迎大家关注雷锋网 AI 研习社未来的更多分享活动!

雷锋网