首页 » python机器学习 » python机器学习全文在线阅读

《python机器学习》12.3.1 计算逻辑斯谛代价函数

关灯直达底部

我们在_get_cost方法中实现的逻辑斯谛代价函数其实很简单,它实际上与我们在第3章逻辑斯谛回归那一小节中介绍的代价函数完全一致。

其中,a(i)是前向传播过程中,用来计算某层中第i个单元的sigmoid激励函数。

现在,我们加入一个正则化项,它可以帮助我们降低过拟合的程度。回忆一下前面章节中的内容,L2和L1正则化项定义如下(请记住,我们不对偏置单元进行正则化处理):

虽然L1和L2正则化均适用于我们的多层感知器模型,为简单起见,我们只关注L2正则化项。不过这些同样的概念也适用于L1正则化项。通过在逻辑斯谛代价函数中加入L2正则化项,我们可得到如下公式:

我们已经实现了一个用于多类别分类的多层感知器,它返回一个包含t个元素的输出向量,我们需要将其与使用独热编码表示的t×1维目标向量进行比较。例如,对于一个特定的样本来说,它在第三层的激励和目标类别(此处为类别2)可能如下所示:

由此,我们需要将逻辑斯谛代价函数运用到网络中的所有激励单元j。因此我们的代价函数(未加入正则化项)变为:

其中,上标i为训练集中特定样本的索引。

下面经泛化的正则化项看起来有点复杂,不过在此我们仅计算l层所有加到第一列权重的总和(不包含偏置项)

以下公式表示L2罚项:

请记住,我们的目标是最小化代价函数J(w)。因此,须计算矩阵W对网络各层中每个权重的偏导:

在下一节中,我们将讨论反向传播算法,它能够通过计算偏导最小化代价函数。

请注意,W包含多个矩阵。在仅包含一个隐层单元的多层感知器中,可通过权重矩阵W(1)将输入层与隐层相连,而W(2)则连接隐层与输出层。下图以一种直观的方式对矩阵W进行可视化展示:

在这个简化图中,矩阵W(1)和W(2)均具有相同的行数和列数,此情况仅当多层感知器的隐层、输入层、输出层数量相同时才会出现。

如果对此感到困惑,请进入下一节,我们将通过反向传播算法详细讨论W(1)和W(2)维度方面的内容。