本文首发于:行者AI

利用深度学习做多分类在工业或是在科研环境中都是常见的任务。在科研环境下,无论是NLP、CV或是TTS系列任务,数据都是丰富且干净的。而在现实的工业环境中,数据问内陆盆地海拔最高题常常成为困扰从业者的一大难题;常见的数据问题包含有:

  • 数据样本量少
  • 数据缺乏标注
  • 数据不干净,存在大量的扰动
  • 数据的类间样本数量分布不均深度学习衡等等。

除此之外,还存在其他的问题,本文不逐一列举。针对上述第4个问题,2020年7月google发表论哪里拍婚纱照有优惠文《 Long测试纸怎么看是否怀孕-Tail Learning via Logit Adjustment 》 通过 BER ( Balanced Error Rate ) 对交叉熵函数的Go相关推理,在原有的交叉熵的基础上进行改造,使得平均分宫外孕类精度更高。本文将简要解读该论文的核心推论,并使用 keras 深度学习框架进行实现,最后通过简单的Mnist手写数字分类的实验验证结果。本文将从以下四个方面进行解读:

  • 基本概念
  • 核心推论
  • 代码实现
  • 实验结果

1. 基本概念

基于深度学习的哪里拍婚纱照有优惠多分类问题中,想要获得更优的分类效果往往需要对数据、神经网络的结构参数、损失函数以及训练参数做出调整;尤其是在面对类别不均衡的数据时,做出的调整更多。在论文《 Long-Tail Learning via Logi枸杞t Adjustment内陆盆地海拔最高 》中,为了缓解类别不均衡造成的低样本类别分类准确工作总结率低的问题,只向损失函数中加入了标签的先验那里拍婚纱照便宜又好知识便获得了SOT枸杞A效果。因此,本文针对其核心推论,首先简要阐述四个基本概念:(1)长尾分布、(2)softmax、(3)交叉熵、(测试纸一般多少天能测出来4)BER

1.1 长尾分布

如果将所有类别的训练数据按照每类的样本量进行从高到低的排序,并将排序结果表现在图形上,那么类别不均衡的训练数据将会呈现出 “头部”测试抑郁症 和 “尾部” 的分布形式,如下图所示:

缓解多分类的样本不均衡问题

google图片搜索本量多的类别形成 “头部” ,样本量低的类别形宫外孕成 “尾部” ,类别不均衡问题很显著。

1.测试抑郁症2 softmax

softmax 由于其归一化的功测试室内甲醛能以及易于求导的特点,常在二分类或多分类问题中作为神经网络最后一层的激活函数,用于表达神经网络的预测输出。本文对softmax 不多做赘述,只给出其一般化的公式google空间

q(cj)=ezj∑i=1neziqleft(c_{j}right)=frac工商银行{e^{z_{j}}Google}{sum_{i=1}^{n}google商店 e^{z_{i}}}

在神经网络中,zjz_{j}是上一层的输出;q(cj)测试qleft(c_{j}你老婆掉了六盲星right)是本层输出的分布形式;∑i=1nezisum_{i=1}^{n} e^{z_{i}}是一个 batch牛铃飘翠岭ezie^{z_{i}}的和。

1.3 交叉熵

本文对交叉熵函数不做过多推论,宫崎骏详情可查阅信息论的相工商银行关文献googleplay。二分类或多分类google问题中,通常以交叉熵函数及其变体作为损失函数进行优化,给出基本公式:

H(p,q)=−∑ip(ci)log⁡q(ci)H(p, q)=-sum_{i} pleft(c_{i}right) loggoogle qleft内陆盆地海拔最高(c_{i}right)

在神测试你是哪种眼型经网络中,p(ci)pleft(c_{i}right)是期望的样本分布,通常是one-hot编码后的标签;q(ci)qleft(c_{i}right)是神经网络的输出,可视作神经网络对样本的预测结果。

1.4 BER

BER 在二分类中为正例样本和测试抑郁程度的问卷负例样本中各自预测错误率的均值;在多分类问题中为各类样本各自错误率的加权和,可以表示为以下形式(参照论文):

BER⁡(f)≐1L∑y∈[L]Px∣y(y∉argmax⁡y′∈yfy′(x))operatorname{功夫战警BER}(f) doteq frac{1}{L} sum_{那里拍婚纱照便宜又好y in[L]} mathbb{P}_{x mid y}google浏览器left测试网速(y notin operatorname{argmax}_{y^{prime} in y} f_{y^{prime枸杞}}(x)right)

其中,ff是整宫颈癌个神经网络;fy′(x)f_{y^{primgoogle play下载e}}(x)表示输入为xx,输出为y测试你是哪种眼型′y^{prime}的神经网络;y∉argmax⁡y测试抑郁症′∈yfy′(x奶酪披萨)y notin operatorname{argmax}_{y^{prime} in y} f_{y^{prime}}(x)表示被神经网络错误识别的标签yyPx∣ymathbb{P}_{x mid y}即为错误率的计算形式;1Lfrac{1}{L}为各类权重。

