VALSE

查看: 7027|回复: 0

AI100_机器学习日报 2017-10-12 微博深度学习平台架构和实践

[复制链接]

829

主题

837

帖子

7万

积分

版主

Rank: 7Rank: 7Rank: 7

积分
79276
QQ
发表于 2017-10-20 15:20:59 | 显示全部楼层 |阅读模式
AI100_机器学习日报 2017-10-12
@好东西传送门 出品,由@AI100运营, 过往目录http://ai100.com.cn


订阅:关注微信公众号 AI100(ID:rgznai100,扫二维码),回复“机器学习日报”,加你进日报群

邮件版包括12条,本期的Web版有完整内容14条

用日报搜索找到以前分享的内容: http://ml.memect.com/search/
今日焦点 (5)
[img=20,20][/img] wx:黄波,何沧平   网页链接 2017-10-12 17:48
会议活动 架构 深度学习 视觉 算法 应用 语音 资源 自然语言处理 GPU Hadoop Spark分布式学习 广告系统 行业动态 何沧平 何永灿 黄波 会议 机器翻译 机器人 聚类 可视化 情感分析 社交网络神经网络 书籍 数据科学 特征工程 推荐系统 万兆 问答系统 于微博
「微博深度学习平台架构和实践」作者 | 黄波,何沧平责编 | 何永灿 随着人工神经网络算法的成熟、GPU计算能力的提升,深度学习在众多领域都取得了重大突破。本文介绍了微博引入深度学习和搭建深度学习平台的经验,特别是机器学习工作流、控制中心、深度学习模型训练集群、模型在线预测服务等核心部分的设计、架构经验。微博深度学习平台极大地提升了深度学习开发效率和业务迭代速度,提高了深度学习模型效果和业务效果。 深度学习平台介绍人工智能为机器赋予人的智能。随着计算机计算能力越来越强,在重复性劳动和数学计算方面很快超过了人类。然而,一些人类通过直觉可以很快解决的问题,例如自然语言理解、图像识别、语音识别等,长期以来很难通过计算机解决。随着人工神经网络算法的成熟、GPU计算能力的提升,深度学习在这些领域也取得了重大的突破,甚至已经超越人类。深度学习大大拓展了人工智能的领域范围。深度学习框架是进行深度学习的工具。简单来说,一套深度学习框架就是一套积木,各个组件就是某个模型或算法;开发者通过简单设计和组装就能获得自己的一套方案。深度学习框架的出现降低了深度学习门槛。开发者不需要编写复杂的神经网络代码,只需要根据自己的数据集,使用已有模型通过简单配置训练出参数。TensorFlow、Caffe和MXNet是三大主流的深度学习开源框架:TensorFlow的优势是社区最活跃,开源算法和模型最丰富;Caffe则是经典的图形领域框架,使用简单,在科研领域占有重要地位;MXNet在分布式性能上表现优异。PaddlePaddle、鲲鹏、Angel则是百度、阿里、腾讯分别推出的分布式计算框架。2015年底,Google开源了TensorFlow深度学习框架,可以让开发者方便地组合CNN、RNN等模块实现复杂的神经网络模型。TensorFlow是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。2016年,百度开源了PaddlePaddle(PArallel Distributed Deep LEarning 并行分布式深度学习)深度学习框架。PaddlePaddle具有易用,高效,灵活和可伸缩等特点,为百度内部多项产品提供深度学习算法支持。深度学习框架主要提供神经网络模型实现,用于进行模型训练。模型训练只是机器学习和深度学习中的一环,除此之外还有数据输入、数据处理、模型预测、业务应用等重要环节。深度学习平台就是整合深度学习各环节,为开发者提供一体化服务的平台。深度学习平台能够加快深度学习的开发速度,缩减迭代周期;同时,深度学习平台能够将计算能力、模型开发能力共享,提升开发效率和业务效果,也能够将资源合理调度,提高资源利用率。腾讯深度学习平台DI-X腾讯深度学习平台DI-X于2017年3月发布。DI-X基于腾讯云的大数据存储与处理能力来提供一站式的机器学习和深度学习服务。DI-X支持TensorFlow、Caffe以及Torch等三大深度学习框架,主要基于腾讯云的GPU计算平台。DI-X的设计理念是打造一个一站式的机器学习平台,集开发、调试、训练、预测、部署于一体, 让算法科学家和数据科学家,无须关注机器学习(尤其是深度学习)的底层工程繁琐的细节和资源,专注于模型和算法调优。DI-X在腾讯内部使用了一年,其主要用于游戏流失率预测、用户标签传播以及广告点击行为预测等。阿里机器学习平台PAI阿里机器学习平台PAI1.0于2015年发布,包括数据处理以及基础的回归、分类、聚类算法。阿里机器学习平台PAI2.0于2017年3月发布,配备了更丰富的算法库、更大规模的数据训练和全面兼容开源的平台化产品。深度学习是阿里机器学习平台PAI2.0的重要功能,支持TensorFlow、Caffe、MXNet框架,这些框架与开源接口兼容。在数据源方面,PAI2.0支持非结构化、结构化等各种数据源;在计算资源方面,支持CPU、GPU、FPGA等异构计算资源;在工作流方面,支持模型训练和预测一体化。 PAI已经在阿里巴巴内部使用了2年。基于该平台,在淘宝搜索中,搜索结果会基于商品和用户的特征进行排序。百度深度学习平台百度深度学习平台是一个面向海量数据的深度学习平台,基于PaddlePaddle和TensorFlow开源计算框架,支持GPU运算,为深度学习技术的研发和应用提供可靠性高、扩展灵活的云端托管服务。通过百度深度学习平台,不仅可以轻松训练神经网络,实现情感分析、机器翻译、图像识别,也可以利用百度云的存储和虚拟化产品直接将模型部署至应用环境。 微博深度学习平台设计 微博在Feed CTR、反垃圾、图片分类、明星识别、视频推荐、广告等业务上广泛使用深度学习技术,同时广泛使用TensorFlow、Caffe、Keras、MXNet等深度学习框架。为了融合各个深度学习框架,有效利用CPU和GPU资源,充分利用大数据、分布式存储、分布式计算服务,微博设计开发了微博深度学习平台。微博深度学习平台支持如下特性:方便易用:支持数据输入、数据处理、模型训练、模型预测等工作流,可以通过简单配置就能完成复杂机器学习和深度学习任务。特别是针对深度学习,仅需选择框架类型和计算资源规模,就能模型训练。灵活扩展:支持通用的机器学习算法和模型,以及用户自定义的算法和模型。多种深度学习框架:目前支持TensorFlow、Caffe等多种主流深度学习框架,并进行了针对性优化。异构计算:支持GPU和CPU进行模型训练,提高模型训练的效率。资源管理:支持用户管理、资源共享、作业调度、故障恢复等功能。模型预测:支持一键部署深度学习模型在线预测服务。 微博深度学习平台架构和实践 微博深度学习平台是微博机器学习平台的重要组成部分,除继承微博机器学习平台的特性和功能以外,支持TensorFlow、Caffe等多种主流深度学习框架,支持GPU等高性能计算集群。微博深度学习平台架构如图1所示。 图1 微博深度学习平台架构 下面将以机器学习工作流、控制中心、深度学习模型训练集群、模型在线预测服务等典型模块为例,介绍微博深度学习平台的实践。微博深度学习和机器学习工作流中,原始数据收集、数据处理、特征工程、样本生成、模型评估等流程占据了大量的时间和精力。为了能够高效地端到端进行深度学习和机器学习的开发,我们引入了微博机器学习工作流框架WeiFlow。WeiFlow的设计初衷就是将微博机器学习流的开发简单化、傻瓜化,让业务开发人员从纷繁复杂的数据处理、特征工程、模型工程中解脱出来,将宝贵的时间和精力投入到业务场景的开发和优化当中,彻底解放业务人员的生产力,大幅提升开发效率。WeiFlow的诞生源自于微博机器学习的业务需求。在微博的机器学习工作流中(如图2所示),多种数据流经过实时数据处理,存储至特征工程并生成离线的原始样本。在离线系统,对原始样本进行各式各样的数据处理、特征处理、特征映射,从而生成训练样本;业务人员根据实际业务场景(排序、推荐),选择不同的算法模型,进行模型训练、预测、测试和评估;待模型迭代满足要求后,通过自动部署将模型文件和映射规则部署到线上。线上系统根据模型文件和映射规则,从特征工程中拉取相关特征,根据映射规则进行预处理,生成可用于预测的样本格式,进行线上实时预测,最终将预测结果(用户对微博内容的兴趣程度)输出,供线上服务调用。图2 微博机器学习工作流 为了应对微博多样的计算环境,WeiFlow采用了双层的DAG任务流设计,如图3所示。外层的DAG由不同的Node构成,每一个Node是一个内层的DAG,具备独立的执行环境,即上文提及的Spark、TensorFlow、Hive、Storm、Flink等计算引擎。图3 WeiFlow双层DAG任务流设计 外层DAG设计的初衷是利用各个计算引擎的特长,同时解决各个计算引擎间的依赖关系和数据传输问题。内层的DAG,利用引擎的特性与优化机制,实现不同的抽象作为DAG中计算模块之间数据交互的载体。在使用方面,业务人员根据事先约定好的规范和格式,将双层DAG的计算逻辑定义在XML配置文件中。依据用户在XML指定的依赖关系和处理模块,WeiFlow自动生成DAG任务流图,并在运行时阶段调用处理模块的实现来完成用户指定的任务流。通过在XML配置文件中将所需计算模块按照依赖关系堆叠,即可以搭积木的方式完成配置化、模块化的流水线作业开发。控制中心WeiCenter的目标就是简单、方便、易用,让大家便利地使用微博深度学习平台。下面将介绍控制中心的作业管理、数据管理和调度管理等部分。作业管理:我们在进行深度学习、大规模机器学习、实时处理的过程中,由于需要各种不同框架的配合使用共同完成一个任务,比如TensorFlow适合进行高性能学习、Spark适合大规模亿维特征训练、Storm或者Flink适合实时特征生成以及实时模型生成等,将这些结合到一起才能完成从离线训练到线上实时预测。以前这需要开发者去学习各种框架复杂的底层开发,现在通过控制中心选择不同的作业类型,可以方便地生成各种类型的作业任务。用户只需要在可视化UI上进行作业类型选择、数据源选择、输出目的地选择或者使用WeiFlow进行编程,就能生成一个高大上的深度学习或机器学习作业。数据管理:当大数据的数据量,每天按P级增长,使用人员每天上百人时,数据管理就显得尤为重要。如果模型训练的集群和数据所在的集群,不是同一个集群,如何高效地将数据同步到模型训练的集群是一个难点。并且在完成模型训练后,能自动根据训练结果作出评估,对训练数据进行删除。由于使用集群的开发人员素质不齐,你会发现总是有很多冗余数据没删除,而且总有无用数据生成,这个时候需要一个统一的数据管理平台,去约束大家生成数据的同时删除数据,去各个平台上探测长时间无访问的数据并进行确认清理。调度管理:作业有多种分类,按重要程度分:高、中、低;按占用资源量分:占用多、占用一般、占用少;按调度器分:Yarn、Mesos、Kubernetes等。Spark、Hadoop利用Yarn调度解决了优先级高的作业和资源占用多作业之间的矛盾;TensorFlow利用成熟的Kubernetes或Mesos调度TensorFlow节点进行GPU集群化任务管理;普通离线作业和服务部署利用Mesos进行资源调度。控制中心集成了多种调度器,利用各种成熟的解决方案,简化了作业负责调度这一难题。总之,控制中心负责用户权限控制、作业图依赖管理、数据依赖管理等,调度服务负责具体的作业执行、资源抽象、资源管理。控制中心和调度服务如图4所示。图4 控制中心和调度服务 微博深度学习训练集群与传统HPC集群有重大区别,分别体现在计算服务器选型、分布式训练、网络设备、存储系统、作业调度系统。单机多GPU卡:深度学习模型训练大部分情况下单机运算,且几乎完全依靠GPU,因此选用能挂载2/4/8块GPU的服务器,尽量提高单机运算能力。分布式训练:如果训练时间长或者样本规模大,超过单台服务器能力时,需要支持分布式训练。以TensorFlow分布式运行方式为例进行说明,如图5所示。一个TensorFlow分布式程序对应一个抽象的集群,集群(cluster)由工作节点(worker)和参数服务器(parameter server)组成。工作节点(worker)承担矩阵乘、向量加等具体计算任务,计算出相应参数(weight和bias),并把参数汇总到参数服务器;参数服务器(parameter server)把从众多工作节点收集参数汇总并计算,并传递给相应工作节点,由工作节点进行下一轮计算,如此循环往复。图5 TensorFlow分布式架构 万兆以太网络:参数更新过程中,通信粒度大,而且允许异步通信,对延时没有严格要求。因此,训练集群没有选用HPC集群必备的InfiniBand或Omini-Path低延时网络设备,而是选用普通的以太网设备。HDFS分布式文件系统:TensorFlow分布式工作节点读取训练样本文件时,不同工作节点读取的数据段不交叉,训练过程中也不会交换样本数据。写出模型文件也只有某一个工作节点负责,不涉及工作节点间的数据交换。因此,深度学习训练作业不要求HPC机群中常见的并行文件系统,只要是一个能被所有工作节点同时访问文件系统就可以。实际上,微博深度学习平台采用HDFS,不但满足要求,而且方便与其它业务共享数据。定制的作业调度系统:TensorFlow分布式参数服务器进程不会自动结束,需要手动杀死,而HPC应用中的MPI进程同时开始同时结束。设计作业调度方案时必须考虑这个特点,使之能够在所有工作节点都运行结束后自动杀死参数服务器进程。模型在线预测服务是深度学习平台的一个重要功能。由于微博业务场景需求,模型在线预测服务并发量大,对延时、可用性要求极高。考虑到这些业务需求以及服务本身以后的高扩展性,微博分布式模型在线预测服务WeiServing的架构如图6所示。图6 WeiServing-微博分布式模型在线预测服务架构 特征处理多样化:模型在线预测服务首先要解决的问题是,将在线的原始特征数据,映射成模型可以处理的数据格式。基于大量的业务模型实践与调优,微博机器学习工作流框架WeiFlow抽象出了一套特征处理函数,来提升开发效率和业务效果。WeiServing与WeiFlow在特征处理方面一脉相承,支持一系列特征处理函数,包括piecewise、pickcat、descartes、combinehash等映射函数,对特征进行归一化、离散化、ID化、组合等特征处理。多模型多版本支持:由于微博业务场景多种多样,不同的业务场景对模型与特征有不同的需求,WeiServing支持同一个集群为多个业务提供服务,通过docker+k8s进行资源隔离与负载均衡。在相同特征情况下,可以选择不同的模型算法进行处理。另外,对于同一个模型,WeiServing支持在线升级与多版本同时在线,为业务灰度测试提供可能。所有的差异化都被映射到配置文件中,通过简单的配置来完成线上模型的转换。分布式服务支持:为了应对大规模模型服务与在线机器学习,WeiServing参考通用的参数服务器解决方案,实现了WeiParam分布式服务架构,除了支持传统的PS功能之外,WeiParam针对在线服务需求,通过分布式调度系统,提供多副本、高可用、高性能的系统机制。多源支持:对于普通离线学习,模型会导出到文件中,WeiServing通过ModelManager模块管理模型加载,支持本地存储与分布式存储。同时,WeiServing为支持在线机器学习,提供对实时流接口对接,在线训练的模型参数可以实时推送到WeiParam中,为线上提供服务。总结 本文介绍了深度学习框架和平台的概念和特征,基于微博深度学习平台深入探讨了深度学习平台的设计思考和技术架构。机器学习工作流和控制中心是我们在规范机器学习工作流程的设计成果,系统化的标准流程能极大提升机器学习开发效率和业务迭代速度。深度学习模型训练集群和模型在线预测服务是我们在深度学习模型训练、模型预测的集群化、服务化方面的系统产出,是保障模型效果和业务效果的基础。希望上述介绍能给大家带来思考和帮助。 作者简介: 黄波,微博机器学习平台技术负责人、资深架构师,负责微博机器学习平台和Feed算法系统。毕业于中科院计算所,熟悉Feed系统、推荐系统、分布式计算系统。 何沧平,微博深度学习平台架构师,主要负责深度学习算法在微博Feed个性化排序、个性化推荐等业务中的应用。毕业于中科院数学院,熟悉高性能计算,著有图书《OpenACC并行编程实战》。 本文为《程序员》原创文章,未经允许不得转载,更多精彩文章点击「阅读原文」订阅《程序员》 SDCC 2017“人工智能技术实战线上峰会”将在CSDN学院以直播互动的方式举行。作为SDCC系列技术峰会的一部分,来自阿里巴巴、微软、商汤科技、第四范式、微博、出门问问、菱歌科技的AI专家,将针对机器学习平台、系统架构、对话机器人、芯片、推荐系统、Keras、分布式系统、NLP等热点话题进行分享。先行者们正在关注哪些关键技术?如何从理论跨越到企业创新实践?你将从本次峰会找到答案。每个演讲时段均设有答疑交流环节,与会者和讲师可零距离互动。  via: http://mp.weixin.qq.com/s?__biz= ... e=0#wechat_redirect




