Loss设置了一个损失函数用来比较网络的输出和目标值,通过 最小化损失来驱动网络的训练。网络 损失通过前向操作计算,网络参数相对于 损失函数的梯度 进行反向操作计算。
CNN网络进行前向传播,一次调用每个网络层的Forward函数, 逐层输出,最后一层与目标函数比较得到损失函数,计算误差进行更新,通过反向传播逐层到达第一层,所有权值在反向传播结束时一起更新。
Loss layer是CNN的最后一层,接受两个Blob作为输入,其中的一个是CNN的预测值,另一个是真实标签。损失层则将这两个输入进行一系列运算,得到当前网络的损失函数(loss function),一般记做L(θ)其中θ是当前网络权值构成的向量空间。机器学习的目的是在权值空间中找到让损失函数L(θ) 最小的权值θ(opt),可以采用一系列最优化方法(如SGD方法)逼近权值θ。
损失函数是在前向传播计算中得到的,同时也是反向传播的起点,损失函数基本都是由真实值和预测值两部分组成,正确的损失函数,可以起到让预测值一直逼近真实值的效果,当预测值和真实值相等时,loss值最小。