《人工智能现状与未来》PPT 下载

人工智能引领新的工业革命,需要正确理解其技术核心、学科定位、架构演进,当前深度学习和知识图谱成其左膀右臂,象征人类智谋的智能博弈在围棋后的下一个高地在哪里?走向人机融合的未来,人工智能将向什么方向演进发展,人类社会将面临哪些变革,需要我们从不同维度不断去研究思考。

挑战 1:如何创造出智能新产品?

  • 智能应用软件:语音识别、机器翻译、图像识别、智能交互、知识处理等
  • 智能基础软件:各种智能芯片、智能插件、零部件、传感器、网络智能设备
  • 智能自主产品:汽车、轨道交通、车联网、无人机、船、机床、机械等
  • 虚拟实现与增强现实:艺术、玩具和教育产品
  • 可穿戴产品:人工智能的手机、车载智能终端、智能手表、智能耳机、智能眼镜、健康检测与康复产品
  • 家居产品:建筑智能设备、家电、家具等产品的智能化

挑战 2:如何成功创造出新的智能应用系统?

  • 智能企业:对设计、生产、管理、物流和营销等业务链的智能优化,生产线智能调度与重构,生产设备网络化、生产数据集成化、生产过程透明化、生产现场无人化、运营管理智能化等系统•智能制造:智能自主的装备与系统、制造云服务、流程智能制造系统、离散智能制造系统、网络化协同制造系统、远程智能诊断、运维和服务新模式
  • 智能物流:智能化分拣、仓储、装卸、搬运,集成信息平台,产品质量及安全追溯,配货调度智能化
  • 智能金融:金融大数据智能、金融产品智能设计和服务创新、智能客服、金融风险智能预警与防控系统
  • 智能商务:市场分析与决策、产品与广告的创新设计、个性化定制服务、产品安全与信用保证等系统
  • 智能农业:智能化装备与农田作业智能系统,智能农业信息检测网络,农业大数据分析决策系统
  • 智能教育:个性化智能学习,交互式主动学习、智能校园、智能图书馆系统
  • 智能医疗:城市便捷精准的智能医疗体系、智能医院、智能医疗诊断、新药辅助研发、医药智能监管、流行病智能检测和防控、健康养老大数据智能分析与服务等系统

挑战 3:如何让社会智力增加智能?

  • 智慧法庭:建设智慧法庭数据与知识平台,推进审判体系和审判能力的智能增强•智能城市:推进对基础设施和土、水、气等环境的深度认知,对城市规划、建设、管理、运营的智能优化
  • 智能交通监控:研发车联自动驾驶与车路协同的技术体系、交通智能化疏导和运行协调系统,提高覆盖地、轨、空、海的综合交通智能监管和服务能力
  • 智能化检测预警与综合应对:围绕反恐、犯罪侦查、食品安全、信息安全、自然灾害防治等公共安全提高智能化检测预警与综合应对水平

《人工智能现状与未来》PPT 下载

清华大学、中国人工智能学会 -《2019人工智能发展报告》

11 月 30 日下午,2019 中国人工智能产业年会重磅发布《2019人工智能发展报告》(Report of Artificial Intelligence Development 2019)。唐杰教授代表报告编写相关单位就《2019 人工智能发展报告》主要内容进行了介绍。报告力图综合展现中国乃至全球人工智能重点领域发展现状与趋势,助力产业健康发展,服务国家战略决策。

报告涉及 AI 13 个子领域
报告涉及 AI 13 个子领域

内容涵盖了人工智能 13 个子领域,包括:机器学习、知识工程、计算机视觉、自然语言处理、语音识别、计算机图形学、多媒体技术、人机交互、机器人、数据库技术、可视化、数据挖掘、信息检索与推荐。

报告基本框架
报告基本框架

报告基本框架如上图所示,包括领域概念阐释、发展历史梳理、人才概括、关键论文解读以及相应领域的前沿进展。

Joshua Gordon《TensorFlow 2.0讲解》PPT

Tensorflow2.0 对于新手来说更为易用,而对于老手来说,功能更为强大,Josh Gordon 为我们介绍了TensorFlow2.0  的一些新的特征与使用技巧。

在构建模型方面,针对不同的使用人群,TensorFlow2.0 提供了不同层面的 API,针对刚接触 TensorFlow 的新手,提供了Sequential API, 针对工程师,开放了 FunctionalAPI 与 build-in 层,针对有更高需求的工程师,开放了 FunctionalAPI 与可定制的层,评估指标,损失函数等,而针对科研工作者,开放了 Subclassing,可以定制一切函数。

在训练模型方面,从简单到复杂也分很多层次。从快速实验的 model.fit(),到定制回调函数 callbacks,到定制训练循环 batch (使用 GAN 时很有效),到完全定制训练过程,包括优化算法等 (GradientTape).

在数据方面,提供了 tensorflow_datasets,能够轻松地加载数据集。

在并行训练方面,得益于分布式策略,无需改变代码,就可以在多台机器、多个 GPU 上训练(MirroredStrategy, MultiWorkerMirroredStrategy)。

教程最后还介绍了两个项目:TinyML: 轻量级的机器学习项目 与 TF.js.

Joshua Gordon 《TensorFlow 2.0讲解》

神经架构搜索研究指南 -5

  1. 系列文章:《神经架构搜索研究指南 -1
  2. 系列文章:《神经架构搜索研究指南 -2
  3. 系列文章:《神经架构搜索研究指南 -3
  4. 系列文章:《神经架构搜索研究指南 -4

9. SNAS:随机神经结构搜索

ICLR 2019:SNAS: Stochastic Neural Architecture Search

这篇论文的作者提出了随机神经结构搜索 (SNAS)。SNAS 是 NAS 的端到端解决方案,在同一轮的反向传播中同时训练神经算子参数和体系结构分布参数。在此过程中,它维护了 NAS 流程的完整性和可微性。

作者将 NAS 重新表述为单元中搜索空间的联合分布参数的优化问题。搜索梯度被用于,利用梯度信息进行泛化的可微损失的体系结构搜索。这种搜索梯度与基于增强学习的 NAS 优化了相同的目标,但为结构决策分配分数时效率更高。

如下所示,搜索空间使用一个有向无环图 (DAG) 表示,称为父图。在图中,节点 xi 代表隐式表示。边 (i, j) 表示要在节点之间选择的信息流和操作。

A conceptual visualization for a forward pass within SNAS.
A conceptual visualization for a forward pass within SNAS.

以下是 CIFAR-10 上 SNAS 和最先进的图像分类器的分类错误:

Classification errors of SNAS and state-of-the-art image classifiers on CIFAR-10.
Classification errors of SNAS and state-of-the-art image classifiers on CIFAR-10.

10. DARTS:可微结构搜索

ICLR 2019:DARTS: Differentiable Architecture Search

这篇论文以可微的方式构造任务,解决了结构搜索的可伸缩性问题。

本文没有在一组离散的候选结构上进行搜索,而是将搜索空间放宽为连续的。因此,可以通过梯度下降,对体系结构的验证集性能进行优化。基于梯度优化的数据效率提升,使得 DARTS 能够使用更少的计算资源获得出色的性能。该模型的性能也优于 ENAS。DARTS 既适用于卷积网络,也适用于递归网络。

作者寻找一种计算单元作为最终架构的构建模块。通过递归连接,学习单元可以被堆叠成卷积网络或递归网络。一个单元是由 N 个节点的有序序列组成的有向无环图。每个节点都是一个隐式的表示——例如一个特征图——并且每条有向边都与转换节点的一些操作相关联。一个单元格被假定为有两个输入节点和一个输出节点。卷积单元的输入节点定义为前两层的单元输出。最近文献里提到的卷积单元里,它们的输入节点被定义为当前步骤的输入和上一步所携带的状态。对所有中间节点应用缩减操作(例如 concatenation 操作)来生成输出单元。

 An overview of DARTS
An overview of DARTS.

该模型与 CIFAR-10 上最先进的图像分类器的比较如下:

Comparison with state-of-the-art image classifiers on CIFAR-10.
Comparison with state-of-the-art image classifiers on CIFAR-10.

——》本系列文章完《——

神经架构搜索研究指南 -4

  1. 系列文章:《神经架构搜索研究指南 -1
  2. 系列文章:《神经架构搜索研究指南 -2
  3. 系列文章:《神经架构搜索研究指南 -3

7. Auto-Keras:高效的神经结构搜索系统

2018:Auto-Keras: An Efficient Neural Architecture Search System

本文提出了一个框架,使用贝叶斯优化引导网络形变,以提升 NAS 的效率。基于他们的方法,作者构建了一个名为 Auto-Keras 的开源 AutoML 系统。

该方法中,网络的主要组成模块,是在贝叶斯优化算法的指导下,通过神经结构的形变来寻找搜索空间。NAS 空间不是欧氏空间,因此作者设计了一个神经网络核函数来解决这一问题。核函数是将一个神经结构变形为另一个神经结构的编辑距离。

Neural Network Kernel. Given two neural networks fa, fb , and matchings between the similar layers, the figure shows how the layers of fa can be changed to the same as fb . Similarly, the skip-connections in fa also need to be changed to the same as fb according to a given matching.
Neural Network Kernel. Given two neural networks fa, fb, and matchings between the similar layers, the figure
shows how the layers of fa can be changed to the same as fb. Similarly, the skip-connections in fa also need to be changed to the same as fb according to a given matching.

利用贝叶斯优化来指导网络形态的第二个挑战是获取函数的优化。这些方法不适用于网络形态的树结构的搜索。通过优化树结构空间的获取函数,解决了这一难题。置信度上界 (UCB) 被选择作为获取函数。
该体系结构的搜索模块是包含贝叶斯优化器和高斯过程的模块。搜索算法在 CPU 上运行,模型训练器模块在 GPU 上进行计算。

该模块在分离的进程中用训练数据训练神经网络,以实现并行化。图模块处理神经网络的计算图,并由搜索模块控制,进行网络形态学操作。模型存储是一个包含经过训练的模型的池子。由于这些模型很大,所以它们存储在存储设备上。

Auto-Keras System Overview
Auto-Keras System Overview

下面是该模型与其他模型在不同数据集上的性能比较:

Classification Error Rate
Classification Error Rate

8. 基于贝叶斯优化和最优传输的神经结构搜索

2018:Neural Architecture Search with Bayesian Optimisation and Optimal Transport

这篇论文提出了一种基于高斯过程 (贝叶斯优化,即 BO) 的神经结构搜索框架 NASBOT。这是通过在神经网络体系结构的空间中开发一个距离度量来实现的,该距离度量可以通过最优传输程序来计算。

作者提出了一种神经网络结构的 (伪) 距离,称为 OTMANN (神经网络结构的最优传输度量),可以通过最优传输程序进行快速计算。他们还开发了一个 BO 框架来优化神经网络结构上的函数,称为 NASBOT (使用贝叶斯优化和最优传输的神经结构搜索)。

为了实现 BO 方案,本文提出了一种神经网络结构的核函数,并给出了一种优化神经网络结构获取函数的方法,它采用进化算法对获取函数进行优化。

这个方法有一个初始的网络池,并计算这些网络上的获取函数。然后该网络池的一组 Nmut 个突变被生成出来。首先要做的就是从被评估的网络集合中随机选择 Nmut 个候选对象,这样那些具有较高的函数值的网络更有可能被选中。然后对每个候选对象进行修改,以生成一个新的体系结构。

可以通过增加或减少一个层中的计算单元数量、添加或删除层,或更改现有层的连接结构来更改体系结构。

最后一步是评估这些 Nmut 突变的获取函数,将其添加到初始池中,并重复指定的次数。在实验中,作者使用 NASBOT 来优化获取。通过实验,他们得出结论,NASBOT 的性能优于用于优化采集的进化算法。

 An illustration of some CNN architectures
An illustration of some CNN architectures

与其他模型相比,NASBOT 的性能如下图所示:

The first row gives the number of samples N and the dimensionality D of each dataset in the form (N, D). The subsequent rows show the regression MSE or classification error (lower is better) on the test set for each method. The last column is for Cifar10 where we took the best models found by each method in 24K iterations and trained it for 120K iterations. When we trained the VGG-19 architecture using our training procedure, we got test errors 0.1718 (60K iterations) and 0.1018 (150K iterations).
The first row gives the number of samples N and the dimensionality D of each dataset in the form (N, D). The subsequent rows show the regression MSE or classification error (lower is better) on the test set for each method. The last column is for Cifar10 where we took the best models found by each method in 24K iterations and trained it for 120K iterations. When we trained the VGG-19 architecture using our training procedure, we got test errors 0.1718 (60K iterations) and 0.1018 (150K iterations).

神经架构搜索研究指南 -3

  1. 系列文章:《神经架构搜索研究指南 -1
  2. 系列文章:《神经架构搜索研究指南 -2

5. 高效结构搜索的层次化表示

ICLR 2018:Hierarchical Representations for Efficient Architecture Search

该网络中提出的算法在 CIFAR-10 上实现了 3.6% 的 top-1 误差,在 ImageNet 上实现了 20.3% 的 top-1 误差。作者提出了一种描述神经网络结构的层次化表示方法,证明了用简单的随机搜索可以得到具有竞争力的图像分类网络结构,并提出了一种可扩展的进化搜索方法变体。

对于平面体系结构表示,他们研究了由单源、单汇聚(single-sink)计算图组成的神经网络体系结构家族,该计算图将源处的输入转换为汇聚处的输出。图中的每个节点都对应一个特征图,每个有向边都和某个操作关联,比如池化操作或者卷积操作。此操作转换输入节点中的特征图,并将其传递给输出节点。

Three-level hierarchical architecture representation
Three-level hierarchical architecture representation.

对于层次化结构,将在不同层次上有若干个不同的 motifs。在较高层次的 motifs 构建过程中,较低层次的 motifs 被作为构建模组。

A ARCHITECTURE VISUALIZATION
A ARCHITECTURE VISUALIZATION

这是 CIFAR-10 测试集中不同模型的错误率:

Classification error on the CIFAR-10 test set obtained using state-of-the-art models as well as the best-performing architecture found using the proposed architecture search framework. Existing models are grouped as (from top to bottom): handcrafted architectures, architectures found using reinforcement learning, and architectures found using random or evolutionary search.
Classification error on the CIFAR-10 test set obtained using state-of-the-art models as
well as the best-performing architecture found using the proposed architecture search framework.
Existing models are grouped as (from top to bottom): handcrafted architectures, architectures found
using reinforcement learning, and architectures found using random or evolutionary search.

6. 渐进神经结构搜索

ECCV 2018:Progressive Neural Architecture Search

该方法采用基于序列模型的优化策略 (SMBO) 学习卷积神经网络 (CNNs) 的结构。本文基于神经结构搜索 (NAS) 方法。

本文中,搜索算法的任务是识别一个好的卷积单元,而不是一个完整的 CNN。每个单元格包含 B 个块,每个块是应用于两个输入数据的组合运算符。每个输入都可以在组合之前进行转换 —— 例如,通过卷积进行转换。然后根据训练集的大小和最终 CNN 所要求的运行时间,决定叠加起来的单元的数量。

The best cell structure found by our Progressive Neural Architecture Search.
The best cell structure found by our Progressive Neural Architecture Search.

通过使用步长为 1 或步长为 2 的基本单元叠加预定数量的副本,可以将单元叠加转换为 CNN,如上图所示。然后,在步长为 2 的单元之间的步长为 1 的单元数量,调整为最多可以有 N 个。在网络的顶层引入了平均池化和 softmax 分类层。下图显示了模型在 CIFAR 测试集上的性能:

Performance of different CNNs on CIFAR test set.
Performance of different CNNs on CIFAR test set.

神经架构搜索研究指南 -2

系列文章:《神经架构搜索研究指南 -1

3. 可伸缩图像识别领域的可转移架构学习

2017:Learning Transferable Architectures for Scalable Image Recognition

在本文中,作者在一个小数据集上搜索结构上的一个组成模块,然后将该模块再转换到一个大数据集上。这是因为直接使用大型数据集将非常麻烦和耗时。

作者在 CIFAR-10 数据集上寻找最佳卷积层,并将其应用于 ImageNet 数据集。具体做法是将该层的更多副本堆叠在一起来实现的。每一层都有自己的参数,用于设计卷积架构。作者将这种体系结构称为 NASNet 架构。

他们还引入了正则化技术——ScheduledDropPath——来改进 NASNet 模型中的泛化性能。该方法的错误率为 2.4%。最大的 NASNet 模型平均精度达到 43.1%。

与前一篇文章一样,本文也使用了神经体系结构搜索 (NAS) 框架。本文的方案中,卷积网络的总体结构是人工预置好的。它们由重复几次的卷积单元组成。每个卷积层具有相同的结构,但权重不同。

该网络有两种类型的单元:返回相同维度特征图的卷积单元(Normal Cell),以及返回特征图的卷积单元(Reduction Cell)。后者特征图的高度和宽度在卷积输出时减少了一半。

 Scalable architectures for image classification consist of two repeated motifs termed Normal Cell and Reduction Cell. This diagram highlights the model architecture for CIFAR-10 and ImageNet. The choice for the number of times the Normal Cells that gets stacked between reduction cells, N, can vary in our experiments.
Scalable architectures for image classification consist of two repeated motifs termed Normal Cell and Reduction Cell. This diagram highlights the model architecture for CIFAR-10 and ImageNet. The choice for the number of times the Normal Cells that gets stacked between reduction cells, N, can vary in our experiments.

在本文提出的搜索空间中,每个单元接收两个初始隐藏状态作为输入,这两个初始隐藏状态是前两层或输入图像中的两个单元的输出。在给定这两个初始隐藏状态的情况下,控制器 RNN 递归地预测卷积单元结构的其余部分。

Controller model architecture for recursively constructing one block of a convolutional cell. Each block requires selecting 5 discrete parameters, each of which corresponds to the output of a softmax layer. Example constructed block shown on right. A convolutional cell contains B blocks, hence the controller contains 5B softmax layers for predicting the architecture of a convolutional cell. In our experiments, the number of blocks B is 5.
Controller model architecture for recursively constructing one block of a convolutional cell. Each block requires selecting 5 discrete parameters, each of which corresponds to the output of a softmax layer. Example constructed block shown on right. A convolutional cell contains B blocks, hence the controller contains 5B softmax layers for predicting the architecture of a convolutional cell. In our experiments, the number of blocks B is 5.

下面是 CIFAR-10 数据集上神经结构搜索的性能:

Performance of Neural Architecture Search and other state-of-the-art models on CIFAR-10. All results for NASNet are the mean accuracy across 5 runs.
Performance of Neural Architecture Search and other state-of-the-art models on CIFAR-10. All results for NASNet are the mean accuracy across 5 runs.

4. 参数共享的高效神经结构搜索

2018:Efficient Neural Architecture Search via Parameter Sharing

本文作者提出了一种称为高效神经结构搜索 (ENAS) 的方法。在这种方法中,控制器通过在大型计算图中搜索最优子图来发现神经网络结构。该控制器经过训练,可以选出在验证集上获得最佳准确度的子图。

然后训练所选子图对应的模型,使正则交叉熵损失最小化。参数通常在子模型之间共享,以便 ENAS 能够提供更好的性能。在 CIFAR-10 测试中,ENAS 的错误率为 2.89%,而神经结构搜索 (NAS) 的错误率为 2.65%。

本文强制所有子模型共享权值,以避免从零开始训练每个子模型达到收敛,从而提高了 NAS 的效率。
本文用单个有向无环图(DAG)表示 NAS 的搜索空间。通过引入一个具有 N 个节点的 DAG,设计出了递归单元,该单元表示局部计算,图中的边表示 N 个节点之间的信息流。

ENAS 的控制器是一个 RNN,它决定在 DAG 中的每个节点上执行哪些计算以及激活哪些边。控制器网络是一个包含 100 个隐藏单元的 LSTM。

An example of a recurrent cell in our search space with 4 computational nodes. Left: The computational DAG that corresponds to the recurrent cell. The red edges represent the flow of information in the graph. Middle: The recurrent cell. Right: The outputs of the controller RNN that result in the cell in the middle and the DAG on the left. Note that nodes 3 and 4 are never sampled by the RNN, so their results are averaged and are treated as the cell’s output.
An example of a recurrent cell in our search space with 4 computational nodes. Left: The computational DAG that corresponds to the recurrent cell. The red edges represent the flow of information in the graph. Middle: The recurrent cell. Right: The outputs of the controller RNN that result in the cell in the middle and the DAG on the left. Note that nodes 3 and 4 are never sampled by the RNN, so their results are averaged and are treated as the cell’s output.
The graph represents the entire search space while the red arrows define a model in the search space, which is decided by a controller. Here, node 1 is the input to the model whereas nodes 3 and 6 are the model’s outputs.
The graph represents the entire search space while the red arrows define a model in the search space, which is decided by a controller. Here, node 1 is the input to the model whereas nodes 3 and 6 are the model’s outputs.

在 ENAS 中,需要学习两组参数:控制器 LSTM 的参数和子模型的共享参数。在训练的第一阶段,对子模型的共享参数进行训练。在第二阶段,对控制器 LSTM 的参数进行训练。这两个阶段在 ENAS 的训练期间交替进行。

An example run of a recurrent cell in our search space with 4 computational nodes, which represent 4 layers in a convolutional network. Top: The output of the controller RNN. Bottom Left: The computational DAG corresponding to the network’s architecture. Red arrows denote the active computational paths. Bottom Right: The complete network. Dotted arrows denote skip connections.
An example run of a recurrent cell in our search space with 4 computational nodes, which represent 4 layers in a convolutional network. Top: The output of the controller RNN. Bottom Left: The computational DAG corresponding to the network’sarchitecture. Red arrows denote the active computational paths. Bottom Right: The complete network. Dotted arrows denote skip connections.

以下是 ENAS 在 CIFAR-10 数据集上的表现情况:

Classification errors of ENAS and baselines on CIFAR-10. In this table, the first block presents DenseNet, one of the state-ofthe-art architectures designed by human experts. The second block presents approaches that design the entire network. The last block presents techniques that design modular cells which are combined to build the final network.
Classification errors of ENAS and baselines on CIFAR-10. In this table, the first block presents DenseNet, one of the state-ofthe-art architectures designed by human experts. The second block presents approaches that design the entire network. The last block presents techniques that design modular cells which are combined to build the final network.

神经架构搜索研究指南 -1

从训练到用不同的参数做实验,设计神经网络的过程是劳力密集型的,非常具有挑战性,而且常常很麻烦。但是想象一下,如果能够将这个过程实现自动化呢?将这种想象转变为现实,就是本指南的核心内容。

我们将探索一系列的研究论文,这些论文试图解决具有挑战性的自动化神经网络设计任务。在本指南中,我们假设读者尝试过使用 KerasTensorFlow 等框架从头开始设计神经网络。

1. 基于强化学习的神经结构搜索

2016:Neural Architecture Search with Reinforcement Learning

本文利用递归神经网络 (RNN) 生成神经网络的模型描述。为了提高 RNN 在验证集上的精度,作者对 RNN 进行了强化学习训练,该方法在 CIFAR-10 数据集上的错误率为 3.65。

本文提出的神经结构搜索是基于梯度的。本文提出的方法是基于以下考虑:神经网络的结构和连通性可以用变长串来描述。被称为控制器的神经网络用于生成这样的字符串。然后,字符串指定的子网络根据真实数据进行训练,并在验证集上得到初始的准确度度量。然后,使用这个准确度数据计算策略梯度,再用后者更新控制器。因此,具有较高准确度的结构可以得到较高的选中概率。

An overview of Neural Architecture Search
An overview of Neural Architecture Search

神经网络结构搜索中,该控制器用于生成神经网络的结构超参数。在下图中,控制器用于生成一个卷积神经网络。控制器预测滤波器高度、滤波器宽度和步长。预测由 softmax 分类器执行,然后作为输入,输入到下一个时间步。一旦控制器完成了生成结构的过程,带有这个结构的神经网络就会建立起来,并用它进行训练。

How our controller recurrent neural network samples a simple convolutional network. It predicts filter height, filter width, stride height, stride width, and number of filters for one layer and repeats. Every prediction is carried out by a softmax classifier and then fed into the next time step as input.
How our controller recurrent neural network samples a simple convolutional network. It predicts filter height, filter width, stride height, stride width, and number of filters for one layer and repeats. Every prediction is carried out by a softmax classifier and then fed into the next time step as input.

于子网络的训练需要花费数小时的时间,为了加快控制器的学习过程,作者采用了分布式训练和异步参数更新的方法。

 Distributed training for Neural Architecture Search. We use a set of S parameter servers to store and send parameters to K controller replicas. Each controller replica then samples m architectures and run the multiple child models in parallel. The accuracy of each child model is recorded to compute the gradients with respect to θc, which are then sent back to the parameter servers.
Distributed training for Neural Architecture Search. We use a set of S parameter servers to store and send parameters to K controller replicas. Each controller replica then samples m architectures and run the multiple child models in parallel. The accuracy of each child model is recorded to compute the gradients with respect to θc, which are then sent back to the parameter servers.

该模型与其他模型的错误率对比如下:

Performance of Neural Architecture Search and other state-of-the-art models on CIFAR-10
Performance of Neural Architecture Search and other state-of-the-art models on CIFAR-10.

2. 高效结构搜索的层次化表示

ICLR 2018:Hierarchical Representations for Efficient Architecture Search

该网络中提出的算法在 CIFAR-10 上实现了 3.6% 的 top-1 误差,在 ImageNet 上实现了 20.3% 的 top-1 误差。作者提出了一种描述神经网络结构的层次化表示方法,证明了用简单的随机搜索可以得到具有竞争力的图像分类网络结构,并提出了一种可扩展的进化搜索方法变体。

对于平面体系结构表示,他们研究了由单源、单汇聚(single-sink)计算图组成的神经网络体系结构家族,该计算图将源处的输入转换为汇聚处的输出。图中的每个节点都对应一个特征图,每个有向边都和某个操作关联,比如池化操作或者卷积操作。此操作转换输入节点中的特征图,并将其传递给输出节点。

An example of a three-level hierarchical architecture representation.
An example of a three-level hierarchical architecture representation.

对于层次化结构,将在不同层次上有若干个不同的 motifs。在较高层次的 motifs 构建过程中,较低层次的 motifs 被作为构建模组。

A ARCHITECTURE VISUALIZATION
A ARCHITECTURE VISUALIZATION

这是 CIFAR-10 测试集中不同模型的错误率:

 Classification error on the CIFAR-10 test set obtained using state-of-the-art models as well as the best-performing architecture found using the proposed architecture search framework. Existing models are grouped as (from top to bottom): handcrafted architectures, architectures found using reinforcement learning, and architectures found using random or evolutionary search.
Classification error on the CIFAR-10 test set obtained using state-of-the-art models as well as the best-performing architecture found using the proposed architecture search framework. Existing models are grouped as (from top to bottom): handcrafted architectures, architectures found using reinforcement learning, and architectures found using random or evolutionary search.

零基础入门PyTorch深度学习

Pytorch 是 Torch 的 Python 版本,是由 Facebook 开源的神经网络框架,专门针对 GPU 加速的深度神经网络(DNN)编程。Torch 是一个经典的对多维矩阵数据进行操作的张量(Tensor )库,在机器学习和其他数学密集型应用有广泛应用。与 Tensorflow 的静态计算图不同,Pytorch 的计算图是动态的,可以根据计算需要实时改变计算图。

Vipul Vaibhaw 在 Github 开源了一份关于 Pytorch 深度学习的书册,《First steps towards Deep Learning with PyTorch》,这是一本关于深度学习的开源书籍。这本书应该是非数学的,迎合了那些没有深度学习经验,数学知识和兴趣很少的读者。这本书旨在帮助读者迈出深度学习的『第一步』。

主要内容覆盖了:

  1. 理解人工神经网络
  2. PyTorch 介绍
  3. 如何让计算机看见?
  4. 如何让计算机记忆?
  5. 下一步学习

GitHub地址项目 GitHub 地址

吴恩达《机器学习训练秘籍》完整中文版 – 更新

此前,我们发布了『吴恩达《机器学习训练秘籍》完整中文版』信息,目前该开源项目已迁移到新的地址。请在新的地址开始在线阅读《机器学习训练秘籍》样稿,相关代码开源地址如下:

Machine Learning Yearning
Machine Learning Yearning

GitHub地址项目 GitHub 地址

MIT人工智能实验室:如何做AI科研?

本文来自于 MIT 的人工智能实验室,创作于 1988。虽然已有 30 多年,但本文作为新进硕士博士研究生的参考,绝对精辟,奉为经典。尤其当下做 AI 更需要重温。中文译本由北京师范大学信息学院 2000 级博士生柳泉波完成。

本文的主旨是解释如何做研究。我们提供的这些建议,对做研究本身(阅读、写作和程序设计),理解研究过程以及开始热爱研究(方法论、选题、选导师和情感因素),都是极具价值的。

01 简介

并没有什么神丹妙药可以保证在研究中取得成功,本文只是列举了一些可能会有所帮助的非正式意见。

1.1 目标读者是谁?

本文档主要是为 MIT 人工智能实验室新入学的研究生而写,但对于其他机构的人工智能研究者也很有价值。即使不是人工智能领域的研究者,也可以从中发现对自己有价值的部分。

1.2 如何使用?

要精读完本文,太长了一些,最好是采用浏览的方式。很多人觉得下面的方法很有效:先快速通读一遍,然后选取其中与自己当前研究项目有关的部分仔细研究。

本文档被粗略地分为两部分。第一部分涉及研究者所需具备的各种技能:阅读,写作和程序设计,等等。第二部分讨论研究过程本身:研究究竟是怎么回事,如何做研究,如何选题和选导师,如何考虑研究中的情感因素。很多读者反映,从长远看,第二部分比第一部分更有价值,也更让人感兴趣。

  • 如何通过阅读打好 AI 研究的基础。列举了重要的 AI 期刊,并给出了一些阅读的诀窍。
  • 如何成为 AI 研究领域的一员:与相关人员保持联系,他们可以使你保持对研究前沿的跟踪,知道应该读什么材料。
  • 如何学习 AI 相关领域的知识。对几个领域都有基本的理解,对于一个或者两个领域要精通。
  • 如何做研究笔记。
  • 如何写期刊论文和毕业论文。如何为草稿写评审意见,如何利用别人的评审意见。如何发表论文。
  • 如何做研究报告。
  • 有关程序设计的。AI 程序设计与平常大家习惯的程序设计有所不同。
  • 有关研究生涯最重要的问题,如何选导师。不同的导师具有不同的风格,本节的意见有助于你找到合适的导师。导师是你必须了解如何利用的资源。
  • 关于毕业论文。毕业论文将占据研究生生涯的大部分时间,本部分涉及如何选题,以及如何避免浪费时间。
  • 有关研究方法论,尚未完成。

或许是最重要的一节:涉及研究过程中的情感因素,包括如何面对失败,如何设定目标,如何避免不安全感,保持自信,享受快乐。

02. 阅读

很多研究人员花一半的时间阅读文献。从别人的工作中可以很快地学到很多东西。本节讨论的是 AI 中的阅读,在第 04 小节将论述其他主题相关的阅读。

阅读文献,始于今日。一旦你开始写作论文,就没有多少时间了,那时的阅读主要集中于论文主题相关的文献。在研究生的头两年,大部分的时间要用于做课程作业和打基础。此时,阅读课本和出版的期刊文章就可以了。(以后,你将主要阅读文章的草稿,参看小节 03)。

在本领域打下坚实的基础所需要的阅读量,是令人望而却步的。但既然 AI 只是一个很小的研究领域,因此你仍然可以花几年的时间阅读本领域已出版的数量众多论文中最本质的那部分。

一个有用的小技巧是首先找出那些最本质的论文。此时可以参考一些有用的书目:例如研究生课程表,其他学校(主要是斯坦福大学)研究生录取程序的建议阅读列表,这些可以让你有一些初步的印象。

如果你对 AI 的某个子领域感兴趣,向该领域的高年级研究生请教本领域最重要的十篇论文是什么,如果可以,借过来复印。最近,出现了很多精心编辑的有关某个子领域的论文集,尤其是 Morgan-Kauffman 出版的。

AI 实验室有三种内部出版物系列:Working Papers,Memos 和 Technical Reports,正式的程度依次增加,在八层的架子上可以找到。回顾最近几年的出版物,将那些非常感兴趣的复制下来。这不仅是由于其中很多都是意义重大的论文,对于了解实验室成员的工作进展也是很重要。

有关 AI 的期刊有很多,幸运的是,只有一部分是值得看的。

  • 最核心的期刊是 Artificial Intelligence,也有写作”the Journal of Artificial Intelligence “或者”AIJ”的。AI 领域真正具备价值的论文最终都会投往 AIJ,因此值得浏览每一年每一期的 AIJ;但是该期刊也有很多论文让人心烦。
  • Computational Intelligence 是另外一本值得一看的期刊。
  • Cognitive Science 也出版很多意义重大的 AI 论文。
  • Machine Learning 是机器学习领域最重要的资源。
  • IEEE PAMI(Pattern Analysis andMachine Intelligence)是最好的有关视觉的期刊,每期都有两三篇有价值的论文。
  • International Journal of Computer Vision(IJCV)是最新创办的,到目前为止还是有价值的。
  • Robotics Research 的文章主要是关于动力学的,有时候也有划时代的智能机器人论文。
  • IEEE Robotics andAutomation 偶尔有好文章。

附注: [中国计算机学会推荐国际学术会议和期刊目录]

每年都应该去所在学校的计算机科学图书馆(在 MIT 的 Tech Square 的一层),翻阅其他院校出版的 AI 技术报告,并选出自己感兴趣的仔细加以阅读。

阅读论文是需要练习的技能。不可能完整地阅读所有的论文。阅读论文可分为三个阶段:

  • 第一阶段是看论文中是否有感兴趣的东西。AI 论文含有摘要,其中可能有内容的介绍,但是也有可能没有或者总结得不好,因此需要你跳读,这看一点那看一点,了解作者究竟做了些什么。内容目录(the table of contents)、结论部分(conclusion)和简介(introduction)是三个重点。如果这些方法都不行,就只好顺序快速浏览了。一旦搞清楚了论文的大概和创新点,就可以决定是否需要进行第二阶段了。
  • 在第二阶段,要找出论文真正具有内容的部分。很多 15 页的论文可以重写为一页左右的篇幅;因此需要你寻找那些真正激动人心的地方,这经常隐藏于某个地方。论文作者从其工作中所发现的感兴趣的地方,未必是你感兴趣的,反之亦然。
  • 最后,如果觉得该论文确实有价值,返回去通篇精读。

读论文时要牢记一个问题,“我应该如何利用该论文?”,“真的像作者宣称的那样么?”,“如果……会发生什么?”。

理解论文得到了什么结论并不等同于理解了该论文。理解论文,就要了解论文的目的,作者所作的选择(很多都是隐含的),假设和形式化是否可行,论文指出了怎样的方向,论文所涉及领域都有哪些问题,作者的研究中持续出现的难点模式是什么,论文所表达的策略观点是什么,诸如此类。

将阅读与程序设计联系在一起是很有帮助的。如果你对某个领域感兴趣,在阅读了一些论文后,试试实现论文中所描述的程序的“玩具”版本。这无疑会加深理解。

可悲的是,很多 AI 实验室天生就是孤僻的,里面的成员主要阅读和引用自己学校实验室的工作。

要知道,其他的机构具有不同的思考问题的方式,值得去阅读,严肃对待,并引用它们的工作,即使你认为自己明晓他们的错误所在。