[img=20,20][/img] wx:   网页链接 2017-10-13 06:56
深度学习 视觉 算法 应用 资源 自然语言处理 PDF 分类 广告系统 行业动态 回归 集成学习 矩阵 期刊 神经网络 特征工程 凸优化 医疗
「史上最全机器学习词汇宝典 看看你知道多少个呢?」准确率(accuracy)分类模型预测准确的比例。在多类别分类中,准确率定义如下:在二分类中,准确率定义为:激活函数(Activation function)一种函数(例如 ReLU 或 Sigmoid),将前一层所有神经元激活值的加权和输入到一个非线性函数中,然后向下一层传递该函数的输出值(典型的非线性)。AdaGrad一种复杂的梯度下降算法,重新调节每个参数的梯度,高效地给每个参数一个单独的学习率。详见论文:http://www.jmlr.org/papers/volume12/duchi11a/duchi11a.pdf。AUC(曲线下面积)一种考虑到所有可能的分类阈值的评估标准。ROC 曲线下面积代表分类器随机预测真正类(Ture Positives)要比假正类(False Positives)概率大的确信度。B反向传播(Backpropagation)神经网络中完成梯度下降的重要算法。首先,在前向传播的过程中计算每个节点的输出值。然后,在反向传播的过程中计算与每个参数对应的误差的偏导数。基线(Baseline)被用为对比模型表现参考点的简单模型。基线帮助模型开发者量化模型在特定问题上的预期表现。批量模型训练中一个迭代(指一次梯度更新)使用的样本集。批量大小(batch size)一个批量中样本的数量。例如,SGD 的批量大小为 1,而 mini-batch 的批量大小通常在 10-1000 之间。批量大小通常在训练与推理的过程中确定,然而 TensorFlow 不允许动态批量大小。偏置(bias)与原点的截距或偏移量。偏置(也称偏置项)被称为机器学习模型中的 b 或者 w0。例如,偏置项是以下公式中的 b:y′=b+w_1x_1+w_2x_2+…w_nx_n。注意不要和预测偏差混淆。二元分类器(binary classification)一类分类任务,输出两个互斥(不相交)类别中的一个。例如,一个评估邮件信息并输出「垃圾邮件」或「非垃圾邮件」的机器学习模型就是一个二元分类器。binning/bucketing根据值的范围将一个连续特征转换成多个称为 buckets 或者 bins 二元特征,称为 buckets 或者 bins。例如,将温度表示为单一的浮点特征,可以将温度范围切割为几个离散的 bins。假如给定的温度的敏感度为十分之一度,那么分布在 0.0 度和 15.0 度之间的温度可以放入一个 bin 中,15.1 度到 30.0 度放入第二个 bin,30.1 度到 45.0 度放入第三个 bin。C标定层(calibration layer)一种调整后期预测的结构,通常用于解释预测偏差。调整后的预期和概率必须匹配一个观察标签集的分布。候选采样(candidate sampling)一种优化训练时间的,使用 Softmax 等算法计算所有正标签的概率,同时只计算一些随机取样的负标签的概率。例如,有一个样本标记为「小猎兔狗」和「狗」,候选取样将计算预测概率,和与「小猎兔狗」和「狗」类别输出(以及剩余的类别的随机子集,比如「猫」、「棒棒糖」、「栅栏」)相关的损失项。这个想法的思路是,负类别可以通过频率更低的负强化(negative reinforcement)进行学习,而正类别经常能得到适当的正强化,实际观察确实如此。候选取样的动力是计算有效性从所有负类别的非计算预测的得益。检查点(checkpoint)在特定的时刻标记模型的变量的状态的数据。检查点允许输出模型的权重,也允许通过多个阶段训练模型。检查点还允许跳过错误继续进行(例如,抢占作业)。注意其自身的图式并不包含于检查点内。类别(class)所有同类属性的目标值作为一个标签。例如,在一个检测垃圾邮件的二元分类模型中,这两个类别分别是垃圾邮件和非垃圾邮件。而一个多类别分类模型将区分狗的种类,其中的类别可以是贵宾狗、小猎兔狗、哈巴狗等等。类别不平衡数据集(class-imbalanced data set)这是一个二元分类问题,其中两个类别的标签的分布频率有很大的差异。比如,一个疾病数据集中若 0.01% 的样本有正标签,而 99.99% 的样本有负标签,那么这就是一个类别不平衡数据集。但对于一个足球比赛预测器数据集,若其中 51% 的样本标记一队胜利,而 49% 的样本标记其它队伍胜利,那么这就不是一个类别不平衡数据集。分类模型(classification)机器学习模型的一种,将数据分离为两个或多个离散类别。例如,一个自然语言处理分类模型可以将一句话归类为法语、西班牙语或意大利语。分类模型与回归模型(regression model)成对比。分类阈值(classification threshold)应用于模型的预测分数以分离正类别和负类别的一种标量值标准。当需要将 logistic 回归的结果映射到二元分类模型中时就需要使用分类阈值。例如,考虑一个确定给定邮件为垃圾邮件的概率的 logistic 回归模型,如果分类阈值是 0.9,那么 logistic 回归值在 0.9 以上的被归为垃圾邮件,而在 0.9 以下的被归为非垃圾邮件。混淆矩阵(confusion matrix)总结分类模型的预测结果的表现水平(即,标签和模型分类的匹配程度)的 NxN 表格。混淆矩阵的一个轴列出模型预测的标签,另一个轴列出实际的标签。N 表示类别的数量。在一个二元分类模型中,N=2。例如,以下为一个二元分类问题的简单的混淆矩阵:上述混淆矩阵展示了在 19 个确实为肿瘤的样本中,有 18 个被模型正确的归类(18 个真正),有 1 个被错误的归类为非肿瘤(1 个假负类)。类似的,在 458 个确实为非肿瘤的样本中,有 452 个被模型正确的归类(452 个真负类),有 6 个被错误的归类(6 个假正类)。多类别分类的混淆矩阵可以帮助发现错误出现的模式。例如,一个混淆矩阵揭示了一个识别手写数字体的模型倾向于将 4 识别为 9,或者将 7 识别为 1。混淆矩阵包含了足够多的信息可以计算很多的模型表现度量,比如精度(precision)和召回(recall)率。连续特征(continuous feature)拥有无限个取值点的浮点特征。和离散特征(discrete feature)相反。收敛(convergence)训练过程达到的某种状态,其中训练损失和验证损失在经过了确定的迭代次数后,在每一次迭代中,改变很小或完全不变。换句话说就是,当对当前数据继续训练而无法再提升模型的表现水平的时候,就称模型已经收敛。在深度学习中,损失值下降之前,有时候经过多次迭代仍保持常量或者接近常量,会造成模型已经收敛的错觉。凸函数(concex function)一种形状大致呈字母 U 形或碗形的函数。然而,在退化情形中,凸函数的形状就像一条线。例如,以下几个函数都是凸函数:L2 损失函数Log 损失函数L1 正则化函数L2 正则化函数凸函数是很常用的损失函数。因为当一个函数有最小值的时候(通常就是这样),梯度下降的各种变化都能保证找到接近函数最小值的点。类似的,随机梯度下降的各种变化有很大的概率(虽然无法保证)找到接近函数最小值的点。两个凸函数相加(比如,L2 损失函数+L1 正则化函数)后仍然是凸函数。深度模型通常是非凸的。出乎意料的是,以凸优化的形式设计的算法通常都能在深度网络上工作的很好,虽然很少能找到最小值。成本(cost)loss 的同义词。交叉熵(cross-entropy)多类别分类问题中对 Log 损失函数的推广。交叉熵量化两个概率分布之间的区别。参见困惑度(perplexity)。D数据集(data set)样本的集合。决策边界(decision boundary)在一个二元分类或多类别分类问题中模型学习的类别之间的分离器。例如,下图就展示了一个二元分类问题,决策边界即橙点类和蓝点类的边界。深度模型(deep model)一种包含多个隐藏层的神经网络。深度模型依赖于其可训练的非线性性质。和宽度模型对照(wide model)。密集特征(dense feature)大多数取值为非零的一种特征,通常用取浮点值的张量(tensor)表示。和稀疏特征(sparse feature)相反。派生特征(derived feature)合成特征(synthetic feature)的同义词。离散特征(discrete feature)只有有限个可能取值的一种特征。例如,一个取值只包括动物、蔬菜或矿物的特征就是离散(或类别)特征。和连续特征(continuous feature)对照。dropout 正则化(dropout regularization)训练神经网络时一种有用的正则化方法。dropout 正则化的过程是在单次梯度计算中删去一层网络中随机选取的固定数量的单元。删去的单元越多,正则化越强。动态模型(dynamic model)以连续更新的方式在线训练的模型。即数据连续不断的输入模型。E早期停止法(early stopping)一种正则化方法,在训练损失完成下降之前停止模型训练过程。当验证数据集(validation data set)的损失开始上升的时候,即泛化表现变差的时候,就该使用早期停止法了。嵌入(embeddings)一类表示为连续值特征的明确的特征。嵌入通常指将高维向量转换到低维空间中。例如,将一个英语句子中的单词以以下任何一种方式表示:拥有百万数量级(高维)的元素的稀疏向量,其中所有的元素都是整数。向量的每一个单元表示一个单独的英语单词,单元中的数字表示该单词在一个句子中出现的次数。由于一个句子中的单词通常不会超过 50 个,向量中几乎所有的单元都是 0。少量的非零的单元将取一个小的整数值(通常为 1)表示句子中一个单词的出现次数。拥有数百个(低维)元素的密集向量,其中每一个元素取 0 到 1 之间的浮点数。在 TensorFlow 中,嵌入是通过反向传播损失训练的,正如神经网络的其它参量一样。经验风险最小化(empirical risk minimization,ERM)选择能最小化训练数据的损失的模型函数的过程。和结构风险最小化(structual risk minimization)对照。集成(ensemble)多个模型预测的综合考虑。可以通过以下一种或几种方法创建一个集成方法:设置不同的初始化;设置不同的超参量;设置不同的总体结构。深度和广度模型是一种集成。评估器(Estimator) tf.Estimator 类的一个例子,封装 logic 以建立一个 TensorFlow 图并运行一个 TensorFlow session。你可以通过以下方式创建自己的评估器:https://www.tensorflow.org/extend/estimators样本(example)一个数据集的一行内容。一个样本包含了一个或多个特征,也可能是一个标签。参见标注样本(labeled example)和无标注样本(unlabeled example)。F假负类(false negative,FN)被模型错误的预测为负类的样本。例如,模型推断一封邮件为非垃圾邮件(负类),但实际上这封邮件是垃圾邮件。假正类(false positive,FP)被模型错误的预测为正类的样本。例如,模型推断一封邮件为垃圾邮件(正类),但实际上这封邮件是非垃圾邮件。假正类率(false positive rate,FP rate)ROC 曲线(ROC curve)中的 x 轴。FP 率的定义是:假正率=假正类数/(假正类数+真负类数)特征(feature)输入变量,用于做出预测。特征列(feature columns/FeatureColumn)具有相关性的特征的集合,比如用户可能居住的所有可能的国家的集合。一个样本的一个特征列中可能会有一个或者多个特征。TensorFlow 中的特征列还可以压缩元数据比如下列情况:特征的数据类型;一个特征是固定长度的或应该转换为嵌入。一个特征列可以仅包含一个特征。「特征列」是谷歌专用的术语。在 VW 系统(Yahoo/Microsoft)中特征列的意义是「命名空间」(namespace),或者场(field)。特征交叉(feature cross)将特征进行交叉(乘积或者笛卡尔乘积)运算后得到的合成特征。特征交叉有助于表示非线性关系。特征工程(feature engineering)在训练模型的时候,决定哪些特征是有用的,然后将记录文件和其它来源的原始数据转换成上述特征的过程。在 TensorFlow 中特征工程通常意味着将原始记录文件输入 tf.Example 协议缓存中。参见 tf.Transform。特征工程有时候也称为特征提取。特征集(feature set)机器学习模型训练的时候使用的特征群。比如,邮政编码,面积要求和物业状况可以组成一个简单的特征集,使模型能预测房价。特征定义(feature spec)描述所需的信息从 tf.Example 协议缓存中提取特征数据。因为 tf.Example 协议缓存只是数据的容器,必须明确以下信息:需要提取的数据(即特征的关键信息)数据类型(比如,浮点数还是整数)数据长度(固定的或者变化的)Estimator API 提供了从一群特征列中生成一个特征定义的工具。完全 softmax(full softmax)参见 softmax。和候选采样对照。 转自:深度学习世界 完整内容请点击“阅读原文” via: http://mp.weixin.qq.com/s?__biz= ... e=0#wechat_redirect




