从零实现多层人工神经网络及TensorFlow并行训练
多层人工神经网络的实现与理解
在图像分类任务中,我们可以看到一些图像即使对于人类来说正确分类也具有挑战性。例如,子图8中的数字6看起来像随手画的0,子图23中的数字8由于下部较窄且线条较粗,可能会被误认为是9。
计算逻辑斯谛成本函数
逻辑斯谛成本函数在多层人工神经网络中非常重要。最初的逻辑斯谛成本函数公式为:
[J(w) = -\sum_{i=1}^{n}[y^{[i]}\log(a^{[i]}) + (1 - y^{[i]})\log(1 - a^{[i]})]]
其中,(a^{[i]}) 是数据集中第 (i) 个样本的Sigmoid激活值,通过前向传播步骤计算得出:(a^{[i]} = \phi(z^{[i]})) 。这里的上标 ([i]) 是训练示例的索引,而非层的索引。
为了减少过拟合程度,我们添加L2正则化项。L2正则化项定义为:
[L2 = \lambda|\boldsymbol{w}|^{2} {2} = \lambda\sum {j=1}^{m}w_{j}^{2}]
将L2正则化项添加到逻辑斯谛成本函数后,得到:
[J(w) = -\left[\sum_{i=1}^{n}y^{[i]}\log(a^{[i]}) + (1 - y^{[i]})\log(1 - a^{[i]})\right] + \frac{\lambda}{2}|\boldsymbol{w}|^{2}_{2}]
对于多分类的多层感知器(MLP),我们需要将逻辑斯谛成本函数推广到网络中的所有激活单元。不包含正则化项的成本函数变为:
超级会员免费看
订阅专栏 解锁全文
4万+

被折叠的 条评论
为什么被折叠?



