练习

  1. 使用原始的人工神经元(如图 10-3 中的一个)来计算神经网络,计算A ⊕ B表示 XOR 运算)。提示:A ⊕ B = (A ∧ ¬ B) ∨ (¬ A ∧ B)

  2. 为什么通常使用逻辑斯蒂回归分类器而不是经典感知器(即使用感知器训练算法训练单层的线性阈值单元)?你如何调整感知器使之等同于逻辑回归分类器?

  3. 为什么激活函数是训练第一个 MLP 的关键因素?

  4. 说出三种流行的激活函数。你能画出它们吗?

  5. 假设有一个 MLP 有一个 10 个神经元组成的输入层,接着是一个 50 个神经元的隐藏层,最后一个 3 个神经元输出层。所有人工神经元使用 Relu 激活函数。

    • 输入矩阵X的形状是什么?

    • 隐藏层的权重向量的形状以及它的偏置向量的形状如何?

    • 输出层的权重向量和它的偏置向量的形状是什么?

    • 网络的输出矩阵Y是什么形状?

    • 写出计算网络输出矩阵的方程

  6. 如果你想把电子邮件分类成垃圾邮件或正常邮件,你需要在输出层中有多少个神经元?在输出层中应该使用什么样的激活函数?如果你想解决 MNIST 问题,你需要多少神经元在输出层,使用什么激活函数?如第 2 章,一样让你的网络预测房屋价格。

  7. 什么是反向传播,它是如何工作的?反向传播与反向自动微分有什么区别?

  8. 你能列出所有可以在 MLP 中调整的超参数吗?如果 MLP 与训练数据相匹配,你如何调整这些超参数来解决这个问题?

  9. 在 MNIST 数据集上训练一个深层 MLP 并查看是否可以超过 98% 的精度。就像在第 9 章的最后一次练习中,尝试添加所有的铃声和哨子(即,保存检查点,在中断的情况下恢复最后一个检查点,添加摘要,使用 TensorBoard 绘制学习曲线,等等)。

练习的答案请参照附录 A