神经网络笔记

来源:互联网 发布:惠州乐知英语 编辑:程序博客网 时间:2024/06/05 17:26

如上文所述, 如果我们使用均方误差来考量学习误差

C=12nx||y(x)aL(x)||2

则有
Cw=(ay)σ(z)x

Cb=(ay)σ(z)

Sigmoid 函数的曲线大致如下图:
这里写图片描述
当神经元的输出接近0或者1的时候, 曲线是比较平的, 这也就意味着σ(z)是一个很小的值, 这样的话, 学习速度势必下降. 为了优化神经网络学习, 我们引入了交叉熵(Cross-Entropy).
交叉熵的定义如下:
C=1nx[ylna+(1y)ln(1a)]

从交叉熵的计算公式, 可以发现:

  • ay的取值域为[0,1], 所以每一个单独项都是负数, 注意前面的系数1n, 所以可以得到C0.
  • 如果y=0,a0, 可以得到C0, 同理, y=1,a1, 可得C0.

所以, 交叉熵是可以作为代价函数来考量学习误差的. 接下来分析学习速度.

Cwj=1nx(yσ(z)1y1σ(z))σwj

Cwj=1nx(yσ(z)1y1σ(z))σ(z)xj

继续推导:
Cwj=1nxσ(z)xjσ(z)(1σ(z))(σ(z)y)

因为sigmoid函数的性质σ(z)=σ(z)(1σ(z)),
所以:
Cwj=1nxxj(σ(z)y)

显然, 学习速度跟学习误差成比, 这正是所期望的.
类似的, 我们也可以由此推导
Cb=1nx(σ(z)y)

Reference

  1. http://neuralnetworksanddeeplearning.com/ 强烈推荐
  2. https://en.wikipedia.org/wiki/Cross_entropy
原创粉丝点击