评估神经网络性能时常用的成本函数是什么?
细节
(随意跳过此问题的其余部分,我的目的仅是提供有关答案可以用来帮助普通读者更理解的符号的说明)
我认为,列出常用成本函数以及实践中使用的几种方法会很有用。因此,如果其他人对此感兴趣,我认为社区Wiki可能是最好的方法,或者如果它不在主题之列,我们可以将其删除。
符号
因此,首先,我想定义一个大家在描述它们时都使用的符号,以便使答案相互吻合。
这种表示法来自尼尔森的书。
前馈神经网络是连接在一起的多层神经元。然后,它接受一个输入,该输入通过网络“ tri流”,然后神经网络返回一个输出向量。
更正式地,调用所述的活化(又名输出)神经元中的层,其中是在输入向量的元素。我吨ħ一个1 Ĵ Ĵ 吨ħ
然后,我们可以通过以下关系将下一层的输入与上一层的输入关联起来:
哪里
是激活功能,
k t h(i − 1 )t h j t h i t h是重从神经元在层到神经元中的层,
Ĵ 吨ħ我吨ħ是层中神经元的偏差,并且
Ĵ 吨ħ我吨 ħ代表层中神经元的激活值。
有时我们写来表示,换句话说,就是在应用激活函数之前神经元的激活值。 Σ ķ(瓦特我Ĵ ķ ⋅ 一个我- 1 ķ)+ b 我Ĵ
为了更简洁的表示,我们可以写
要使用此公式为某些输入计算前馈网络的输出,请设置,然后计算,,...,,其中m是层数。一个1 = 我一个2 一个3 一米
介绍
成本函数是神经网络相对于给定训练样本和预期输出的“良好程度”的度量。它还可能取决于变量,例如权重和偏差。
成本函数是单个值,而不是向量,因为它会评估神经网络的整体效果。
具体来说,成本函数的形式为
其中是我们的神经网络的权重,是我们的神经网络的偏差,是单个训练样本的输入,是该训练样本的期望输出。注意,对于第层中的任何神经元,此函数还可能依赖于和,因为这些值取决于,和。B S r E r y i j z i j j i W B S r
在反向传播中,成本函数用于通过以下方法计算输出层的误差:
也可以通过以下方式将其写为向量
我们将根据第二个方程式提供成本函数的梯度,但是如果要自己证明这些结果,建议使用第一个方程式,因为它更易于使用。
成本函数要求
要用于反向传播,成本函数必须满足两个属性:
1:成本函数必须能够写成平均值
针对单个训练示例成本函数。 X
这样一来,我们就可以为单个训练示例计算梯度(相对于权重和偏差),并运行Gradient Descent。
2:除了输出值之外,成本函数不得依赖于任何神经网络的激活值。一个大号
从技术上讲,成本函数可以取决于任何或。我们只是做这个限制,所以我们可以向后传播,因为找到最后一层的梯度的方程是唯一一个依赖于成本函数的方程(其余依赖于下一层)。如果成本函数除了输出层之外还依赖于其他激活层,则反向传播将无效,因为“向后倾斜”的想法不再起作用。 ž 我Ĵ
同样,要求激活函数对所有都具有输出。因此,这些成本函数仅需在该范围内定义(例如是有效的,因为我们可以保证)。Ĵ √一个大号Ĵ ≥0