百科问答小站 logo
百科问答小站 font logo



为什么在SGD中使用L1正则化很难获得稀疏性? 第1页

  

user avatar   menc01 网友的相关建议: 
      

关于 L1 在实操中常不能得到真正稀疏性的原因,有一个听起来很奇怪,细品又有点道理的解释:当参数使用float方式存储时,计算机进行浮点数的四则运算很难得到完美的 0 值。

冷不丁看到,感觉离了大谱。

当我们专注于算法推导的时候,几乎没人想到这里来,但听到这个解释后,又打心眼里觉得对。这理论也是我在查阅 FTRL 资料的时候看到的,它莫名契合 FTRL 追求实际落地的出发点。

这里贴一个链接,是一个关于 L1 正则稀疏性的文章,文中有一个很不错的小小实验。这个实验排除了其他回答所说“很多问题是非凸或者复杂凸问题”的干扰因素,或能佐证这个解释。

简单介绍下实验设定:

       def genData(n, p, s):     A = np.random.normal(0, 1, (n,p))     opt_x = np.zeros(p)     random_index_list = random.sample(range(p), s)     for i in random_index_list:  opt_x[i] = np.random.normal(0,10)     e = np.random.normal(0,1,n)     b = np.dot(A,opt_x.T) + e.T     return A, b  A, b = genData(100, 50, 20)     
  1. 使用如上代码,随机生成了一个小的有冗余的线性 dataset,其中非 0 参数 30 维, 0 参数 20 维。
  2. 对这个凸的数据集使用 L1 训练。

结论如下:

  1. 加了 L1 后,模型参数确实比只有 L2 更接近 0 了;
  2. 使用 subgradient 的 L1 并未达到理论上的稀疏性,很多预期为 0 的参数学习到的参数值在 1e-7 数量级上下,很接近 0 了,但不是 0 -- 各大机器学习框架对 L1 正则的实现,基本都基于 subgradient;
  3. 使用近端梯度下降代替 subgradient 后,参数达到理想中的稀疏性。近端梯度下降和 subgradient based L1 相比,具体实现上的区别是加入了软阈值,当 ω < λt 时,ω 会被置零。

关于近端梯度下降,可参考这里:Xinyu Chen:机器学习 | 近端梯度下降法 (proximal gradient descent)




  

相关话题

  2021 年了,TensorFlow 和 PyTorch 两个深度学习框架地位又有什么变化吗? 
  机器学习能否用于综合评价?具体怎么操作? 
  在NLP当中,不同的评价指标,BLEU, METEOR, ROUGE和CIDEr的逻辑意义? 
  为什么图形学的会议siggraph的论文代码很少会开源?好像视觉如CVPR、ICCV开源的更多一些。 
  算法工程师的落地能力具体指的是什么? 
  要研究深度学习的可解释性(Interpretability),应从哪几个方面着手? 
  2020-2021年NLP有什么核心技术的更迭吗?或者有什么推动领域发展的paper吗? 
  如何评价Google提出的MLP-Mixer:只需要MLP就可以在ImageNet上达到SOTA? 
  如何看待Hinton的论文《Dynamic Routing Between Capsules》? 
  神经网络能否代替决策树算法? 

前一个讨论
隐私计算/多方安全计算/联邦学习问题?
下一个讨论
有哪些能吊打大牌的国货护肤品?





© 2025-05-23 - tinynew.org. All Rights Reserved.
© 2025-05-23 - tinynew.org. 保留所有权利