经常会有人递给你一本书或者一篇论文并告诉你应该读读,因为其中有很闪光的地方且/或可以应用到你的研究工作中。但等你阅读完了,你发现没什么特别闪光的地方,仅仅是勉强可用而已。于是,困惑就来了,“我哪不对啊?我漏掉什么了吗?”。

实际上,这是因为你的朋友在阅读书或论文时,在头脑中早已形成的一些想法的催化下,看出了其中对你的研究课题有价值的地方。

03 建立关系

一两年后,对自己准备从事的子领域已经有了一些想法。此时——或者再早一点——加入 Secret Paper Passing Network 是很重要的。这个非正式的组织是人工智能真正在做什么的反映。引导潮流的工作最终会变成正式发表的论文,但是至少在牛人完全明白一年之后,也就是说,牛人对新思想的工作至少领先一年。

牛人如何发现新思路的?可能是听自于某次会议,但是最可能来自于 Secret Paper Passing Network。下面是该网络工作的大致情况。

Jo Cool 有了一个好想法。她将尚不完整的实现与其他一些工作融合在一起,写了一份草稿论文。她想知道这个想法究竟怎么样,因此她将论文的拷贝发送给十位朋友并请他们进行评论。朋友们觉得这个想法很棒,同时也指出了其中的错误之处,然后这些朋友又把论文拷贝给他们各自的一些朋友,如此继续。

几个月后,Jo 对之进行了大量修订,并送交给 AAAI。六个月后,该论文以五页的篇幅正式发表(这是 AAAI 会议录允许的篇幅)。最后Jo开始整理相关的程序,并写了一个更长的论文(基于在 AAAI 发表论文得到的反馈)。然后送交给 AI 期刊。

AI 期刊要花大约两年的时间,对论文评审,包括作者对论文修改所花费的时间,以及相应的出版延迟。因此,理想情况下,Jo 的思想最终发表在期刊上需要大约三年时间。所以牛人很少能从本领域出版的期刊文章中学到什么东西,来得太迟了。你,也可以成为一个牛人。

下面是建立学术关系网的一些诀窍:有很多讨论某个 AI 子领域(如连接主义或者视觉)的邮件列表,选择自己感兴趣的列表加入。

当与很熟悉本领域的人讨论自己的思想时,他们很可能不直接评价你的想法,而是说:“你读过某某吗?”这并不是一个设问,而是建议你去阅读某份文献,它很可能与你的想法有关系。如果你还没有读过该文献,从跟你交谈的高手那里得到该文献的详细信息,或者直接从他那里借一份拷贝下来。

当你读到某份让你感到很兴奋的论文,复印五份送交给对之感兴趣的其他五个人。他们可能会反馈回来很好的建议。

本实验室有很多针对不同子领域的非正式(持续发展的)论文讨论组,他们每星期或每两星期聚会一次,对大家阅读完的论文进行讨论。

有些人并不介意别人去翻看他们的书桌,也就是说,去翻阅他们堆在书桌上的不久要阅读或者经常翻阅的论文。你可以去翻翻看,有没有自己感兴趣的。当然了,首先要得到主人的许可,要知道有些人确实反感别人翻自己的东西。去试试那些平易近人的人。

同样,有些人也并不介意你翻看他们的文件柜。实验室中可是有很多学问精深的人,他们的文件柜里也是有好多宝贝。与利用学校图书馆相比,这通常是更快更可靠的寻找论文的方式。

只要自己写下了些东西,将草稿的拷贝分发给那些可能感兴趣的人。(这也有一个潜在的问题:虽然 AI 领域的剽窃很少,但也确实有。你可以在第一页写上“请不要影印或者引用”的字样以做部分防范。)

大部分人并不会阅读自己收到的大部分论文,因此如果只有少数人返回评论给你,也不用太在意。你可以如此反复几次——这是期刊论文所必需的。注意,除了自己的导师,一般很少将两次以上的草稿送给同一个人。

当你写完一篇论文后,将论文的拷贝送给那些可能感兴趣的人。别以为人家自然而然地就会去阅读发表论文的期刊或者会议录。如果是内部的出版物(备忘录和技术报告)就更不容易读到了。

你保持联系的人越是各式各样,效果就越好。尝试与不同研究组,AI 实验室,不同学术领域的人交换论文。使自己成为没有联系的两个科研组交流的桥梁,这样,很快的,你的桌子上就会冒出一大摞相关的论文。

如果某篇论文引用了自己感兴趣的某些东西,做好笔记。维护一份自己感兴趣参考文献的日志。到图书馆去看看能不能找到这些论文。如果要了解某个主题的发展轨迹,可以有意地去做一张引用的“参考文献”图。所谓的参考文献图,是指引用组成的网:论文 A 引用 B 和 C,B 引用 C 和 D,C 引用 D,等等。

注意那些被经常引用的论文,这通常是值得阅读的。参考文献图有奇妙的性质。一个是经常有研究同一主题的研究组相互不了解。你搜索该图,突然发现了进入另一部分的方式,这通常出现于不同学校或者不同方法存在的地方。尽可能了解多种方法是很有价值的,这总比非常深入的了解某一种方法更好。

暂时搁置。跟别人交谈。告诉他们你在做什么,并询问人家在做什么。(如果你对与别的学生讨论自己的想法感到害羞,也要坚持交谈,即使自己没有什么想法,与他们讨论自己认为确实优秀的论文。这将很自然地引导到下一步做什么的讨论。)

每天中午在活动楼七层有一个非正式的午餐讨论会。在我们实验室,人们都习惯于晚上工作,所以午餐的时候可以跟别人组成松散的小组进行讨论。如果你与外界的交流很多——做演示或者参加会议——去印张事务名片,

主要要使自己的名字容易记住。从某个时间开始,你将会开始参加学术会议。如果你确实参加了,你会发现一个事实,几乎所有的会议论文都令人生厌或者愚蠢透顶。(这其中的理由很有意思,但与本文无关,不做讨论)。

那还去参加会议干吗?主要是为了结识实验室之外的人。外面的人会传播有关你的工作的新闻,邀请你作报告,告知你某地的学术风气和研究者的特点,把你介绍给其他人,帮助你找到一份暑期工作,诸如此类。如何与别人结识呢?如果觉得某人的论文有价值,跑上去,说:“我非常欣赏您的论文”,并提问一个问题。

获得到别的实验室进行暑期工作的机会。这样你会结识另外一群人,或许还会学到另外一种看待事物的方式。可以去问高年级同学如何获取这样的机会,他们或许已经在你想去的地方工作过了,能帮你联系。

04 学习其他领域的知识

通常的情况,你只能做 AI 领域的事情,对 AI 领域之外的事情一无所知,好像有些人现在也仍然这么认为。但是,现在要求好的研究者对几个相关的领域都了解颇深。

计算的可行性本身并没有对什么是智能提供足够的约束,其他的领域给出了其他形式的约束,例如心理学获得的经验数据。更重要的是,其他的研究领域给了你思考的新工具,看待智能的新方法。

学习其他领域的另外一个原因是 AI 本身并没有评价研究价值的标准,全是借自于其他领域。数学将定理作为进展;工程会问某个对象是否工作可靠;心理学要求可重复的试验;哲学有严格的思辨;等等。所有这些标准有时都在 AI 中起作用,熟悉这些标准有助于你评价他人的工作,深入自己的工作以及保护自己的工作。

经过六年左右的课程方可获得 MIT 的 PhD,你可以在一到两个非 AI 领域里打下坚实的基础,在更多的领域内具有阅读水平,并且必须对大部分内容具有一定程度的理解。下面是如何学习自己所知甚少领域的一些方法:

  • 选修一门研究生课程,这很牢靠,但通常不是最有效的方法。
  • 阅读课本。这方法还算不错,不过课本的知识经常是过时的,一般还有很高比例的与内容无关的修辞。
  • 找出该领域最棒的期刊是什么,向该领域的高人请教。然后找出最近几年值得阅读的文章,并跟踪相关参考文献。这是最快的感受该领域的方法,但有时候你也许会有错误的理解。
  • 找出该领域最著名的学者,阅读他们所著的书籍。
  • 跟该领域的研究生泡在一起。
  • 参看外校研究该领域的系的课程表。拜访那里的研究院办公室,挑选有用的的文献数学可能是接下来需要了解的最重要的学科。对于工作在视觉或者机器人学的人来说更关键。对于以系统为中心的工作,表面上看,并不相关,但数学会教你有用的思维方式。你需要能阅读定理,如果具有证明定理的能力将会给本领域的大多数人留下深刻的印象。很少有人能自学数学,光做个听众是不够的,还得做习题集。尽可能早地选修尽可能多的数学课,其他领域的课程以后选也很容易。

计算机科学是以离散数学为基础的:代数,图论,等等。如果你要从事推理方面的工作,逻辑是很重要的。逻辑在 MIT 用得不多,但是在斯坦福以及其他地方,这是认识思维的主流方法。所以你必须具备足够的逻辑知识,这样你才能保护自己的观点。

在 MIT 数学系选修一两门课程就足够了。要是研究兴趣在感知和机器人,那么不仅需要离散数学,还需要连续数学。在分析,微分几何和拓扑学具有扎实的基础将会给你提供最常使用的技巧。统计和概率只是一般有用。

认知心理学与 AI 共享几乎完全相同的观点,但是实践者确实具有不同的目标,他们主要是做实验而不是写程序。每一个人都需要知道认知心理学的某些知识。在 MIT,MollyPotter 开了一门很好的有关认知心理学的初级研究生课程。

如果你想做有关学习的工作,那么发展心理学是很重要的。发展心理学从一般意义上讲也是很有用的,它能告诉你对于人类智能来说,哪些事情难哪些容易。它还给出了有关认知体系结构的认知模型。例如,有关儿童语言习得的工作就对语言处理理论施加了坚实的约束。在MIT,Susan Carey 开了一门很好的有关发展心理学的初级研究生课程。

心理学中更“软”的部分,例如心理分析和社会心理学,对 AI 的影响看似很小,但具有潜在的重大意义。它们会给你非常不同的理解人是什么的方式。社会学和人类学这样的社会科学可以起相似的作用。具有多种观点是很有用的。上述学科你需要自学。

不幸的是,很难区分出这些领域哪些是优秀的成果哪些是垃圾。到哈佛去学习:对于 MIT 的学生来说,很容易交叉注册哈佛的课程。

神经科学告诉我们有关人体可计算硬件的知识。随着最近可计算神经科学和联结主义的兴起,对 AI 具有非常大的影响。MIT 的脑和行为科学系提供了非常好的课程,视觉(Hildreth, Poggio, Richards, Ullman),移动控制(Hollerbach, Bizzi)和普通神经科学(9.015,由专家组讲授)。

如果你想研究自然语言处理,语言学是很重要的。不仅如此,它还包含了很多有关人类认知的约束。在MIT,语言学主要由 Chomsky 学院负责。你可以去看看是不是符合自己的兴趣。George Lakoff 最近出版的书《Women, Fire, and Dangerous Things》可作为另外一种研究程序的例子。

工程,特别是电机工程,已经被很多 AI 研究机构作为一个研究领域。我们实验室在培养程序中加入了很多需要确实做一些东西的要求,例如分析电路。了解 EE 也有助于建造定制的芯片或者调试自己的 Lisp 机器上的电源。

物理学对于那些对感知和机器人感兴趣的人具有强大的影响。

哲学是所有 AI 领域看不见的框架。很多 AI 工作都有蕴含着哲学的影响。学习哲学也能帮助你运用或者读懂很多 AI 论文中用到的观点。哲学可沿着至少两个正交的轴分解。哲学通常是某种东西的哲学;有关思维和语言的哲学与 AI 更相关。

然后存在着多种哲学学派,从比较大的范围来分,哲学可分为分析哲学和大陆哲学。分析哲学有关思维的观点与 AI 领域大多数研究者一致。大陆哲学则对我们习以为常的很多东西有非常不同的看待方式。它曾经被 Dreyfus 用于证明 AI 是不可能的。

