损失函数(lossfunction)的全面介绍(简单易懂版)

MSE损失函数通过平方误差来惩罚模型犯的大错误。

从损失函数的视角来看,它就成了Softmax损失函数了。

我们来看下下面这个示例:1importnumpyasnp;2importmatplotlib.pyplotasplt;34x=np.linspace(-2,2,300)56hinge_loss_function=7foriin(1-x):8ifi>0:9hinge_loss_function.append(i)10else:11hinge_loss_function.append(0)12exponential_loss_function=np.exp(-x)13logistic_loss_function=np.log(1+np.exp(-x))/np.log(2)1415l0_1_loss_function=16forjinx:17ifj<0:18l0_1_loss_function.append(1)19else:20l0_1_loss_function.append(0)2122pingfang_loss_function=(x-1)**22324plt.plot(x,hinge_loss_function,\r-\)25plt.plot(x,exponential_loss_function,\b-\)26plt.plot(x,logistic_loss_function,\g-\)27plt.plot(x,l0_1_loss_function,\k-\)28plt.plot(x,pingfang_loss_function,\c-\)29plt.legend(\hinge_loss_function\,\exponential_loss_function\,\logistic_loss_function\,\l0_1_loss_function\,\pingfang_loss_function\)30plt.show结果如下:

参考文献,1\\.损失函数、代价函数与目标函数**损失函数(LossFunction)**:是定义在单个样本上的,是指一个样本的误差。

if-else结构)合页损失函数S是通过分类器预测出来的类的分数,Yi这个整数表示这个样本的正确的分类标签。

例如选取γ为0.25时意味着将要惩罚更多的过拟合而尽量保持稍小于中值的预测值。

在逻辑回归的推导中,它假设样本服从伯努利分布(0-1分布),然后求得满足该分布的似然函数,接着取对数求极值等等。

所以算法的步长需要多次运行后才能得到一个较为优的值。

这里的g(s)就是交叉熵公式中的模型预测输出。

在多分类任务中,经常采用softmax激活函数+交叉熵损失函数,因为交叉熵描述了两个概率分布的差异,然而神经网络输出的是向量,并不是概率分布的形式。

(https://img-blog.csdnimg.cn/1c5b6140cfe440aea540f974a2d3a78d.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATFpf5aSV6Ziz5LmL5ZCO55qE6buR5aSc,size_9,color_FFFFFF,t_70,g_se,x_16)!(https://img-blog.csdnimg.cn/4514f80b70624e089d3e8a9ea14c9462.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATFpf5aSV6Ziz5LmL5ZCO55qE6buR5aSc,size_9,color_FFFFFF,t_70,g_se,x_16)2.5HingeLoss铰链损失、合页损失在机器学习中常用于”最大间隔(maximum-margin)”的分类任务中,如**支持向量机SVM**。

经验风险损失函数指预测结果和实际结果的差别,结构风险损失函数是指经验风险损失函数加上正则项。

Sigmoid函数的表达式和图形如下所示:g(s)=11+e−sg(s)=11\\+e−s其中s是模型上一层的输出,Sigmoid函数有这样的特点:s=0时,g(s)=0.5;s>>0时,g≈1,s<<0时,g≈。

(https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL3N6X21tYml6X2pwZy9nWVVzT1QzNnZmcnF0aWFHbUFsdnZBYkoydTJwcXFueWJZWmlhZ1VWZFdxT051WXN3VnlnajliOFEwbzVScWtXaWNSaFBlcGJXdTZCUEhrVHE0RWxQWUdaZy82NDA?x-oss-process=image/format,png)那么为什么**交叉熵损失函数**就会比较好了呢?同样的对于**交叉熵损失函数**,计算一下参数更新的梯度公式就会发现原因。

所以当使用sigmoid作为激活函数的时候,常用**交叉熵损失函数**而不用**均方误差损失函数**。

**回归损失**!(https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9nS2F4akl4NmJhaWFGcWFlR01jMWljOFpFWWh0czBDZFZGNGdPd1NINVhlb2xYYVV1UG1MRFNaUlh5YXJJN01CWGp4d1MxaWJYYmJXN2xneHBOdnBRemtwdy82NDA?x-oss-process=image/format,png)回归Loss.png**1.对于回归问题,我们期望****!(https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3N2Zy92c0FDeVhxMURCaDRvTDdWam5MeXlwNUs2eE5qVXFvY2RKd3lGOUlDbkIzZExERzNZS2pMa3RPbXFpYjVwdmRTTmo2Wk1XUzJDblFvVk1HVmFKTnVmS1R4Z0h2cGJWYXVBLzY0MA?x-oss-process=image/format,png)****Square损失:****!(https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3N2Zy92c0FDeVhxMURCaDRvTDdWam5MeXlwNUs2eE5qVXFvY21xUmtFZUhGRHJVajZBTlh1R2ZxTjU1ZzNYb0ZTSEhkcjZ4V1NvdnlwNEFPUUxLRXRITzEwQTZiNW1uYzBwYUMvNjQw?x-oss-process=image/format,png)**平方损失函数是光滑函数,能够使用梯度下降法优化。

问题5:如果用平均值代替求和?不会改变。

目前检测任务的损失函数主要有两个缺点:(1)无法有效地描述边界框回归的目标,导致收敛速度慢以及回归结果不准确(2)忽略了边界框回归中不平衡的问题。

,”

导入包fromkeras.layersimportDensefromkeras.modelsimportSequentialfromkeras.optimizersimportadamalpha设置为0.001,如adam优化器中的lr参数所示创建模型model_alpha1=Sequential()model_alpha1.add(Dense(50,input_dim=2,activation=relu))model_alpha1.add(Dense(3,activation=softmax))编译模型opt_alpha1=adam(lr=0.001)model_alpha1.compile(loss=kullback_leibler_divergence,optimizer=opt_alpha1,metrics=accuracy)拟合模型dummy_Y是one-hot形式编码的history_alpha1用于为绘图的验证和准确性评分history_alpha1=model_alpha1.fit(dataX,dummy_Y,validation_data=(dataX,dummy_Y),epochs=200,verbose=0)在不同的学习率经过200轮训练后成本和准确度的图如下:**与多分类分类相比,KL散度更常用于逼近复杂函数。

其含义是,的值在-1和+1之间就可以了,并不鼓励,即并不鼓励分类器过度自信,让某个正确分类的样本距离分割线超过1并不会有任何奖励,从而**使分类器可以更专注于整体的误差。