问题分类
根据面对不同的问题,需要让神经网络得到不同的答案。这个需求决定着激活函数、优化器、损失函数的选择。我们最常碰到的问题分类是二分类、多分类和回归问题。
二分类问题
二分类问题是应用最广泛的机器学习问题,二分类主要用于对数据进行二互斥值分类,对于指定问题的回答一般只是“是”或者“否”。但是在机器学习反馈的结果中,对于结果的表示,并非是绝对的两个值,而是针对可能是某一答案的概率。
二分类问题一般在网络的最后一层使用sigmoid
激活函数来输出一个\([0, 1]\)区间内的概率值,用于表示样本目标值等于1的可能性。
二分类问题一般选择二元交叉熵作为损失函数,或者使用均方误差(MSE),但交叉熵往往是更好的选择。
多分类问题
二分类可以将输入的数据划分为两个互斥的类别。但是很多情况下会需要到多于两个的分类,那么就要用到多分类。多分类问题有两种情况,如果一个数据点只能被划分到一个类别,那么这就是一个单标签多分类问题;如果每个数据点可以划分到多个类别,那么这就是一个多标签多分类问题。
多分类问题与二分类问题相比,其输出类别的数量从2个上升为了n个,输出空间的维度要大许多。所以在进行中间处理层的选择时,需要使用更大的维数,以防止出现信息瓶颈。
多分类问题的最后一层一般会选择使用大小为N的Dense
层,指定softmax
激活函数,这个激活函数输出不同类别上的概率分布。对于每一个输入样本,网络都会输出一个n维向量,其中第i
个索引的内容是样本属于第i
个类别的概率。
多分类问题一般选择分类交叉熵作为损失函数。在处理多分类问题标签一般也有两种方法:通过分类编码(one-hot编码)对标签进行编码,使用分类交叉熵作为损失函数;或者将标签编码为整数,使用稀疏分类交叉熵作为损失函数。
回归问题
除了进行分类以外,神经网络还可以对连续值进行预测,比如根据气象数据预测气温等,这种问题被称为回归问题。
处理回归问题的神经网络一般在最后一层不指定激活函数,只使用一个线性层,这是标量回归的典型设置,因为添加激活函数会限制输出的范围。
回归问题一般选择均方误差(MSE)作为损失函数,回归指标使用平均绝对误差(MAE),并且使用较少维度的小型网络。
小结
常见问题类型的最后一层激活函数和损失函数的选择可以直接参考下表。
问题类型 | 最后一层激活 | 损失函数 |
---|---|---|
二分类问题 | sigmoid | binary_crossentropy |
多分类单标签问题 | softmax | categorical_crossentropy |
多分类多标签问题 | signoid | binary_crosswntropy |
回归到任意值 | 无 | mse |
回归到\([0,1]\)区间的值 | signoid | mse 或binary_crossentropy |