就在不久前,有几位研究者认为大陆哲学与 AI 是相容的,提供了另外一种解决问题的方法。MIT 的哲学属于分析哲学,哲学学院深深地受到 Chomsky 在语言学方面工作的影响。

看起来要学习太多的东西,是不是?确实如此。要小心一个陷阱:认为对于所有的 X,“只有我对 X 了解的更多,这个问题才会变得容易”。要知道,与之相关需要进一步了解的东西是永远没完的,但最终你还是要坐下来,解决问题的。

05 笔记

很多科学家都有做科研笔记的习惯,你也应该这样。可能你曾被告知从五年级开始,对于每一门科学课都应该记笔记,确实如此。不同的记笔记方式适用于不同的人,可以做在线笔记,记在笔记本或者便笺簿上。可能需要在实验室有一个,家里还有一个。

在笔记本上记录下自己的想法。只有你自己才会去读它,因此可以记得比较随意。记录下自己的思索,当前工作中遇到的问题,可能的解决方案。对将来可能用到的参考文献作小结。

定期翻阅你自己的笔记本。有些人会做月度总结,方便将来的引用。笔记中记录中的东西经常可以作为一篇论文的骨干。这会使生活变得轻松些。相反,你会发现写粗略的论文——标题,摘要,分标题,以及正文的片段——是一种记录自己当前工作的有效方式,即使你并不准备把它变成一篇真正的论文。(过一段时间你或许会改变想法)。

你或许会发现 Vera Johnson-Steiner 的书《Notebooks of the Mind》很有用,该书并不是描写如何做笔记的文献,它描述了随着思想片断的积累,创新思想是如何出现的。

06 写作

写作的理由有很多。在整个读研的过程中,你需要写一到两篇(这取决于你所在系的规定)毕业论文,以获得 PhD 或者 MS。

勤于写作不仅仅给你练习的机会。

学术的规则就是要么发表,要么腐烂。在很多领域和学校,这通常开始于你成为一名教授时,但是我们实验室的很多研究生毕业之前就已经开始发表论文了。

鼓励发表和分发论文是很好的政策。

写下自己的想法是很好的调整思路的方式。你会经常地发现自以为很完美的想法一旦写下来就显得语无伦次。

如果你工作的目的是不仅为自己还要为他人服务,就必须把它发表。这也是研究的基本责任。如果你写得精彩,会有更多的人来了解你的工作。

AI 但凭单打独斗是很难做的,你需要经常地从他人那里获得反馈。对你的论文作评论就是最重要的一种形式。任何事情,要做就要做到最好。

阅读有关如何写作的书籍。Strunk 和 White 的《Elements of Style》对基本的应该如何不应该如何做了介绍。Claire 的《The MLA’s Line By Line》(Houghton Mifflin)是有关在句子级别如何编辑的书籍。Jacques Barzun的《Simple and Direct : A Rhetoric for Writers》(Harper and Row, 1985)是有关如何作文的。[Nebula6]

写论文时,读读那些写作高超的书,并思考作者的句法运用。你会发现不知不觉地,你已经吸收了作者的风格。

要成为写作高手,需要付出颇多,历经数年,期间还要忍受和认真对待他人的批评。除此之外,并无捷径可走。

写作有时候是很痛苦的,看起来好像是从“实际的”工作中分心了。但如果你已经掌握了写作技巧,写起来会很快。而且如果你把写作当作一门艺术的话,你能从中得到很多乐趣。

你肯定会遇到思路阻塞的情况,这有很多的可能原因,没有一定可以避免的方法。追求完美可能导致思路阻塞:无论开始写什么,总觉得不够好。

要理解写作是一个调试的过程。先写一个草稿,然后返回修订。写草稿有助于理顺思路,如果写不出来正文,那就写个大纲。逐步对之细化,直到已经很容易写出子部分的内容。

如果连草稿也写不出来,隐藏掉正在写作的所有窗口,然后随便输入自己脑袋里想到的东西,即使看起来好像是垃圾。当你已经写出了很多文本后,重新打开窗口,将刚才写的东西编辑进去。

另外一个错误是以为可以将所有的内容依次写出。通常你应该将论文的核心内容写出来,最后才是介绍部分。引起作者思路阻塞的另一个原因是不切实际的以为写作是很容易的事情。写作是耗时耗力的,如果发现自己每天只能写一页,也不要放弃。

完美主义可能会导致对本来已经足够好的论文还在不停地打磨。这是浪费时间。(这也是一种有意无意之间逃避做研究的表现)。将论文看作你与本领域其他人交谈时的一句话。在交谈中,并不是每一句话都是完美的。很少有人会期待自己的某次谈话就是全部的故事,是与对方的最后一次交流。

写信是一种很好的练习。很多技术论文,如果其风格更类似于给朋友的信,那么会有很大的提高。坚持记日记也是练习写作的方法(也会使你试验更多的文体,不仅仅是技术论文)。这两种方法还有其它的实质作用。

一个常见的陷阱是花很多时间去追求修辞而不是内容。要避免这样。LaTeX 并非完美,但是它有很多你所需的修饰语。如果这还不够,还可从其他从事这一研究的人那里借用一些词语用法。很多站点(例如MIT)维护了一个写作修辞的库。

清楚自己要表达什么。这是清楚的写作中最难最重要的因素。如果你写了拙劣的东西,且不知道如何修改,这很有可能是因为你不知道自己要说什么。一旦搞清楚了自己要说什么,说就行了。

论文的写作要有利于读者查找到你所做的工作。无论是段落的组织还是通篇的组织,都要将最核心的部分放在前面。要精心写作摘要。确保摘要已经反映出你的好思路是什么。确保自己明白自己的创新点是什么,然后用几句话表达出来。太多的论文摘要只是一般性地介绍论文,说是有一个好思路,却不说是什么。

不要用大话来贩卖你的工作。你的读者都是很优秀的人,正直且自尊。与之相反,也不要为自己的工作道歉或者进行消减。

有时候你意识到某个子句、句子或者段落不够好,却不知道如何修改。这是因为你钻到死胡同里出不来了。你需要返回重写这一部分。现实中这种情况很少发生。

确保自己的论文中有中心思想。如果你的程序在 10 毫秒内解决了问题 X,告诉读者你是如何办到的。不要只是解释呢的系统是如何构建的,是做什么的,还要解释其工作原理和价值所在。

写作是给人看的,而不是机器。因此光观点正确是不行的,还要易懂。不要靠读者自己去推理,除非是最明显的推论。如果你在第七页的脚注上解释了某个小玩意的工作原理,接着在第二十三页没有进一步解释就引用了它,此时如果读者感到困惑一点都不值得奇怪。正式的论文要写清楚是很难的。不要模仿数学领域的文献,它们的标准是尽可能少的解释,使读者感到越困难越好。这并不适用于 AI。

写完一篇论文后,删掉第一段或者头几句话。你会发现那是与内容无关的一般性话语,更好的介绍语句在第一段最后或者第二段的开头。

如果你等做完所有的工作后才开始写作,会失去很多。一旦开始了某个科研项目,要养成这样的习惯:写作解释当前工作进展或者每几个月学习所得的非正式论文。

从你的研究笔记中的记载开始。花两天的时间写下来——如果你花的时间更长,说明你是一个完美主义者。将论文与你的朋友分享。写的是草稿——不是为了被引用的那种。将论文复制数十份,送给那些感兴趣的人(包括你的导师)。

与写正式论文相比,这样做具有很多相同的好处(评论,理清思路,写作练习等等),而且从某种意义上讲,付出无需那么多。经常地,如果你做得不错,这些非正式论文以后可以作为正式论文的骨干内容,也就是从 AI 实验室的 Working Paper 成为一篇期刊文章。

一旦你成为 Secret Paper Passing Network 的成员,会有很多人给你寄论文拷贝要求评论。获得他人对自己的论文的评论是很有价值的。因此你评论的论文越多,你获得支持就越多,也会收到更多人对你论文的评论。不仅如此,学习评价别人的论文有助你的选择。

为论文写有用的评论是一门艺术。

要写出有用的评论,需要读两遍论文。第一遍了解其思想,第二遍开始作评论。

如果某人在论文中屡次犯同一错误,不要每次都标记出来。而是要弄清楚模式是什么,他为什么这样做,对此还可以做什么,然后在第一页清晰地指出或者私下交流。

论文的作者在合并你的评论时,将会遵循最小修改的原则。如果可以,就只修改一个词,不行再修改一个词组,再不行才修改整个句子。如果他的论文中某些拙劣之处使得他必须修改整个段落,整个小节甚至整篇论文的组织,要用大字体的字母指出来,这样他才不会忽视。

不要在论文写毁灭性的批评如“垃圾”。这对于作者毫无帮助。花时间提出建设性的建议。要设身处地地为作者着想。评论有很多种。有对表达的评论,有对内容的评论。对表达的评论也可以很不同,可以是校对打字稿,标点,拼写错误,字词丢失等。

应该学一些标准的编辑符号。还可以是校正语法,修辞,以及混乱不清楚的段落。通常人们会持续地犯同一语法错误,因此需要花时间明确地指出。接下来是对组织结构的评论:不同程度(子句,句子,段落,小节乃至一章)的次序混乱,冗余,无关的内容,以及丢失论点。

很难描述对内容进行评论的特征。你可能建议作者扩展自己的想法,考虑某个问题,错误,潜在的问题,表达赞美等。“因为 Y,你应该读 X”是一种总是有用的评论。

你无须接受所有的意见,但是必须都认真对待。将论文的部分内容裁掉是挺令人痛心的,但往往也提高了论文的水平。你经常会发现某个意见确实指出了问题,但是解决方法你觉得不可接受,那么就去寻找第三条道路。

要多发表论文,这其实比想象中的容易。基本上,AI 出版物评审者评审论文的标准是:(a) 有新意;(b) 在某些方面,符合标准。看看 IJCAI 的会议录,你会发现论文录取的标准相当低。这种情况由于评审过程本身固有的随机性而变得更糟糕了。所以一个发表论文的诀窍是不停地试。

确保论文可读性比较好。论文被拒绝的原因,除了没有意义之外,就是无法理解或者组织糟糕。论文在投往期刊之前,应该交流一段时间,并根据反馈的评论进行适当的修订。要抵制那种急匆匆地把结果投往期刊的做法。

在AI领域,没有竞赛,而且不管怎么说,出版周期的延迟要大大超过对草稿进行评论的时间。读一读你想投稿的期刊或者会议的过刊,确保自己论文的风格和内容是适合的。

很多出版物都有一页左右的“作者投稿须知”,仔细看看。

主要的会议都会在被接收的论文中评出内容和表达俱佳的获奖论文,仔细研究研究。

通常是向会议投交一篇篇幅比较短的有关部分工作内容的早期报告,然后再往期刊投交一份篇幅长的最终的正式论文。

论文被拒绝了——千万不要沮丧灰心。

期刊和会议的论文评审过程存在很大的不同。为了节省时间,会议论文的评审必须迅速,没有时间细究或者交流。如果你被拒绝了,你就失败了。但期刊论文则不同,你可以经常地与编辑争辩,通过编辑与评审人争辩。

评审人一般都会对你有帮助的。如果你收到了令人生厌的评审报告,应该向大会的程序主席或者编辑投诉。不能期望可以从会议论文评审人的报告那里得到多少反馈。但对于期刊论文,往往可以得到非常棒的建议。

你不必完全按照评审报告的建议去做,但是,如果你不按照报告去做,那么就必须解释原因,并且要意识到这可能会导致进一步的负面评价。不管怎么样,无论是哪种的评审,作为评审者都要有礼貌。因为在余下的职业生涯中,你将会与被评审者在一个学术圈子里。

MIT AI Lab Memos 大体上是或者接近发表的水平。实际上,Technical Reports 基本上都是这些 Memos的修订版本。WorkingPapers 则更不正式,这是很好的将自己的论文分发给同事们的方法。

