Chapter - 10 Exercise(1-8)
-
使用原始人工神经元(如图10-3中的那些)绘制ANN,计算A⊕B(其中⊕代表XOR运算)。提示:A⊕B=(A∧¬B)∨(¬A∧B)。
这是一个基于原始人工神经元计算A⊕B的(其中⊕表示异或)神经网络,使用A⊕B=(A∧¬B)∨(¬A∧B)。
还有其他解决方案 - 例如,使用A⊕B=(A∨B)∧¬(A∧B)的事实,
或者A⊕B=(A∨B)∧(¬A∨∧B),等等。
image.png -
为什么通常更喜欢使用Logistic回归分类器而不是古典感知器(即,使用Perceptron训练算法训练的单层线性阈值单元)?如何调整Perceptron以使其等效于Logistic回归分类器?
-
只有当数据集可线性分离时,经典感知器才会收敛,并且它无法估计类概率。
-
相反,即使数据集不是线性可分的,Logistic回归分类器也会收敛到一个好的解决方案,并且它可以输出类概率。
-
如果你将Perceptron的激活函数更改为逻辑激活函数(或者如果有多个神经元则更改softmax激活函数),如果你使用Gradient Descent(或其他一些最小化成本函数的优化算法,通常是交叉熵)训练它,那么它就等同于Logistic回归分类器。
-
为什么logistic激活函数是训练第一个MLP的关键因素?
逻辑激活函数是训练第一个MLP的关键因素,因为它的导数总是非零,因此梯度下降总是可以向下滚动。 当激活函数是阶梯函数时,梯度下降不能移动,因为根本没有斜率。 -
命名三个流行的激活功能。 你能画出来吗?
阶梯函数,逻辑函数,双曲正切,整流线性单元(见图10-8)。有关其他示例,请参阅第11章,例如ELU和ReLU的变体。 -
假设你有一个MLP,输入层由10个passthrough神经元组成,输入层后面是一个带有50个人工神经元的隐藏层,最后是一个带有3个人工神经元的输出层。 所有人工神经元都使用ReLU激活函数。
-
输入矩阵的形状是什么?
输入矩阵X的形状是,其中m表示训练批量大小。 -
隐藏层的权重向量的形状和偏置向量的形状怎么样?
隐藏层的权重向量的形状为10×50,其偏置向量的长度为50。 -
输出层的权重向量的形状是什么,它的偏置向量是多少?
输出层的权重向量的形状为50×3,其偏置矢量的长度为3。 -
网络输出矩阵的形状是什么?
网络输出矩阵Y的形状为。 -
写出计算网络输出矩阵的等式作为的函数
。 请注意,在向矩阵添加偏差项向量时,会将其添加到矩阵中的每一行,称为广播。
- 如果要对电子邮件进行分类,输出层中需要多少个神经元?你应该在输出层使用什么激活函数? 如果你想要解决MNIST,你需要在输出层使用多少神经元,使用什么激活函数? 回答相同的问题,让你的网络预测住房价格,如第2章所述。
-
将电子邮件分类为垃圾邮件或火腿,你只需要在神经网络的输出层中有一个神经元 ——例如,表明电子邮件是垃圾邮件的概率。在估计概率时,通常会在输出层中使用逻辑激活函数。
-
如果你想要解决MNIST,你需要输出层中有10个神经元,你必须用softmax激活函数替换逻辑函数,该函数可以处理多个类,每个类输出一个概率。
-
如果你希望神经网络像第2章那样预测住房价格,那么你需要一个输出神经元,在输出层根本不使用激活功能。
- 什么是反向传播?它是如何工作的?反向传播和反向模式自动存储有什么区别?
反向传播是一种用于训练人工神经网络的技术。
-
它首先根据每个模型参数(所有权重和偏差)计算成本函数的梯度,
-
然后使用这些梯度执行梯度下降步骤。
-
该反向传播步骤通常使用许多训练批次执行数千或数百万次,直到模型参数收敛到(希望)最小化成本函数的值。
-
为了计算梯度,反向传播使用reverse-mode autodiff(尽管在反向传播被发明时并没有被称为多次重新传播)。
-
反向模式自动编排执行正向传递计算图,计算当前训练批的每个节点的值,然后执行反向传递,一次计算所有梯度(有关详细信息,请参阅附录D)。
那有什么区别?嗯,
- 反向传播是指使用多个反向传播步骤训练人工神经网络的整个过程,每个反向传播步骤计算梯度并使用它们执行梯度下降步骤。
- 相比之下,reverse-mode autodiff只是一种有效计算梯度的技术,它恰好被反向传播使用
- 你能列出你可以在MLP中调整的所有超参数吗?如果MLP过度训练数据,你怎么能调整这些超参数来试图解决问题?
以下是你可以在基本MLP中调整的所有超参数的列表:
-
隐藏层的数量
-
每个隐藏层中的神经元数量
-
每个隐藏层和输出层中使用的激活函数。
。 通常,ReLU激活函数(或其变体之一;参见第11章)是隐藏层的良好默认值。
。 对于输出层,通常你需要用于二元分类的逻辑激活函数,用于多类分类的softmax激活函数,或者用于回归的没有激活函数。
如果MLP过度拟合训练数据,你可以尝试减少隐藏层的数量并减少每个隐藏层的神经元数量。