AI复始,万象更新 ! 新智元祝广大订户鸡年大吉!
新智元启动新一轮大招聘:COO、执行总编、主编、高级编译、主笔、运营总监、客户经理、咨询总监、行政助理等 9 大岗位全面开放。 简历投递:j[email protected] HR 微信:13552313024 新智元为COO和执行总编提供最高超百万的年薪激励;为骨干员工提供最完整的培训体系、高于业界平均水平的工资和奖金。 加盟新智元,与人工智能业界领袖携手改变世界。 【新智元导读】这一讲座介绍了深度学习框架设计原则的基本知识,其目标是为希望在自己的工作任务中利用深度学习的研究者 和 AI 实践者提供关于选择合适框架的指导。讲座分为三部分:1. 神经网络基础知识;2. 神经网络部署的常见设计;3.各种常见深度学习框架的优缺点比较。 全部PPT下载地址:https://sites.google.com/site/dliftutorial/ 2017年2月5日的 AAAI 大会上,来自日本的Seiya Tokui 、Kenta Oono 和 Atsunori Kanemura三位AI研究员带来了《Deep Learning Implementations and Frameworks》的课程(Tutorial )介绍。 这一讲座介绍了深度学习框架设计原则的基本知识,其目标是为希望在自己的工作任务中利用深度学习的研究者 和AI 实践者提供关于选择合适框架的指导。 当下,深度学习中的一些软件框架,比如 TensorFlow 和 Caffe,已经被许多深度学习系统采纳,以加速研究和发展速度。深度学习在 AI 的核心技术中扮演基础性的作用,其中包括图像和语音识别、计划和自然语言处理。在AI 系统的搭建上,深度学习也起到了基础材料的作用,比如,在机器人、游戏、问答和药物诊断中都是。 深度学习模型的设计从本质上看,是组件和灵感的结合。深度学习的技术要素通常都是通用的。比如,对于图像识别来说,一个典型的深度学习架构就是一个多层的卷积栈(stack)和池化操作。许多行为,包括 dropout 和 batch 正则化通常都会被用于提升泛华能力。一个超大量级的部署可以简化为:好的组件(比如卷积网络和池化)以及灵感(比如dropout 和 batch 正则化)的结合。这是为什么深度学习能让编程更加有效的原因。 选择一个合适的深度学习框架要求对框架设计的基本原则有一定的知识储备。当下,深度学习中有各种各样的框架,这让用户在选择最合适的框架上存在不少困惑。除了重复利用性以外,竞争所需要的速度、可扩展性、代码简洁性、去bug的简便性以及社区的大小等等都为此添加了难度。选择一个次优的框架可能会使得研究和发展的效率降低,损害工作的实用性,降低声望。 基于深度学习在简单的模式识别任务之外的最新进展,直播,这一讲座将提供一些面向一般性的AI应用的有用技术信息。 | 目标受众 讲座面向的是希望利用深度学习来开发AI 系统或者在具体任务中运用AI 的系统的研究者和相关从业者,讲座专门用于帮助他们从多个候选选项中为自己的应用选择最合适的软件框架。 改讲座提供了关于不同框架的设计和优化原则,以为选择合适的框架提供指导。听众从讲座将能学到,为什么一些框架会比另一些快,为什么一些框架中bug的去除很困难以及为什么一些框架对于动态的模型变化是无效的。讲座还提供了 TensorFlow、 Keras 和 Chainer 上的代码案例,不仅展示了这些框架的可用性,还对它们的内部机制进行了深度的介绍。整个讲座的视角是通用性的,对于讲座中提到的主题的理解,将有利于在评估目前还没有发布的一些框架。 | 讲者 Seiya Tokui ,东京大学博士、Preferred Networks研究员。深度学习框架Chainer 的主要开发者。 Kenta Oono ,Preferred Networks 工程师。深度学习框架Chainer 的主要开发者。 Atsunori Kanemura,日本国家高级工业科学技术研究所研究员。 第一部分 简介
讲座名称:深度学习部署和框架
主要内容概览: Session 1:简介、神经网络基础、神经网络部署的常见设计 Session 2:不同的深度学习框架,框架的代码示例、结论
如此多的深度学习框架:Tensorflow、Caffe、CNTK、Theano、Torch、MXNet、Chainer、Keras等等。哪一个才是最适合你的?
讲座目标: 介绍深度学习框架背后的设计原则 提供选择合适框架的要领 了解大多数深度学习框架中常见的技术栈的组成部分 了解不同的部署之间的差别
标准受众:希望开发包含神经网络系统的人 背景准备: 一般的机器学习术语,特别是关于监督式学习的 基本的神经网络知识或者实践(推荐) 基本的 Python 编程语言(推荐)
介绍到(或者不会介绍到)的框架 附带编码示例进行深度解释的有: Chainer-Python Keras-Python TensorFlow-Python 也对比了以下几个框架: Torch-Lua Theano-Python Caffe-C++& Python & Matlab MXnet-Many PyTorch-Python 其他没有介绍的: 云计算、Matlab toolboxes、DL4J、H2O、CNTK TensorBoard,DIGITS
神经网络基础
人工神经网络从生物学获得启发,但是,生物学上的实现不等于好的性能。
前向和反向传播 前向:(神经网络层)处理线性信息(比如,矩阵乘法)+非线性信操作(比如,激活函数)得到的输出 反向:对参数进行优化,以更适应数据(反向传播)
神经网络的灵活性使得多个应用成为可能: 图像识别,ImageNet LSVR 挑战中,超越人类表现 玩游戏,AlphaGo,击败人类专家 连接多种形式的内容,比如,图像和文本。用中间的表征(嵌入)从图像中生成文字。 生成模型:生成对抗模型 翻译、语音识别等等……
例子:分类 D代表维度输入向量(特征),比如,一张100X100的照片 K代表分类目标,比如,对象类型,猫、桌子、椅子等等 N代表数据集大小 目标:给神经网络一个新的输入向量,预测其类型
一个神经元的数学模型 计算输入x 和参数 w,通过一个非线性的激活函数 f 转化。
一般的线性判别式 一层神经网络的例子 一般线性判别式
在损失最小化下进行学习 从多个样本中进行学习 双输出 定义损失函数 把定义函数最小化,以学习(评估)参数
梯度下降 一层神经网络中的损失梯度的公式表示 升级的规则
其他类型的损失函数:Cross entropy,Exponential,Zero-one,Kullback-Leiber
多层神经网络中的,损失函数最小化
两层神经网络的例子
反向传播: 使用链规则来获得梯度 反向传播:从顶层到底层,计算梯度的回归
自动差分: 不需要考虑链规则 反向传播的计算是手动的,而且枯燥的 在定义了神经网络架构后,梯度能够自动地被计算 这被称为自动差分(这是利用链规则的一般概念) 在算法上的定义 区分了象征的差分和数字的差分
参数升级的诀窍 梯度下降 动态梯度下降 vanilla SGD 的更快变化
常见的错误和过拟合 学习的目标是减少常见错误,以及此前没见过的数据中的错误。 但是,当前使用的数据中的错误太少(过拟合)也不是好事(甚至是有害的)。
如何检查过拟合? 把数据分成两个部分:训练数据集、测试数据集。
实践上的考虑 架构:有多少层/单元? 卷积、循环、残差连接 权重初始化:随机、预训练、从另一个已经训练好的网络进行迁移 避免过拟合的技巧:Dropout,Batch正则化 可视化 第二部分 神经网络部署的常见设计
目标 深度学习框架如何表征和运行神经网络。 各种深度学习框架中常见的技术堆栈。 对技术堆栈的例子的检验:Chainer、TensorFlow、Theano、Keras
深度学习框架中技术堆栈的列表
作为一种图计算的神经网络 在绝大多数的框架中,神经网络被当成一种图像计算。 最简单的图计算形式是双边的DAG(直线非循环图),由数字节点和操作节点组成。
例子:多层感知机
例子:循环神经网络
控制流动节点的循环神经网络
例子:对抗生成网络 对抗生成网络由生成器和辨别器组成 生成器和辨别器可以是任意的图计算
自动差分 计算特殊数字节点(比如损失)的梯度 操作器节点有反向操作 在API上,反向操作的不同会造成框架的不一样 框架在图计算上也有差别。正如以下两张PPT中展示的那样
图计算中的反向传播
延展图计算中的反向传播
例子:Theano
计算的优化器 将图计算变成简单和高效的:删除冗余节点、用内置的操作器,以减少记忆足迹。
以Theano为例
数字优化器
DL框架中的技术堆栈
训练神经网络的工作流程: (责任编辑:本港台直播) |