要出版这些内部文件,只需到 Publications Office(在活动楼八层)领一份表格,并有两位教员签字即可? 就像其它的科研活动一样,论文写作所花的时间总是比期望的要高。

论文的发表在耗费时间这个问题上则更严重。当你完成了一篇论文,投出去,等待发表。数月后,论文以及评论被返回来。你不得不对论文进行修改。然后又是几个月,才返回对你的修改的确认。

如果你同时发表了该论文的不同形式,如有一篇短的投会议,一篇长的投期刊,这样的过程将反复数个回合。结果有可能是当你已经厌倦了,研究主题也已经令人生厌后数年,你仍然在修改那篇论文。这启示我们:不要去做那些需要热情投入但是很难发表论文的研究——苦不堪言。

07 讲演

与同行交流的另外一种方式就是讲演,上面提到的有关论文写作的问题,同样适用于讲演。站在听众面前从容讲演而不会使听众恹恹欲睡的能力,对于你成功地获得别人的承认、尊敬乃至最终的求职都是很关键的。讲演的能力不是天生的,下面是一些学习和练习讲演的方法:

Patrick Winston 有一篇很好的有关如何作讲演的小论文。每年的一月,他都会就此作讲演,演示和描述它的演讲技巧。

如果你觉得自己是一个糟糕的演讲者,或者想成为一名优秀的演讲者,选一门公共演讲课。初级的表演课也很有用。

如果你的导师有定期的研究讨论会,自愿去作演讲。

MIT AI 实验室有一系列的半正式座谈会,叫做 Revolving Seminar。如果你觉自己的某些观点值得写进 AI Memo 或者会议论文中,自告奋勇去作一场报告。深入了解实验室的不同机器人项目,当你外地的亲朋好友来的时候,你可以领着他们逛一圈,并就机器人做 60 分钟的报告。

由于修改演讲远比修改论文容易,有些人会觉得这是很好的寻找如何表达思想的方式。(Nike Brady 有一次曾说,他所有最好的论文都来自于演讲)。

在一间空屋子里练习,最好就是你马上要做的报告。这有助于调整报告的技巧:每一张幻灯讲些什么;转换的延迟以及保持平滑;保持解释和幻灯的同步;估计报告的时间长度。你花在调整设备上的时间越少,留下来的与人交流的时间就越长用镜子,录音机或者录像机练习是另外一种方法。实验室有这三种设备。这也有助于调整自己的发音和肢体语言。

对于比较正式的报告——特别是你的答辩——应该在几个朋友面前练习一遍,请他们批评指正。观察别人是如何做报告的。有很多访问 MIT 的人会做报告。参加这样的报告会能够感受自己不熟悉的领域,并且如果报告令人提不起兴趣,你可以暗中分析报告者错在哪里。

找一位朋友,将你最近的想法说给他听。这既可以提高的交际技巧,又能调试自己的思路。

08 程序设计

并不是所有的 AI 论文都包含代码,而且本领域的很多重量级人物从来没有写过一个重要的程序。但是为了初步的近似 AI 工作原理,你必须会程序设计。不仅仅是很多AI 研究工作需要编写代码,而且学会程序设计能给你什么是可计算的什么是不可计算的直觉,这是 AI 对认知科学贡献的主要来源。

在 MIT,本质上所有的 AI 程序设计都使用 CommonLisp。如果还不知道,赶快学吧。当然,学习一门语言并不能等同于学习程序设计;AI 程序设计包含的一些技术与那些在系统程序设计或者应用程序设计中用到的大不相同。

开始学的时候,可以先看看 Abelson 和 Sussman 的《Structure and Interpretation of Computer Programs》,并做一些练习。这本书与AI程序设计本质上并不相干,但是包含了一些相同的技术。然后读 Winston 和 Horn 写的 Lisp 书第三版,书里有很多优雅的AI程序。

最后,进行实际的程序设计,而不是阅读,才是最好的学习程序的方法。

学习 Lisp 程序设计有很多传统。有些人习惯一起写代码,这取决于个性。还有的人寻找机会直接向有经验的程序员学习,或者请他对你的代码进行评价。

阅读别人的代码也是很有效的方法。如果可以向高年级同学要他们的源代码。他们可能会有些抱怨,说自己的编程风格差极了,程序实际上并不能工作云云。

不管怎么样,最后你获得了源代码。然后你要仔细地通篇阅读,这很费时间。通常阅读并完全理解别人代码所花的时间与你自己编程完成的时间是一样多的,因此要计划好在你的头一个或者头两个学期用数周的时间去阅读别人的代码。

你将从中学到很多以前不曾想到在课本中也没有的技巧。如果你读到了大段大段不可理解没有注释的程序,你就会明白不应该如何写代码了。

在软件工程课里学习到的那些知识在 AI 程序设计中依然有用。要给代码加注释。使用正确的数据抽象。将图和你的代码隔离开,由于你使用的语言基本上是 Common Lisp,因此可移植性很好。诸如此类。

经过头几年的学习后,应该写一些自己的标准 AI 模块,如:

  • 真值维护系统
  • 规划器
  • 规则系统
  • 不同风格的解释器
  • 具有流程分析的优化编译器
  • 具有继承特性的框架系统
  • 几种搜索方法
  • 基于解释的学习器

任何你感兴趣的东西都可以尝试用程序实现。你可以抓住问题的实质,在几天之内完成一个功能版本。修改已有的程序是另外一种有效的方法,并且确实了解其工作原理,优缺点以及效率等问题。

不象其他通常的程序员,AI 程序员之间很少相互借阅代码。(演示代码例外)。这部分由于 AI 程序很少有真正起作用的。(很多著名的 AI 程序只在作者论文所提到的那三个例子上起作用,虽然最近这种情况已经有所改善)。

另外一个原因是 AI 程序通常是匆忙凑成,并没有考虑一般化的问题。使用 Foobar 的“标准”规则解释器,开始时很有效,不久就会发现缺少一些你需要的功能,或者不够有效率。虽然可以对代码

进行修改满足自己的需要,但记住理解别人的代码是很耗时的,有时候还不如自己写一个。有时候构建一个标准包的工作本身就可以成为一篇论文。

像论文一样,程序也有可能过于追求完美了。不停重写代码以求完美,最大化的抽象所有的东西,编写宏和库,与操作系统内核打交道,这都使得很多人偏离了自己的论文,偏离了自己的领域。(从另外一方面,或许这正是你需要将来谋生的手段)

09 导师

在 MIT,有两种类型的导师,教学导师和论文导师。

教学导师的工作比较简单。每一位研究生都被分配了系里的一位老师作为教学导师。教学导师的作用是作为系方代表,告诉你对你的正式要求是什么,如果你的进度慢了敦促你,批准你的课程计划等。如果一切顺利的话,你每年只需要见教学导师两次,在注册日那天。从另一方面讲,如果你遇到了困难,教学导师替你向系里反映或者提供指导。

论文导师是监督你研究的人。选择论文导师是你读研期间最重要的选择,比选题都重要得多。从更广的意义上讲,AI 是通过师傅带徒弟的方式学习的。有很多领域的技术方面或者研究过程方面的非正式知识,只能从导师那里学到,在任何教科书上都找不到。

很多 AI 教员都是行为古怪的人,毕业生也如此。导师与研究生的关系是非常个性化的,你的个人特点必须与导师的配合得很好,这样你们才能合作成功。

不同的导师具有不同的风格。下面是一些需要值得考虑的因素:

  • 你需要多大程度的指导?有些导师会给你一个定义良好的适合做论文的问题,对解决方法进行解释,并告诉你如何开展工作。如果你陷在某个地方了,他们会告诉你如何开展下去。其他的导师属于甩手型,他们可能对你的选题毫无帮助,但是一旦你选好题目,他们对于引导你的思路具有非常大的作用。你需要考虑清楚自己适合独立工作还是需要指导。
  • 你需要多大程度的联系?有的导师要求每周与你见面,听取你工作进展的汇报。他们会告诉你应该读的论文,并给你实际的练习和项目做。其他的导师每学期与你的谈话不会超过两次。
  • 你能承受的压力有多大?有些导师施加的压力是很大的。
  • 需要多少情感支持?
  • 听取导师意见的认真程度如何?大多数导师会相当正式的建议你的论文题目。有些导师是值得信赖的,他们给出的建议,如果按照执行,几乎肯定会做出一篇可接受程度的论文,如果不是令人兴奋的论文的话。其他的则一下子抛出很多思路,大部分是不切实际的,但是有一些,或许会导致重大突破。如果选了这样的一位导师,你首先得把自己当作一个过滤器。
  • 导师提供了什么类型的研究组?有些教授会创造环境,把所有的学生聚集在一起,即使他们做的不是同一个项目。很多教授每周或者每两周与自己的学生们会面。这对你有用么?你能与教授的学生和睦相处么?有些学生发现他们更能与其他教研组的学生建立良好的工作关系。
  • 你想参与大的项目么?有些教授将大系统分解,每个学生负责一部分。这给了你与一组人讨论问题的机会。
  • 你想被共同监督么?有些论文项目包含了多个AI 领域,需要你与两个以上的教授建立密切的工作关系。虽然你正式的论文导师只有一位,但是有时候这并不反映实际情况。
  • 导师愿意指导其研究领域之外的论文题目么?你是否能与导师一起工作,比你做什么本身更重要。MIT 的机器人系就曾指导过量子物理学和认知建模方面的论文;推理方面的教员指导过视觉方面的论文。但是有些教员只愿意指导自己研究兴趣领域内的论文。这对于那些欲获得终身职位的年轻教员来说尤其如此。
  • 导师会为了你跟体制作斗争吗?有些导师会为了你跟系里或者某些有敌意的实体作斗争。有时候体制对某些类型的学生不利(特别是对于女学生和怪癖的学生),因此这一点很重要。
  • 导师愿意并且能够在会议上推荐你的工作吗?这是导师工作的一部分,对你将来工作意义重大。

上述这些因素,不同学校的情况很不相同。与大部分学校相比,MIT 提供了多得多的自由。

找论文导师是你研究生一年级最主要的任务。研一结束时,或者研二学年开始阶段,你必须有一个论文导师。下面是一些诀窍:

  • 查阅实验室的研究总结。其中有一页左右的篇幅描述了每个教师以及很多研究生目前在做什么。
  • 如果你对某些教师的研究工作感兴趣,查阅其最近的论文。
  • 在第一学期,与尽可能多的教师交谈。去感受他们喜欢做什么,他们的研究和指导风格是什么。
  • 与预期导师的研究生交谈。要保证与导师的多个学生交流,因为每位导师在与不同的学生交流时有不同的工作方式和交流效果。不能被一个学生的看法所左右。
  • 很多教师所在研究组的会议对新同学都是公开的。这是非常好的了解导师工作方式的途径。

作为一门学科,AI 不同寻常的一点是很多有用的工作是由研究生完成的,而不是博士——他们忙着做管理去了。这有几个后果。一是某个教师的声望,是否会获得终身聘用,在很大程度上取决于学生的工作。这意味着教授有很强烈的动机吸引最好的学生为自己工作,并给与有效的指导和足够的支持。

另外一个后果是,由于大部分学生的论文方向是由导师形成的,因此整个领域的方向和发展很大程度上取决于导师选择什么样的研究生。当选定了导师,决定了自己对导师的要求后,要确保导师知道。不要由于交流不好,浪费时间于自己并不想做的项目上。

不要完全依赖你的导师,要建立自己的网络。找一些能定期评审你的工作的人是很重要的,因为研究时很容易走火入魔。网络中的人可以包括自己实验室或者外单位的研究生和老师。

在与其他学生、老师甚至自己的导师的关系中,很可能会碰到种族主义者,性别歧视,同性恋或者其他令人尴尬的事情。如果你不幸碰到了,去寻求帮助。MIT 的 ODSA 出版了一本叫做“STOP Harrassment”的小册子,里面有很多建议。《ComputerScience Women’s Report》,可在 LCS 文档室找到,也与之相关。

