Neural Network and Classification
虽然神经网络既适用于分类又适用于回归,但很少用于回归。这并不是因为它导致性能低下,而是因为大多数回归问题可以使用更简单的模型来解决。
在神经网络应用于分类时,输出层通常根据数据分组的不同而有不同的表达形式。两组分类的节点数和合适的激活函数的选择在使用更多的组时是不同的。请记住,它只影响输出节点,而隐藏节点保持不变。
Binary Classification
对于二进制分类,单个输出节点对于神经网络来说已经足够了。这是因为输入数据可以按输出值进行分类,输出值要么大于,要么小于阈值。
前两个数字分别表示 x 和 y 坐标,符号表示数据所属的组。
数据包括输入和正确的输出,因为这些数据用于监督式学习。
输入节点的数量等于输入参数的数量。由于这个例子的输入由两个参数组成,网络使用两个输入节点。我们需要一个输出节点,因为这实现了前面提到的两个组的分类。Sigmoid函数被用作激活函数,隐藏层有4个节点。
神经网络产生的数值输出范围从0-1,而我们有符号正确输出给出△和●。我们不能用这种方法计算误差,我们需要把符号转换成数字代码。我们可以把 Sigmoid函数的最大值和最小值分配给这两个类别:
二分类神经网络通常采用前一个方程的交叉熵函数进行训练。您不必一直这样做,但这对性能和实现过程都是有益的。当然,我们使用交叉熵函数作为代价函数,Sigmoid函数作为隐藏节点和输出节点的激活函数。
Multiclass Classification
我们得先构建神经网络:
我们将为输入层使用两个节点,因为输入由两个参数组成。为了简单起见,隐藏的层次在这个时候不被考虑。我们还需要确定输出节点的数量。众所周知,将输出节点的数量与类的数量相匹配是最有前途的方法。在这个例子中,我们使用三个输出节点,因为问题需要三个类。
为了计算错误,我们将类名称切换为数字代码,就像我们在前一节中所做的那样。考虑到我们有三个神经网络的输出节点,我们创建了如下向量类:
这个转换意味着每个输出节点都映射到类向量的一个元素,该元素对于相应的节点只生成1。例如,如果数据属于类2,那么第二个节点的输出仅为1,其他节点的输出为0(参见图4-8)。
这种表达式技术被称为一次热编码或一次 n 编码使用一个热编码方法将训练数据的正确输出转换为向量。我们将输出节点的数量与类的数量相匹配的原因是为了应用这种编码技术。
由于转换后的训练数据的正确输出范围从0到1,我们能否像使用二进制分类那样使用 Sigmoid形函数?一般来说,多类分类器使用柔性最大激活函数( the softmax function)作为输出节点的激活函数.
到目前为止我们讨论过的激活函数,包括 Sigmoid型函数函数,只能解释输入的加权和。它们不考虑其他输出节点的输出。然而,柔性最大激活函数( the softmax function)不仅要计算输入的加权和,还要计算其他输出节点的输入。
当三个输出节点的输入的加权和分别为2、1和0.1时,柔性最大激活函数计算图4-10所示的输出。所有输入的加权和都需要在分母中。
一个输出节点出现在1类中的概率是100% 。这些数据是属于一类的吗?别这么快。其他输出节点也表示100% 的可能性属于2类和3类。因此,充分解释多元分类神经网络的输出需要考虑所有节点输出的相对大小。在这个例子中,每个类的实际概率是1/3。
柔性最大激活函数提供了正确的数值。
柔性最大激活函数保持输出值之和为一,并限制个别输出值在0-1之内。由于所有输出的相对大小都取决于神经网络,因此柔性最大激活函数是多元分类神经网络的合适选择。柔性最大激活函数的 i-th 输出节点的输出计算如下:
最后,确定学习规则。多元分类神经网络通常采用交叉熵驱动的学习规则,就像二进制分类网络一样。这是由于交叉熵函数提供了高的学习性能和简单性。长话短说,多元分类神经网络的学习规则与前面部分的二分类神经网络的学习规则相同。虽然这两个神经网络使用了不同的激活函数ーー二进制的 sigmoid 形函数和多类的 sigmoid 形函数ーー但学习规则的推导导致了相同的结果。
这些步骤总结了多元分类神经网络的训练过程:
Example: Multiclass Classification
让我们看第四幅图。按47.12%的概率将其归类为5。同时,它可能是一个3,相当高的概率为32.08%。让我们看看发生了什么。输入图像似乎是压缩的5。此外,神经网络发现了一些类似于3特征的水平线,因此给出了很高的概率。在这种情况下,为了提高神经网络的性能,需要对神经网络进行训练,使其训练数据更加多样化。
Summary
对于神经网络分类器,输出节点数和激活函数的选择通常取决于它是用于二元分类(两类)还是用于多类分类(三类或更多类)。