📃
Nielsen-NNDL
  • Introduction
  • 第1章 使用神经网络识别手写数字
    • 感知机神经元
    • sigmoid神经元
    • 神经网络的架构
    • 用于识别手写数字的简单网络
    • 梯度下降学习法
      • 准备工作
      • 梯度下降法
      • 应用到神经网络
    • 实现数字分类的神经网络
      • 数据集
      • 初始化
      • 向后传递
      • 随机梯度下降
      • 总结
  • 第2章 反向传播算法的工作原理
    • 热身:一种矩阵方法快速计算神经网络的输出
    • 关于代价函数的两个假设
    • Hadamard积
    • 反向传播算法中的4个等式
      • 一个新的定义
      • 4个等式
      • 等式的意义
    • 4个等式的证明
    • 反向传播算法
    • 代码解读
    • 反向传播算法为什么这么快
  • 第3章 提升神经网络的学习方法
    • cross-entropy代价函数
      • 当前神经网络存在的问题
      • 引入cross-entropy代价函数
      • 使用cross-entropy分类手写数字
      • cross-entropy代价函数是怎么推出来的
      • cross-entropy的数学意义
      • softmaxt+loglikelihood
    • 过拟合和正则化
      • 过拟合
      • L2正则化
      • 在当前神经网络中使用L2正则化
      • 其它问题
      • L1正则化
      • dropout正则化
      • 人为扩充训练数据
    • weights初始化
    • 回到手势识别代码
    • 怎样选择超参数
      • broad策略
      • 学习率eta
      • 迭代次数epochs
      • 正则化参数lambda
      • minibatch样本数m
      • 自动化技术
    • 其它技术
      • Hessian技术
      • momentum技术
      • tanh神经元
      • RectifiedLinear神经元
  • 第5章 训练深度神经网络难以训练
    • 梯度消失问题
    • 梯度消失的原因
  • 第6章 深度学习
    • 卷积神经网络介绍
      • LocalReceptiveField
      • SharedWeights
      • pooling层
      • 组装到一起
    • 卷积神经网络的实践与改进
    • 其它深度神经网络的方法
  • 术语中英文对照
Powered by GitBook
On this page
  • 问:为什么说C是一个代价函数?
  • 问:为什么cross-entropy代价函数能解决"learning slow down"的问题?
  • 使用cross-entropy作为代价函数对一个神经元的效果。
  • 将cross-entropy应用到整个神经网络
  • 交叉熵代价函数 VS 二次代价函数

Was this helpful?

  1. 第3章 提升神经网络的学习方法
  2. cross-entropy代价函数

引入cross-entropy代价函数

定义一个神经元上的cross-entropy代价函数为:

\begin{eqnarray} C = -\frac{1}{n} \sum_x \left[y \ln a + (1-y ) \ln (1-a) \right], \tag{57}\end{eqnarray}

问:为什么说C是一个代价函数?

答:1. C > 0 2. 当a接近y时C接近0

问:为什么cross-entropy代价函数能解决"learning slow down"的问题?

答:已知

a=σ(z)是sigmoid函数z=∑jwjxj+bσ′(z)=σ(z)(1−σ(z))a = \sigma(z) 是sigmoid函数 \\ z = \sum_jw_jx_j + b\\ \sigma'(z) = \sigma(z)(1-\sigma(z))a=σ(z)是sigmoid函数z=j∑​wj​xj​+bσ′(z)=σ(z)(1−σ(z))

求C对w和b的偏导得:

\begin{eqnarray} \frac{\partial C}{\partial w_j} = \frac{1}{n} \sum_x x_j(\sigma(z)-y). \tag{61} \\ \frac{\partial C}{\partial b} = \frac{1}{n} \sum_x (\sigma(z)-y). \tag{62}\end{eqnarray}

可见,w和b的偏导与σ′(z)\sigma'(z)σ′(z)无关,只与y-a的差异有关。

使用cross-entropy作为代价函数对一个神经元的效果。

将cross-entropy应用到整个神经网络

\begin{eqnarray} C = -\frac{1}{n} \sum_x \sum_j \left[y_j \ln a^L_j + (1-y_j) \ln (1-a^L_j) \right]. \tag{63}\end{eqnarray}

根据公式(63)可求出整个神经网络和w、b的偏导。

\begin{eqnarray} \frac{\partial C}{\partial w^L_{jk}} & = & \frac{1}{n} \sum_x a^{L-1}_k (a^L_j-y_j) \tag{69}\\ \frac{\partial C}{\partial b^L_{j}} & = & \frac{1}{n} \sum_x (a^L_j-y_j). \tag{70}\end{eqnarray}

由公式可知,cross-entropy代价函数能解决整个神经网络的learn slowly的问题。

交叉熵代价函数 VS 二次代价函数

几乎所有的情况下交叉熵代价函数都要优于二次代价函数。

但当: 1. 输出层的神经元是线性神经元,即ajL=zjLa^L_j = z^L_jajL​=zjL​时, 2. 代价函数为二次代价函数

时,可计算出w、b的偏导与使用cross-entropy代价函数得到的结果相同。

\begin{eqnarray} \frac{\partial C}{\partial w^L_{jk}} & = & \frac{1}{n} \sum_x a^{L-1}_k (a^L_j-y_j) \tag{69}\\ \frac{\partial C}{\partial b^L_{j}} & = & \frac{1}{n} \sum_x (a^L_j-y_j). \tag{70}\end{eqnarray}
Previous当前神经网络存在的问题Next使用cross-entropy分类手写数字

Last updated 5 years ago

Was this helpful?

使用中的同样的例子。 输入x = 1,期望输出 y = 0 令初始参数w=0.2, b=0.2,学习率eta=0.15,迭代效果如下: 可以看出,错误偏差越大学习速度越快。

当前神经网络存在的问题