实验室中有些同学只是名义上由导师指导。这对于那些独立性很强的人来说很好。但是如果你已经完成了某项导师指导的工作,除非你确保没有导师也行且自己有牢靠的支持网络,否则就不要这么干。

10 论文

做毕业论文将占据研究生生活的大部分时间,主要是去做研究,包括选题,这比实际的写作耗时更多。硕士论文的目的是为做博士论文练兵。博士水平的研究如果没有准备好的话,是很难进行的。

硕士论文最本质的要求是展示自己的掌握程度:你已经完全理解了本领域最新进展,并具备相应的操作水平。并不需要你对本领域的最新知识有所拓展,也不要求发表你的论文。然而我们实验室的论文总是比较大气的,因此很多硕士论文实际上都对本领域的发展作出了显著的贡献,大约有一半都出版了。这并不一定是好事情。

很多人精力都集中于硕士的工作,所以 MIT 有这样的名声:硕士论文的质量往往比博士论文高。这有悖于硕士工作本来是为博士研究作准备的原有目的。另外一个因素是所做研究要对领域有所贡献,至少需要两年,这使得研究生学习时间之长令人难以忍受。

现在或许你感受不到匆忙,但当你已经在实验室呆了七年后,你肯定迫不及待地想逃出去。硕士从入学到毕业平均时间是两年半,但是,计算机系强烈鼓励学生提前毕业。如果某个硕士生的题目过于庞大,可将之分解,一部分来做硕士论文,另一部分给博士生作博士论文。

想要了解硕士论文研究是什么样的,读几本最新的硕士论文。记住比较好的论文是那些出版的或者成为技术报告的,因为这标志着该论文被认为是扩展了领域的最新知识——换句话说,他们的论文远远超出了硕士论文的水平。还要读一些通过的但是没有出版的论文,所有通过的论文都可以在 MIT 图书馆中找到。

博士论文必须对最新知识有所拓展,博士论文的研究必须具备可出版的质量。MIT 的泱泱气质又表现出来了,很多博士论文在几年内都是某个子领域的权威工作。对于 MIT 的博士论文来说,开创一个新领域,或者提出并解决一个新问题,并不是什么了不起的事情。虽然,这并不是必需的。

一般来说,需要两到三年的时间来做博士论文。很多人花一到两年的时间跟硕士生活说再见,以及选题。这段时间可以去尝试一些别的事情,例如做助教或者在某个非 AI 领域打下坚实的基础或者组织个乐队。博士论文的实际写作时间大约是一年。

选题是论文工作中最重要最困难的部分:

好的论文题目不仅能够表达个人观点,而且可与同行交流。

选择题目必须是自己愿意倾注热情的。个人远景观点是你作为一个科学家的理由,是你最为关切的意象,原则,思路或者目标。有多种形式。

或许你想造一台可与之交谈的计算机,或许你想把人类从计算机的愚蠢使用中拯救出来,或许你想展示万物都是统一的,或许你想在太空发现新生命。远景观点总是比较大的,你的论文并不能实现你的远景,但是可以朝着那个方向努力。

做论文时,最困难的就是如何将问题消减至可解决的水平,同时规模又足以做一篇论文。“解决 AI 的宽度优先”是常见毛病的一个例子,题目太大太虚了。你会发现需要不断的缩小题目的范围。

选题是一个渐进的过程,不是一个离散的事件,会持续到你宣布论文已经完成那一刻为止。实际上,解决问题通常比精确地描述问题要容易得多。如果你的目标是一个五十年的工程,那么合理的十年工程是什么,一年的呢?如果目标的结构庞大,那么最核心的部件是什么,如何最大程度的了解核心部件?
一个重要的因素是你可以忍受多大程度的风险。在最终的成功和风险之间需要权衡。这也并不总是对的, AI 中有很多研究者尚未涉及的想法。

好的论文选题有一个中心部分,你确信肯定可以完成,并且你和你的导师都同意这已经满足毕业要求了。除此之外,论文中还有多种扩展,有失败的可能,但如果成功了,会增加论文的精彩程度。虽然不是每一个论文选题都符合这个模式,但值得一试。

有些人觉得同时在多个项目中工作可以在选题的时候选择可以完成的那个。这确实降低了风险。另外一些人则愿意在做任何工作之前,选一个单独的题目。

可能你只对某个领域感兴趣,这样你的选题范围就狭窄得多。有时候,你会发现系里的老师没有一个人能够指导你选择的领域。可能还会发现好像那个领域没什么很自然的选题,反而对别的领域有好想法。

硕士选题比博士选题更难,因为硕士论文必须在你所知不多没有足够自信时就完成。

博士选题需要考虑的一个因素是是否继续硕士阶段所研究的领域,可能拓展或者作为基础,或者干脆转到另外一个领域。待在同一个领域事情就简单了,可能只需要一到两年就毕业了,特别是如果在硕士阶段的工作中已经发现了适合做博士论文的题目。不足之处在于容易定型,改换领域则能增加知识的宽度。

有的论文题目很新奇,有的则很普通。前者开创了新领域,探索了以前未曾研究过的现象,或者为很难描述的问题提供了有效的解决方法;后者则完美地解决了定义良好的问题。两种论文都是有价值的。选择哪一种论文,取决于个人风格。

论文的“将来的工作”部分,是很好的论文题目来源。

无论选什么样的题目,必须是前人未曾做过的。即使是同时有人做的工作,也不好。有很多东西可作,根本无需竞争。还有一种常见的情况,读了别人的论文后感觉很惊慌,好像它已经把你的问题解决了。这通常发生在确定论文题目过程中。实际上往往只是表面类似,因此将论文送给某个了解你的工作的高人看看,看他怎么说。

MIT AI 实验室的论文并非全是有关人工智能的;有些是有关硬件或者程序设计语言的,也行。

选好题后,即使有点虚,你必须能够回答下列问题:论文的论点是什么?你想说明什么?你必须有一句,一段,五分钟的答案。如果你不知道自己在干什么,别人也不会严肃对待你的选题,更糟糕的是,你会陷在选题——再选题的圈子里而不能自拔。

开始作论文研究后,一定要能够用简单的语言解释每一部分的理论和实现是如何为目标服务的。

记住,一旦选好了题目,你必须与导师就论文完成的标准达成清晰的一致。如果你和他对论文具有不同的期望,最后你肯定死得很惨。必须定义好“完成测试”的标准,像一系列的能够证明你的理论和程序的例子。这是必须做的,即是你的导师并不这么要求。如果环境发生了根本的变化,测试也要随之改变。

首先尝试论文问题的简化版本。用实例检验。在形成理论抽象之前,要完整的探究具有代表性的例子。

做论文的过程中,有很多浪费时间的方式。要避免下列活动(除非确实跟论文相关):语言表达的设计;用户接口或者图形接口上过分讲究;发明新的形式化方法;过分优化代码;创建工具;官僚作风。任何与你的论文不是很相关的工作要尽量减少。

一种众所周知的现象“论文逃避”,就是你突然发现改正某个操作系统的 BUG 是非常吸引人也很重要的工作。此时你总是自觉不自觉的偏离了论文的工作。要记住自己应该做些什么。(本文对于部分作者来说就属于论文逃避现象)。

11 研究方法论

研究方法学定义了什么是科研活动,如何开展研究,如何衡量研究的进展,以及什么叫做成功。AI的研究方法学是个大杂烩。不同的方法论定义了不同的研究学派。

方法是工具。使用即可,不要让他们来使用你。不要把自己陷于口号之中:“AI 研究需要牢靠的基础”“哲学家只会高谈阔论,人工智能则需要拼搏”“在问为什么之前,先搞清楚计算的是什么”。

实际上,要在人工智能领域取得成功,你必须擅长各种技术方法,还必须具备怀疑的态度。例如,你必须能够证明定理,同时你还必须思考该定理是否说明了什么。

很多优秀的 AI 篇章都是巧妙地在几种方法论中取得平衡。例如,你必须选择一条在太多理论(可能与任何实际问题都无关)和繁琐的实现(把实际的解决方法表达得语无伦次)之间的最佳路线。

你经常会面临区分“干净”和“肮脏”的研究决策。你应该花时间将问题在某种程度上形式化吗?还是保持问题的原始状态,此时虽然结构不良但更接近实际?

采用前一种方法(如果可行的话)会得到清晰确定的结果,但这一过程往往是繁琐的,或者至少不会直接解决问题。后者则有陷入各种处理的漩涡之中的危险。任何工作,任何人,必须作出明智的平衡。

有些工作象科学。你观察人们是怎样学习算术的,大脑是如何工作的,袋鼠是如何跳的,然后搞清楚原理,形成可检验的理论。有些工作象工程:努力创建一个更好的问题解决器或者算法。有些工作象数学:跟形式化打交道,要理解属性,给出证明。有些工作是实例驱动的,目标是解释特定的现象。最好的工作是以上几种的结合。

方法具有社会性,看看别人是如何攻克类似难题的,向别人请教他们是如何处理某种特殊情况的。

12 情感因素

研究是艰苦的工作,很容易对之失去兴趣。一个令人尴尬的事实是在本实验室读博的学生只有很少比例最后获得学位。有些人离开是因为可以在产业界赚到更多的钱,或者由于个人的原因;最主要的原因则是由于论文。本节的目标是解释这种情况发生的原因,并给出一些有益的建议。

所有的研究都包含风险。如果你的项目不可能失败,那是开发,不是研究。面对项目失败时是多么艰难啊,很容易将你负责的项目失败解释为你自己的失败。虽然,这实际上也证明了你有勇气向困难挑战。在人工智能领域很少有人总是一直成功,一年年地出论文。实际上,失败是经常的。

你会发现他们经常是同时做几个项目,只有一些是成功的。最终成功的项目也许反复失败过多次。经历过很多由于方法错误的失败之后,才取得最终的成功。

在你以后的工作生涯中,会经历很多失败。但是每一个失败的项目都代表了你的工作,很多思想,思考方式,甚至编写的代码,在若干年后你发现可用于另外一个完全不同的项目。这种效果只有在你积累了相当程度的失败之后才会显现出来。因此要有最初的失败以后将会起作用的信念。

研究所花费的实际时间往往比计划的要多得多。一个小技巧是给每个子任务分配三倍于预期的时间(有些人加了一句:“……,即使考虑了这条原则”)。

成功的关键在于使得研究成为你日常生活的一部分。很多突破和灵感都发生在你散步时。如果无时无刻地都潜意识的思考研究,就会发现思如泉涌。成功的 AI 研究者,坚持的作用一般大于天资。“尝试”也是很重要的,也就是区分浅薄的和重要的思路的能力。

你会发现自己成功的比例是很随机的。有时候,一个星期就做完了以前需要三个月才能完成的工作。这是令人欣喜的,使得你更愿意在本领域工作下去。其他一些时候,你完全陷在那里,感觉什么也做不了。

这种情况很难处理。你会觉得自己永远不会做出任何有价值的东西了,或者觉得自己不再具备研究者的素质了。这些感觉几乎肯定是错误的。如果你是 MIT 录取的学生,你就是绝对合格的。你需要的是暂停一下,对糟糕的结果保持高度的容忍。

通过定期设置中短期的目标,例如每周的或者每月的,你有很多工作要做。增加达到这些目标的可能性有两种方法,你可以把目标记在笔记本中,并告诉另外一个人。你可以与某个朋友商定交换每周的目标并看谁最终实现了自己的目标。或者告诉你的导师。

有时你会完全陷在那里,类似于写作过程的思路阻塞,这有很多可能的原因,却并无一定的解决方法。

范围过于宽泛了,可尝试去解决流程中的子问题。

有时候对你研究能力的怀疑会消磨掉你所有的热情而使得你一事无成。要牢记研究能力是学习而得的技能,而不是天生的。

如果发现自己陷入严重的困境,一个多星期都毫无进展,尝试每天只工作一小时。几天后,你可能就会发现一切又回到了正轨。