[img=20,20][/img] wx:   网页链接 2017-10-13 06:56
会议活动 深度学习 视觉 算法 资源 ICLR KNN Song H Yann Lecun 分类 会议 矩阵 聚类 神经网络 书籍
「CNN模型压缩与加速算法综述」前言自从AlexNet一举夺得ILSVRC 2012 ImageNet图像分类竞赛的冠军后,卷积神经网络(CNN)的热潮便席卷了整个计算机视觉领域。CNN模型火速替代了传统人工设计(hand-crafted)特征和分类器,不仅提供了一种端到端的处理方法,还大幅度地刷新了各个图像竞赛任务的精度,更甚者超越了人眼的精度(LFW人脸识别任务)。CNN模型在不断逼近计算机视觉任务的精度极限的同时,其深度和尺寸也在成倍增长。表1 几种经典模型的尺寸,计算量和参数数量对比ModelModel Size(MB)MillionMult-AddsMillionParametersAlexNet[1]>20072060VGG16[2]>50015300138GoogleNet[3]~5015506.8Inception-v3[4]90-100500023.2随之而来的是一个很尴尬的场景:如此巨大的模型只能在有限的平台下使用,根本无法移植到移动端和嵌入式芯片当中。就算想通过网络传输,但较高的带宽占用也让很多用户望而生畏。另一方面,大尺寸的模型也对设备功耗和运行速度带来了巨大的挑战。因此这样的模型距离实用还有一段距离。在这样的情形下,模型小型化与加速成了亟待解决的问题。其实早期就有学者提出了一系列CNN模型压缩方法,包括权值剪值(prunning)和矩阵SVD分解等,但压缩率和效率还远不能令人满意。近年来,关于模型小型化的算法从压缩角度上可以大致分为两类:从模型权重数值角度压缩和从网络架构角度压缩。另一方面,从兼顾计算速度方面,又可以划分为:仅压缩尺寸和压缩尺寸的同时提升速度。本文主要讨论如下几篇代表性的文章和方法,包括SqueezeNet[5]、DeepCompression[6]、XNorNet[7]、Distilling[8]、MobileNet[9]和ShuffleNet[10],也可按照上述方法进行大致分类:表2 几种经典压缩方法及对比MethodCompression  ApproachSpeed  ConsiderationSqueezeNetarchitectureNoDeep CompressionweightsNoXNorNetweightsYesDistillingarchitectureNoMobileNetarchitectureYesShuffleNetarchitectureYes   一、SqueezeNet1.1 设计思想SqueezeNet是F. N. Iandola,S.Han等人于2016年的论文《SqueezeNet: AlexNet-level accuracy with 50xfewer parameters and <0.5MB model size》中提出的一个小型化的网络模型结构,该网络能在保证不损失精度的同时,将原始AlexNet压缩至原来的510倍左右(<0.5MB)。SqueezeNet的核心指导思想是——在保证精度的同时使用最少的参数。而这也是所有模型压缩方法的一个终极目标。基于这个思想,SqueezeNet提出了3点网络结构设计策略:策略 1.将3x3卷积核替换为1x1卷积核。这一策略很好理解,因为1个1x1卷积核的参数是3x3卷积核参数的1/9,这一改动理论上可以将模型尺寸压缩9倍。策略 2.减小输入到3x3卷积核的输入通道数。我们知道,对于一个采用3x3卷积核的卷积层,该层所有卷积参数的数量(不考虑偏置)为:式中,N是卷积核的数量,也即输出通道数,C是输入通道数。因此,为了保证减小网络参数,不仅仅需要减少3x3卷积核的数量,还需减少输入到3x3卷积核的输入通道数量,即式中C的数量。策略 3.尽可能的将降采样放在网络后面的层中。在卷积神经网络中,每层输出的特征图(feature map)是否下采样是由卷积层的步长或者池化层决定的。而一个重要的观点是:分辨率越大的特征图(延迟降采样)可以带来更高的分类精度,而这一观点从直觉上也可以很好理解,因为分辨率越大的输入能够提供的信息就越多。上述三个策略中,前两个策略都是针对如何降低参数数量而设计的,最后一个旨在最大化网络精度。1.2 网络架构基于以上三个策略,作者提出了一个类似inception的网络单元结构,取名为fire module。一个fire module 包含一个squeeze 卷积层(只包含1x1卷积核)和一个expand卷积层(包含1x1和3x3卷积核)。其中,squeeze层借鉴了inception的思想,利用1x1卷积核来降低输入到expand层中3x3卷积核的输入通道数。如图1所示。                        图1 Fire module结构示意图[5]其中,定义squeeze层中1x1卷积核的数量是s1x1,类似的,expand层中1x1卷积核的数量是e1x1, 3x3卷积核的数量是e3x3。令s1x1 < e1x1+ e3x3从而保证输入到3x3的输入通道数减小。SqueezeNet的网络结构由若干个fire module组成,另外文章还给出了一些架构设计上的细节:·      为了保证1x1卷积核和3x3卷积核具有相同大小的输出,3x3卷积核采用1像素的zero-padding和步长·      squeeze层和expand层均采用RELU作为激活函数·      在fire9后采用50%的dropout·      由于全连接层的参数数量巨大,因此借鉴NIN[11]的思想,去除了全连接层而改用global average pooling。 1.3 实验结果表3 不同压缩方法在ImageNet上的对比实验结果 [5]上表显示,相比传统的压缩方法,SqueezeNet能在保证精度不损(甚至略有提升)的情况下,达到最大的压缩率,将原始AlexNet从240MB压缩至4.8MB,而结合Deep Compression后更能达到0.47MB,完全满足了移动端的部署和低带宽网络的传输。此外,作者还借鉴ResNet思想,对原始网络结构做了修改,增加了旁路分支,将分类精度提升了约3%。1.4 速度考量尽管文章主要以压缩模型尺寸为目标,但毋庸置疑的一点是,SqueezeNet在网络结构中大量采用1x1和3x3卷积核是有利于速度的提升的,对于类似caffe这样的深度学习框架,在卷积层的前向计算中,采用1x1卷积核可避免额外的im2col操作,而直接利用gemm进行矩阵加速运算,因此对速度的优化是有一定的作用的。然而,这种提速的作用仍然是有限的,另外,SqueezeNet采用了9个fire module和两个卷积层,因此仍需要进行大量常规卷积操作,这也是影响速度进一步提升的瓶颈。二、DeepCompressionDeep Compression出自S.Han 2016 ICLR的一篇论文《Deep Compression: Compressing Deep NeuralNetworks with Pruning, Trained Quantization and Huffman Coding》。该文章获得了ICLR 2016的最佳论文奖,同时也具有里程碑式的意义,引领了CNN模型小型化与加速研究方向的新狂潮,使得这一领域近两年来涌现出了大量的优秀工作与文章。2.1 算法流程与前面的“架构压缩派”的SqueezeNet不同,Deep Compression是属于“权值压缩派”的。而两篇文章均出自S.Han团队,因此两种方法结合,双剑合璧,更是能达到登峰造极的压缩效果。这一实验结果也在上表中得到验证。Deep Compression的算法流程包含三步,如图2所示:图2 Deep Compression Pipeline[6]1)        Pruning(权值剪枝)剪枝的思想其实早已在早期论文中可以窥见,LeCun等人曾经就利用剪枝来稀疏网络,减小过拟合的风险,提升网络泛化性。图3是MNIST上训练得到的LeNet conv1卷积层中的参数分布,可以看出,大部分权值集中在0处附近,对网络的贡献较小,在剪值中,将0值附近的较小的权值置0,使这些权值不被激活,从而着重训练剩下的非零权值,最终在保证网络精度不变的情况下达到压缩尺寸的目的。实验发现模型对剪枝更敏感,因此在剪值时建议逐层迭代修剪,另外每层的剪枝比例如何自动选取仍然是一个值得深入研究的课题。图3 LeNet conv1层权值分布图2)        Quantization(权值量化)此处的权值量化基于权值聚类,将连续分布的权值离散化,从而减小需要存储的权值数量。·      初始化聚类中心,实验证明线性初始化效果最好;·      利用k-means算法进行聚类,将权值划分到不同的cluster中;·      在前向计算时,每个权值由其聚类中心表示;·      在后向计算时,统计每个cluster中的梯度和将其反传。图4 权值量化前向和后向计算过程[6]        3)        Huffmanencoding(霍夫曼编码)霍夫曼编码采用变长编码将平均编码长度减小,进一步压缩模型尺寸。2.2 模型存储前述的剪枝和量化都是为了实现模型的更紧致的压缩,以实现减小模型尺寸的目的。·      对于剪枝后的模型,由于每层大量参数为0,后续只需将非零值及其下标进行存储,文章中采用CSR(CompressedSparse Row)来进行存储,这一步可以实现9x~13x的压缩率。·      对于量化后的模型,每个权值都由其聚类中心表示(对于卷积层,聚类中心设为256个,对于全连接层,聚类中心设为32个),因此可以构造对应的码书和下标,大大减少了需要存储的数据量,此步能实现约3x的压缩率。·      最后对上述压缩后的模型进一步采用变长霍夫曼编码,实现约1x的压缩率。2.3 实验结果表4 不同网络采用Deep Compression后的压缩率[6]通过SqueezeNet+Deep Compression,可以将原始240M的AlexNet压缩至0.47M,实现约510x的压缩率。2.4 速度考量可以看出,Deep Compression的主要设计是针对网络存储尺寸的压缩,但在前向时,如果将存储模型读入展开后,并没有带来更大的速度提升。因此Song H.等人专门针对压缩后的模型设计了一套基于FPGA的硬件前向加速框架EIE[12],有兴趣的可以研究一下。三、XNorNet二值网络一直是模型压缩和加速领域经久不衰的研究课题之一。将原始32位浮点型的权值压缩到1比特,如何最大程度地减小性能损失就成为了研究的关键。此篇论文主要有以下几个贡献:·      提出了一个BWN(Binary-Weight-Network)和XNOR-Network,前者只对网络参数做二值化,带来约32x的存储压缩和2x的速度提升,而后者对网络输入和参数都做了二值化,在实现32x存储压缩的同时带了58x的速度提升;·      提出了一个新型二值化权值的算法;·      第一个在大规模数据集如ImageNet上提交二值化网络结果的工作;·      无需预训练,可实现trainingfrom scratch。3.1 BWN为了训练二值化权值网络,令,其中,即二值滤波器,是尺度因子。通过最小化目标函数,得到其最优解:即最优的二值化滤波器张量B即为原始参数的符号函数,最优的尺度因子为每个滤波器权值的绝对值的均值。训练算法如图5所示,值得注意的是,只有在前向计算和后向传播时使用二值化后的权值,在更新参数时依然使用原始参数,这是因为如果使用二值化后的参数会导致很小的梯度下降,从而使得训练无法收敛。转自:微信AI 完整内容请点击“阅读原文” via: http://mp.weixin.qq.com/s?__biz= ... e=0#wechat_redirect




