- Word2Vec 的原理,使用的技巧? https://mp.weixin.qq.com/s/lerKdFXkhqQaaVl4BGgblA
- Word2Vec 的多层 softmax 是怎么实现的,思路是怎样的,损失函数变化 nlp中的词向量对比:word2vec/glove/fastText/elmo/GPT/bert - 知乎
- Word2vec的损失函数 10.2. 近似训练 — 《动手学深度学习》 文档 (当简历上没什么项目和实习的时候,面试官就喜欢问Word2vec,非常的无聊)
- 为什么基于 skip-gram 的 word2vec 在低频词汇相比 cbow 更有效?为什么会好?word2vec模型cbow与skip-gram的比较
- Word2Vec 怎么将得到的词向量变成句子向量,以及怎么衡量得到词向量的好坏Word2Vec 怎么将得到的词向量变成句子向量,以及怎么衡量得到词向量的好坏_Matrix_cc的博客-CSDN博客
- Word2vec为什么会有用?word2vec本质是把相似的词或者上下文相近的词映射到几乎是同一个点,所以语义相近的词的weight是接近的,那样做下游任务比随机初始化的词向量要好
- word2vec的缺点是什么?1、结构太简单,无法更好地学习句法知识和语义知识。2、没办法解决OOV 。3、没法解决词语顺序的问题。4、没法解决一词多义的问题
- 层次softmax为什么要以词频构建二叉树 Word Embedding的hierarchical softmax为什么要选择依靠词频建立二叉树? - 知乎
- 负采样的是如何带权采样的,为什么负采样权重开 3/4 次幂?为什么Word2Vec训练中, 需要对负采样权重开3/4次幂? - 知乎
- 负采样的负样本和层次softmax的负样本有什么不一样?负采样的负样本的个数是固定的,层次softmax的负样本是不均衡的,词频高的词里根节点接近,采样到的负样本就比较少,低频词采样的负样本就比较多。
- fasttext 、word2vec、glove、elmo、bert、GPT、xlnet 的区别,fasttext相比于 word2vec 有什么优势,它是怎么做分类的
- textcnn 原理,为什么选择用2,3,4不同尺寸的卷积核
- BiLSTM+Attention 是怎么分类的 深度学习算法原理——Attention-Based BiLSTM_null的专栏-CSDN博客
- Transformer的结构,multi-head Attention 的作用 Ps. pytorch手动实现一下multi-head
Transformer中Multi-head Attention的作用_Matrix_cc的博客-CSDN博客 decode部分的query来自decode,而key和value来自encode部分import torch import torch.nn as nn class MultiHeadAttention(nn.Module): def __init__(self, d_model, num_heads): super(MultiHeadAttention, self).__init__() assert d_model % num_heads == 0 self.d_model = d_model self.num_heads = num_heads self.head_dim = d_model // num_heads # 定义线性变换层,用于将d_model维度映射到num_heads * head_dim self.q_linear = nn.Linear(d_model, d_model) self.k_linear = nn.Linear(d_model, d_model) self.v_linear = nn.Linear(d_model, d_model) # 输出层,将num_heads * head_dim映射回d_model self.out_linear = nn.Linear(d_model, d_model) self.dropout = nn.Dropout(0.1) def forward(self, query, key, value, mask=None): """ Args: query: (batch_size, query_len, d_model) key: (batch_size, key_len, d_model) value: (batch_size, value_len, d_model) mask: 可选,用于遮盖padding部分或后续序列的位置 (batch_size, query_len, key_len) """ batch_size = query.size(0) # 线性变换 q = self.q_linear(query) # (batch_size, query_len, d_model) k = self.k_linear(key) # (batch_size, key_len, d_model) v = self.v_linear(value) # (batch_size, value_len, d_model) # 将d_model分割成num_heads个头 q = q.view(batch_size, -1, self.num_heads, self.head_dim).transpose(1, 2) # (batch_size, num_heads, query_len, head_dim) k = k.view(batch_size, -1, self.num_heads, self.head_dim).transpose(1, 2) # (batch_size, num_heads, key_len, head_dim) v = v.view(batch_size, -1, self.num_heads, self.head_dim).transpose(1, 2) # (batch_size, num_heads, value_len, head_dim) # 计算注意力得分 scores = torch.matmul(q, k.transpose(-2, -1)) / math.sqrt(self.head_dim) # (batch_size, num_heads, query_len, key_len) # 应用mask if mask is not None: scores = scores.masked_fill(mask == 0, float('-inf')) # 计算注意力权重 attn_weights = torch.softmax(scores, dim=-1) attn_weights = self.dropout(attn_weights) # 加权求和得到输出 context = torch.matmul(attn_weights, v) # (batch_size, num_heads, query_len, head_dim) # 合并多头并进行线性变换 context = context.transpose(1, 2).contiguous().view(batch_size, -1, self.d_model) # (batch_size, query_len, d_model) output = self.out_linear(context) # (batch_size, query_len, d_model) return output, attn_weights # 示例使用 mha = MultiHeadAttention(d_model=512, num_heads=8) query = torch.randn(10, 32, 512) # 假设输入 key = value = query # 为了简化示例,假设query、key、value相同 output, attn = mha(query, key, value) print(output.shape) # 应输出 (10, 32, 512)
- Transformer的位置编码和bert的位置编码的区别,为什么要加位置编码?Transformer的位置编码是人为定义,bert是自己学习的,像word Embedding一样在训练中学习到它的词序信息。因为传统LSTM的模型自带词序信息,而Transformer不带词序信息,所以需要加上位置编码。
- Transformer里self-attention 中词向量不乘 QKV 参数矩阵,会有什么问题?
Self-Attention 的核心是用文本中的其它词来增强目标词的语义表示,从而更好的利用上下文的信息。self-attention 中,sequence 中的每个词都会和 sequence 中的每个词做点积去计算相似度,也包括这个词本身。如果不乘 QKV 参数矩阵,那这个词对应的 q,k,v 就是完全一样的。在相同量级的情况下,qi 与 ki 点积的值会是最大的(可以从 “两数和相同的情况下,两数相等对应的积最大” 类比过来)。那在 softmax 后的加权平均中,该词本身所占的比重将会是最大的,使得其他词的比重很少,无法有效利用上下文信息来增强当前词的语义表示。而乘以 QKV 参数矩阵,会使得每个词的 q,k,v 都不一样,能很大程度上减轻上述的影响。
- Transformer的残差作用 :减少梯度消失和梯度爆炸的问题,同时能解决退化问题。退化问题是指:当网络隐藏层变多时,网络的准确度达到饱和然后急剧退化,而且这个退化不是由于过拟合引起的。
- Transformer 怎么解决长文本问题?
- Transformer是postnorm还是prenorm?pre norm就是在残差前norm,x+F(Norm(x)),这样残差的效果更强,训练计算量更低,但是会削弱模型深度带来的增益。post norm就是正常bert用的,在残差后面加,Norm(x+F(x)),深度带来的效果更明显,但是计算量会更大,目前post norm认为更适合
- Transformer里使用的是LN还是BN Ps. LN的原理,pytorch手动实现一下
- Transformer为什么要用LN,而不是BN transformer 为什么使用 layer normalization,而不是其他的归一化方法? - 知乎
- Transformer 模型中 dropout 主要用在哪里?在每一Multi-Head Attention之后,Add&Norm之前进行dropout,以及add(token embedding,positional encoding)之后进行dropout
- self-attention里为什么要除以根号d? 为了降低 Q*K 的数值,防止它落入到 softmax 函数的饱和区间。因为 softmax 函数的饱和区梯度几乎为 0,容易发生梯度消失。
- Transformer为什么表现的比LSTM和CNN好?为什么transformer比RNN和LSTM更好?_None_Pan的博客-CSDN博客_transformer比lstm好吗
- BERT为什么表现好 一起读论文 | 为什么BERT会在许多NLP任务中表现得很好?_语言智能技术笔记簿-CSDN博客 1、预训练数据较大和使用两种预训练的方式2、使用的模型结构较LSTM和CNN较好 3、模型层数深
- BERT的三个embedding为什么可以想加?答案
- BERT的缺点:1、无法解决长文本问题 2、输入噪声 [MASK],造成预训练 - 精调两阶段之间的差异 3、生成任务表现不佳:预训练过程和生成过程的不一致,导致在生成任务上效果不佳 4、位置编码使用绝对编码 后BERT时代:15个预训练模型对比分析与关键点探索(附链接) | 机器之心
- Bert里的mask机制?是随机 mask 语料中 15% 的 token,其中80% 的单词用 [MASK] token 来代替,10% 单词用任意的词来进行代替,10% 单词不变。
- BERT为什么要保持10% 单词不变,10%的单词用任意的词代替?
- bert里的mask和word2vec里的CBOW的区别?
相同点:CBOW 的核心思想是,给定上下文,根据它的上文 context-before 和下文 context-after 去预测 input word。Bert 本质上也是如此。
不同点:首先,在 CBOW 中,每个单词会称为 input word,而 Bert 中只有 15% 的词会称为 input word。其次,对于数据输入部分,CBOW 中的输入数据只有待预测单词的上下文,而 Bert 的输入是带有 [MASK] token 的 “完整” 句子,也就是说 Bert 在输入端将待预测的 input word 用 [MASK] token 代替了。
另外,通过 CBOW 模型训练后,每个单词的 word embedding 是唯一的,因此并不能很好的处理一词多异的问题;而 Bert 模型得到的 word embedding (token embedding)融合了上下文信息,就算是同一个单词,在不同的上下文环境下,得到的 word embedding 是不一样的。
-
BERT为什么用字粒度而不是用词粒度?因为在做MLM预训练任务时,最后预测单词是用softmax进行预测。使用字粒度的话,总字数大概在2w左右,而使用词粒度的话,则有十几万个词,在训练时显存会爆炸。
-
BERT不同层针对NLP的什么任务? POS、成分分析、DEPS、Entities、SRL、COREF、关系分类,从上到下,越往下这个任务越需要偏向高层语义的知识才能解决好。POS 词性标注是简单任务,偏向表层特征,关系分类则是纯语义的任务,不理解语义便无法很好的解决任务,从上到下逐渐趋向语义任务。张俊林:BERT和Transformer到底学到了什么 | AI ProCon 2019 - 云+社区 - 腾讯云
- HMM 和 CRF 的原理和区别,其中维特比算法的复杂度 区别:
1.HMM 是生成模型,CRF 是判别模型
2.HMM 是概率有向图,CRF 是概率无向图
3.HMM 求解过程可能是局部最优,CRF 可以全局最优
4.HMM是做的马尔科夫假设,而CRF是马尔科夫性,因为马尔科夫性是是保证或者判断概率图是否为概率无向图的条件 、
-
HMM原理:三个问题:1、概率计算问题:前向—后向算法 给定模型 λ=(A,B,π) 和观测序列 Q={q1,q2,...,qT},计算模型 λ 下观测到序列 Q 出现的概率 P (Q|λ);2、学习问题:Baum-Welch 算法 (状态未知) 已知观测序列 Q={q1,q2,...,qT},估计模型 λ=(A,B,π) 的参数,使得在该模型下观测序列 P (Q|λ) 最大 3、预测问题:Viterbi 算法 给定模型 λ=(A,B,π) 和观测序列 Q={q1,q2,...,qT},求给定观测序列条件概率 P (I|Q,λ) 最大的状态序列 I。
-
BiLSTM+CRF模型中,CRF层的作用?1、CRF 层可以为最后预测的标签添加一些约束来保证预测的标签是合法的。在训练数据训练过程中,这些约束可以通过 CRF 层自动学习到的。2、CRF 中有转移特征,即它会考虑输出标签之间的顺序性,也会学习一些约束规则 BiLSTM-CRF中CRF层的作用 - 程序员大本营
- Albert里的SOP为什么会有效?
ALBERT 认为,NSP (下一个句子预测) 将话题预测和连贯预测混为一谈。作为参考,NSP 使用了两个句子 —— 正样本匹配是第二个句子来自同一个文档,负样本匹配是第二个句子来自另一个文档。相比之下,ALBERT 的作者认为句子间的连贯是真正需要关注的任务 / 损失,而不是主题预测,因此 SOP 是这样做的:
使用了两个句子,都来自同一个文档。正样本测试用例是这两句话的顺序是正确的。负样本是两个句子的顺序颠倒。
- bert 里 add&norm 是什么以及作用
- local attention 和 global attention 的区别:一文看懂 Attention(本质原理+3大优点+5大类型) - 产品经理的人工智能学习库
- Attention的理解和它的优缺点:Attention即从大量的信息中选择出少量的重要信息,并聚焦到这些重要信息上,忽略大多不重要的信息。权重越大越聚焦于其对应的 Value 值上,即权重代表了信息的重要性,而 Value 是其对应的信息。 优点:
参数少
模型复杂度跟 CNN、RNN 相比,复杂度更小,参数也更少。所以对算力的要求也就更小。
速度快
Attention 解决了 RNN 不能并行计算的问题。Attention 机制每一步计算不依赖于上一步的计算结果,因此可以和 CNN 一样并行处理。
效果好
在 Attention 机制引入之前,有一个问题大家一直很苦恼:长距离的信息会被弱化,就好像记忆能力弱的人,记不住过去的事情是一样的。
缺点:没法捕捉位置信息,即没法学习序列中的顺序关系。这点可以通过加入位置信息,如通过位置向量来改善 - Bahdanau 和 Luong 两种 Attention 机制的区别:一文看懂 Bahdanau 和 Luong 两种 Attention 机制的区别 - 知乎
- graph embedding 的原理
- TF-IDF 的原理 TF-IDF原理及使用_一路风景-CSDN博客_tfidf
- n-gram原理及有哪些平滑处理 自然语言处理NLP中的N-gram模型_songbinxu的博客-CSDN博客_n-gram
- 解决OOV的方法: NLP 研究主流目前如何处理 out of vocabulary words?
- 词向量的降维
- nlp 分词技术有哪些,如何分的
- nlp有哪些数据增强的方法 自然语言处理中一些常用的数据增强的方式_Matrix_cc的博客-CSDN博客
- 文本预处理的方法有哪些
- 大模型相关面试 https://zhuanlan.zhihu.com/p/643560888
- 大模型教程 大模型教程
- Prompt系列调参原理 PEFT | Prompt系列高效调参原理解析
- chatGLM、LLAMA原理
- 序列太长为什么是问题,对应的解决方案是什么?
- Agent听说过? CoT听说过? SFT数据配比,DPO原理,PPO原理,后续有哪些改进
- GPT模型是怎么解决 decoder串行训练效率低下的问题
- GPT模型的损失函数是什么,跟SFT过程有差异吗,具体的前向过程是什么样的
- page attention、flash attention原理
- LoRA原理、QLoRA原理,两者区别
- pre-norm、post-norm改善了什么问题
- dpo、ppo原理
- dpo 怎么解决分布漂移的问题,ppo优势函数如何计算
- moe专家网络怎么解决不均衡的问题
常见的面试问题————NLP篇(持续更新)
于 2020-05-04 10:37:13 首次发布