新人在阅读深度学习论文时,常常会遇到的几个困惑。

深度学习是时下AI领域的研究热点,但是很多大佬的“简单”、“显然”等,对新人而言可能需要花几天几夜时间查找资料才能理解。正是出于这样的考量,本文以BBN的阅读为例,列举了几个“简单”常识

BBN: Bilateral-Branch Network with Cumulative Learning for Long-Tailed Visual Recognition

Authors:Boyan Zhou, Quan Cui, Xiu-Shen Wei, Zhao-Min Chen

【概述】

数据分布的长尾效应是识别任务中的一大挑战,所谓的长尾效应是指,训练数据中,一小部分的类别占据了大多数的训练样本,而大部分的类别只有极少数的训练样本。

本文的工作着力于解决视觉识别任务中的长尾效应挑战。类别重平衡策略(如权重重赋值,重采样等)是为了缓解长尾效应提出的最有效最关键的策略。在本文中,作者首先发现,这些重平衡方法可实现令人满意的识别准确性,这是因为它们可以显著促进深度网络的分类学习,但是同时,这种策略也会在一定程度上破坏网络学习某些特征表示的能力。因此,本文提出了一个统一的双边分支网络(Bilateral-Branch Network BBN)来兼顾网络的特征表示能力和分类能力。双边分支的每个分支各司其职,单独作用。

特别的,BBN模型引入了新颖的累计学习(cumulative  learning)策略,首先学习通用的特征表示,然后逐渐将注意力放在尾部数据(样本量较少的数据)上。

在包含大规模数据集INaturalist在内的四个数据集上的试验表明,本文提出的BBN可以超越state-of-the-art。更重要的是,验证实验可以证明BBN中针对长尾问题的初步发现和定制设计的有效性。

中文完整翻译:https://zhuanlan.zhihu.com/p/115804533

paper:https://arxiv.org/abs/1912.02413

code:https//github.com/Megvii-Nanjing/BBN

近期关于长尾问题的相关文章: https://zhuanlan.zhihu.com/p/234497792

一、概念解释

1 、深度学习中经常看到epoch、iteration和batchsize,下面按照自己的理解说说这三个区别:

(1)batchsize:批大小。在深度学习中,一般采用SGD训练,即每次训练在训练集中取batchsize个样本训练;

(2)iteration:1个iteration等于使用batchsize个样本训练一次;

(3)epoch:1个epoch等于使用训练集中的全部样本训练一次;

举个例子,训练集有1000个样本,batchsize=10,那么:

训练完整个样本集需要:

100次iteration,1次epoch。

2、什么是交叉熵损失函数

为了理解什么是交叉熵,首先我们得了解信息量,熵,相对熵等一系列概念;

信息量:一条信息的不确定性越大,那么信息量越大,这个用通俗的语言很好解释:你跟别人讲, 明天太阳从东边出来,别人会说你说了一句废话,这是个确定的事情,没有信息量;微博上杨超越晒出照片有一个烟盒,大家就会说信息量好大了,因为此时杨超越抽不抽烟还是不确定的。

熵:是信息量的期望值。和我们在热力学中理解的混乱程度也是一样的,越不确定,越混乱;推荐观看B站《学习观》

相对熵:用来衡量两个分布的的差异,值越小越接近;

交叉熵:由相对熵推导得到,其实本质是一样的,差值是常量,因此也能用来恒量分布的差异;

为什么在分类中要使用交叉熵损失而不是用MSE(均方差函数,即线性回归中的代价函数),原因是在使用了激活函数后,交叉熵可以保证当误差越大时,梯度越大,那么就学的越快;MSE是相反的。

2.2分类问题

注意二分类也是分类,但是二分类的交叉熵本质和多分类是一样的,所以说逻辑回归的损失函数,本质上和交叉熵是一样的 。

交叉熵和最大似然估计

最大似然估计是基于我们的观测情况,来得到分布的参数;很多情况下,我们可以看到,分类问题的损失函数是直观利用最大似然估计给出的,但是在机器学习的损失函数这里,二者本质是一样的

Softmax

softmax是用来进行多分类,可以将多个值输出到[0,1]之间,并且保证和是1,很符合概率分布;softmax也可以作为一个激活函数,和普通sigmoid激活函数不同的是,它的输出是一个向量,其实二者本质也是一样的,在二分类的时候,softmax就退化成为sigmoid,具体推导可以参考Sigmoid和Softmax的关系 如果我们最后一层加入的损失函数是softmax,那么就是在做多分类,得到的输出也符合一个概率分布,此时我们就可以使用交叉熵或者最大似然估计,很容易得到模型的损失函数,比如在没加任何优化的word2vec模型就是这样的。

3 Cross Entropy Error Function(交叉熵损失函数)

在二分的情况下,表达式相当于逻辑回归代价函数

𝐽(𝜃) = - 1/𝑚 (∑ 𝑖=1,2,…,m[𝑦(𝑖)log (ℎ𝜃(𝑥(𝑖))) + (1 - 𝑦(𝑖))log (1 - ℎ𝜃(𝑥(𝑖)))]

https://zhuanlan.zhihu.com/p/35709485

https://cloud.tencent.com/developer/article/1424525

在用梯度下降法做参数更新的时候,模型学习的速度取决于两个值:一、学习率;二、偏导值。其中,学习率是我们需要设置的超参数,所以我们重点关注偏导值。

从上面的式子中,我们发现,偏导值的大小取决于Xi和|σ(s)-y|,我们重点关注后者,后者的大小值反映了我们模型的错误程度,该值越大,说明模型效果越差,但是该值越大同时也会使得偏导值越大,从而模型学习速度更快。所以,使用逻辑函数得到概率,并结合交叉熵当损失函数时,在模型效果差的时候学习速度比较快,在模型效果好的时候学习速度变慢。

sigmoid(softmax)+cross-entropy loss 擅长于学习类间的信息,因为它采用了类间竞争机制,它只关心对于正确标签预测概率的准确性,忽略了其他非正确标签的差异,导致学习到的特征比较散。基于这个问题的优化有很多,比如对softmax进行改进,如L-Softmax、SM-Softmax、AM-Softmax等

以上代码源于《深度学习入门:基于Python的理论与实现》

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值