《动手学深度学习》Task01打卡

针对线性回归的认识

  • 和大多数深度学习一样,对于线性回归这样的一种单层神经网路,它的基本要素包括模型、训练数据、损失函数和优化算法。
  • 既可以用神经网络图表示线性回归,又可以用矢量计算表示该模型。
  • 应该尽可能采用矢量计算,以提升计算效率。

使用线性模型来生成数据集,生成一个1000个样本的数据集。为了简单起见,这里我们假设价格只取决于房屋状况的两个因素,即面积(平方米)和房龄(年)。接下来我们希望探索价格与这两个因素的具体关系。线性回归假设输出与各个输入之间是线性关系:
p r i c e = w a r e a a r e a + w a g e a g e + b \mathrm{price} = w_{\mathrm{area}} \cdot \mathrm{area} + w_{\mathrm{age}} \cdot \mathrm{age} + b

AltAlt

  • 均方误差损失函数

L o s s = y ^ ( i ) y ( i ) 2 / 2 \begin{aligned}Loss = |\boldsymbol{\hat y}^{(i)}-\boldsymbol{y}^{(i)}|^2/2\end{aligned}

课后错题

假如你正在实现一个全连接层,全连接层的输入形状是 7 × 8 7 \times 8 ,输出形状是 7 × 1 7 \times 1 ,其中 7 7 是批量大小,则权重参数 w w 和偏置参数 b b 的形状分别是____和____。

正确答案: 8 × 1 8 \times 1 1 × 1 1 \times 1
答案解析:设输入批量为 X R 7 × 8 X \in \mathbb{R}^{7 \times 8} ,对应的输出为 Y R 7 × 1 Y \in \mathbb{R}^{7 \times 1} ,令权重参数为 w R 8 × 1 w \in \mathbb{R}^{8 \times 1} ,则 X w R 7 × 1 Xw \in \mathbb{R}^{7 \times 1} ,然后我们给 X w Xw 中的每个元素加上的偏置是一样的,所以偏置参数 b R 1 × 1 b \in \mathbb{R} ^{1 \times 1} ,基于加法的广播机制,可以完成得到输出 Y = X w + b Y = Xw + b 。参数的形状与批量大小没有关系,也正是因为如此,对同一个模型,我们可以选择不同的批量大小。

针对Softmax与分类模型的认识

Image Name
s o f t m a x \begin{aligned}softmax回归是一个单层神经网络\end{aligned}
一个简单的图像分类问题,输入图像的高和宽均为2像素,色彩为灰度。
图像中的4像素分别记为 x 1 , x 2 , x 3 , x 4 x_1, x_2, x_3, x_4
假设真实标签为狗、猫或者鸡,这些标签对应的离散值为 y 1 , y 2 , y 3 y_1, y_2, y_3
我们通常使用离散的数值来表示类别,例如 y 1 = 1 , y 2 = 2 , y 3 = 3 y_1=1, y_2=2, y_3=3
o 1 = x 1 w 11 + x 2 w 21 + x 3 w 31 + x 4 w 41 + b 1 \begin{aligned} o_1 &= x_1 w_{11} + x_2 w_{21} + x_3 w_{31} + x_4 w_{41} + b_1 \end{aligned}

o 2 = x 1 w 12 + x 2 w 22 + x 3 w 32 + x 4 w 42 + b 2 \begin{aligned} o_2 &= x_1 w_{12} + x_2 w_{22} + x_3 w_{32} + x_4 w_{42} + b_2 \end{aligned}

o 3 = x 1 w 13 + x 2 w 23 + x 3 w 33 + x 4 w 43 + b 3 \begin{aligned} o_3 &= x_1 w_{13} + x_2 w_{23} + x_3 w_{33} + x_4 w_{43} + b_3 \end{aligned}

既然分类问题需要得到离散的预测输出,一个简单的办法是将输出值 o i o_i 当作预测类别是 i i 的置信度,并将值最大的输出所对应的类作为预测输出,即输出 arg max i o i \underset{i}{\arg\max} o_i 。例如,如果 o 1 , o 2 , o 3 o_1,o_2,o_3 分别为 0.1 , 10 , 0.1 0.1,10,0.1 ,由于 o 2 o_2 最大,那么预测类别为2,其代表猫。
softmax运算符(softmax operator)解决了以上两个问题。它通过下式将输出值变换成值为正且和为1的概率分布:

y ^ 1 , y ^ 2 , y ^ 3 = softmax ( o 1 , o 2 , o 3 ) \hat{y}_1, \hat{y}_2, \hat{y}_3 = \text{softmax}(o_1, o_2, o_3)

其中

y ^ 1 = exp ( o 1 ) i = 1 3 exp ( o i ) , y ^ 2 = exp ( o 2 ) i = 1 3 exp ( o i ) , y ^ 3 = exp ( o 3 ) i = 1 3 exp ( o i ) . \hat{y}1 = \frac{ \exp(o_1)}{\sum_{i=1}^3 \exp(o_i)},\quad \hat{y}2 = \frac{ \exp(o_2)}{\sum_{i=1}^3 \exp(o_i)},\quad \hat{y}3 = \frac{ \exp(o_3)}{\sum_{i=1}^3 \exp(o_i)}.

