首先引入一些便于稍后讨论的新标记方法:
假设神经网络的训练样本有m个,每个包含一组输入x和一组输出信号y,L表示神经网络层数,SI表示每层的neuron个数(Sl表示输出层神经元个数),SL代表最后一层中处理单元的个数。
将神经网络的分类定义为两种情况:二类分类和多类分类,
二类分类:SL=0,y=0or1表示哪一类;
K类分类:SL=k,yi=1表示分到第i类;

我们回顾逻辑回归问题中我们的代价函数为:
J(θ)=−m1[∑i=1my(i)loghθ(x(i))+(1−yk(i))log(1−hθ(x(i)))]+2mλ∑j=1nθj2
在逻辑回归中,我们只有一个输出变量,又称标量(scalar),也只有一个因变量y,但是在神经网络中,我们可以有很多输出变量,我们的hθ(x)是一个维度为K的向量,并且我们训练集中的因变量也是同样维度的一个向量,因此我们的代价函数会比逻辑回归更加复杂一些,为:
hθ(x)∈RK(hθ(x))i=ithoutput
J(θ)=−m1[∑i=1m∑k=1kyk(i)log(hθ(x(i)))k+(1−yk(i))log(1−(hθ(x(i)))k)]+2mλ∑l=1L−1∑i=1sl∑j=1sl+1(θji(l))2
这个看起来复杂很多的代价函数背后的思想还是一样的,我们希望通过代价函数来观察算法预测的结果与真实情况的误差有多大,唯一不同的是,对于每一行特征,我们都会给出K个预测,基本上我们可以利用循环,对每一行特征都预测K个不同结果,然后在利用循环在K个预测中选择可能性最高的一个,将其与y中的实际数据进行比较。
正则化的那一项只是排除了每一层θ0后,每一层的θ矩阵的和。最里层的循环j循环所有的行(由sl+1 层的**单元数决定),循环i则循环所有的列,由该层(sl层)的**单元数所决定。即:hθ(x)与真实值之间的距离为每个样本-每个类输出的加和,对参数进行regularization的bias项处理所有参数的平方和。