一、残差连接的作用是什么?
残差连接的主要作用是解决深层神经网络的优化难题。具体来说:
①它通过y = x + F(x)的结构,提供了梯度的直接传播路径 ,有效缓解了梯度消失问题。
②它让网络能够轻松学习恒等映射,当某些层不需要时,可以直接跳过,避免了深层网络的性能退化。
③在Transformer中,残差连接与层归一化结合,确保了多头注意力和前馈网络在几十层深度下仍能稳定训练 ,这是BERT、GPT等大模型成功的关键技术支撑。
可以说,没有残差连接,我们就无法构建如今这种规模的深度学习模型。
二、attention为什么使用多头?
①表达能力增强:通过引入多个注意力头,每个头都可以关注不同的语义信息,从而能够捕捉更丰富的特征表示。不同的注意力头可以学习到不同的关注权重分布,帮助模型更好地理解输入序列的不同部分。
②模型泛化性能提升:通过多头机制,模型可以同时考虑多个关注粒度的信息。每个头可以关注序列中的不同位置或不同的关系,使得模型能够处理不同尺度和不同层次的语义关系。这有助于提高模型在不同任务和不同数据集上的泛化性能。
③抗噪能力增强 :多头机制能够减少注意力机制中的随机性,因为每个头都可以专注于不同的注意力权重。这样可以降低模型对于噪声的敏感性 ,提高模型的鲁棒性和稳定性。
④并行计算加速:注意力机制的计算通常是高度并行的,而多头注意力进一步增加了并行计算的程度。多个注意力头可以同时计算,加快了模型的训练和推理速度。
三、transformer中multi-head attention每个头为什么要进行降维?
①在Transformer的Multi-Head Attention中,对每个head进行降维是为了增加模型的表达能力和效率。每个head是独立的注意力机制,它们可以学习不同类型的特征和关系。通过使用多个注意力头,Transformer可以并行地学习多种不同的特征表示,从而增强了模型的表示能力。
②然而,在使用多个注意力头的同时,注意力机制的计算复杂度也会增加。原始的缩放点积注意力Scaled Dot-Product Attention的计算复杂度为O(d²) ,其中d是输入向量的维度。如果使用h个注意力头,计算复杂度将增加到O(hd²) 。这可能会导致Transformer在处理大规模输入时变得非常耗时。
③通过降低每个head的维度,Transformer可以在保持较高的表达能力的同时,大大减少计算复杂度。降维后的计算复杂度为O(h°d²),其中°d是降维后的维度。通常情况下,会远小于原始维度d,这样就可以显著提高模型的计算效率。
四、lambda表达式格式以及应用场景?
lambda函数就是可以接受任意多个参数(包括可选参数)并且返回单个表达式值的函数。语法:lambda [arg1 [,arg2, argn]]:expression
应用:
①lambda函数比较轻便,即用即仍,适合完成只在一处使用的简单功能。
②匿名函数,一般用来给filter,map这样的函数式编程服务
③作为回调函数,传递给某些应用,比如消息处理。
五、在transformer架构中有几种掩码,作用分别是什么?
掩码的核心是屏蔽无效或不允许的信息,防止注意力机制在计算时访问这些位置,transformer架构中有两种掩码,分别是填充掩码与未来信息掩码。
①填充掩码:由于输入模型的数据要保持等长,那么较短的文本就需要做Padding处理,因此这部分信息是无效的,所以需要填充掩码。
②未来信息掩码:由于transformer是并行的、一次性输入数据,所以解码时需要防止未来信息被模型看到,保证自回归生成的性质,因此需要未来信息掩码。
六、fasttext和word2vec差异?
① Word2Vec: Word2Vec模型主要有两种训练算法,分别是CBOW(Continuous Bag of Words)和Skip-gram,CBOW以上下文预测中间,Skip-gram以中间预测上下文
② FastText: FastText是基于Word2Vec的扩展,它将单词视为字符级别的n-gram序列的集合。FastText通过学习字符级别的n-gram向量表示来捕捉词汇内部的信息,并将它们组合成单词向量。
七、bert和transformer的区别?
BERT是基于Transformer架构的模型, 采用了Transformer Encoder的部分, 舍弃了Decoder的部分.
BERT的编码器包含12层 Encoder Block, 而2017版本的Transformer包含6层Encoder Block.
BERT中的位置编码是可训练的 , 而Transformer中是写死不变的.
Transformer中的激活函数采用Relu , BERT中的激活函数采用Gelu
八、BERT非线性的来源在哪里?
主要来自两个地方:前馈层的gelu激活函数和self-attention。
①前馈神经网络层:在BERT的Encoder中,每个自注意力层之后都跟着一个前馈神经网络层。前馈神经网络层是全连接的神经网络,通常包括一个线性变换和一个非线性的激活函数,如gelu。这样的非线性激活函数引入了非线性变换,使得模型能够学习更加复杂的特征表示;
②self-attention layer:在自注意力层中,查询(Query)、键(Key)、值(Value)之间的点积得分会经过softmax操作,形成注意力权重,然后将这些权重与值向量相乘得到每个位置的自注意输出。这个过程中涉及了softmax操作,使得模型的计算是非线性的
九、模型训练的流程是怎样的?
(14251)
编写存储模型训练使用的各种路径和超参数的配置文件;
准备数据→准备模型→准备损失函数→准备优化器;
内层遍历轮次,外层遍历批次;
模型预测→计算损失→梯度损失→自动微分→参数更新;
保存模型或训练好的参数字典
十、什么是梯度爆炸和梯度消失,lstm是如何缓解的?
梯度爆炸指的是在反向传播过程中,梯度值变得非常大,导致权重更新过大,模型难以收敛。梯度消失指的是在反向传播过程中,梯度值变得非常小,导致权重更新过小,模型难以学习长期依赖关系。
LSTM是一种特殊的RNN变体,通过引入门控机制来解决梯度消失问题。LSTM中的门控单元(GateUnits)可以控制信息的流动,允许模型选择性地保留和更新信息。LSTM中的遗忘门(ForgetGate)可以决定前一时刻的记忆是否被遗忘,输入门(InputGate)可以决定当前输入的哪部分信息被添加到记忆中,输出门(OutputGate)可以决定输出的哪部分记忆被传递到下一层或输出层。通过门控机制LSTM可以有效地捕捉和传递长期依赖关系,从而解决了传统RNN中的梯度消失问题。