衡量机器学习研究工作的框架:①表现力(Expressivity)、②可训练性(Trainability)和/或③泛化能力(Generalization)。

神经网络表示象限中的一部分位置的内容 神经网络的表达能力_机器学习

1.表现力:这个模型可以进行什么计算?

表现力(Expressivity)体现了一个可以被参数函数(例如神经网络)计算的函数的复杂性。深度神经网络随着深度的增加,表现力呈指数级增长,这意味着今天大家正在研究的大多数监督、无监督和强化学习问题,用中等规模的神经网络就可以充分表现。

神经网络可以表现各种各样的东西:连续的、复杂的、离散的,甚至是随机的变量。

生成建模的最新突破表明了神经网络强大的表现力:神经网络可以输出与真实数据几乎无法区分的极其复杂的数据流形(音频、图像)。NVIDIA研究人员提出的最近GAN架构的输出(Progressive Growing of GANs for Improved Quality, Stability, and Variation)。虽然还不够完美,生成图片的背景有些扭曲。但已经足够出色。在音频合成任务中,最新的WaveNet模型生成的音频样本,听起来与真实的人说话无异。

无监督学习不限于生成式建模。有些研究人员,比如Yann LeCun,将无监督学习更名为“预测学习”,模型可以推断过去、估算现在或预测未来。然而,由于许多无监督学习集中在预测极其复杂的联合分布(过去或未来的图像、音频),认为生成建模是衡量无监督领域表现力一个相当好的基准

单独看,表现力(expressivity)本身并不是一个很有趣的问题,我们可以通过在网络中增加更多的层、更多的连通性和其他一些方法来增强表现力。我们现在面临的挑战是,在控制训练难度不会太高的前提下,使神经网络充分表现出足够多的训练和测试数据集。例如,就算深度全连接网络有足够的能力来记忆训练集,但似乎还是需要二维卷积来使图像分类模型能够泛化。

表现力是最容易处理的问题(更宽更深),但同时也是最神秘的:我们没有很好的方法来衡量一个给定的任务需要多少(和什么样的)表现力。

2.可训练性:给定一个充分表达的模型空间,我们能找到一个好的模型吗? 

机器学习模型是任何能够从数据中学习到函数的计算机程序。在“学习”期间,我们从一个可能非常巨大的模型空间中,寻找一个比较好的,能够利用数据中的知识做出决策的模型。这个搜索过程通常被定义为解决模型空间的优化问题。 

一种常见的方法,特别是在深度学习中,是定义一些标量度量来评估模型的“优点”。然后使用数值优化技术,将这些“优点”最大化(或“最小化不良”,貌似最小化不良更常见,损失函数)。 一个具体的例子:最小化平均交叉熵误差是训练神经网络分类图像的标准方法。这样做的目的是,当模型x数据集在交叉熵损失最小的时候,它做的就是我们真正想要的,比如以一定的精度正确地分类图像,并在测试图像上进行召回。通常,评估指标是不能直接优化的(最显而易见的原因是我们无法访问测试数据集),而像训练集上的交叉熵这样的替代函数可以。 

寻找好的模型(也即训练)最终等同于优化。监督学习中,一个典型场景是图像下采样(down-sampling),在这种情况下,很难定义一个标量的量,让这个量与人类从特定的下采样算法中感知“perceptual loss”的方式完全一致。类似的,超分辨率和图像合成也很困难,因为我们很难将“优点/好”作为最大化的目标。想象一下,写一个函数,判断一张图像“逼真(photoreal)”的程度!实际上,关于如何衡量生成模型(用于图像,音频)的质量,争论一直在激化。

最流行的技术是一种协同适应方法(co-adaptation approach),这种方法将最优化问题转换为求解两个非平稳分布之间的平衡点,而这些非平稳分布是协同演化的(in tandem)。

生成对抗网络也按照类似的原理工作,通过这种方法,避开了明确定义感知损失目标(perceptual loss objectives)。强化学习中的自我对弈(competitive self-play)也运用这个原则来学习大量丰富的行为动作。虽然优化目标现在已经被隐含地指定,但它仍然是一个优化问题(SGD来解)。

演化策略通常将优化视为一个模拟的过程(optimization-as-a-simulation)。用户在模型总体(a population of models)上指定一个动态系统,并且在模拟的每个时间步长,根据动态系统的规则更新这个总体。模型可能会也可能不会相互影响。模拟进行下去,希望系统的动力学最终能够诱导这个总体汇聚成“好的模型”。