首先引入一些便于稍后讨论的新标记方法:

假设神经网络的训练样本有mm个,每个包含一组输入xx和一组输出信号yyLL表示神经网络层数,SIS_{I}表示每层的neuron个数(SlS_{l}表示输出层神经元个数),SLS_{L}代表最后一层中处理单元的个数。

将神经网络的分类定义为两种情况:二类分类和多类分类,

二类分类:SL=0,y=0or1S_{L}=0,y=0 or 1表示哪一类;

KK类分类:SL=k,yi=1S_{L}=k,y_{i}=1表示分到第ii类;
吴恩达9.1:代价函数
我们回顾逻辑回归问题中我们的代价函数为:

J(θ)=1m[i=1my(i)loghθ(x(i))+(1yk(i))log(1hθ(x(i)))]+λ2mj=1nθj2J(\theta)=-\frac{1}{m}[\sum_{i=1}^{m}y^{(i)}logh_{\theta}(x^{(i)})+(1-y_{k}^{(i)})log(1-h_{\theta}(x^{(i)}))]+\frac{\lambda}{2m}\sum_{j=1}^{n}\theta_{j}^{2}

在逻辑回归中,我们只有一个输出变量,又称标量(scalar),也只有一个因变量yy,但是在神经网络中,我们可以有很多输出变量,我们的hθ(x)h_{\theta}(x)是一个维度为KK的向量,并且我们训练集中的因变量也是同样维度的一个向量,因此我们的代价函数会比逻辑回归更加复杂一些,为:

hθ(x)RK(hθ(x))i=ithoutputh_{\theta}(x)\in R^{K} (h_{\theta}(x))_{i}=i^{th}output
J(θ)=1m[i=1mk=1kyk(i)log(hθ(x(i)))k+(1yk(i))log(1(hθ(x(i)))k)]+λ2ml=1L1i=1slj=1sl+1(θji(l))2J(\theta)=-\frac{1}{m}[\sum_{i=1}^{m}\sum_{k=1}^{k}y_{k}^{(i)}log(h_{\theta}(x^{(i)}))_{k}+(1-y_{k}^{(i)})log(1-(h_{\theta}(x^{(i)}))_{k})]+\frac{\lambda}{2m}\sum_{l=1}^{L-1}\sum_{i=1}^{s_{l}}\sum_{j=1}^{s_{l}+1}(\theta_{ji}^{(l)})^{2}

这个看起来复杂很多的代价函数背后的思想还是一样的,我们希望通过代价函数来观察算法预测的结果与真实情况的误差有多大,唯一不同的是,对于每一行特征,我们都会给出KK个预测,基本上我们可以利用循环,对每一行特征都预测KK个不同结果,然后在利用循环在KK个预测中选择可能性最高的一个,将其与yy中的实际数据进行比较。

正则化的那一项只是排除了每一层θ0\theta_{0}后,每一层的θ\theta矩阵的和。最里层的循环jj循环所有的行(由sl+1s_{l}+1 层的**单元数决定),循环ii则循环所有的列,由该层(sls_{l}层)的**单元数所决定。即:hθ(x)h_{\theta}(x)与真实值之间的距离为每个样本-每个类输出的加和,对参数进行regularization的bias项处理所有参数的平方和。

相关文章:

  • 2021-10-14
  • 2022-01-14
  • 2021-09-24
  • 2022-12-23
  • 2021-04-10
  • 2021-08-11
  • 2021-08-04
  • 2021-09-18
猜你喜欢
  • 2021-10-28
  • 2021-07-07
  • 2022-01-15
  • 2021-11-15
  • 2021-09-26
  • 2021-11-18
相关资源
相似解决方案