练习
使用原始的人工神经元(如图 10-3 中的一个)来计算神经网络,计算
A ⊕ B
(⊕
表示 XOR 运算)。提示:A ⊕ B = (A ∧ ¬ B) ∨ (¬ A ∧ B)
。为什么通常使用逻辑斯蒂回归分类器而不是经典感知器(即使用感知器训练算法训练单层的线性阈值单元)?你如何调整感知器使之等同于逻辑回归分类器?
为什么激活函数是训练第一个 MLP 的关键因素?
说出三种流行的激活函数。你能画出它们吗?
假设有一个 MLP 有一个 10 个神经元组成的输入层,接着是一个 50 个神经元的隐藏层,最后一个 3 个神经元输出层。所有人工神经元使用 Relu 激活函数。
输入矩阵
X
的形状是什么?隐藏层的权重向量的形状以及它的偏置向量的形状如何?
输出层的权重向量和它的偏置向量的形状是什么?
网络的输出矩阵
Y
是什么形状?写出计算网络输出矩阵的方程
如果你想把电子邮件分类成垃圾邮件或正常邮件,你需要在输出层中有多少个神经元?在输出层中应该使用什么样的激活函数?如果你想解决 MNIST 问题,你需要多少神经元在输出层,使用什么激活函数?如第 2 章,一样让你的网络预测房屋价格。
什么是反向传播,它是如何工作的?反向传播与反向自动微分有什么区别?
你能列出所有可以在 MLP 中调整的超参数吗?如果 MLP 与训练数据相匹配,你如何调整这些超参数来解决这个问题?
在 MNIST 数据集上训练一个深层 MLP 并查看是否可以超过 98% 的精度。就像在第 9 章的最后一次练习中,尝试添加所有的铃声和哨子(即,保存检查点,在中断的情况下恢复最后一个检查点,添加摘要,使用 TensorBoard 绘制学习曲线,等等)。
练习的答案请参照附录 A