meton-robean / ResearchNote

通过issue和README来记录日常学习研究笔记 关注 机器学习系统,深度学习, LLVM,性能剖视, Linux操作系统内核 话题 关注 C/C++. JAVA. Python. Golang. Chisel. 编程语言话题 ( Writing Blogs using github issue and markdown! (inculding Machine Learning algs and system, LLVM, Linux kernel, java, python, c++, golang)
74 stars 7 forks source link

有监督学习的损失函数总结 #14

Open meton-robean opened 4 years ago

meton-robean commented 4 years ago

有监督学习的损失函数总结 损失函数总结

meton-robean commented 4 years ago

分类中为什么不用均方差损失?上文在介绍均方差损失的时候讲到实际上均方差损失假设了误差服从高斯分布,在分类任务下这个假设没办法被满足,因此效果会很差。为什么是交叉熵损失呢?有两个角度可以解释这个事情,一个角度从最大似然的角度,也就是我们上面的推导;另一个角度是可以用信息论来解释交叉熵损失。通过最小化交叉熵的角度推导出来的结果和使用最大 化似然得到的结果是一致的。

meton-robean commented 4 years ago

Selection_011 正是因为HingeLoss的零区域对应的正是非支持向量的普通样本,从而所有的普通样本都不参与最终超平面的决定,这才是支持向量机最大的优势所在,对训练样本数目的依赖大大减少,而且提高了训练效率。

meton-robean commented 4 years ago

Selection_012

meton-robean commented 4 years ago

所谓的logistic loss就是 cross entropy: L = -( y1 log(y1_hat) + y2 log(y2_hat) ) 在 y1 + y2 = 1时候的化简而已。

meton-robean commented 4 years ago

卷积神经网络系列之softmax,softmax loss和cross entropy的讲解 Selection_013

meton-robean commented 4 years ago

多分类和多标签分类不是一回事

meton-robean commented 4 years ago

Selection_014

L1对应拉普拉斯分布,L2对应高斯分布。

L1不可导可以使用Proximal Algorithms或者ADMM来解决。 绝对值函数仅仅是 0 这个点不可导,和 ReLU 类似,可以用次梯度下降(subgradient descent)。也就是说,在非零的位置,就用正常的梯度;在 0 这个位置使用次梯度(对 ReLU 来说,x=0 处的次梯度可以是 [0, 1] 之间的任何一个值;对绝对值函数来说,x=0 处的次梯度可以是 [-1, 1] 之间的任何一个值)。

meton-robean commented 4 years ago

神经网络是使用什么如何处理带L1正则化的损失函数的?

作者:Xenophon Tony 链接:https://www.zhihu.com/question/327992018/answer/709912550 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

首先你说,Lasso不是用coordinate descent或LARS实现的么?小孩子才看算法,成年人都看收敛率,本质上来说你可以用任何优化算法来优化Lasso,包括基于梯度的方法。基于梯度的方法有很多,最常见的便是gradient descent,当问题不再处处可导时,可以采用gradient descent的拓展算法subgradient descent。但一般来说,subgradient descent常常令人头疼,其实它并不是一个保证descent的算法,只不过是作为gd的超集,沿用了descent的这个叫法。事实上subgradient descent的收敛率也非常差,除非迫不得已,不会用它来优化Lasso这种非平滑的函数,也很难令Lasso得到稀疏解。有意思的是,Tensorflow里面实现的甚至不是subgradient descent算法,而是忽略所有不可导的地方,也就是说但凡你遇到了这样一个不可导的坏点,它可以永远卡在那里,因为没有梯度也不会更新。这其实也合理,当网络中有大量参数的时候,相较正牌subgradient descent而言,这是保证效率也不失精准性的一种妥协。但是记住,这是相较subgradient descent而言,基于梯度的方法难道没有更好更合理的了么?有的,那也就是优化Lasso的大杀器proximal gradient descent(Lasso优化中大名鼎鼎的ISTA),抛开理论的部分不谈,对于Lasso而言,proximal方法相当把原问题拆解成了两个子问题,首先更新平滑部分的参数(L1以外的部分),拿着更新好的结果,跑一遍proximal operator(soft threshold函数)让它也尽量更接近满足L1的条件,处理过后的才是新的参数。ISTA是Lasso的随机优化中非常经典的一个算法(当然从收敛效率上来说,coordinate descent要高很多,然而即便是CD他的每一步其实做的也是proximal update,又扯远了…)那最有意思的地方来了,神经网络中,有没有这种神乎其神的proximal方法,可以在普通的gradient descent基础上,提高算法的收敛率呢?有的,比如说这一篇Data-Driven Sparse Structure Selection for Deep Neural Networks,就是一篇利用Accelerated Proximal Gradient方法来产生网络的稀疏结构从而对网络进行剪枝的有趣工作~(⁎⁍̴̛ᴗ⁍̴̛⁎)