keras model.compile(loss='目标函数 ', optimizer='adam', metrics=['accuracy'])(代码

Posted wangjs-jacky

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了keras model.compile(loss='目标函数 ', optimizer='adam', metrics=['accuracy'])(代码相关的知识,希望对你有一定的参考价值。

目标函数

目标函数,或称损失函数,是网络中的性能函数,也是编译一个模型必须的两个参数之一。由于损失函数种类众多,下面以keras官网手册的为例。

在官方keras.io里面,有如下资料:

  1. mean_squared_error或mse

  2. mean_absolute_error或mae

  3. mean_absolute_percentage_error或mape

  4. mean_squared_logarithmic_error或msle

  5. squared_hinge

  6. hinge

  7. binary_crossentropy(亦称作对数损失,logloss)

  8. categorical_crossentropy:亦称作多类的对数损失,注意使用该目标函数时,需要将标签转化为形如(nb_samples, nb_classes)的二值序列

  9. sparse_categorical_crossentrop:如上,但接受稀疏标签。注意,使用该函数时仍然需要你的标签与输出值的维度相同,你可能需要在标签数据上增加一个维度:np.expand_dims(y,-1)

  10. kullback_leibler_divergence:从预测值概率分布Q到真值概率分布P的信息增益,用以度量两个分布的差异.

  11. cosine_proximity:即预测值与真实标签的余弦距离平均值的相反数

1.mean_squared_error

顾名思义,意为均方误差,也称标准差,缩写为MSE,可以反映一个数据集的离散程度。

标准误差定义为各测量值误差的平方和的平均值的平方根,故又称为均方误差。

公式:
[ M S E=frac{1}{n} sum_{i=1}^{n}left( ilde{Y}_{i}-Y_{i} ight)^{2} ]

公式意义: 可以理解为一个从n维空间的一个点到一条直线的距离的函数。(此为在图形上的理解,关键看个人怎么理解了)

2. mean_absolute_error

译为平均绝对误差,缩写MAE。
平均绝对误差是所有单个观测值与算术平均值的偏差的绝对值的平均。
公式:
[ mathrm{MAE}=frac{1}{n} sum_{i=1}^{n}left|f_{i}-y_{i} ight|=frac{1}{n} sum_{i=1}^{n}left|e_{i} ight| ]
((f_i)是预测值,(y_i)是实际值,绝对误差(left|e_{i} ight|=left|f_{i}-y_{i} ight|))

3.mean_absolute_percentage_error

译为平均绝对百分比误差 ,缩写MAPE。

公式:
[ mathrm{M}=frac{1}{n} sum_{t=1}^{n}left|frac{A_{t}-F_{t}}{A_{t}} ight| ]
(A_t)表示实际值,(F_t)表示预测值)

4. mean_squared_logarithmic_error

译为均方对数误差,缩写MSLE。

公式
[ varepsilon =frac{1}{n}sum_{i=1}^n{left( log left( p_i+1 ight) -log left( a_i+1 ight) ight) ^2} ]
(n是整个数据集的观测值,(p_i)为预测值,(a_i)为真实值)

5.squared_hinge

公式为max(0,1-y_true*y_pred)^2.mean(axis=-1),取1减去预测值与实际值的乘积的结果与0比相对大的值的平方的累加均值。

6.hinge

公式为为max(0,1-y_true*y_pred).mean(axis=-1),取1减去预测值与实际值的乘积的结果与0比相对大的值的累加均值。

Hinge Loss 最常用在 SVM 中的最大化间隔分类中,

对可能的输出 t = ±1 和分类器分数 y,预测值 y 的 hinge loss 定义如下:

L(y) = max(0,1-t*y)

y = w*x+b

可以看出当 ty 有相同的符号时(意味着 y 预测出正确的分类)

|y|>=1

此时的 hinge loss

L(y) = 0

但是如果它们的符号相反

L(y)则会根据 y 线性增加 one-sided error。(译自wiki)

7.binary_crossentropy

即对数损失函数,log loss,与sigmoid相对应的损失函数。

  公式:L(Y,P(Y|X)) = -logP(Y|X)

  该函数主要用来做极大似然估计的,这样做会方便计算。因为极大似然估计用来求导会非常的麻烦,一般是求对数然后求导再求极值点。

  损失函数一般是每条数据的损失之和,恰好取了对数,就可以把每个损失相加起来。负号的意思是极大似然估计对应最小损失。

8.categorical_crossentropy

? 多分类的对数损失函数,与softmax分类器相对应的损失函数,理同上。

  tip:此损失函数与上一类同属对数损失函数,sigmoid和softmax的区别主要是,sigmoid用于二分类,softmax用于多分类。

一种解释:
softmax公式:

logistic regression的目标函数是根据最大似然来做的.也就是假设x属于类y,预测出概率为oy,那么需要最大化oy.

softmax_loss的计算包含2步:

(1)计算softmax归一化概率
[ x_i=x_i-max(x_1,...,x_n) ]
[ p_i = frac{e^{x_i}}{sum_{j=1}^{n}e^{x_j}} ]

参考:

[]https://www.cnblogs.com/smuxiaolei/p/8662177.html
[官方文档]https://keras.io/zh/losses/

以上是关于keras model.compile(loss='目标函数 ', optimizer='adam', metrics=['accuracy'])(代码的主要内容,如果未能解决你的问题,请参考以下文章

model.compile中的loss函数参数输入三种类型

keras 如何处理多重损失?

Keras深度学习框架之损失函数

keras训练cnn模型时loss为nan

Keras 中的“指标”是啥?

keras损失函数详解