在神经网络中,我们了解了,神经网络类似于一个一个的节点,当我们输入数据,然后就会有一输出,输出再作为输入,直到最后输出,其中,隐藏层的节点,我们如何知道其算法呢?
神经网络代价函数:
下面是逻辑回归的代价函数的一般式:
我们不再只有一个y输出单元了,我们有k个输出。所以化简为:
其中,h(x)为输出的k维向量,(h(x))i表示输出的k维向量中的第i个元素
神经网络反向传播算法:
如图,我们定义一个训练数据(x,y)
那么,当我们输入为x时,经过了两个隐藏层,并且求出其激励值,即为通过正向传播求出结果。为了求出其导数项,我们将采用反向传播算法:
我们用δ(l)j ,来表示误差,例如:
表示的意思为第四层的第j列的值,减去真实值,即为,输出值,减去真实值,得到了一个误差。
当作向量时:上图中的误差为:δ(4)=a(4)-y
同理,前面的误差为:
其中,g为激励函数,g‘(z(3))=a(3).*(1-a(3))
.*为矩阵相乘,没有δ(1),因为我们第一层即为输出层。反向传播算法,从输出层,反向传递到输入层的后一位,即为把输出层的误差传递给了输出层的前一层,然后继续传递
如图,为一个正向传播的例子:
那么,反向传播算法:
所以,上述例子,只是一个反向传播的过程,他与正向传播大致相同,其中较为复杂的即为每层的误差计算。