交叉熵损失函数.docx
交叉熵损失函数 交叉熵损失函数是一种常用的代价函数,在机器学习和深度学习中广泛应用。它的出现是为了克服使用 sigmoid 激活函数时,梯度下降算法更新权重非常慢的问题。 1. 方差代价函数 在神经网络中,常用的代价函数是方差代价函数(Mean Squared Error,MSE)。对于一个神经元,定义其代价函数为: 其中 y 是我们期望的输出,a 是神经元的实际输出,z 是神经元的输入,w 是权重,b 是偏置项,σ 是 sigmoid 函数。通过梯度下降算法来更新 w 和 b,需要计算代价函数对 w 和 b 的导数: 然后更新 w、b: 因为 sigmoid 函数的性质,导致 σ′(z) 在 z 取大部分值时会很小,于是会使得 w 和 b 更新非常慢。这是因为 η \* a \* σ′(z)这一项接近于 0。为了克服这个问题,引入了交叉熵代价函数。 2. 交叉熵代价函数 交叉熵代价函数是为了克服方差代价函数更新权重过慢的问题。对于一个神经元,交叉熵代价函数定义为: 其中 y 是期望的输出,a 是神经元实际输出,z 是神经元的输入,W 是权重,b 是偏置项。交叉熵代价函数同样有两个性质: * 非负性:我们的目标就是最小化代价函数。 * 当真实输出 a 与期望输出 y 接近的时候,代价函数接近于 0。 交叉熵代价函数的导数为: 可以看到,导数中没有 σ′(z)这一项,权重的更新是受 σ(z)−y 这一项影响,即受误差的影响。所以当误差大的时候,权重更新就快,当误差小的时候,权重的更新就慢。 3. 小结 当我们用 sigmoid 函数作为神经元的激活函数时,最好使用交叉熵代价函数来替代方差代价函数,以避免训练过程太慢。 4. Log-likelihood Cost log-likelihood cost 是另一种常用的代价函数,常用于 softmax 回归的代价函数。在输出层使用 softmax 函数时,使用 log-likelihood cost 作为代价函数。事实上,log-likelihood cost 是和交叉熵代价函数类似的,可以看作是一个多类别版本的交叉熵代价函数。 log-likelihood cost 的形式是: 可以看到,log-likelihood cost 和交叉熵代价函数的形式非常相似。实际上,log-likelihood cost 是交叉熵代价函数的推广。 交叉熵代价函数是一种非常常用的代价函数,广泛应用于机器学习和深度学习中。它可以克服使用 sigmoid 激活函数时,梯度下降算法更新权重非常慢的问题。