您之前遇到了 二元分类 可以从两个可能的选项中选择其一,例如:
- 指定电子邮件是垃圾邮件还是非垃圾邮件。
- 特定肿瘤是恶性或良性的。
在本节中,我们将介绍 多类别分类 模型,并从多种可能性中进行选择。例如:
- 这只狗是小猎犬、巴吉度猎犬还是寻血猎犬?
- 这朵花是西伯利亚鸢尾、荷兰鸢尾、蓝旗鸢尾吗? 还是矮胡须鸢尾?
- 那架飞机是波音 747、空客 320、波音 777 还是 Embraer 190?
- 这是一张苹果、熊、糖果、狗还是鸡蛋的图片?
现实世界中的一些多类别问题需要从数百万个类别中进行选择 不同类别的组合。以多类别分类为例, 该模型可识别几乎任何事物的图像。
本部分详细介绍了多类别分类的两个主要变体:
一对多
一对多提供了一种使用二元分类的方法 以跨多个可能的标签进行一系列是或否预测。
假设某个分类问题有 N 种可能的解决方案,即一对多 包含 N 个独立的二元分类器 - 一个二元分类器, 来预测每个可能的结果。在训练期间,模型会运行 一系列二元分类器,对每个分类器进行训练, 分类问题。
例如,假设有一张水果的图片, 可能会训练不同的识别器,每个识别器都会回答不同的是或否 问题:
- 这是一张苹果的图片吗?
- 这张图片是橙色的吗?
- 这是一张香蕉的图片吗?
- 这张图片是葡萄吗?
下图说明了在实践中的运作方式。
![图 7. 将梨作为输入传递到 4 个不同
二元分类器模型。第一个模型预测“apple”或“非”
“apple”,而其预测结果是“not apple”。第二个模型
“橙色”即“not orange”,即预测为“not orange”。通过
第三个模型即“not pear”,其预测结果是
“pear”。第四个模型预测“grape”或“非葡萄”字样,而其
而不是“葡萄”。](https://developers.google.cn/static/machine-learning/crash-course/neural-networks/images/one_vs_all_binary_classifiers.png?authuser=7&hl=nl)
这种方法相当合理, 很小,但随着类别数量的增加, 。
我们可以创建一个更加高效的一对多模型 深度神经网络,其中每个输出节点表示不同的 类。下图演示了此方法。
![图 8. 一个具有以下架构的神经网络:输入层
1 个节点、包含 3 个节点的隐藏层、包含 4 个节点的隐藏层,
输出层,其中包含 4 个节点。向输入节点馈送一个梨图像。
对输出层应用 S 型激活函数。每个
输出节点表示该图像是指定的
水果。输出节点 1 表示“Is apple?”值为 0.34
输出节点 2 表示“Is orange?”(是橙色吗?)值为 0.18
输出节点 3 表示“Is pear?”(是梨吗?)值为 0.84
输出节点 4 表示“Is grape?”(是葡萄吗?)值为 0.07](https://developers.google.cn/static/machine-learning/crash-course/neural-networks/images/one_vs_all_neural_net.png?authuser=7&hl=nl)
一对一 (softmax)
您可能已经注意到,图 8 输出层中的概率值 总和不是 1.0(或 100%)。(实际上,两者的总和为 1.43。)在“一对多”模式中 方法时,每个二元结果集的概率 而不会影响所有其他数据集也就是说,我们要确定 的“apple”与“非 Apple”而不会考虑 水果选项:“橙色”“梨”或“葡萄”。
但是,如果我们想要预测每种水果 相互比较?在本示例中,我们不再预测“apple”与“非 “apple”,我们想要预测“apple”还是“橙色”与“pear”以及“葡萄”字样。 这种类型的多类别分类称为一对一分类。
我们可以使用同一类型的神经元, 用于一对多分类的网络架构,具有一个关键更改。 我们需要对输出层应用不同的转换。
对于一对多,我们将 S 型激活函数应用于每个输出 这样,每个节点的输出值都介于 0 到 1 之间 节点,但无法保证这些值的总和正好为 1。
对于一对一运算,我们可以应用一个名为 softmax 的函数, 向多类别问题中的每个类别分配以小数表示的概率, 所有概率相加之和为 1.0。这一附加限制条件 有助于训练过程比其他方式更快收敛。
下图重新实现了我们的一对多多类别分类。 一对一任务的形式来表示。请注意,为了执行 softmax, 位于输出层正前面的层(称为 softmax 层)必须具有 与输出层相同数量的节点。
![图 9.采用以下架构的神经网络:输入
有 1 个节点的隐藏层、有 3 个节点的隐藏层、有 4 个节点的隐藏层,
输出层,其中包含 4 个节点。向输入节点馈送一个梨图像。
将 softmax 激活函数应用于输出层。每个
输出节点表示该图像是指定的
水果。输出节点 1 表示“Is apple?”值为 0.19
输出节点 2 表示“Is orange?”(是橙色吗?)值为 0.12
输出节点 3 表示“Is pear?”(是梨吗?)值为 0.63
输出节点 4 表示“Is grape?”(是葡萄吗?)值为 0.06](https://developers.google.cn/static/machine-learning/crash-course/neural-networks/images/one_vs_one_neural_net.png?authuser=7&hl=nl)
Softmax 选项
请考虑以下 softmax 变体:
完整 softmax 是我们一直以来讨论的 softmax;即 softmax 会计算每个可能的类别的概率。
候选采样是指 softmax 计算概率的 但仅随机抽取一个样本, 负标签。例如,如果我们想要确定 无论输入图片是小猎犬还是寻血猎犬,我们都不必 为每个非狗狗样本提供概率。
当类别数很小时,完整 softmax 的开销很小 但随着类别数量的增加,费用会变得非常高。 候选采样可以提高 类别数量。
一个标签还是多个标签
Softmax 假设每个样本只是一个类别的成员。 不过,一些样本可以同时是多个类别的成员。 对于此类示例:
- 您不能使用 softmax。
- 您必须依赖于多个逻辑回归。
例如,上面图 9 中的 1:1 模型假设每个输入 图片只能描绘一种水果:苹果、橙子、梨子或梨子 一颗葡萄。然而,如果输入图片可能包含多种类型的水果, 就要同时装有苹果和橙子,这时就要用到 回归。