loss与metric的区别 以及 optimizer的介绍
1、背景
在神经网络的训练过程中,我们总是需要选择编译(compile)步骤的三个参数,loss, metrics,optimizer 。那么他们到底代表什么含义呢? 损失函数(loss function):网络如何衡量在训练数据上的性能,即网络如何朝着正确的方向前进。 优化器(optimizer):基于训练数据和损失函数来更新网络的机制。 在训练和测试过程中需要监控的指标(metric)。
2、loss
想要控制一件事物,首先需要能够观察它。想要控制神经网络的输出,就需要能够衡量该输出与预期值之间的距离。这是神经网络损失函数(loss function)的任务,该函数也叫目标函数(objective function)。 损失函数的输入是网络预测值与真实目标值(即你希望网络输出的结果),然后计算一个距离值,衡量该网络在这个示例上的效果好坏。
3、metrics
在训练和测试过程中需要监控的指标(metrics)
# 分类任务中使用 metrics=[accuracy]) # 回归任务中使用 metrics=[mae]) metrics=[mse])
4、对比
5、当Loss和Metrics定义都是mse时,为什么显示不同
细心的同学会发现,当Loss和Metrics定义都是mse时,值显示不同。于是会好奇,既然loss和metrics都是一样的计算方法时,为什么会不同呢。 实际上,造成这个微小差异的原因在于,模型评价的时候(metrics的结果)是模型训练完一个批次后,对这个批次做的评价。而显示的loss却是在训练过程中的这个批次样本产生的loss的均值。 一句话解释,那就是 模型在batch训练过程中,是变化的。loss的结果是动态的每一个样本的loss的均值,而metrics却是在此batch结束后,对这个batch的数据做评价的结果。
6、optimizer
深度学习的基本技巧是利用这个距离值作为反馈信号来对权重值进行微调,以降低当前示例对应的损失值(如下图)。这种调节由优化器(optimizer)来完成,它实现了所谓的反向传播(backpropagation)算法,这是深度学习的核心算法。
