发布网友 发布时间:2022-10-23 10:01
共1个回答
热心网友 时间:2023-09-26 00:08
“不确定”这个词儿,三脚猫专家到处滥用,在人工智能安全(AI safety)、风险管理、投资组合优化、科学计量、保险等领域尤甚。试摘录几则,常见于日常交流之间:
在数学上,不确定性反应了随机变量的 离散程度 。换句话说,不确定性是一个具体的数值,反应某个随机变量有多么“随机”。在金融领域,不确定性还有个名字,叫风险。
说来奇怪,至今没有公式来表示不确定性。现存度量离散程度的方法有多种:标准差、方差、风险值(value-at-risk,VaR)、熵。不过,对于以上方法算来的数值,却不尽然反应“随机性”,这是因为随机性涉及整个随机变量的全部。
尽管如此,为了优化和比较,将随机性降低到单个数字表示是必要的。 划重点,“不确定性更大”,通常等同于“更糟糕”(增强学习的某些实验除外)。
统计机器学习关注模型的参数估计 ,进而估计未知的随机变量 。多种形式的不确定性在这里发挥作用,其中一些描述了预期的内在随机性(例如硬币翻转的结果),其他一些则来源于对模型参数的信心程度。
为了使上述理论更具体,让我们考虑一个递归神经网络(RNN),它从一系列地表的气压计读数中预测当天的降雨量。 气压计测量大气压力,即将下雨时通常气压会下降。 下图总结了降雨预测模型里,不同类型不确定性的图表。
内在不确定性中,aleatory的拉丁文词源是 aleatorius ,本意是用来当骰子玩的 羊距骨 ,引申义为蕴含随机性的过程。内在不确定性描述了数据生成过程本身的随机性。哪怕采样再多的数据,也无法消除这一随机性。 正如抛掷硬币,在落地之前无法知道其结果。
我们用降雨预测做类比,气压表的不精确带来了内在不确定性。除此之外,还有一些重要的变量在数据收集设置里没有观察到:昨天有多少降雨量? 我们是在测量当前的气压,还是最后一次冰期时的气压?这些未知变量是我们数据收集装置所固有的,因此从该系统收集更多数据,并不能免除这种不确定性。
内在的不确定性将会从输入,一直延续到模型的预测结果。考虑一个简单的模型 ,输入采用正态分布式 。这时 。因此,预测分布的内在不确定性可以用来描述 。当然,在输入数据 的随机机制不清楚时,预测内在不确定性会更难。
有人可能会认为,由于内在不确定性是不可减少的,因而对此也做不了什么,所以应该忽略它。 事实上并不是!训练模型时须注意选择那些能够正确表示内在不确定性的输出表示。 标准LSTM不会产生概率分布,因此尝试学习硬币翻转的结果只会收敛到均值。 相反,用于语言生成的模型产生了一系列分类分布的随机概率(单词或字符),可以用在句子补全任务中,捕获模型的内在不确定性。
“好的模型总是相似的;坏的模型各有各的错法。”
认知不确定性中,Epistemic源于希腊词根epistēmē,意思是 有关知识的知识 。 它衡量的是,由于我们对正确模型参数的未知,而带来的对正确预测的未知程度。
下图是某些一维数据上高斯过程回归的模型图。 置信区间(蓝色)反映了认知不确定性。对于训练数据(红点),不确定性为零。随着我们离训练点越来越远,预测分布将分配到更高的标准差。 与内在不确定性不同,我们可以通过在缺乏知识的输入区域收集更多数据,来“消除”模型的认知不确定性。
如果想要在模型选择上注入更大的灵活性,一个好主意就是使用模型集成(ensemble),即合理利用“多个独立学习模型结果”的一种巧妙方式。类似于高斯过程解析地定义了 预测分布 ,集成学习估计了预测的 经验分布 。
由于在训练过程中发生的随机偏差,任何单个模型都会产生一些错误。但是,把多个模型集成起来就会很强大。因为集成的模型犯错类型不同,当某个模型暴露其具有自身风格的失败时,其他多数模型与正确推断的预测一致。
我们如何从多个模型中随机抽样,构建集成模型呢?在 使用自举聚合进行集成 【也叫bagging】时,我们从规模为 的训练数据集中,采样 个大小为 的数据集(其中各个数据集都不涵盖整个原始训练集)。使用 个模型在各自的数据集上独立训练,其结果预测形成共同的经验预测分布。
如果训练多个模型代价太大,也可以使用 Dropout 操作来近似模型集成。不过,引入Dropout涉及额外的超参数,并且可能损害单个模型的性能(对于现实中的应用,Dropout在准确性要求极高,而不确定性估计是次要的场景中,是不能使用的)。
因此,如果你拥有丰富的计算资源(就像谷歌那样),训练一个模型的多个副本,【对于减少认知不确定性来说,】通常会更容易。这种做法具备集成的好处,而又不会损害性能。这即是 深度集成学习 这篇论文采用的方法。论文的作者还提到,不同权重初始化将引起训练的随机波动,这就足以形成多种【表现迥异的】模型,而不必通过自举聚合来应对训练集的多样性。从实际工程的角度来看,不以模型的性能为依据的风险评估方法是明智的。研究人员想要尝试的其他集成方法,在选择模型时,都不应该 仅 依据模型的性能表现。
对于我们的降雨量预测器,如果输入数据不是地表气压计的连续读数,而是太阳附近的温度,结果会如何?如果输入是一系列零呢?或者气压计读数单位不统一呢? 我们的RNN模型会“愉快地”计算并报告一个预测,但结果毫无意义。
上述情况下,一旦测试了与训练集不同的数据,模型的预测将完全不合格。这是一种在(基准驱动的)机器学习研究中经常被忽略的典型失败模式,因为我们通常假设训练集、验证集和测试集都是由干净的、独立同分布的数据组成的。
输入数据是否“有效”,是在实践中部署模型的一个需要特别注意的问题,有时这被称为越界(Out of Distribution,下文简称OoD)问题。有时也被称为 模型错误指定 或 异常检测 。
OoD检测的适用范围并不限于强化学习系统。例如,我们希望构建一个监控患者生命体征的系统,并在出现问题时提醒我们,而不必做所有病理检查。再如,我们管理数据中心时,想了解每时每刻可能发生的异常活动(像磁盘填满、安全漏洞、硬件故障等)。
由于OoD仅在测试时发生,我们不应该假设提前知道模型遇到的异常分布。这就是使OoD检测变得棘手的原因——我们必须强化模型,防止在训练期间遇到从未见过的输入!这正是 对抗样本学习 中典型的攻击系统的情形。
有两种方法可以处理机器学习模型的OoD输入:1)在我们将它们放入模型之前捕获不良输入;2)给出模型预测输入的“怪异性”,暗示我们输入可能是错误的。
第一种方法,我们不假设下游机器学习任务,只考虑输入数据是否在训练分布中。这正是生成式对抗网络(GAN)中判别器的职责。然而,单个判别器并不很可靠,它只能区分真实据分布和产生器的分布;当输入数据出离二者之外,判别器将反馈任意预测。
判别器不成了,我们就构建了预测正常分布的概率密度的模型,例如核密度估计器、或将 归一化流 拟合到数据。最近我和Hyunsun Choi在 使用现代生成模型进行OoD检测 的论文中对此进行了研究。
第二种OoD检测方法,则是使用模型预测(认知)不确定性,在输入是OoD的时候告诉我们。理想情况下,错误输入将会产生“怪异的”预测分布 。例如, Hendrycks和Gimpel证明 ,OoD输入的最大softmax概率(即预测类别)往往低于正常分布的输入。在这里,不确定性与最大softmax概率建模的“置信度”成反比。高斯过程这样的模型,构造性给出不确定性估计,而另一种做法,就是通过深度集成学习(Deep Ensembles)计算认知不确定性。
在强化学习中,遇到OoD输入是 好事 ,因为OoD代表了实际过程中模型尚不明确如何处理的输入。鼓励*把寻找OoD输入看作成全其“自身的好奇心”的手段,以 探索模型预测不佳的区域 。这样的策略很好,但我很想知道,在现实世界环境中,如果发生了传感器破裂、或其他实验异常时,这些好奇心驱动的模型会发生什么。机器人将如何区分“没见过的状态”(好OoD)和“传感器破坏”(坏OoD)?是否会导致模型学到干扰它们的传感器机制,以产生最大的新奇感?
如前一节所述,防御OoD输入的方法之一是建立一个“监视”输入的模型。我更喜欢这种方法,它将OoD问题与任务模型中的认知不确定性与内在不确定性脱钩。从工程角度来看,更易于分析。
但我们不应该忘记,模型也是一个函数*近器,可能有它自己的OoD错误! 我们在最近关于 产生式集成学习 的论文中给出(DeepMind的 同时期工作 也给出类似结论),在CIFAR似然模型下,来自SVHN的图像比CIFAR自身图像具有更大的似然值!
不过,情况并非一塌糊涂! 事实证明,似然模型的认知不确定性是似然模型自身的OoD检测器。 通过使用密度估计来实现认知不确定性估计,我们可以使用似然模型的集成学习,来以模型无关的方式保护机器学习模型,免受OoD输入的影响。
假设我们的降雨RNN预测模型告诉我们,今天的雨量将服从 。如果我们的模型被校准,那么在相同条件下重复这个实验,我们将会观察到雨量的经验分布为 。
承接上文,我要提醒读者:不要仅仅看到模型输出了置信区间,就以为区间内的值代表了实际结果的概率!
置信区间(例如 )隐含地假设预测分布是高斯分布。如果尝试预测的分布是多模态的、或长尾的,那么模型将无法精确地校准(重复)!
当今学术界开发的机器学习模型,主要针对测试精度,或某些适应度函数进行优化。研究人员没有通过在重复相同的实验中部署模型,并测量校准误差来进行模型选择。因此(不出所料),我们的模型往往 校准不佳 。
展望未来,如果我们相信在现实世界中部署的机器学习系统(机器人、医疗保健等),“证明我们的模型正确理解世界”的更强大的方法是测试它们的统计校准。良好的校准性也意味着良好的准确性,因此校准将是一个严格的标准。
尽管标量的不确定性有用,随机变量形式的不确定性将提供更多信息。我发现,像粒子滤波和基于优化分布的强化学习等方法,在整个数据分布上进行优化,无需借助简单的正态分布来跟踪不确定性,这些方法很酷!我们构建基于机器学习的决策系统时,可以诉诸于分布的完整结构,而不是使用单个标量的“不确定性”,来决定下一步做什么。
隐含量化网络(Implicit Quantile Networks) 的论文(Dabney等人)就如何从输出分布中构建“风险敏感模型”进行了详细的讨论。在某些环境中,人们可能更倾向于选择探索未知的机会;而在另一些环境中,未知事物可能不安全,应该避免。 风险度量 的选择决定了如何将模型输出的分布映射到可以优化的标量。所有风险度量都可以从分布中计算出来,因此一旦预测了完整分布,我们就能够轻松地组合多种风险。此外,支持灵活的预测分布似乎是改进模型校准的好方法。
更糟的是,即使在分析意义上,它们也难以使用。我希望,对于基于优化分布的强化学习系统、蒙特卡罗方法、灵活的生成式模型的研究,将建立与投资组合优化器紧密结合的风险度量的可微松弛。如果你从事金融工作,我强烈建议你阅读IQN论文的“强化学习中的风险”部分。
以下是本文的重点概述: