From 1182db168578d9297d0d2cb35070f36cc6fc1041 Mon Sep 17 00:00:00 2001 From: Aston Zhang Date: Thu, 6 Sep 2018 18:10:45 +0800 Subject: [PATCH] till softmax reg ce loss --- TERMINOLOGY.md | 2 ++ .../softmax-regression.md | 24 +++++++++---------- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/TERMINOLOGY.md b/TERMINOLOGY.md index de27d6a..8101b0d 100644 --- a/TERMINOLOGY.md +++ b/TERMINOLOGY.md @@ -176,6 +176,8 @@ softmax回归,softmax regression 无偏估计,unbiased estimate +误差,error + 小批量,mini-batch 小批量梯度,mini-batch gradient diff --git a/chapter_deep-learning-basics/softmax-regression.md b/chapter_deep-learning-basics/softmax-regression.md index 597117e..e401f32 100644 --- a/chapter_deep-learning-basics/softmax-regression.md +++ b/chapter_deep-learning-basics/softmax-regression.md @@ -5,13 +5,13 @@ ## 分类问题 -让我们考虑一个简单的图像分类问题,其输入图像高和宽均为两像素,且为色彩为灰度。这样每个像素值都可以用一个标量表示,我们将图像中的四个像素记为$x_1, x_2, x_3, x_4$。假设训练数据集中图像的真实标签为狗、猫或鸡(如同前面假设房价只取决于居住面积和房龄,这里我们假设可以用4个像素表示出这三种动物),这些标签分别对应离散值$y_1, y_2, y_3$。 +让我们考虑一个简单的图像分类问题,其输入图像的高和宽均为2个像素,且色彩为灰度。这样每个像素值都可以用一个标量表示。我们将图像中的四个像素分别记为$x_1, x_2, x_3, x_4$。假设训练数据集中图像的真实标签为狗、猫或鸡(假设可以用4个像素表示出这三种动物),这些标签分别对应离散值$y_1, y_2, y_3$。 -通常我们使用连续值来表示类别,例如$y_1=1, y_2=2, y_3=3$,那么一张图像的标签为1、2和3这三个数字中的一个。虽然我们仍然可以使用回归模型来进行建模,预测时我们将预测值就近定点化到1、2和3这三个值之一上。但这一连续值到离散值的转化通常会影响到分类质量,因此我们一般使用更加适合离散值输出的模型来解决分类问题。 +我们通常使用离散的数值来表示类别,例如$y_1=1, y_2=2, y_3=3$。如此,一张图像的标签为1、2和3这三个数值中的一个。虽然我们仍然可以使用回归模型来进行建模,并将预测值就近定点化到1、2和3这三个离散值之一,但这种连续值到离散值的转化通常会影响到分类质量。因此我们一般使用更加适合离散值输出的模型来解决分类问题。 ## Softmax回归模型 -Softmax回归跟线性回归一样将输入特征与权重做线性叠加,一个主要不同在于softmax回归的输出值个数等于标签里的类别数。因为我们特征为4,且有3种动物,所以权重里包含12个标量,偏移有3个标量,且对每个输入计算$o_1, o_2, o_3$这三个输出: +Softmax回归跟线性回归一样将输入特征与权重做线性叠加。与线性回归的一个主要不同在于,softmax回归的输出值个数等于标签里的类别数。因为一共有4种特征和3种输出动物类别,所以权重包含12个标量(带下标的$w$)、偏差包含3个标量(带下标的$b$),且对每个输入计算$o_1, o_2, o_3$这三个输出: $$ \begin{aligned} @@ -22,17 +22,17 @@ o_3 &= x_1 w_{13} + x_2 w_{23} + x_3 w_{33} + x_4 w_{43} + b_3. $$ -图3.2用神经网络图描绘了上面的计算,其同线性回归一样,也是一个单层神经网络。因为$o_1, o_2, o_3$的计算都要依赖于$x_1, x_2, x_3, x_4$。所以,softmax回归的输出层也是一个全连接层。 +图3.2用神经网络图描绘了上面的计算。Softmax回归同线性回归一样,也是一个单层神经网络。由于每个输出$o_1, o_2, o_3$的计算都要依赖于所有的输入$x_1, x_2, x_3, x_4$,softmax回归的输出层也是一个全连接层。 ![Softmax回归是一个单层神经网络。](../img/softmaxreg.svg) ### Softmax运算 -因为分类问题中我们需要得到离散的预测输出,一个简单的办法是将输出值$o_i$当做预测类别是$i$的置信度,从而值最大的输出所对应的类就是预测输出,即$\operatorname*{argmax}_i o_i$。例如如果$o_1,o_2,o_3$分别为$0.1,10,0.1$,那么预测类别为2,其代表猫。 +既然分类问题需要得到离散的预测输出,一个简单的办法是将输出值$o_i$当做预测类别是$i$的置信度,并将值最大的输出所对应的类作为预测输出,即输出$\operatorname*{argmax}_i o_i$。例如,如果$o_1,o_2,o_3$分别为$0.1,10,0.1$,那么预测类别为2,其代表猫。 -但直接使用输出层的有两点不方便之处,一方面是由于其输出值的范围不固定,难以直观上判断其值的意义。例如上面例子里10表示很置信图像里是猫,因为其大于其他两类100倍。但如果$o_1=o_3=10^3$,那么10表示图像里是猫的几率很低。另一方面,由于真实标号是离散值,其不容易与输出值计算误差。 +然而,直接使用输出层的输出有两点问题。一方面,由于输出层的输出值的范围不确定,我们难以直观上判断这些值的意义。例如,刚才举的例子中的输出值10表示“很置信”图像类别为猫,因为该输出值是其他两类的输出值的100倍。但如果$o_1=o_3=10^3$,那么输出值10却又表示图像类别为猫的几率很低。另一方面,由于真实标签是离散值,这些离散值与不确定范围的输出值之间的误差难以衡量。 -Softmax运算(softmax operator)提出正是为了解决这两个问题。它通过下式将输出值变换成值为正且和为1的概率分布: +Softmax运算符(softmax operator)解决了以上两个问题。它通过下式将输出值变换成值为正且和为1的概率分布: $$\hat{y}_1, \hat{y}_2, \hat{y}_3 = \text{softmax}(o_1, o_2, o_3),$$ @@ -44,7 +44,7 @@ $$ \hat{y}_3 = \frac{ \exp(o_3)}{\sum_{i=1}^3 \exp(o_i)}. $$ -容易看出$\hat{y}_1 + \hat{y}_2 + \hat{y}_3 = 1$且$\hat{y}_1 > 0, \hat{y}_2 > 0, \hat{y}_3 > 0$,因此$\hat{y}_1, \hat{y}_2, \hat{y}_3$是一个合法的概率分布。这时候,如果$\hat y_2=0.8$,不管其他两个值多少,我们都知道有80%概率图像里是猫。此外,可以注意到 +容易看出$\hat{y}_1 + \hat{y}_2 + \hat{y}_3 = 1$且$0 \leq \hat{y}_1, \hat{y}_2, \hat{y}_3 \leq 1$,因此$\hat{y}_1, \hat{y}_2, \hat{y}_3$是一个合法的概率分布。这时候,如果$\hat{y}_2=0.8$,不管$\hat{y}_1$和$\hat{y}_3$的值是多少,我们都知道图像类别为猫的概率是80%。此外,我们注意到 $$\operatorname*{argmax}_i o_i = \operatorname*{argmax}_i \hat y_i,$$ @@ -70,7 +70,7 @@ $$ -设$2 \times 2$图像样本$i$的特征为 +设高和宽分别为2个像素的图像样本$i$的特征为 $$\boldsymbol{x}^{(i)} = \begin{bmatrix}x_1^{(i)} & x_2^{(i)} & x_3^{(i)} & x_4^{(i)}\end{bmatrix},$$ @@ -83,7 +83,7 @@ $$\boldsymbol{o}^{(i)} = \begin{bmatrix}o_1^{(i)} & o_2^{(i)} & o_3^{(i)}\end{bm $$\boldsymbol{\hat{y}}^{(i)} = \begin{bmatrix}\hat{y}_1^{(i)} & \hat{y}_2^{(i)} & \hat{y}_3^{(i)}\end{bmatrix}.$$ -我们对样本$i$分类的矢量计算表达式为 +Softmax回归对样本$i$分类的矢量计算表达式为 $$ \begin{aligned} @@ -104,12 +104,12 @@ $$ \end{aligned} $$ -其中的加法运算使用了广播机制,$\boldsymbol{O}, \boldsymbol{\hat{Y}} \in \mathbb{R}^{n \times q}$且这两个矩阵的第$i$行分别为$\boldsymbol{o}^{(i)}$和$\boldsymbol{\hat{y}}^{(i)}$。 +其中的加法运算使用了广播机制,$\boldsymbol{O}, \boldsymbol{\hat{Y}} \in \mathbb{R}^{n \times q}$且这两个矩阵的第$i$行分别为样本$i$的输出$\boldsymbol{o}^{(i)}$和概率分布$\boldsymbol{\hat{y}}^{(i)}$。 ## 交叉熵损失函数 -前面我们提到使用softmax运算后可以更方便的与标注计算误差。因为softmax运算将输出转换成一个合法的对类别预测的分布,同时真实标签也可以当做是类别的分布:对于样本$i$,我们构造$\boldsymbol{y}^{(i)}\in \mathbb{R}^{q}$ ,使得其第$y^{(i)}$个元素为1,其余为0。这样我们的训练目标可以设为使得预测概率分布$\boldsymbol{\hat y}^{(i)}$尽可能的接近标注概率分布$\boldsymbol{y}^{(i)}$。 +前面提到,使用softmax运算后可以更方便地与离散标签计算误差。我们已经知道,softmax运算将输出变换成一个合法的类别预测分布。实际上,真实标签也可以当作类别分布:对于样本$i$,我们构造$\boldsymbol{y}^{(i)}\in \mathbb{R}^{q}$ ,使得其第$y^{(i)}$个元素为1,其余为0。这样我们的训练目标可以设为使得预测概率分布$\boldsymbol{\hat y}^{(i)}$尽可能的接近标注概率分布$\boldsymbol{y}^{(i)}$。 我们可以跟线性回归那样使用平方损失函数$\frac{1}{2}\|\boldsymbol{\hat y}^{(i)}-\boldsymbol{y}^{(i)}\|^2$。但注意到想要预测分类结果正确,我们不需要预测概率完全等于标注概率,例如在图像分类的例子里,如果$y^{(i)}=2$,那么我们只需要$\hat y^{(i)}_2$比其他两个预测值大就行了。即使其值为0.5,不管其他两个值为多少,类别预测均正确。而平方损失则过于严格,例如$\hat y^{(i)}_0=\hat y^{(i)}_1=0.1$比$\hat y^{(i)}_0=0, \hat y^{(i)}_1=.2$的损失要小很多,虽然两者都有同样正确的分类预测结果。 -- GitLab