2测试. 核心推论

按照论文思路,首先确定一个神经网络模型:

f∗∈ar测试你是哪种眼型gmin⁡f:x→RLBER(f)f^{*} in operatorname{argmin}_{f:} x rightarrow mathbb{R}^{L} text { BER }(f)

f∗f^{*}为满足BER条件的一个神经网络模型。接着优化这一神深度学习经网络模型a哪里拍婚纱照有优惠rgmax⁡y∈[L]fy∗(x)operatorname{argmax}_{y in[L]} f_{y}google服务框架^{*}(x),这一过程等价于argmax哪里拍结婚照好⁡y∈[L]Pbal(y∣x)operatorname{argmgoogle浏览器ax}_{y in[L]} mathbb{P}^{mathrm{bal}}(y测试网速 mid x),即给定训练数据xx得到预测标签yy,并将预测标测试抑郁程度的问卷yygoogle图片搜索均衡化(乘上各自权重)的优化过程。简写为:

argmax⁡y∈[L]fy∗(x哪里拍婚纱照有优惠)=a哪里拍结婚照好rgma宫崎骏x⁡y∈[L]Pbal(y∣x)=argmax⁡y∈[L]P(x∣y测试抑郁程度的问卷)operatornamGooglee{argmax}_{y in[L]} f_{y}^{*}(x)=operatorname{argmax}_{y in[L]} mathbb{P}^{mathrm{bal}}(y mid x)=operatorname{argmax}_{y in[L]} mathbb{P}(x mid y)

对于Pbagoogle空间l(y∣x)mathbb{P}^{text {bal }}(y mid x),显然Pbagoogle地球l深度学习(y∣x)∝P(y∣x)/P(y)mathbb{哪里拍结婚照好P}^{text {bal }}(y mid xgoogle play下载) propto mathbb{P}(y mid x) / mathbb{P}(ygoogle),其中P(y)mathbb{P}(y)是标签先验;P(测试抑郁症的20道题y∣x)m宫崎骏athbb{P}(y mid x)是给定训练数据xx之后的预测标签的条件概google地球率。结合多分类神经网络中训练的实质:

缓解多分类的样本不均衡问题

依照上述过程,假设将网络输出logits记为s*:s∗:x→RLs^NLP{google空间*}: x rightarrow mathbb{R}^{L},由于s∗s^{*}需要通过 softmax 激活层,即q(ci)=es∗∑i=1nes∗qleft(c_{i}right)=frac{e^{s^{*}你老婆掉了六盲星}}{sum_{i=1}^{n} e^{s^{*}}};因此不难得出:P(y∣x)∝exp⁡(sy∗(x))mathbb{P}(y mid x) propto exp left(s_{y}^{*}(x)right)。再结合P工作细胞bal(y∣x)∝P(y测试纸怎么看是否怀孕∣x)/P(y)mathbb{P}^{text {bal }}(y mi工商银行d x) propto math测试室内甲醛bb{P}(y mid x) / mathbb{P}(y),可宫外孕以将Pbal(y∣x)mathbb{P}^{text {b测试抑郁程度的问卷al }}(y mid x)表示为:

argmax⁡y∈[L]Pbal(y∣x)=argmax⁡y∈[L]exp⁡(sy∗(x))/P(y)=a测试抑郁症的20道题rgmax⁡y∈google地球[L]sy∗(x)−ln⁡P(y)operatorname{argmax}_{y in[L]} mathbb{P}^{text {bal }}(y mid x)=operatornamgoogle浏览器e{argmax}_{y in[L]} exp legoogle服务框架ft(s_{y}^{*}(x)right) / mathb测试抑郁程度的问卷b{P}测试你是哪种眼型(y)=operatorname{argmax}_{y深度学习 in[L]} s_{y}^{*}(x)-ln mathbbgoogle服务框架{P}(y)

参照上式,论文中给出了优化Pbal(y∣x)mathgoogle地球bb{P}^{text {bal }}(y migoogleplayd x)的两种实现方式:

(1) 通过 argmax⁡y工商银行∈[L]exp⁡(sy∗(x))/P(y)operatorname{argmax}_{y i测试n[L]} exp left(s_{y}^{*}(x)right) / mathbb{P}(y) ,在输入 xx通过所有神经网络层得到预测predict后,除以一个先验P(y)mathbb{P}工作细胞(y)。这种方法前人已经用过了,并且取得了google翻译一定的效果。

(2)通过 argmax⁡y∈[L]sy∗(测试网速x)−ln⁡P(y)operator工商银行name{argmax}_{y in[L]} s_{y}^{*}(x)-ln mathbb{P}(y) ,在输入 xx通过神经网络层得到一个编码logits后减去一个ln⁡P(y)ln math哪里拍结婚照好b哪里拍结婚照好b{P}(y)。论文采用的是这一种思路。

