损失函数是什么?
损失函数衡量模型输出与真实标签的差异
损失函数、代价函数、目标函数的关系?
损失函数:计算目标是单个样本
代价函数:计算目标是整个样本,计算每个样本的损失函数求和再取均值。
目标函数:在代价函数的基础上加上正则化项,目的是为了防止过拟合,造成代价函数小但泛化能力差。
下面介绍Pytorch中的十四种损失函数
损失函数 | 功能 | 注意事项 | 主要参数 | 使用场景 | 计算公式 |
---|---|---|---|---|---|
nn.CrossEntropyLoss | nn.LogSoftMax()与nn.NLLLoss()结合,进行交叉熵计算 | - | weight:各类别的loss设置取值 ignoe_index:忽略某个类别 reduction:计算模式,可为none/sum/mean |
常用于分类任务 | H ( P , Q ) = − ∑ i = 1 N P ( x i ) l o g Q ( x i ) H(P,Q) = -\sum_{i=1}^NP(x_i)logQ(x_i) H(P,Q)=−∑i=1NP(xi)logQ(xi) |
nn.NLLLoss | 实现负对数似然函数中的负号功能 | - | weight:各类别的loss设置取值 ignoe_index:忽略某个类别 reduction:计算模式,可为none/sum/mean |
常用于分类任务 | l ( x , y ) = L = { l 1 , . . . , l N } l , l n = − w y n x n , y n l(x,y) = L = \{l_1, ..., l_N\}^l, l_n= -w_{y_n}x_{n,y_n} l(x,y)=L={ l1,...,lN}l,ln=−wynxn,yn |
n.BCELoss | 二分类交叉熵 | - | weight:各类别的loss设置取值 ignoe_index:忽略某个类别 reduction:计算模式,可为none/sum/mean |
常用于分类任务 | l n = − w n [ y n ⋅ l o g x n + ( 1 − y n ) ⋅ l o g ( 1 − x n ) ] l_n = -w_n[y_n \cdot logx_n + (1-y_n) \cdot log(1-x_n)] ln=−wn[yn⋅logxn+(1−yn)⋅log(1−xn)] |
nn.BCEWithLogitsLoss | 结合Sigmoid与二分类交叉熵 | 网络最后不加sigmoid函数 | pos:正样本的权值 weight:各类别的loss设置取值 ignoe_index:忽略某个类别 reduction:计算模式,可为none/sum/mean |
常用于分类任务 | l n = − w n [ y n ⋅ l o g σ ( x n ) + ( 1 − y n ) ⋅ l o g ( 1 − σ ( x n ) ) ] l_n = -w_n[y_n \cdot log\sigma(x_n) + (1-y_n) \cdot log(1-\sigma(x_n))] ln=−w |