这些知识点基本是本人在准备春招和秋招时做的笔记,东西比较杂,有的是自己总结,有的是参考网上博客,可能不是很准确,还望各位批评指正,多多交流。
答:
1:保留位置信息 ,对于文本数据来说,不同的位置信息可能会带来较大的影响
2:具备长距离特征捕获能力
答:
1:序列标注:中文分词,词性标注,命名实体识别,语义角色标注等
2:分类任务:文本分类,情感计算
3:句子关系判断:问答(QA),语义改写(这个不太明白),自然语言推理
4:生成式任务:机器翻译,文本摘要,对话系统
答:
因为其采取线性序列结构,不断从前往后收集输入信息,这样的结构适合文本类的序列数据。但是这样的结构在反向传播的时候存在问题,因为反向传播路径太长,容易导致梯度消失或梯度爆炸问题。另外一点,NLP的输入往往是不定长的线性序列句子,而RNN可以接收不定长的输入。
答:
通过增加中间状态信息直接向后传播,可以缓解梯度消失问题,同时对于捕获长距离特征也非常有效。
答:
**计算效率不高:**由于其本身的序列结构,使得其对大规模的并行运算来说并不友好,这是其本身的特性决定的是硬伤。
答:
由于其卷积核的大小k,其捕捉到的实际上是单词的k-gram片段信息。而由于单层的卷积核无法捕捉到远距离的特征,因此增加卷积层数可以提高CNN特征提取器的远距离特征提取能力。另外还可以采用Dilated卷积,跳着卷积。
答:
1:远距离特征提取能力比较差:可以通过增加卷积层数或者采用Dilated卷积法进行改进
2:位置信息可能被破坏:RNN和CNN实际上天然地保留了文本的位置信息,但是CNN中的池化层(Max pooling)却可能会破坏了原本的位置信息。这个问题可以使用Skip Connection(残差网络)来辅助优化,相当于把位置信息直接传递给下游。
答:
并行计算能力:其不依赖单词之间的序列信息,不同卷积核之间的计算是相互独立的,同一卷积核之间不同的滑动窗口之间也是互不依赖的因此其并行度非常高,适合工业界的快速部署和实现。
答:
word->word embedding->positonal embedding->self anttention(multi-head self-attention)->add&Normalize->feed forward->add&normalize
答:
通过设定句子的最大长度来解决,对于不那么长的句子,则通过padding进行填充。这个其实限制了其处理较长句子的能力,也算是其一个缺点吧。
答:
不加不行,因为其不想RNN和CNN天然地包含了句子的位置和顺序信息,所以可以不加,但是transformer却并没有这个特性,因此,如果希望其包含位置信息,就必须加入positional embedding。
答:
Attention机制,在encoder中式self-attention,在decoder中既包含self-attention又包含encoder-decoder attention。因为在集成信息的时候,当前单词和句子中或者别的句子中的任意单词都做了关联,而且这个关联计算式同时进行的,不想RNN通过隐藏层的节点序列向后传递,也不像CNN那样通过增加网络深度来捕获,因此其具有较好的计算性能,同时还能获取很好的特征信息。因此attention的运用便是transformer成功的关键,所以其作者才说,嗨兄弟,啥也别看了,注意力给你包圆了(Attention is all your need!)
答:
Latent Dirichlet Allocation(LDA)是一种无监督发现预料库底层主题的主题建模算法。是一种生成概率模型,它基于词袋假设,忽略文档中文字的顺序。其基本思想是每个文档都是由不同的主题组合而成的,而每个主题是通过单词的分布来描述的。
答:
1:Glibbs Sampling :吉布斯采样,避免直接计算积分问题。通过交替采样其中的隐变量(固定其他变量)来估计参数。
2:Maximum a posteriori(MAP)(不太清楚)
3:Expect Maximization(EM)
答:
1:协同过滤(CF):发现用户和物品之间的隐藏关系
2:基于内容的推荐:不只利用普通的TF-IDF来提取每个物品的文本数据特征向量,而且还通过LDA来对这些文本数据的主题进行建模。
答:
各个归一化技术最本质的区别在于归一化时选取的集合或者维度不同。
1:批归一化(Batch NOrmalization):常用于CV领域,是在batch size这个维度进行的
2:层归一化(Layer Normalization):常用于NLP领域,在transformer里有用,是在Hidden size这个维度进行归一化的
3:幂归一化(Power Norm):是BN的改进,
这类归一化技术的目的是让每一层的分布稳定下来,也可以在训练初期缓解梯度消失和爆炸的问题。另一个原因可能是它可以让loss曲面变得更加平滑。但是具体的原因还是没有弄明白。
答:
1:将不易处理的文本数据转化为数值型数据,便于计算机处理
2:把维数为所有单词的数量的高维空间嵌入到了一个较低维度的连续向量空间,提高模型的训练速度
3:使得映射过去的词向量具有一定的语义信息
答:
语言模型本质上就是用来判断一段文本是否正常,或者能够给出一句话的评分,或者是给出这句话出现的概率有多大。
答:
1:基于频率(离散式表示):one-hot, count vector(Bag of word),TF-IDF,Co-Occurence vector
2:基于预测(分布式表示):CBOW(continues bag of words), Skip-gram(携带上下文信息)
Word2vec, GloVe, FastText, WordRank, cw2ec, ELMO(Embedding from Language Models)
答:
优点:简单,易于理解
缺点:
1:单词数量过多,产生数据稀疏和维度灾难问题
2:单词之间是独立的(互相正交),不具有语义信息
答:
1:没有考虑单词的位置信息
2:词典规模过大,容易造成数据稀疏问题
答:
主要思想:对一一个单词来说,如果其在一个文档中出现的次数较多同时其在其他文档中出现的较少,那么其对于该文档的重要性就比较高。
缺点:
1:没有位置信息
2:数据稀疏
3:IDF是一种试图抑制噪声的加权,倾向于文本中频率比较小的词,容易过度放大生僻词的作用,有些热点事件人物等高频词也很重要
4:严重依赖语料库,特别是不同类别文档的数量存在数量级差距时。
答:
基本假设:语义相近的单词具有相似的上下文,通过指定大小的context窗口,计算两个单词的共现频率,获取共现矩阵,实现词向量的输出。
优点:相比于前几种基于频率的方法,它保留了一定的语义信息,考虑到了局部的顺序。
缺点:
1:维度过大,共现矩阵难以处理,可以通过SVD,PCA等进行降维操作,但是计算量会很大
2:加入新的单词后,需要重新计算整个共现矩阵,拓展性差
答:
首先CBOW和Skip-gram是两种实现嵌入的模型,而word2vec是实现这两个模型的算法,而实现模型的时候有两种解决方案,分别是hierarchical softmax和negative sampling。所以在word2vec的代码中有四种模型实现,分别是他们的四种组合。
答:
主要原因是使用了one-hot表示,各个单词之间是相互独立的,每次单词的训练的权重都之只和这个单词有关。
答:
优点:
1:考虑到了上下文信息,能够学习道一定的语义信息
2:降低了词向量的维度,加快下游模型的训练速度
3:在word2vec的源代码中,对高频词进行随机下采样,相当于丢弃了一些高频词,可以几块训练速度,可当作一种平滑方法。
缺点:
1:和基于频率的模型一样,无法区分多义词,属于静态词向量
2:由于中间做了平均操作,忽略了上下文中的位置信息
3:在单词数量很多的时候,使用softmax计算输出单词的概率,严重影响计算效率(hierarchical softmax和negative sampling基本就是为了解决这个问题的)
答:
1:首先是模型结构不同,前者是基于上下文预测目标词,后者是基于目标词预测上下文
2:前者(CBOW)的训练速度要快一些,因为其只需要计算一个单词的损失(softmax)
3:后者(hierarchical sampling)在小数据集上和生僻词的上的效果要好一些,因为前者在输入时对词向量进行了平均,相当于做了平滑处理,而平滑后的模型则更加容易忽略生僻词。
答:
1:从输入层到隐藏层的映射时直接通过加和求均值的方式进行的,没有使用线性变换加激活函数的方式
2:从隐藏层到输出层的计算,采用了层次化softmax,使用了霍夫曼树代替(将其视为一系列的二分类问题)。
答:
将单词按照频率大小分别映射到同一条线段上,频率越大占有的线段长度越长,(保证随机采样的结果大致时真实数据的表现)然后将线段分成m份,从m中随机抽取n个数,这些数落入哪个词的区间就代表采样到哪个词。
答:
实际上是一种平滑策略,加入次幂之后,会使得低频词映射的线段长度相对变长一些,高频词的相对变短一些,劫富济贫,可以缓解一部分数据稀疏问题。