大数据文摘   网页链接 2017-10-12 14:28
发布了头条文章:《手把手 | 如何在你的iPhone上建立第一个机器学习模型》 手把手 | 如何在你的iPhone上建立第一个机器学习模型(Apple最新CoreML框架入门)#大数据文摘# http://t.cn/ROSdb1J




网路冷眼   网页链接 2017-10-12 06:30
应用 推荐系统
【Spotify’s Discover Weekly: How machine learning finds new music】http://t.cn/ROi9JUv Spotify的发现周刊发文:机器学习如何发现新的音乐?总结了推荐系统的三种模型。好文! ​




最新动态
ChatbotsChina   网页链接 2017-10-12 15:31
资源 行业动态 书籍
机器学习必备手册 By 阿里云云栖社区 http://t.cn/ROoUrt8




网路冷眼   网页链接 2017-10-12 13:23
视觉 应用 机器人 李飞飞
【李飞飞团队最新跨界研究:神经任务编程NTP,让机器人具有强大泛化能力】http://t.cn/ROaBWeF 9月26日,在温哥华举行的IROS大会上,计算机视觉专家、斯坦福AI Lab&Vision Lab主任李飞飞做了“A Quest for Visual Intelligence”的演讲,这也是李飞飞首次参加IROS这一机器人为主题的大会。值得注意的是...全文: http://m.weibo.cn/1715118170/4162017793628207