容易看出 y ^ 1 + y ^ 2 + y ^ 3 = 1 \hat{y}_1 + \hat{y}_2 + \hat{y}_3 = 1 0 y ^ 1 , y ^ 2 , y ^ 3 1 0 \leq \hat{y}_1, \hat{y}_2, \hat{y}_3 \leq 1 ,因此 y ^ 1 , y ^ 2 , y ^ 3 \hat{y}_1, \hat{y}_2, \hat{y}_3 是一个合法的概率分布。这时候,如果 y ^ 2 = 0.8 \hat{y}_2=0.8 ,不管 y ^ 1 \hat{y}_1 y ^ 3 \hat{y}_3 的值是多少,我们都知道图像类别为猫的概率是80%。

  • 交叉熵损失函数
    H ( y ( i ) , y ^ ( i ) ) = j = 1 q y j ( i ) log y ^ j ( i ) , H\left(\boldsymbol y^{(i)}, \boldsymbol {\hat y}^{(i)}\right ) = -\sum_{j=1}^q y_j^{(i)} \log \hat y_j^{(i)},
    ( Θ ) = 1 n i = 1 n H ( y ( i ) , y ^ ( i ) ) , \ell(\boldsymbol{\Theta}) = \frac{1}{n} \sum_{i=1}^n H\left(\boldsymbol y^{(i)}, \boldsymbol {\hat y}^{(i)}\right ),

针对多层感知机的认识

Image Name

表达公式

具体来说,给定一个小批量样本 X R n × d \boldsymbol{X} \in \mathbb{R}^{n \times d} ,其批量大小为 n n ,输入个数为 d d 。假设多层感知机只有一个隐藏层,其中隐藏单元个数为 h h 。记隐藏层的输出(也称为隐藏层变量或隐藏变量)为 H \boldsymbol{H} ,有 H R n × h \boldsymbol{H} \in \mathbb{R}^{n \times h} 。因为隐藏层和输出层均是全连接层,可以设隐藏层的权重参数和偏差参数分别为 W h R d × h \boldsymbol{W}_h \in \mathbb{R}^{d \times h} b h R 1 × h \boldsymbol{b}_h \in \mathbb{R}^{1 \times h} ,输出层的权重和偏差参数分别为 W o R h × q \boldsymbol{W}_o \in \mathbb{R}^{h \times q} b o R 1 × q \boldsymbol{b}_o \in \mathbb{R}^{1 \times q}

我们先来看一种含单隐藏层的多层感知机的设计。其输出 O R n × q \boldsymbol{O} \in \mathbb{R}^{n \times q} 的计算为

H = X W h + b h , O = H W o + b o , \begin{aligned} \boldsymbol{H} &= \boldsymbol{X} \boldsymbol{W}_h + \boldsymbol{b}_h,\\ \boldsymbol{O} &= \boldsymbol{H} \boldsymbol{W}_o + \boldsymbol{b}_o, \end{aligned}

也就是将隐藏层的输出直接作为输出层的输入。如果将以上两个式子联立起来,可以得到

O = ( X W h + b h ) W o + b o = X W h W o + b h W o + b o . \boldsymbol{O} = (\boldsymbol{X} \boldsymbol{W}_h + \boldsymbol{b}_h)\boldsymbol{W}_o + \boldsymbol{b}_o = \boldsymbol{X} \boldsymbol{W}_h\boldsymbol{W}_o + \boldsymbol{b}_h \boldsymbol{W}_o + \boldsymbol{b}_o.

从联立后的式子可以看出,虽然神经网络引入了隐藏层,却依然等价于一个单层神经网络:其中输出层权重参数为 W h W o \boldsymbol{W}_h\boldsymbol{W}_o ,偏差参数为 b h W o + b o \boldsymbol{b}_h \boldsymbol{W}_o + \boldsymbol{b}_o 。不难发现,即便再添加更多的隐藏层,以上设计依然只能与仅含输出层的单层神经网络等价。

多层感知机就是含有至少一个隐藏层的由全连接层组成的神经网络,且每个隐藏层的输出通过激活函数进行变换。多层感知机的层数和各隐藏层中隐藏单元个数都是超参数。以单隐藏层为例并沿用本节之前定义的符号,多层感知机按以下方式计算输出:

H = ϕ ( X W h + b h ) , O = H W o + b o , \begin{aligned} \boldsymbol{H} &= \phi(\boldsymbol{X} \boldsymbol{W}_h + \boldsymbol{b}_h),\\ \boldsymbol{O} &= \boldsymbol{H} \boldsymbol{W}_o + \boldsymbol{b}_o, \end{aligned}

其中 ϕ \phi 表示激活函数。

关于激活函数的选择

ReLu函数是一个通用的激活函数,目前在大多数情况下使用。但是,ReLU函数只能在隐藏层中使用。

用于分类器时,sigmoid函数及其组合通常效果更好。由于梯度消失问题,有时要避免使用sigmoid和tanh函数。

在神经网络层数较多的时候,最好使用ReLu函数,ReLu函数比较简单计算量少,而sigmoid和tanh函数计算量大很多。

在选择激活函数的时候可以先选用ReLu函数如果效果不理想可以尝试其他激活函数。

课后错题

对于只含有一个隐藏层的多层感知机,输入是 256 × 256 256 \times 256 的图片,隐藏单元个数是1000,输出类别个数是10,则模型的所有权重矩阵 W i W_{i} 的元素数量之和是_______。
正确答案:65546000
答案解析: 256 × 256 × 1000 + 1000 × 10 = 65546000 256 \times 256 \times 1000 + 1000 \times 10 = 65546000

猜你喜欢

转载自blog.csdn.net/weixin_44922175/article/details/104318478
今日推荐