害怕失败会使得研究工作更加困难。如果发现自己无法完成工作,问问自己是否是由于在逃避用实验检验自己的思路。发现自己最近几个月的工作完全是白费的这种可能,会阻止你进一步开展工作。没有办法避免这种情况,只要认识到失败和浪费也是研究过程的一部分。

看看 Alan Lakien 的书《How to Get Control of Your Time and Your Life》,其中包含很多能使你进入充满创造力的状态的无价方法。

很多人发现自己的个人生活和做研究的能力是相互影响的。对于有些人来说,当生活中一切都不如意时,工作是避难所。其他的人如果生活陷入混乱时就无法工作了。如果你觉得自己确实悲痛得难以自拔,去看看心理医生。一份非正式的调查表明,我们实验室大约有一半的学生在读研期间看过一次心理医生。

使得人工智能那么难的一个原因是没有被普遍接受的成功标准。在数学中,如果你证明了某个定理,你就确实做了某些事情;如果该定理别人都证不出来,那么你的工作是令人兴奋的。人工智能从相关的学科中借来了一些标准,还有自己的一些标准。不同的实践者,子领域和学校会强调不同的标准。

MIT 比其他的学校更强调实现的质量,但是实验室内部也存在很大的不同。这样的一个后果就是你不可能令所有的人都满意。另外一个后果就是你无法确定自己是否取得了进展,这会让你觉得很不安全。对你工作的评价从“我所见过最伟大的”到“空虚,多余,不明所以”不一而足,这都是很正常的,根据别人的反馈修订自己的工作。

有几种方法有助于克服研究过程中的不安全感。被承认的感觉:包括毕业论文的接受,发表论文等。更重要的是,与尽可能多的人交流你的思路,并听取反馈。首先,他们能贡献有用的思路;其次,肯定有一些人会喜欢你的工作,这会使得你感觉不错。

TensorFlow 2.0 正式版发布

此前,Google 在 TensorFlow 开发者大会 (TensorFlow Dev Summit) 上发布了 TensorFlow 2.0 的 Alpha 版本。经过近 7 个月的努力,今天,TensorFlow 2.0 正式版现已推出!TensorFlow 2.0 由社区推动,社区的声音让 Google 了解到开发者需求的是一个灵活、强大且易于使用的平台,并且支持部署 TensorFlow 2.0 到任何平台上。TensorFlow 2.0 为开发者、企业与研究人员提供了一个全面的生态系统,以推动最先进的机器学习研究与构建大规模的机器学习应用。—— 同时,跨象乘云™ 也提供了 TensorFlow 2.0 的实战课程

TensorFlow 2.0 让 ML 应用的开发变得更容易。KerasEager Execution 更紧密地结合至  TensorFlow 并成为默认选项,并以原生 Python 的方式执行函数,TensorFlow 2.0 让开发应用的体验变得更接近于原生 Python 开发。对于想要推进机器学习进步的研究人员,Google 在 TensorFlow 底层 API 上投入了大量精力:Google 暴露了内部使用的所有算子 (ops),并且为关键概念(如变量和 checkpoints)提供了可继承的接口。这允许开发者基于 TensorFlow 内部方法进行开发,而不必重新编译 TensorFlow。

TensorFlow 2.0 Training and Deployment
TensorFlow 2.0 Training and Deployment

为了能够在不同运行时环境(如云、Web、浏览器、Node.js、移动端以及嵌入式系统)中运行模型,Google 使用了标准化的文件结构 SavedModel 。让开发者在TensorFlow 中运行模型的同时,可以通过 TensorFlow Serving 部署模型,通过 TensorFlow Lite 部署至移动或嵌入式系统中,并且在浏览器或 Node.js 中使用 TensorFlow.js 训练和运行模型。

对于高性能训练场景,您可以使用 Distribution Strategy API 进行分布训练,修改少量代码并获得出色的开箱即用 (out-of-the-box) 性能。支持使用 Keras Model.fit 进行分布式训练,并支持自定义训练循环 (custom training loops)。此外,现已提供多 GPU 支持

TensorFlow 2.0 在 GPU 性能提升上也作出了很多努力。TensorFlow 2.0 通过使用 Volta 与 Turing GPU 混合精度,仅需几行代码,即可提升 3 倍训练性能(可见ResNet-50 与 BERT 模型的示例)。TensorFlow 2.0 紧密结合了 TensorRT ,通过使用改进的 API,提升了 NVIDIA T4 Cloud GPUs 在谷歌云的可用性与性能。

在使用 TensorFlow 建模时,有效获取训练和验证数据至关重要。为此,Google 引入了  TensorFlow Datasets ,为包含多种数据类型(如图像、文本、视频等)的大量数据集提供了标准接口。

虽然 Google 仍保留了传统的基于会话(Session)的开发模式,但 Google 建议使用基于 Eager Execution 的更接近原生 Python 的开发模式。使用 tf.function 将代码转换为可远程执行、序列化和性能优化的计算图。此外,Autograph 还可以将常规的 Python 控制流直接转换为 TensorFlow 控制流。

当然,如果您使用过 TensorFlow 1.x 并正在寻找 2.0 的迁移指南,Google 也已经在此发布。TensorFlow 2.0 正式版还包含一个自动转换脚本以帮助您入门。

Google 内部及 TensorFlow 社区的许多用户进行了合作,以测试 TensorFlow 2.0 的功能,Google 为收集到的反馈感到高兴:如 Google News 团队在 TensorFlow 2.0 中使用了基于 BERT 的语言理解模型,该模型大大提高了报道的覆盖率。TensorFlow 2.0 提供的灵活且易于使用的 API,可快速将新想法落地。模型培训和服务已无缝集成到现有基础架构中。

此外,ML 不仅适用于 Python 开发者 —— 有了 TensorFlow.js,JavaScript开发者也可以使用 TensorFlow 进行训练和推理,并且我们也持续在 Swift 上进行投入,通过 Swift for TensorFlow 使其作为一种构建模型的语言。

还有很多值得介绍的功能,为了帮助大家快速了解这些新功能,我们为 TensorFlow 2.0 中的所有新功能创建了便捷指南。不仅如此,为了使 TensorFlow 2.0 入门更加容易,我们在还发布了使用2.0 API 的几种常用 ML 模型的参考实现。

快速上手:请尝试使用 Google Cloud’s Deep Learning VM Images —— 无需进行设置,预先配置的虚拟机即可帮助您构建 TensorFlow 2.0 深度学习项目。

英特尔 AI 医疗实战手册

AI 正在变革(中国)医疗。最近,一份实战手册刚刚披露,清晰勾勒出了 AI 如何重塑着医疗行业的各个方面。而且这份手册展示的不光有趋势分析、技术规划,还展示了诸多案例,是实践实战后的全面总结。
报告撰写者,正是提供了最基础但覆盖全流程的 AI 能力计算巨头英特尔,可以说是 AI 医疗的首份权威“剑谱”。

Gartner:2019年人工智能成熟度曲线的超前趋势

Gartner 的这种成熟度周期凸显出人工智能正以多种不同的方式影响企业

根据 Gartner 对 2019 年的 CIO 议程调查,2018 年至 2019 年间,部署人工智能 (AI) 的组织从 4% 增长到了14%。与几年前相比,人工智能正在以多种不同的方式影响组织,当时没有其他方法可以替代使用机器学习 (ML) 构建自己的解决方案。AutoML 和智能应用拥有较明显的发展势头,其他方法也同样值得关注——即人工智能平台即服务(AIPaaS)或人工智能云服务。受亚马逊 Alexa、谷歌 Assistant 等公司在全球范围内取得成功的推动,对话人工智能仍是企业规划日程中的首要内容。与此同时,诸如增强智能、边缘人工智能、数据标签和可解释的人工智能等新技术不断涌现。

今年的成熟度曲线出现了许多新技术,但被大众所知晓的有价值或目标的很少

Gartner 2019 年人工智能成熟度曲线审查了在 AI 领域的创新和趋势潮流,以及 AI 计划范围。快速跟风者,首先应该为 AI 设计一个商业案例。对于早期使用者来说,AI 的可扩展性是下一个挑战。

今年的成熟度周期包含了很多新技术,但被大众所知晓的有价值或目标的很少,而被主流应用的则少之又少。“这并不代表 AI 是不可用的。这表示它将会发生改变,为了评估 AI 的价值和风险,CIO 需要为其设定现实的预期。” Gartner 副总裁分析师 Svetlana Sicular 表示。

以下是 Sicular 重点介绍的人工智能技术,这些技术必须在 CIO 的计划上,才能在未来两到五年内对业务转型产生巨大影响。

Hype_Cycle_for_AI_2019
Hype_Cycle_for_AI_2019

增强型智能(Augmented intelligence)

增强型智能是以人为中心的 AI 与人协作提高认知能力的合作模式。它关注的是人工智能在提高人类能力方面的辅助作用。

AI 与人们互动,改善他们已经知道的事物,可以减少日常失误,并可以改善客户互动、市民服务和病人护理。增强型智能的目标是提高自动化的效率,同时辅以人性化和常识来管理决策自动化的风险。

吐槽:不再是我们日常所调戏的Siri和人工智障爱酱,开始追求更高的智慧,比如阿尔法狗这种,目前听说过的比较成功的就是游戏的黑科技外挂,星际 1、拳皇 97 的黑科技可以秒杀世界顶级选手,如果在其他领域开发出这样的增强型智能程序,是不是离 Skynet也不远了。

聊天机器人(ChatBots)

聊天机器人是 AI 的代表,影响着人们所有可交流的领域,比如汽车制造商 KIA,它每周与 11.5 万名用户对话,或者 Lidl 的 Winebot Margot,它提供购买葡萄酒的指导和食物搭配方面的建议。

聊天机器人可以基于文本或语音,也可以两者结合,并依赖于极少人为干预的脚本响应。

常见的应用程序存在于 HR、IT 帮助台和自助服务中,聊天机器人在客户服务领域已经产生极大影响,尤其是改变了客户服务的执行方式。从“用户学习界面”到“聊天机器人正在学习用户想要的东西”的转变,意味着对员工入职、工作效率和培训的更大影响。

机器学习(Machine Learning, ML)

机器学习可以解决业务问题,如个性化的客户服务、供应链推荐、动态定价、医疗诊断和反洗黑钱。ML 使用数学模型从数据中提取知识和模式。随着组织面临的数据量的指数增长和计算基础设施的改进,ML 的使用也在增加。

目前,ML 被用于多个领域和行业,以推动改进,并为业务问题找到新的解决方案。美国运通使用数据分析和 ML 算法来帮助检测几乎实时的欺诈行为,以节省数百万美元的损失。沃尔沃利用数据帮助预测零部件何时可能出现故障,何时需要维修,从而提高了其汽车的安全性。

AI 治理

组织不应该忽视 AI 治理。他们需要意识到潜在的监管和声誉风险。Sicular 说:“AI 治理是制定政策,对抗 AI 相关的偏见、歧视和 AI 其他负面影响的过程。”

确定数据源和算法的透明度要求,减少风险并增强信心

为了发展人工智能治理,数据和分析领导者和 CIO 应该关注三个领域:信任、透明度和多样性。他们需要关注对数据源和人工智能结果的信任,以确保人工智能的成功使用。他们还需要确定数据源和算法的透明度要求,以降低风险,增强对人工智能的信心。此外,应该确保数据、算法和观点的多样性,以追求人工智能的道德伦理和准确性。

智能应用

大多数组织对获取 AI 功能的偏好正在发生改变,更倾向于将其用于企业应用程序中。智能应用是具有嵌入式或集成 AI 技术的企业应用,通过智能自动化、以数据为基础的分析和指导建议来支持或替代基于人工的活动,以提高生产力和决策制定。

今天,企业应用程序供应商正在他们的产品中嵌入 AI 技术,并引入人工智能平台功能——从企业资源规划到客户关系管理,再到人力资源管理,再到劳动力生产率应用程序。

CIO 们应该向他们的外包软件供应商提出要求,需要他们在产品路线图中概述如何结合 AI,以高级分析、智能流程和高级用户体验的形式增加业务价值。