IT技术头条   网页链接 2017-10-12 12:13
算法 Peter Harrington 集成学习 李航 统计 周志华
【机器学习理论提升方法AdaBoost算法第一卷】1AdaBoost算法内容来自《统计学习与方法》李航,《机器学习》周志华,以及《机器学习实战》Peter HarringTon,相互学习,不足之处请大家多多指教! 提升算法是将弱学习算法提升为... 详戳→ http://t.cn/ROSI3wD 作者→ (跨七海的风) ​




网路冷眼   网页链接 2017-10-12 07:45
张鹏博
【香港科技大学在读博士生张鹏博:借鉴师生互动模式来训练机器学习模型 | 分享总结】http://t.cn/ROi1X5R在学校教学模式中,老师扮演着重要的角色。借鉴老师与学生的师生互动模式,香港科技大学在读博士生张鹏博在他的论文A New Learning Paradigm for Random Vector Functional-Link Network: RVFL+...全文: http://m.weibo.cn/1715118170/4161932531301464




爱可可-爱生活   网页链接 2017-10-12 05:54
经验总结 Jan Pfeifer Maya Gupta 博客
【TensorFlow Lattice发布:来自先验知识的灵活性】《TensorFlow Lattice: Flexibility Empowered by Prior Knowledge | Google Research Blog》by Maya Gupta, Jan Pfeifer, Seungil You http://t.cn/ROa2DNR GitHub: https ://github .com/tensorflow/lattice http://t.cn/ROa2dHQ


爱可可-爱生活 网页链接 转发于2017-10-12 14:54
《谷歌推出TensorFlow Lattice,让机器学习模型适应总体趋势》via:量子位 http://t.cn/ROovEh2



爱可可-爱生活   网页链接 2017-10-12 05:41
深度学习 资源 视频
【两分钟论文解读之人类偏好深度学习】《Deep Learning From Human Preferences | Two Minute Papers #196 - YouTube》 http://t.cn/ROa29QP http://t.cn/ROa29HD




爱可可-爱生活   网页链接 2017-10-12 05:12
深度学习 论文
《full-FORCE: A Target-Based Method for Training Recurrent Networks》B DePasquale, C J. Cueva, K Rajan, G. S Escola, L.F. Abbott [Zuckerman Institute & Columbia University College of Physicians and Surgeons & Princeton Neuroscience Institute] (2017) http://t.cn/ROaA8yO



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|Vision And Learning SEminar

GMT+8, 2024-11-22 09:51 , Processed in 0.023193 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表