常用损失函数

前言

在聊损失函数之前,我们先来主观的想一下,一个模型及其参数的好坏与哪些因素有关。
首先可以确定的是,参数的确定是通过外部的输入不断迭代生成的,即这是一个优化问题。优化问题的关键是如何选定一个恰到好处的目标函数,使得当目标函数取得最值的时候,模型刚刚好也是最佳的。
还有一个就是与VC维有关。举个例子,把VC维具象为决策的中间节点数目有关系,中间节点数目越多,理论上对本组训练集而言得到的结果越精准。


隐藏层

但是隐藏层的数目也不是越多越好,隐藏层节点数目越多很有可能导致过拟合,在训练集上表现不错,在测试集上表现不佳。
这两个问题如何解决呢。
第一个问题的关键在于如何选择目标函数(损失函数);
第二个问题的关[图片上传失败...(image-939fe8-1549807116525)]
键在于如何选取适当的维度(惩罚项/正则化项);


最终的表达式

arg是满足条件的自变量的值;
w是模型中各节点的参数;
L为损失函数;
yi为真实值;
f(xi;w)是在取w的情况下,给模型f输入参数xi得到的值;
lambda 是规则化参数,需要自行确定;
omiga 是惩罚项。

常用损失函数

  • 0-1 损失函数
  • log损失函数
  • 均方损失和函数
  • 自定义损失函数
    举个例子:


    自定义损失函数

正则项/惩罚项

如上文所说,正则项的存在是为了避免VC维度过高产生过拟合,所以一般而言正则项是参数向量w范数的函数。

  • L0范数
    向量中非零元素个数。
  • L1范数 tf.contrib.layers.l1_regularizer()
    向量中各个元素的绝对值之和。
  • L2范数 tf.contrib.layers.l2_regularizer()
    向量中各元素的平方然后求平方根。0.1的平方是0.01,10的平方是100,使小权重趋于0。

规则化参数

上文提到的lambda就是规则化参数。需要自行设定,一般看看损失函数和正则项的相对大小决定lambda取值。
典型值为0.01。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容