神经网络:学习

来源:互联网 发布:网络宣传方案 编辑:程序博客网 时间:2024/06/05 12:03

这是神经网络输出的一些表示,比如就二分类输出是什么样,多类别输出是什么样。


这里面有两点要注意:1.神经网络的成本函数就是由逻辑回归的成本函数转化而来的。K就是输出层的个数。前面就是叠加。2.和逻辑回归一样,稀疏项也不用对i=0项进行规范化,因为没必要让偏移量也为0吧。


这是前向传播的向量化表达式,前向传播是为了计算激励值得。而计算导数项,则需要的是如下的反向传播函数


其实算导数也就是算误差theta,代表着神经节点的激励误差。


这个是一个利用前向和后项完整的计算导数的步骤。我们需要计算的就是J(theta)对theta求导。还有一点,左下那个j=0时,由于不需要对偏移量计算theta,所以就没有后面的规范化。


这是一个具体的例子来说明前向传播。


这里是对成本函数做了个简化,首先,本来有k个神经元,现在假设是一个。而且去除了约束项,使得lanbda为0.最重要的是cost。原来式子太复杂,现在简化成了红色箭头的式子。


这里theta其实是cost(i)对于zj^(i)的一个偏导,这很关键。如果说前向计算的是激励Z,那么后项计算的就是theta。只是方向反的而已。

接下来,就是实际编程当中,我们需要梯度检验来检验我们编程的时候的梯度对不对。

下面就是详细的计算:


就跟直线来近似取代曲线的道理一样。

一旦梯度检验我们的公式式正确的之后,那真正计算的时候就关闭它。因为它太拖速度了。


0 0
原创粉丝点击