损失函数(loss)
loss函数的作用就是描述模型的预测值与真实值之间的差距大小。我的理解是寻找一个标准来帮助训练机制随时优化参数,以便于找到网络的最高精度下的参数。这个标准不难理解,与我们日常生活中的很多事情一致,例如倒车入库,在你倒车的同时肯定会一边打方向盘一边看倒后镜一样(当然具备自动倒车入库功能的车除外),根据倒后镜中看到的停车线,随时调整以便能够准确入库,这个停车线就是标准。更通俗的来说,loss函数就是指导模型在训练过程中朝着收敛的方向前进。
二、常见的loss算法种类
1.MSE(均值平方差)
数理统计中演化而来,均方误差是指参数估计值和参数真实值之差平方的期望值。在此处其主要是对每个预测值与真实值作差求平方的平均值,具体公式如下所示:
MSE = \frac{1}{n}\sum_{i=1}^{n}{(Y-Y_{pred})^2}
MSE越小代表模型越好,类似的算法还包括RMSE和MAD。
2.交叉熵
交叉熵(crossentropy)刻画了两个概率分布之间的距离,更适合用在分类问题上,因为交叉熵表达预测输入样本属于某一类的概率。其公式如下所示:
C = \frac{1}{n}\sum_{i=1}^{n}{[Yln(Y_{pred})+(1-Y)ln(1-Y_{pred})]}
与MSE一样,交叉熵也是值越小代表模型精度越高。
代码实现:
import tensorflow as tf
import numpy as np
SEED = 23455
rdm = np