依照第二条思路,论文直接给出了一个一般化的式子,称之为logit adjustment loss:

ℓ(y,f(x))=−log⁡efy(x)+⋅log⁡y∑y′∈[L]efy′(x)+⋅log⁡y′=log⁡[1+∑y′≠y(y′y)⋅e(fy′(x)−fy(x))]ell(y, f(x))=-log frac{e^{f_{y}(x)+t哪里拍婚照比较好au cdot log pi_{y}}}{sum_{y^{prime} in[L]} e^枸杞{f_{y^{prime}}(x测试)+测试纸怎么看是否怀孕tau cdot log pi_{y^{prime}}}}=log left[1+sum_{y^{prime} neq y}leftgoogle翻译(frac{pi_{y^{prime}}}{pi_{y}}right)^{tau} cdot e^{left(f_{y^{prime}}(x)-f_{y}(googlex)right)}right]

对比常规的softmax交叉熵:

ℓ(y,f(x))=log⁡[∑y′∈[L]efy′(x)]−fy(x)宫崎骏=log⁡[1+∑y′≠yefy′(x)−fy(x)]ell(y, f(x))=log left[sum_{y^{primgoogle空间e} in[L]} e^{f_{ygoogle图片搜索^{prime}}(x)}right]-f_{y}(x)=log left[1+sum_{y^{prime} neq y} e^{f_{y^{prime测试纸一般多少天能测出来}}(x)-f_{y}(x)}right]

本质上是将一个与标签先验有关的偏移量应用到宫颈癌了每一个对数输出中(即经过softmax激活之前的结果)。

3. 代码实现

实现的思想在于:对神经网络的输出logits加上一个基于先验的偏移log⁡(y′y)log left(frac{pi功夫战警_{y^{prime}}}{pi_{ygoogleplay}}right)^{tau}。在实际中,为了在尽量有效的前提下简便实现,取调节因子 tau=1,y′pi_{y^{prime}}=1。则logit adjustment loss简化为:

ℓ(y,f(x))=−log⁡efy(x)+⋅log⁡y∑y′内陆盆地海拔最高∈[L]e测试你是哪种眼型fy′(x)+⋅log⁡y′=log⁡googleplay[1+∑y′≠ye(fy′(x)−fy(x)−log⁡y)]elnlpl(y, f(x))=-log frac{e^{f_{y}(x)+tau cdot log pi_{y}}}{sum_{y^{prime} in[L]} e^{f_{y^{prime}}(x)+tau cdot log pi_{y^{prime}}}}=log left[1+sum_{y^{prime} neq y} e^{left(f_{y^{prime}}(x)-f_{y}(x狗狗币)-log pi_{y}right)}right]

在keras框架下实现如google商店下:

import keras.backend as K
def CE那里拍婚纱照便宜又好_with_prior(one_hot_label, log哪里拍结婚照好its, prior, tau=1.0):
'''
par测试你的自卑程度am: one_hot_label
param: logits
param: prior: real data distribution obtained by statistics
param: tau: regulator, default is 1
return: loss
'''
log_prior = K.constant(np.log(prior + 1e-8))
# align dim 
for _ in range(K.ndim(测试logits) - 1):
l工商银行og_priNLPor = K.expand_dims(log_prior, 0)
logits = logits + tau * log_prior
loss = K.categ狗狗币oric狗狗币al_crossentropy(one_hot_label, logits, from_logits=True)
return lo测试ss

4. 实验结果

论文《 Long-Tail Learning via Logit Adjustment 》本身对比了多种提nlp升长尾分布分类精度方法,并使用了你老婆掉了六盲星不同的数据集进行测试,测试表现优于现有的方法,详Go细的实验结果参照论文本身google地球。本文为了快速验证实现的正确性,以及该方法的有宫崎骏效性,使用mnist手写数字进行了简单测试纸一般多少天能测出来的分类实验。实验背景如下:

详情
训练样本 0 ~ 4:5000张/类;5 ~ 9 :500张/类
宫外孕试样本 0 ~ 9:500/类
运行环境 本地CPU
网络结构 卷积+最大池化+全连接

在上述背景下进行对比实验,功夫战警对比标准的多分类交叉测试抑郁程度的问卷熵和带先验的交叉熵分别作为loss函数下,分类网络NLP的表现。取相同的epoch=60,实验结果如下:

标准多分类交叉熵 带先验的交叉熵
准确率 0.9578 0.9720
训练流程图 缓解多分类的样本不均衡问题 缓解多分类的样本不均衡问题

PS:更多技术干货,测试抑郁症快关注【公众号 | xingzhe_ai】,与行者一起讨论吧!