AI
devil_son1234
这个作者很懒,什么都没留下…
展开
-
论文笔记:Self-critical Sequence Training for Image Captioning
论文链接:Self-critical Sequence Training for Image Captioning引言现在image caption主要存在的问题有:exposure bias:模型训练的时候用的是叫“Teacher-Forcing”的方式:输入RNN的上一时刻的单词是来自训练集的ground-truth单词。而在测试的时候依赖的是自己生成的单词,一旦生成得不好就会导致误差的积累,导致后面的单词也生成得不好。模型训练的时候用的是cross entropy loss,而eval转载 2021-03-18 11:07:00 · 355 阅读 · 0 评论 -
【自然语言处理】聊聊曝光误差(Exposure Bias)怎么被解决的
前言曝光误差(exposure bias)简单来讲是因为文本生成在训练和推断时的不一致造成的。不一致体现在推断和训练时使用的输入不同,在训练时每一个词输入都来自真实样本(GroudTruth),但是在推断时当前输入用的却是上一个词的输出。解决方案1.使用scheduled-sampling,简单的做法就是在训练阶段使用的输入以p的概率选择真实样本,以1-p的概率选择上一个词的输出。而这个概率p是随着训练次数的增加衰减,可以使用指数函数的衰减,或者反sigmoid函数或者线性函数。2.在l转载 2021-03-15 09:29:58 · 803 阅读 · 0 评论 -
切比雪夫多项式(Chebyshev Polynomials)
切比雪夫多项式在逼近理论中有重要的应用。这是因为第一类切比雪夫多项式的根(被称为切比雪夫节点)可以用于多项式插值。相应的插值多项式能最大限度地降低龙格现象,并且提供多项式在连续函数的最佳一致逼近。注意:此处应该为...转载 2021-01-20 19:44:13 · 4453 阅读 · 0 评论 -
如何防止Tensorflow分配整个GPU内存?
我在共享计算资源的环境中工作,也就是说,我们有几台服务器机器都配备了几个Nvidia Titan X GPU。对于小到中等尺寸的模型,Titan X的12GB通常足以让2-3人在同一GPU上同时进行训练。如果模型足够小,以至于单个模型不能充分利用Titan X的所有计算单元,那么实际上可以导致某种加速(相比串行多个训练任务来说)。即使在GPU的并发访问确实减慢了单个训练时间的情况下,同时在GPU上拥有多个用户运行的灵活性仍然不错。TensorFlow的问题在于,默认情况下,它会在GPU启动时为其分配转载 2020-11-02 11:14:44 · 227 阅读 · 0 评论 -
ELMo解读
文章目录 前言 一. ELMo原理 1. ELMo整体模型结构 2. 字符编码层 3. biLMs原理 4. 生成ELMo词向量 5. 结合下游NLP任务 二. PyTorch实现 1. 字符编码层 2. biLMs层 3. 生成ELMo词向量 三. 实验 四. 一些分析 1. 使用哪些层的输出? 2. 在哪里加入ELMo? 3. 每层输出的侧重点是什么? 4. 效率分析 五. 总转载 2020-10-15 19:57:21 · 1407 阅读 · 0 评论 -
【评价标准】MRR-推荐算法评价指标
平均倒数排名(Mean Reciprocal Rank, MRR)是一个国际上通用的对搜索算法进行评价的机制。描述结果列表中,第一个结果匹配,分数为1,第二个匹配分数为0.5,第n个匹配分数为1/n,如果没有匹配的句子分数为0。最终的分数为所有得分之和,再求平均数学形式正确检索结果值在检索结果中的排名来评估检索系统的性能。其中,是用户的个数,是对于第个用户,推荐列表中第一个在ground-truth结果中的item所在的排列位置。举例假如检索三次的结果如下,需要的结果(cat转载 2020-09-22 11:42:28 · 1978 阅读 · 0 评论 -
Batch Normalization
Batch Normalization原理:概念的引入:Internal Covariate Shift : 其主要描述的是:训练深度网络的时候经常发生训练困难的问题,因为,每一次参数迭代更新后,上一层网络的输出数据经过这一层网络计算后,数据的分布会发生变化,为下一层网络的学习带来困难(神经网络本来就是要学习数据的分布,要是分布一直在变,学习就很难了),此现象称之为InternalInternal Covariate Shift。Covariate Shift: ...转载 2020-09-21 19:25:20 · 121 阅读 · 0 评论 -
bpe分词算法的原理
概述:bpe(bytepair encoding),是一种根据字节对进行编码的算法。主要目的是为了数据压缩,算法描述为字符串里频率最常见的一对字符被一个没有在这个字符中出现的字符代替的层层迭代过程。该算法在论文:https://arxiv.org/abs/1508.07909Neural Machine Translation of Rare Words with Subword Units详细介绍训练过程:对于使用子词作为基本单位进行训练的神经机器翻译模型,训练的第一步就是根据语料生成bp..转载 2020-08-26 17:38:52 · 1620 阅读 · 0 评论 -
Negative Sampling 负采样详解
假设有一句话:,由n个词组成的一句话,我们需要最大化窗口中上下文词的概率: 这里的表示中心词的context words,我们在计算的时候,可以把相乘的元素转换成对数函数: 我们把概率函数可以进行展开就可以得到: ...转载 2020-07-12 19:11:34 · 1409 阅读 · 0 评论 -
NLP之---word2vec算法skip-gram原理详解
1.词嵌入(word2vec)自然语言是一套用来表达含义的复杂系统。在这套系统中,词是表义的基本单元。顾名思义,词向量是用来表示词的向量,也可被认为是词的特征向量或表征。把词映射为实数域向量的技术也叫词嵌入(word embedding)。近年来,词嵌入已逐渐成为自然语言处理的基础知识。2.为何不采用one-hot向量【如何使用one-hot】 1、 假设词典中不同词的数量(词典大小)为N,每个词可以和从0到N−1的连续整数一一对应。这些与词对应的整数 ...转载 2020-07-12 16:43:02 · 826 阅读 · 0 评论 -
【正则化】L2正则化为什么能够使得模型更简单?
模型产生过拟合的现象表现为:在训练集上误差较小,而在测试集上误差较大。并且笔者还说到,之所以产生过拟合现象是由于训练数据中存在一定的噪音,而我们为了尽可能的做到拟合每一个样本点(包括噪音),往往就会使用复杂的模型。最终使得训练出来的模型很大程度上受到了噪音数据的影响,例如真实的样本数据可能更符合一条直线,但是由于个别噪音的影响使得训练出来的是一条弯曲的曲线,从而使得模型在测试集上表现糟糕。因此,我们可以将这一过程看作是糟糕的训练集导致了糟糕的泛化误差。但仅仅从过拟合的表现形式来看糟糕的测试集(噪音多)也能导转载 2020-07-06 17:06:27 · 625 阅读 · 0 评论 -
模型的改善与泛化(过拟合)
1 拟合由于拟合(fitting)这个概念还并没有介绍,这里稍微补充以下。所谓求解模型的过程,其实就是通过某种方式(例如梯度下降)来拟合模型参数的过程。拟合指的就是一个寻找模型参数的、动态的过程。当这个过程执行结束后就会产生多种拟合后的状态,例如过拟合、欠拟合等。1.1 引例假设现在有一批样本点,它本是由函数sin(x)生成(现实中并不知道),但由于其他因素的缘故,使得我们拿到的样本点并没有准确的落在曲线sin(x)上,而是分布在其附近。上图中红色圆点就是我们拿到的数据集,蓝色曲线为..转载 2020-07-06 14:59:31 · 554 阅读 · 0 评论 -
模型的改善与泛化(偏差方差与交叉验证)
1 偏差与方差1.1 定义在机器学习的建模中,模型普遍的误差都是来自于偏差(bias)和方差(variance)。那什么又是偏差与方差呢如上图所示[1],假设你拿着一把冲锋枪打击红色的靶心,在你连打数十枪后出现了以下四种情况:所有子弹都密集打在靶心旁边的位置,这就是典型的方差小(子弹很集中),偏差大(距离靶心甚远); 子弹都散落在靶心周围的位置,这就是典型的方差大(子弹很散乱),偏差小(都在靶心附近); 子弹都散落在靶心旁边的位置,这就是典型的方差大(子弹散乱),偏差大(距离靶心甚远转载 2020-07-06 14:31:27 · 359 阅读 · 0 评论 -
机器学习中正则化项L1和L2的直观理解
正则化(Regularization)机器学习中几乎都可以看到损失函数后面会添加一个额外项,常用的额外项一般有两种,一般英文称作转载 2020-06-07 15:11:45 · 447 阅读 · 0 评论 -
注意力机制的基本思想和实现原理
注意力模型最近几年在深度学习各个领域被广泛使用,无论是图像处理、语音识别还是自然语言处理的各种不同类型的任务中,都很容易遇到注意力模型的身影。所以,了解注意力机制的工作原理对于关注深度学习技术发展的技术人员来说有很大的必要。人类的视觉注意力从注意力模型的命名方式看,很明显其借鉴了人类的注意力机制,因此,我们首先简单介绍人类视觉的选择性注意力机制。 ...转载 2020-06-04 11:37:41 · 1237 阅读 · 0 评论 -
神经网络参数初始化方法
神经网络模型一般依靠随机梯度下降进行模型训练和参数更新,网络的最终性能与收敛得到的最优解直接相关,而收敛结果实际上又很大程度取决于网络参数的最开始的初始化。理想的网络参数初始化使模型训练事半功倍,相反,糟糕的初始化方案不仅会影响网络收敛,甚至会导致梯度弥散或爆炸。参数初始化的理想状态是参数正负各半,期望为0。过大或者过小的初始化如果权值的初始值过大,则会导致梯度爆炸,使得网络不收敛;过小的权值初始值,则会导致梯度消失,会导致网络收敛缓慢或者收敛到局部极小值。如果权值的初始值过大,则loss.原创 2020-05-31 18:30:29 · 2285 阅读 · 0 评论 -
mAP(mean average precision)平均精度均值
多标签图像分类(Multi-label Image Classification)任务中图片的标签不止一个,因此评价不能用普通单标签图像分类的标准,即mean accuracy,该任务采用的是和信息检索中类似的方法—mAP(mean Average Precision)。mAP虽然字面意思和mean accuracy看起来差不多,但是计算方法要繁琐得多,以下是mAP的计算方法:首先用训练好的模型得到所有测试样本的confidence score,每一类(如car)的confidence score保转载 2020-05-26 16:34:01 · 1643 阅读 · 1 评论 -
LSTM与GRU有什么联系和区别?
LSTM结构中的C(cell),和GRU结构中的H(隐藏单元),有什么联系和区别?LSTM中的C和GRU中的H都是经过了遗忘和输入门(GRU中的更新们也是由遗忘和输入门组成的),也都是未经过输出门而直接往后传递的。他们有什么区别呢?我自己的猜想:GRU的重置门就相当于LSTM中的更新门。LSTM中的C经过输出门之后形成了H,因为有输出门所以H更关注当前状态的信息,而C携带者之前的所有状态的信息。GRU中的H就相当于LSTM中的C同样也携带者之前状态的信息,GRU中的重置门就相当于LSTM中的输转载 2020-05-21 19:55:38 · 819 阅读 · 0 评论 -
循环神经网络系列(七)Tensorflow中ConvLSTMCell
前面一文我们简单得介绍了ConvLSTM得原理和应用场景,现在来看看在Tensorflow它具体是如何实现得。 值得一说得是Tensorflow在实现这个算法得时候并没有使用peepholes,即下面的红色部分,而是基于原始的LSTM网络结构改变的。不过在最后,我也会给出一个仿照Tensorflow实现的基于peepholes的ConvLSTM版本。1.用法在接受具体用法前,先来大致解释一下参数。由于该算法是CNN与LSTM的一个结合,所以在说到对其中各个参数理解的时候,我会将其类比于CN...转载 2020-05-21 19:04:57 · 1047 阅读 · 0 评论 -
Convolutional LSTM Network: A Machine Learning Approach for Precipitation Nowcasting
这篇文章来大致介绍一下ConvLSTM的基本原理和应用场景。个人认为有时候对于一个算法改进很大程度上会受到应用场景的启示,比如现在要说的这篇。不知道论文作者当时想到这个idea时是不是也是这样。1.论文的核心思想先来想象一下这么一个应用场景:根据某个城市历史的降雨量数据,来预测在接下来的某个时间t降雨量的多少。根据作者的思路:a先将城市划分成个格子,每个格子代表一个小的区域(例如) ; b.每个格子里面的数值表示在某个时间间隔内的降雨量(例如6分钟)如下图所示:因此,对于每一个时..转载 2020-05-21 15:48:59 · 615 阅读 · 0 评论 -
循环神经网络系列(五)Tensorflow中BasicLSTMCell
1.结论2.怎么来的?让我们一步一步从Tensorflow的源码中来获得这些信息!2.1cell.state_size首先,需要明白Tensorflow中,state表示的是cell中有几个状态。例如在BasicRNNCell中,state就只有h这一个状态;而在BasicLSTMCell中,state就有h和c这两个状态。其次,state_size表示的是每个状态的第二维度,也就是output_size。import tensorflow as tfoutput_size .转载 2020-05-21 14:23:21 · 615 阅读 · 0 评论 -
循环神经网络系列(三)Tensorflow中MultiRNNCell
经过前面两篇博文,我们介绍了如何定义一个RNN单元,以及用dynamic_rnn来对其在时间维度(横轴)上展开。我们今天要介绍的就是如何叠加多层RNN单元(如双向LSTM),同时对其按时间维度展开。具体多层RNN展开长什么样呢?还是用最直观的图来展示,如下所示:其中A,B分别表示两个RNN单元,然后再分别对其按时间维度time_step=3进行展开,最终形成了两层,包含两个状态和3个输出。要完成这样一个例子,在Tensorflow中该如何来实现呢?1. 先定义两个RNN单元def get.转载 2020-05-21 13:39:01 · 436 阅读 · 0 评论 -
循环神经网络系列(二)Tensorflow中dynamic_rnn
1、循环神经网络的模型一般进行如下操作:输入得到;然后输入得到;然后输入得到,以此类推;那么如何通过Tensorflow一步实现呢?2. dynamic_rnn为了实现一步计算多次,我们就要用到Tensorflow中的dynamic_rnn(),代码如下(实现了上图列出的三步):import tensorflow as tfimport numpy as npfrom tensorflow.python.ops import variable_scope as vsoutp转载 2020-05-21 11:15:47 · 335 阅读 · 0 评论 -
循环神经网络系列(一)Tensorflow中BasicRNNCell
1.结论先回忆一下RNN的计算公式: output_size = 10batch_size = 32cell = tf.nn.rnn_cell.BasicRNNCell(num_units=output_size)input = tf.placeholder(dtype=tf.float32,shape=[batch_size,150])h0 = cell.zero_state(batch_size=batch_size,d...转载 2020-05-21 10:02:57 · 307 阅读 · 0 评论 -
卷积神经网络
一个新的激活函数——Relu最近几年卷积神经网络中,激活函数往往不选择sigmoid或tanh函数,而是选择relu函数。Relu函数的定义是:Relu函数图像如下图所示:Relu函数作为激活函数,有下面几大优势:速度快和sigmoid函数需要计算指数和倒数相比,relu函数其实就是一个max(0,x),计算代价小很多。 减轻梯度消失问题回忆一下计算梯度的公式。其中,是sigmoid函数的导数。在使用反向传播算法进行梯度计算时,每经过一层sigmoid神经元,梯度就要乘上一个。..转载 2020-05-17 16:52:04 · 1354 阅读 · 0 评论 -
递归神经网络
递归神经网络是啥因为神经网络的输入层单元个数是固定的,因此必须用循环或者递归的方式来处理长度可变的输入。循环神经网络实现了前者,通过将长度不定的输入分割为等长度的小块,然后再依次的输入到网络中,从而实现了神经网络对变长输入的处理。一个典型的例子是,当我们处理一句话的时候,我们可以把一句话看作是词组成的序列,然后,每次向循环神经网络输入一个词,如此循环直至整句话输入完毕,循环神经网络将产生对应的输出。如此,我们就能处理任意长度的句子了。入下图所示:然而,有时候把句子看做是词的序列是不够的,比如下面转载 2020-05-09 19:24:25 · 945 阅读 · 0 评论 -
学习率衰减方法
分段常数衰减分段常数衰减是在事先定义好的训练次数区间上,设置不同的学习率常数。刚开始学习率大一些,之后越来越小,区间的设置需要根据样本量调整,一般样本量越大区间间隔应该越小。tf中定义了tf.train.piecewise_constant 函数,实现了学习率的分段常数衰减功能。tf.train.piecewise_constant( x, boundaries, ...翻译 2020-04-22 14:58:20 · 1654 阅读 · 0 评论 -
长短时记忆网络(LSTM)
长短时记忆网络是啥长短时记忆网络的思路比较简单。原始RNN的隐藏层只有一个状态,即h,它对于短期的输入非常敏感。那么,假如我们再增加一个状态,即c,让它来保存长期的状态,那么问题不就解决了么?如下图所示:新增加的状态c,称为单元状态(cell state)。我们把上图按照时间维度展开:上图仅仅是一个示意图,我们可以看出,在t时刻,LSTM的输入有三个:当前时刻网络的输入值、上一...翻译 2020-04-13 18:33:30 · 1257 阅读 · 0 评论 -
循环神经网络
基本循环神经网络下图是一个简单的循环神经网络如,它由输入层、一个隐藏层和一个输出层组成:如果我们把上面的图展开,循环神经网络也可以画成下面这个样子:这个网络在t时刻接收到输入之后,隐藏层的值是,输出值是。关键一点是的值不仅仅取决于,还取决于。我们可以用下面的公式来表示循环神经网络的计算方法: 式1是输出层的计算公式,输出层是一个全连接层,也就是它的每个节点...翻译 2020-04-10 18:55:51 · 1850 阅读 · 0 评论