这段时间一直在看有关于神经网络的教程,在之前看过的其他一些机器学习算法,例如logistics回归等都是用C =(y− a)2/2函数做cost function,但是在神经网络算法中,有些教程是使用交叉熵作为代价函数的(关于斯坦福大学的深度学习教程依旧使用的是C =(y− a)2/2函数做cost function),这个让我很郁闷,于是我就问了师兄,然后没有然后。。。没有搞懂。我就在网上找了些讲解资料,写得都OK可是都没有深入的阐述一下几个问题:
a、为什么使用交叉熵,二次代价函数不好吗(毕竟斯坦福的深度学习教程就是用的二次代价函数)?
b、交叉熵为什么可以作为cost function?这个想法来自于哪里???
在我看完神经网络与深度学习之后,这些问题迎刃而解了。下面对于以上几个问题进行详细的解答。
二次代价函数的缺陷
理想情况下,我们都希望和期待神经网络可以从错误中快速地学习,但是在实践过程中并不是很理想。在使用函数C =(y− a)2/2表示的二次代价函数,假设a是神经元的输入,训练输入为x = 1, y = 0为目标输出。使用权重和偏置来表达这个,有a = σ(z),其中z = wx + b。使用链式法则来求权重和偏置的偏导数得:
其中已经将x = 1和y = 0代入。最后权重和偏置的偏导数只与σ′