
深度学习理论
文章平均质量分 70
神经网络常用模型与技巧
旺旺棒棒冰
做正确的事,正确得做事
展开
-
CRF 的损失函数计算过程详解
CRF 的损失函数计算过程详解原创 2022-11-27 17:22:03 · 1037 阅读 · 0 评论 -
中文拼写检查-Dynamic Connected Networks for Chinese Spelling Check
中文拼写检查论文原创 2022-11-01 14:59:58 · 462 阅读 · 0 评论 -
Focal loss及其实现
Focal loss 出自ICCV2017RBG和Kaiming大神的论文Focal Loss for Dense Object Detection对标准的交叉熵损失做了改进,效果如上图所示。标准的交叉熵损失函数见:loss函数之NLLLoss,CrossEntropyLoss_ltochange的博客-CSDN博客_nll函数横坐标为,代表样本实际类别的预测概率,越大,代表样本越容易进行分类,纵坐标为loss。通过引入调制系数可减少loss中易分类样本的权重,从而使得模型在...原创 2022-01-09 18:48:33 · 2443 阅读 · 0 评论 -
FLOPs衡量模型复杂度
FLOPS:注意全大写,是floating point operations per second的缩写,意指每秒浮点运算次数,理解为计算速度。是一个衡量硬件性能的指标。FLOPs:注意s小写,是floating point operations的缩写(s表复数),意指浮点运算数,理解为计算量。可以用来衡量算法/模型的复杂度。作者:泓宇链接:https://www.zhihu.com/question/65305385/answer/451060549来源:知乎...转载 2021-08-31 15:32:13 · 1226 阅读 · 0 评论 -
transformer中的attention为什么scaled
transformer中的attention为什么scaled简单的说是为了上attention得到的权值更加均匀一点。在数量级较大时,softmax将几乎全部的概率分布都分配给了最大值对应的标签。详见 transformer中的attention为什么scaled如果本身就想获得差距较大的attention值,可以不用scaled。例如在这个ner任务里面...原创 2021-08-27 17:44:08 · 539 阅读 · 0 评论 -
pytorch之LayerNorm
LayerNorm 相比 BatchNorm 有以下两个优点:LN 针对单个训练样本进行,不依赖于其他数据,因此可以避免 BN 中受 mini-batch 数据分布影响的问题,可以用于 小mini-batch场景、动态网络场景和 RNN,特别是自然语言处理领域。LN 不需要保存 mini-batch 的均值和方差,节省了额外的存储空间。更具体介绍参考模型优化之Layer Normalizationy=x−E[x]Var[x]+ϵ∗γ+βy=\frac{x-\mathrm{E}[x]}{\sq原创 2021-08-24 16:30:26 · 2434 阅读 · 0 评论 -
Normalization的总结框架
转自知乎详解深度学习中的Normalization,BN/LN/WN,仅供自己学习记录,如有侵权,请联系删除通用公式:h=f(g⋅x−μσ+b)h=f\left(\mathbf{g} \cdot \frac{\mathbf{x}-\mu}{\sigma}+\mathbf{b}\right)h=f(g⋅σx−μ+b)BNμ=1M∑xi\mu=\frac{1}{M} \sum x_{i} μ=M1∑xiσ=1M∑(xi−μi)2+ϵ\sigma=\sqrt{\frac{1}{M} \转载 2021-08-23 20:10:27 · 122 阅读 · 0 评论 -
pytorch之BatchNorm
为了解决 Internal Covariate Shift问题引入,该问题具体表现为:中间层输入分布总是变化,增加了模型拟合的难度。中间层输入分布会使输出逐渐靠近激活函数梯度较小的地方,导致梯度消失BatchNorm就是在深度神经网络训练过程中使得每一层神经网络的输入保持相同分布的,训练过程中,在输入到激活函数之前,对每个batch输入,做如下处理:在训练过程中,通过以上处理,使得每个batch保持相同分布;如下图所示,训练过程为第1-6行,这里需要注意的是BN层是引入了可训练参数的β\be原创 2021-08-23 17:01:17 · 8824 阅读 · 1 评论 -
树结构模型
(1) Recursive Deep Models for Semantic Compositionality Over a Sentiment Treebank (RNTN模型)来源:EMNLP2013网址:https://nlp.stanford.edu/~socherr/EMNLP2013_RNTN.pdf代码:https://github.com/alsoltani/RNTN(2) Long Short-Term Memory Over Tree Structures来源:ICML201原创 2021-07-20 20:01:39 · 197 阅读 · 0 评论 -
标准的LSTM网络以及公式
LSTM使用一个特殊的存储记忆单元可以改善RNN的梯度消失问题,因此在许多自然语言处理任务中它比RNN有更好的性能。LSTM单元的基本结构如下图所示。它由输入门iti_{t}it,忘记门ftf_{t}ft,输出门oto_{t}ot,以及一个记忆单元ctc_{t}ct组成。给定一个文本序列x={x1,x2,…,xn},xtx=\left\{x_{1}, x_{2}, \ldots, x_{n}\right\}, x_{t}x={x1,x2,…,xn},xt 表示当前时间步ttt的输入,h原创 2021-07-20 19:52:44 · 759 阅读 · 0 评论 -
合页损失函数
这里介绍得是统计学习方法中提到的二分类合页损失函数hinge loss对于包含NNN个样本的数据D(x,y)D(x,y)D(x,y)。xxx代表样本输入,yyy代表真实的标签,yyy中元素的值属于{1,−1}\{1,-1\}{1,−1},分别表示正类与负类。 第nnn个样本对应的losslossloss,如下:ln=max(0,1−y(wxn+b))l_{n}=max(0,1-y(wx_{n}+b))ln=max(0,1−y(wxn+b))当1−y(wxn+b)<01-y(wx_{n}+b原创 2021-07-12 19:23:36 · 1206 阅读 · 0 评论 -
Distance Metric Learning
图片来自论文Improved Deep Metric Learning with Multi-class N-pair Loss ObjectiveDistance Metric Learning学习的相对距离,而不在乎实际的值。包含如图所示的两种形式,xxx是代表输入样本,yyy是代表对应的标签,fff是代表模型:(1)contrastive loss:输入是两个(组)样本,计算loss时,需要区分两个样本是否属于同类,若属于同类,loss等于距离的值,若不属于同类并且距离大于m,loss的值忽略不.原创 2021-07-12 18:58:02 · 409 阅读 · 0 评论 -
loss函数之MarginRankingLoss
MarginRankingLoss排序损失函数对于包含NNN个样本的batch数据 D(x1,x2,y)D(x1,x2,y)D(x1,x2,y), x1x1x1, x2x2x2是给定的待排序的两个输入,yyy代表真实的标签,属于{1,−1}\{1,-1\}{1,−1}。当y=1y=1y=1是,x1x1x1应该排在x2x2x2之前,y=−1y=-1y=−1是,x1x1x1应该排在x2x2x2之后。第nnn个样本对应的losslossloss计算如下:ln=max(0,−y∗(x1−x2)+margin原创 2021-07-12 17:29:20 · 11515 阅读 · 2 评论 -
loss函数之KLDivLoss
KL散度KL散度,又叫相对熵,用于衡量两个连续分布之间的距离,公式如下:DKL(p∥q)=∑i=1Np(xi)⋅(logp(xi)−logq(xi))D_{K L}(p \| q)=\sum_{i=1}^{N} p\left(x_{i}\right) \cdot\left(\log p\left(x_{i}\right)-\log q\left(x_{i}\right)\right)DKL(p∥q)=∑i=1Np(xi)⋅(logp(xi)−logq(xi))KLDivLossKL算散原创 2021-07-12 15:01:51 · 9021 阅读 · 5 评论 -
Meta-Learning
元学习包括Zero-Shot/One-Shot/Few-Shot 学习,模型无关元学习(Model Agnostic Meta Learning) 和元强化学习(Meta Reinforcement Learning)等元学习的训练样本和测试样本都是基于任务的。元学习是要去学习任务中的特征表示,从而在新的任务上泛化用于训练任务的训练集称为support set,测试集称为query set从图中可以看出,测试任务和训练任务内容完全不同。注意一下几种学习方法思想区别:传统深度学习终身学习原创 2021-06-28 11:13:29 · 317 阅读 · 0 评论 -
loss函数总结
1. 平均绝对误差2. 均方误差原创 2021-06-22 09:28:19 · 400 阅读 · 0 评论 -
loss函数之CosineEmbeddingLoss,HingeEmbeddingLoss
CosineEmbeddingLoss余弦相似度损失函数,用于判断输入的两个向量是否相似。 常用于非线性词向量学习以及半监督学习。对于包含NNN个样本的batch数据 D(a,b,y)D(a,b,y)D(a,b,y)。aaa,bbb 代表模型输出,yyy代表真实的类别标签,yyy中元素的值属于{1,−1}\{1,-1\}{1,−1},分别表示相似与不相似。 第iii个样本对应的losslossloss,如下:li={1−cos(ai,bi), if yi=1max(0,cos原创 2021-06-20 22:23:29 · 33374 阅读 · 7 评论 -
loss函数之MultiLabelSoftMarginLoss
MultiLabelSoftMarginLoss不知道pytorch为什么起这个名字,看loss计算公式,并没有涉及到margin。 按照我的理解其实就是多标签交叉熵损失函数,验证之后也和BCEWithLogitsLoss的结果输出一致例子:import torchimport torch.nn.functional as Fimport torch.nn as nnimport mathdef validate_MultiLabelSoftMarginLoss(input, target)原创 2021-06-20 16:00:47 · 8832 阅读 · 0 评论 -
loss函数之MultiMarginLoss, MultiLabelMarginLoss
MultiMarginLoss多分类合页损失函数原创 2021-06-20 00:00:19 · 8542 阅读 · 2 评论 -
loss函数之SoftMarginLoss
SoftMarginLoss用于二分类任务对于包含NNN个样本的batch数据 D(x,y)D(x, y)D(x,y), xxx代表模型输出,yyy代表真实的类别标签,yyy中元素的值属于{1,−1}\{1,-1\}{1,−1}。losslossloss计算如下:loss=∑ilog(1+exp(−y[i]∗x[i])) x.nelement ()loss= \frac{\sum_{i}\log (1+\exp (-y[i] * x[i]))}{\text { x.neleme原创 2021-06-19 23:08:23 · 2371 阅读 · 0 评论 -
loss函数之TripletMarginLoss与TripletMarginWithDistanceLoss
triplet loss 可应用于分类,表征任务。给定张量aaa,ppp,nnn, 分别代表锚点,正例和负例,以及距离函数ddd, 用于度量锚点与正例负例之间的句子。对于包含NNN个样本的batch数据 D(a,p)D(a, p)D(a,p)ℓ(a,p,n)=L={l1,…,lN}⊤,li=max{d(ai,pi)−d(ai,ni)+margin,0}\ell(a, p, n)=L=\left\{l_{1}, \ldots, l_{N}\right\}^{\top}, \quad l_{i}=\m原创 2021-06-18 23:44:24 · 3841 阅读 · 0 评论 -
loss函数之PoissonNLLLoss,GaussianNLLLoss
PoissonNLLLoss真实标签服从泊松分布的负对数似然损失泊松分布:P(Y=k)=λkk!e−λP(Y=k)=\frac{\lambda^{k}}{k !} e^{-\lambda}P(Y=k)=k!λke−λk是target$\lambda$ 是inputtarget∼Poisson(input)loss(input,target)=input−target∗log(input)+log(target!)对于包含NNN个样本的batch数据 D(x,y)D(x, y)D(原创 2021-06-16 00:15:55 · 6273 阅读 · 2 评论 -
loss函数之NLLLoss,CrossEntropyLoss
NLLLoss负对数似然损失函数,用于处理多分类问题,输入是对数化的概率值。对于包含NNN个样本的batch数据 D(x,y)D(x, y)D(x,y),xxx 是神经网络的输出,并进行归一化和对数化处理。yyy是样本对应的类别标签,每个样本可能是CCC种类别中的一个。lnl_{n}ln 为第nnn个样本对应的losslossloss,0≤yn≤C−10 \leq y_{n} \leq C-10≤yn≤C−1ln=−wynxn,ynl_{n}=-w_{y_{n}} x_{n, y_{n}}ln原创 2021-06-15 12:36:52 · 4604 阅读 · 2 评论 -
loss函数之L1Loss,MSELoss,SmoothL1Loss, HuberLoss
L1Loss平均绝对误差(MAE),用于回归模型对于包含NNN个样本的batch数据 D(x,y)D(x, y)D(x,y),losslossloss计算如下:loss=1N∑n=1Nlnloss=\frac{1}{N} \sum_{n=1}^{N} l_{n}loss=N1∑n=1Nln其中,ln=∣xn−yn∣l_{n}=\left|x_{n}-y_{n}\right|ln=∣xn−yn∣class L1Loss(_Loss): __constants__ = ['redu原创 2021-06-14 23:22:11 · 10454 阅读 · 3 评论 -
loss函数之BCELoss, BCEWithLogitsLoss
import torchimport torch.nn.functional as Fimport torch.nn as nninput = torch.randn((3, 2), requires_grad=True)target = torch.rand((3, 2), requires_grad=False)print(input.size())print(target.size())loss = F.binary_cross_entropy(torch.sigmoid(input)原创 2021-06-11 00:02:30 · 5971 阅读 · 9 评论 -
优化函数框架
框架该总结框架来自知乎文章:一个框架看懂优化算法之异同 SGD/AdaGrad/Adam给定参数www,损失函数f(w)f(w)f(w), 学习率 α\alphaα,对于第ttt个step:计算目标函数关于当前参数的梯度: gt=∇f(wt)g_{t}=\nabla f\left(w_{t}\right)gt=∇f(wt)根据历史梯度,计算一阶动量和二阶动量:一阶动量:mt=ϕ(g1,g2,⋯ ,gt)m_{t}=\phi\left(g_{1}, g_{2}, \cdots, g_{t}\r转载 2021-05-22 15:50:52 · 138 阅读 · 0 评论 -
指数加权平均EWA
指数加权平均定义来自维基百科指数移动平均(exponential moving average,EMA或EWMA)是以指数式递减加权的移动平均。各数值的加权影响力随时间而指数式递减,越近期的数据加权影响力越重,但较旧的数据也给予一定的加权值设时间t{t}t的实际数值为θt\theta_{t}θt,而时间ttt的EMA则为vtv_{t}vt;时间t−1{t-1}t−1的EMA则为vt−1v_{t-1}vt−1,计算时间t≥2t≥2t≥2的EMA公式为:vt=βvt−1+(1−β)θtv_{t原创 2021-05-20 11:38:59 · 2637 阅读 · 0 评论 -
深度学习之dropout
原始论文:http://www.cs.toronto.edu/~rsalakhu/papers/srivastava14a.pdfdropout:为了防止训练过拟合,在训练过程中随机丢弃一部分输出(经常有人说随机丢弃掉一些神经元,感觉不是很准确)上图对应公式:不使用dropout:使用dropout:实现代码import numpy as npdef dropout(x, level): if level < 0. or level >= 1: # level是概原创 2021-05-12 11:42:15 · 271 阅读 · 0 评论