AI题目整理

文章目录

1、网络配置时batchsize的大小怎样设置?过小和过大分别有什么特点?

Batch size是指一次迭代过程中,输入到神经网络的样本数量。
batchsize太小的缺点:
①耗时长,训练效率低。
②训练数据就会非常难收敛,从而导致欠拟合。
batchsize增大的优缺点
①大的batchsize减少训练时间
②大的batchsize所需内存容量增加
③大的batch size梯度的计算更加稳定
④大的batchsize可能导致模型泛化能力下降
一般需要考虑训练速度、泛化误差和模型收敛性等因素,根据模型的复杂度、训练数据集的大小、计算资源的可用性等因素进行调整,并结合实际情况进行优化调整。
在这里插入图片描述
batchsize太小的缺点&随着batchsize逐渐增大的优缺点&如何平衡batchsize的大小

2、设置学习率衰减的原因?

学习率控制了模型在每一次更新权重时所采取的步长大小。如果学习率过高,模型可能会无法收敛,导致训练不稳定;如果学习率过低,损失函数的变化速度很慢,会大大增加网络的收敛复杂度,并且很容易被困在局部最小值。
为了防止学习率过大,在收敛到全局最优点的时候会来回摆荡,所以要让学习率随着训练轮数不断按指数级下降,收敛梯度下降的学习步长。

深度学习——学习率衰减(learning rate decay)

3、有哪些分类算法?

常用的分类算法包括:NBC(Naive Bayesian Classifier,朴素贝叶斯分类)算法、LR(Logistic Regress,逻辑回归)算法、ID3(Iterative Dichotomiser 3 迭代二叉树3 代)决策树算法、C4.5 决策树算法、C5.0 决策树算法、SVM(Support Vector Machine,支持向量机)算法、KNN(K-Nearest Neighbor,K 最近邻)算法、ANN(Artificial Neural Network,人工神经网络)算法等。

数据挖掘算法——常用分类算法总结
【10分钟算法】朴素贝叶斯分类器-带例子/Naive Bayes Classifier
【10分钟算法】层次聚类之最近邻算法-带例子/Nearest Neighbor Algorithm
【五分钟机器学习】机器分类的基石:逻辑回归Logistic Regression
【五分钟机器学习】向量支持机SVM: 学霸中的战斗机

4、分类和回归的区别?

1、输出变量类型:分类问题的输出变量通常是离散的,表示数据点所属的类别或标签,而回归问题的输出是连续的,表示预测的数值
2、目的:分类问题的目的是对数据进行分类或标记,而回归问题的目的是找到最优拟合,通过回归算法得到是一个最优拟合线,这个线条可以最好的接近数据集中的各个点。
3、评估方法:分类问题通常使用准确率或 F1 分数等指标来评估模型的性能。对于回归问题,通常使用均方误差(Mean Squared Error,MSE)或平均绝对误差(Mean Absolute Error,MAE)等指标来评估模型的性能。
4、数据类型:分类问题通常使用分类数据,即离散变量。而在回归问题中,通常使用连续数据

【机器学习小常识】“分类” 与 “回归”的概念及区别详解

5、请描述一下K-means聚类的过程?

步骤
①首先确定要聚类的簇的个数 k,并选取 k 个随机数据点作为 k 个簇的初始中心点
②对于每一个剩余的数据点,计算其与每个簇的中心点之间的距离,并将该数据点分配到离其最近的簇中。

③对每个簇的数据点重新计算平均值(该簇各个点坐标之和/该簇数据点数)(X,Y分别加和),并将其视为新的簇中心点。这个过程一直执行,直到聚类结果不再发生显著改变或达到预设阈值为止。
④将每个数据点划分至距其最近的簇中,分配规则基于计算的距离
⑤重新计算每个簇的中心点,再次划分每个数据点。

重复步骤4和5直到算法收敛(每个簇的数据点个数不变或达到阈值)。

【10分钟算法】K均值聚类算法-带例子/K-Means Clustering Algorithm

6、训练集、测试集、验证集的作用?

训练集(train set):用于模型拟合的数据样本。在训练过程中对训练误差进行梯度下降,进行学习,可通过训练不断优化权重参数
验证集(validation set):是模型训练过程中单独留出的样本集,它可以用于调整模型的超参数(学习率等)、调整模型的架构(层数增减等)和用于对模型的能力进行初步评估。
测试集:用来评估模最终模型的泛化能力。但不能作为调参、选择特征等算法相关的选择的依据。
训练集、验证集、测试集的作用

7、请讲解一下k折交叉验证?

K折交叉验证的作用
当有多个不同的模型(结构不同、超参数不同等)可以选择时,我们通过K折交叉验证来选取对于特定数据集最好的模型。

K折交叉验证的流程
1、将含有N个样本的数据集,分成K份,每份含有N/K个样本。选择其中一份作为验证集,另外K-1份作为训练集,验证集就有K种情况。
2、在每种情况中,用训练集训练模型,用验证集测试模型,计算模型的泛化误差
3、交叉验证重复K次,平均K次的结果作为模型最终的泛化误差。
4、K的取值一般在[ 2 ,10 ]之间。K折交叉验证的优势在于,同时重复运用随机产生的子样本进行训练和验证,10折交叉验证是最常用的。
5、训练集中样本数量要足够多,一般至少大于总样本数的50%。
6、训练集和验证集必须从完整的数据集中均匀采样。均匀采样的目的是希望减少训练集、验证集与原数据集之间的偏差。当样本数量足够多时,通过随机采样,便可以实现均匀采样的效果。
机器学习_K折交叉验证知识详解(深刻理解版)(全网最详细)
k折交叉验证

8、分类和聚类的区别?

聚类(Clustering):将物理或抽象对象的集合分成由类似的对象组成的多个类的过程被称为聚类。
分类(Classification):在已有分类标准下,对新数据进行划分,分类。
在这里插入图片描述
聚类的基本概念-聚类与分类的区别
聚类(clustering)与分类(Classification)的区别

9、讲述一下梯度的概念?

梯度的本意是一个向量(矢量),表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模)
梯度概念

10、有监督学习、无监督学习和半监督学习的区别?

监督学习:在有监督学习中,训练数据集包含输入特征和对应的输出标签。模型的任务是学习输入特征与输出标签之间的关系,从而对新的输入数据进行分类或回归等。
非监督学习:在无监督学习中,训练数据集只包含输入特征,没有对应的输出标签。模型的任务是从数据中学习到一些结构或者规律,可以将数据聚类、降维等。
半监督学习:半监督学习是介于有监督学习和无监督学习之间的一种方法。在半监督学习中,训练数据集同时包含有标签数据和无标签数据。模型的任务是在有标签的数据和无标签的数据中学习结构或规律,并尝试使用这些结构或规律对无标签的数据进行预测分类或回归等任务。

机器学习中的有监督学习,无监督学习,半监督学习的区别

11、带核的SVM为什么能分类非线性问题?

SVM的本质是量化两类数据差异的方法,通过使用核函数,SVM 将数据从低维空间中投影到更高维的空间中,从而使得原本线性不可分的数据在新的高维空间中变得线性可分。而核函数能够提供高维度向量相似度的测量 ,通过选取合适的核公式,我们就可以不用知晓具体的维度转换函数而直接获得数据的高维度差异度,并以此来进行分类判断。
在这里插入图片描述
【数之道】支持向量机SVM是什么,八分钟直觉理解其本质
【数之道26】SVM支持向量机-核技巧Kernel Trick详解

12、请描述常见的梯度下降方法?

1、批量梯度下降(Batch Gradient Descent BGD)

批量梯度下降需要首先计算所有数据上的损失值,然后再进行梯度下降,具体的操作步骤是:遍历全部数据集算一次损失函数,然后算函数对各个参数的梯度,更新梯度。这种方法每更新一次参数,都要把数据集里的所有样本计算一遍,计算量大,计算速度慢,不支持在线学习。

2、随机梯度下降(Stochastic Gradient Descent SGD)

不使用全量的样本来计算梯度,而使用单一样本来近似估计梯度,可以极大地减少计算量,提高计算效率。具体的操作步骤是:每次从训练集中随机选择一个样本,计算其对应的损失和梯度,进行参数更新,反复迭代。
这种方式在数据规模比较大时可以减少计算复杂度,从概率意义上来说的单个样本的梯度是对整个数据集合梯度的无偏估计,但是它存在着一定的不确定性,因此收敛速率比批梯度下降得更慢。

3、小批量梯度下降(Mini-batch Gradient Descent)

为了克服上面两种方法的缺点,采用的一种折中手段:将数据分为若干批次,按批次更新参数,每一批次中的一组数据共同决定了本次梯度的方向,下降起来就不容易跑偏,减少了随机性,另一方面,因为批的样本数比整个数据集少了很多,计算量也不是很大。
每次使用多个样本来估计梯度,这样可以减少不确定性,提高收敛速率,其中每次迭代选取的样本数量称为批大小(batch size)。

史上最详细的梯度下降优化算法介绍(从SGD到Adam至Lookahead)

13、Momentum、Adagrad、RMSprop、Adam优化算法?

1、Momentum

SGD方法的一个缺点是其更新方向完全依赖于当前batch计算出的梯度,因而十分不稳定。Momentum算法借用了物理中的动量概念,它模拟的是物体运动时的惯性,即更新的时候在一定程度上保留之前更新的方向,同时利用当前batch的梯度微调最终的更新方向。这样一来,可以在一定程度上增加稳定性,从而学习地更快,并且还有一定摆脱局部最优的能力:

2、AdaGrad算法

即adaptive gradient,自适应梯度法。它通过记录每次迭代过程中的前进方向和距离,从而使得针对不同问题,有一套自适应调整学习率的方法,即不同的参数是需要不同的学习率的。具有损失较大偏导的参数相应地有一个快速下降的学习率,而具有小偏导的参数在学习率上有相对较小的下降。
AdaGrad旨在应用于凸问题时快速收敛,
优点:解决了SGD中学习率不能自适应调整的问题。
缺点:(1)对于训练深度神经网络模型而言,从训练开始时累积平方梯度值会越来越大,会导致学习率过早和过量的减少,从而导致迭代后期收敛及其缓慢。AdaGrad在某些深度学习模型上效果不错,但不是全部。(2)需要手动设置全局学习率

3、RMSProp算法

是AdaGrad算法的改进,修改AdaGrad以在非凸条件下效果更好,解决了AdaGrad所面临的问题。
RMSProp主要思想:使用指数加权移动平均的方法计算累积梯度,以丢弃遥远的梯度历史信息(让距离当前越远的梯度的缩减学习率的权重越小)。
优点:完全自适应全局学习率,加速效果好。
缺点:后期容易在小范围内产生震荡。

4、Adam算法

的本质其实就是Momentum+RMSProp的结合,然后再修正其偏差。Adam对梯度的一阶和二阶都进行了估计与偏差修正,使用梯度的一阶矩估计和二阶矩估计来动态调整每个参数的学习率(参数更新的幅度)。
Adam对学习率没有那么敏感,建议默认为0.001,实践中,也可以设置为5×10-4 。Adam通常被认为对超参数的选择相当鲁棒,同时相比于Adagrad,不用存储全局所有的梯度,适合处理大规模数据。
Adam每次迭代参数的学习步长都有一个确定的范围,不会因为很大的梯度导致很大的学习步长,参数的值比较稳定,但是它也并非真的是参数不敏感的,学习率在训练的后期可仍然可能不稳定导致无法收敛到足够好的值,泛化能力较差。
优化方法——AdaGrad、RMSProp、Adam

14、什么是过拟合? 怎么解决过拟合问题?

过拟合(over-fitting)指模型在训练样本中表现得过于优越,而在验证数据集以及测试数据集中表现不佳,无法很好地泛化到新的数据。
解决过拟合问题的常见方法:
1、数据增强:可以使用数据增强技术来扩充训练数据集,从而可以更充分地训练模型并提高其泛化能力。
2、正则化:通过在损失函数中添加正则项来控制模型的参数大小。 常用的正则化技术包括L1、L2正则化等。
在这里插入图片描述
在这里插入图片描述
深入理解L1、L2正则化
3、Dropout:Dropout是一种用于防止过拟合的正则化技术。该技术通过在训练过程中随机删除一些神经元来减少模型的复杂度和提高泛化能力。
4、增加训练数据量:增加训练数据集的大小可以降低模型的过拟合风险,通过收集更多的数据并进行训练,可以使模型更容易学习一般性的目标函数。
5、减小模型的复杂度:可以通过减小模型的大小或宽度,或减少模型中的参数数量等方式减少过拟合。这种方法常常被成为模型规约。
6、早期停止:在训练时,可以使用验证集(validation set)来监控模型的性能。 当模型开始过拟合时,停止训练,这种方法可以解决过拟合问题,同时减小模型开始表现得很糟糕的风险。一般是设置一个步长,如果多少步内验证集acc没有上升就停

浅谈深度学习过拟合和解决办法
14. 过拟合(overfitting)与解决办法

15、怎样解决梯度消失/爆炸问题?

在训练神经网络过程中,如果梯度过小或过大,会导致学习收敛缓慢或根本无法收敛,从而影响模型的训练效果。以下是几种常见的解决梯度消失或梯度爆炸问题的方法:
1、使用其他激活函数:sigmoid等激活函数在输入很大或很小的情况下会产生饱和效应,导致梯度接近0。较新的激活函数ReLU和其变体具有解决这个问题的能力。
2、Batch normalization:通过对每个batch在输入层和输出层进行标准化和缩放来扭曲前向传播特征的分布,从而提高模型的稳定性,消除梯度消失的风险。
3、梯度剪切:设置一个梯度的最大阈值,当梯度超过这个阈值时,将它的大小截取到阈值以内,这可以减轻梯度爆炸的影响。
4、预训练:预训练是一种减少梯度消失问题的有效方法。与随机初始化相比,预训练已经学习了较好的特征表示,初始化的参数也比较接近最优解,并且能减少梯度传播的距离,减少梯度消失问题对模型的影响。
5、梯度根据时间反向传播(BPTT)截断:在反向传播时,限制反向传播的长度,这个长度也叫时间截断长度。这可以减轻长周期信号的梯度消失问题。
6、使用长短期记忆网络(LSTM)或门控循环单元(GRU)模型:这两种循环神经网络模型可以学习长期依赖关系,并且使用了门控机制,能够有效减轻梯度消失问题。

梯度消失和梯度爆炸及解决方法

16、L1正则化、L2正则化

在这里插入图片描述
在这里插入图片描述

17、讲述一下神经网络反向传播算法?

误差反向传播(Back-propagation, BP)

  • 前向传播:通过对输入数据进行加权求和、激活函数处理等操作,将输入信号在隐藏层中进行处理,并产生最终的输出结果。这一过程被称为前向传播。
  • 反向传播:根据神经网络的输出计算误差,然后将误差反向传播回网络的每一层,根据误差调整每一层的连接权重,以提高神经网络的准确性。
    神经网络的训练过程中,前向传播和反向传播交替进行,前向传播通过训练数据和权重参数计算输出结果;反向传播通过导数链式法则计算损失函数对各参数的梯度,并根据梯度进行参数的更新,

反向传播算法的实现过程如下:
1、初始化神经网络的权重和偏置,观察训练数据,设定目标函数。
2、用前向传播算法计算数据在当前权重和偏置下的输出结果。
3、计算输出层的误差,根据误差计算输出层的权重和偏置应该如何调整
4、反向传播误差,根据误差信号调整隐藏层的权重和偏置。
5、重复以上步骤,不断调整网络的权重和偏置,直到输出结果符合期望的结果为止。

解读反向传播算法(图与公式结合)
深度学习 | 反向传播详解
【官方双语】深度学习之反向传播算法 上/下 Part 3 ver 0.9 beta

18、有哪些激活函数?他们的表达式分别是?

1、ReLU

在这里插入图片描述
在这里插入图片描述

2、Sigmoid

在这里插入图片描述
在这里插入图片描述

3、Tanh

在这里插入图片描述
在这里插入图片描述
神经网络常用的12种激活函数

19、讲述一下正则化的概念?

正则化是正则化系数的过程,即对系数进行惩罚,通过向模型添加额外参数来防止模型过度拟合,这有助于提高模型的可靠性、速度和准确性。正则化本质上是为了防止因网络参数过大导致模型过拟合的泛化技术。
常见的正则化方法有L1正则化、L2正则化和Dropout
①L1正则化:在模型的代价函数中加入所有权重系数的绝对值之和,用以控制权重系数大小,从而达到减小过拟合的目的。L1正则化有稀疏性,即在一定条件下,可以得到一个更为稀疏的特征表示。
②L2正则化:在模型的代价函数中加入所有权重系数的平方和,用以控制权重系数大小,从而达到减少过拟合的目的。
③Dropout:旨在防止过拟合,通过在训练过程中随机删除神经元,从而减少神经元之间的依赖性,提高模型的泛化性能。Dropout可以认为是一种随机的L2正则化方法。
机器学习中正则化是什么意思?正则化的概念详解

20、Batch Normalization的作用

如果batch size为m,则在前向传播过程中,网络中每个节点都有m个输出,所谓的Batch Normalization,就是对该层每个节点的这m个输出进行归一化再输出.

  • 可以使用更大的学习率,训练过程更加稳定,极大提高了训练速度。
  • 可以将bias置为0,因为Batch Normalization的Standardization过程会移除直流分量,所以不再需要bias。
  • 对权重初始化不再敏感,通常权重采样自0均值某方差的高斯分布,以往对高斯分布的方差设置十分重要,有了Batch Normalization后,对与同一个输出节点相连的权重进行放缩,其标准差σ也会放缩同样的倍数,相除抵消。
  • 对权重的尺度不再敏感,理由同上,尺度统一由γ参数控制,在训练中决定。
  • 深层网络可以使用sigmoid和tanh了,理由同上,BN抑制了梯度消失。
  • Batch Normalization具有某种正则作用,不需要太依赖dropout,减少过拟合。

Batch Normalization(BN)超详细解析

21、朴素贝叶斯方法的优势是什么?

  • 简单高效:朴素贝叶斯方法的原理简单,计算快速,算法较为稳定,算法的健壮性比较好。
  • 假设独立性:朴素贝叶斯方法假设所有特征对于结果来说相互独立,即在已知一个类别的情况下,不同特征相互独立。
  • 可解释性:朴素贝叶斯方法的预测结果可以通过概率解释,使其更具可解释性。同时,朴素贝叶斯方法得到的分类结果还可以用于推断各个特征对于分类的影响。
  • 小样本表现好:朴素贝叶斯方法在小样本情况下表现良好,而且该方法具有防止过拟合的作用。这意味着朴素贝叶斯方法适用于那些样本数量不足以支持其他复杂模型的应用场景。

在这里插入图片描述
朴素贝叶斯的优缺点
朴素贝叶斯百度百科
带你理解朴素贝叶斯分类算法

22、机器学习中,为何要经常对数据做归一化?

作用

具体来说,数据归一化有以下几个作用:

  • 提高模型的精度和稳定性:当特征的取值范围相差很大时,在模型训练模型时,梯度下降的速度会变慢,从而导致模型的目标函数收敛缓慢或不收敛。通过将数据进行归一化,能够加速模型的收敛速度,提高模型的精度和稳定性。
  • 避免某些特征对模型的影响过大:对于某些特征,由于其取值范围太大,不同特征之间的比较会带来误差或偏差较大的情况,从而会对模型的训练和评估造成影响。通过进行数据归一化,能够避免这种情况的发生,确保每一个特征对模型的影响度一致。
  • 方便特征提取和选择:通过归一化,能够减少不同特征之间的相关性,从而方便进行特征选择和提取,选取对目标预测最为关键的特征,提高模型的预测能力。
    常用的数据归一化方法包括最值归一化、均值方差归一化等,并且在具体应用中需要根据实际情况选择合适的方法进行预处理。

最值归一化:

在这里插入图片描述

均值方差归一化:

在这里插入图片描述
机器学习中的数据归一化、最值归一化、均值方差归一化(标准化)

23、神经网络引入非线性激活函数的原因?

激活函数是用来加入非线性因素的,提高神经网络对模型的表达能力,解决线性模型所不能解决的问题。
神经网络中引入非线性激活函数的原因主要有两个方面:

  • 线性变换的局限性:神经网络的每一层都是通过线性变换进行计算的,如果没有非线性激活函数,那么整个神经网络将会退化为一个简单的线性模型,缺少表达能力和拟合能力。线性函数的值域范围是负无穷到正无穷,当网络层数增多时,即使再多的线性变换堆叠起来,最终的效果仍然只是一个线性变换。
  • 引入非线性激活函数能够引入更丰富的复杂度:非线性激活函数能够为神经网络引入更多的非线性因素,使模型更加具有表达能力。通过引入非线性因素,神经网络可以学习到更复杂的模式和关系,拟合非线性的数据分布,提高模型的泛化能力。

在神经网络中,常用的非线性激活函数包括Sigmoid、Tanh、ReLU、Leaky ReLU等,其中ReLU是最为常用的一种非线性激活函数。

神经网络激活函数的作用是什么?
[5分钟深度学习] #03 激活函数

24、卷积神经网络池化层的作用?

卷积神经网络(CNN)中的池化层(Pooling Layer)是一种对卷积层输出进行降采样的操作,常用的池化操作有最大池化(Max Pooling)和平均池化(Average Pooling)。
池化层的作用主要有以下三个方面:

  • 减小数据量:卷积层输出的特征图通常较大,池化层通过对特征图进行降维操作,使得特征图的尺寸变小,从而减少了神经网络的参数数量和计算量,降低了过拟合的风险。
  • 提取主要特征:池化层可以提取卷积层输出中的最显著的特征,同时加强网络的位置不变性,保留特征的共性。例如,在图像分类任务中,池化层可以提取出图像中相对位置不变的特征,如边缘、纹理等。
  • 增强模型的鲁棒性:池化层可以增强模型的鲁棒性,使得输入数据的微小扰动不会对模型的输出结果造成过大的影响。池化层可以通过平均池化和最大池化来选择特征,平均池化可以减少噪声对特征的影响,最大池化则可以保留数据中最显著的特征。
    总之,池化层在卷积神经网络中具有提高模型效率、提取主要特征、增强模型鲁棒性等作用。但是,在一些场景中,池化层也可能对特征造成丢失、降低特征空间分辨率等不良影响,因此在具体应用中需要谨慎选择池化操作的方式和参数。

卷积神经网络中卷积层、池化层、全连接层的作用
【卷积神经网络可视化】 从卷积层到池化层的可视化演示(中英双语字幕)

25、深度学习流行的框架有哪些?各有什么特点?

在深度学习领域中,比较常见的框架包括 TensorFlow、PyTorch、Caffe、Keras等。下面简要介绍一下这些框架的特点:

  • TensorFlow:由Google开发的深度学习框架,可用于构建各种深度神经网络模型。TensorFlow先于其他框架发布,具有广泛的社区支持和应用支持,并支持多种编程语言,如Python、C++。TensorFlow使用计算图的方式来构建神经网络模型,具有高度的可扩展性和高效的分布式计算能力。
  • PyTorch:由Facebook开发的深度学习框架,提供动态计算图的功能,更加灵活,易于使用。PyTorch的开发者们致力于将深度学习模型从实验室用例转化到实际应用,并与NLP、CV等领域相互结合,同时社区积极创新,具有更多的创新性和跨领域融合的特点。
  • Caffe:是一个由美国伯克利大学开发的深度学习框架,相对于其他框架而言,Caffe的特点在于其与图像相关的应用具有较高的适应性和速度优势。使用C++开发,支持CPU和GPU的运算,速度较快。
  • Keras:由Francois Chollet在2015年首次推出,这是一款用户友好的高层次神经网络 API,易于使用,能够快速地创建深度学习模型。Keras使用Python作为主要编程语言,并封装了 TensorFlow、Theano 和 CNTK三个后端,使得使用者可以在不同的后端中进行选择,同时支持 CPU 和 GPU 计算。

五大深度学习框架剖析

51、阐述一下注意力机制及其应用?

注意力机制用于帮助模型自动学习并关注输入中的重要信息。在自然语言处理领域,注意力机制可以应用于诸如机器翻译、文本生成和问答系统等任务中。在计算机视觉领域,注意力机制可以用于图像分类、目标检测和图像生成等任务。

自注意力机制(Self-Attention):

自注意力机制是一种基于输入序列内部信息进行关注权重计算的机制,常用于序列到序列的任务,如机器翻译和文本生成。

  • 输入序列经过线性变换得到三个不同的表示:查询向量(Query)、键向量(Key)和值向量(Value)
  • 通过计算查询向量和键向量之间的相似度,可以得到一个关注权重分布。相似度的计算通常采用点积、缩放点积等方法。
  • 将关注权重分布与值向量相乘并加权求和,得到输出表示。输出表示是对输入序列不同位置的信息进行加权汇总的结果。

自注意力机制的优势在于它能够对输入序列中的不同位置进行灵活的关注,无需依赖外部信息。一种常见的自注意力机制是Transformer模型中使用的多头注意力机制,它通过引入多组不同的查询、键、值向量来增加模型的表达能力。

什么是 Attention(注意力机制)?【知多少】

52、什么是词嵌入word embedding?

词嵌入(Word Embedding)是一种将词语映射到连续向量空间的技术,它通过将词语表示为实数向量来捕捉词语之间的语义关系。词嵌入是自然语言处理(NLP)中一项重要的预处理技术,它将离散的词语转化为连续的向量表示,为计算机模型更好地理解和处理文本提供了基础。
传统的文本处理方法通常使用基于离散符号的表示方式,例如独热编码(One-Hot Encoding),每个词语被表示为一个高维稀疏向量,其中只有一个元素为1,其余元素都为0。然而,这种表示方法无法捕捉到词语之间的语义相似性和关联性,也无法利用词语的分布信息
词嵌入通过将词语映射到一个低维连续向量空间中的向量来解决这个问题。在词嵌入空间中,相似的词语在向量空间中的距离更近,具有相似语义的词语在向量空间中的方向更接近。这种连续向量表示能够更好地表达词语的语义信息,并且能够通过向量之间的运算来进行语义推理。
词嵌入可以通过多种方法得到,其中最著名的方法是Word2Vec和GloVe

Word2Vec:Word2Vec是一种基于神经网络的词嵌入方法,它有两种模型,分别是连续词袋模型(Continuous Bag of Words, CBOW)和Skip-gram模型。这两个模型通过学习词语的上下文信息来生成词嵌入。
Skip-gram:用中心词预测上下文词,CBOW:用上下文词来预测中心词)

GloVe:GloVe(Global Vectors for Word Representation)是一种基于全局词共现矩阵的词嵌入方法。它通过分析词语在语料库中的共现频率来构建词语之间的关系,并生成对应的词嵌入向量。

得到词嵌入后,可以将其应用于各种自然语言处理任务,如文本分类、命名实体识别、情感分析和机器翻译等。词嵌入能够提供更丰富、更紧凑的词语表示,从而帮助模型更好地理解和处理文本,提高自然语言处理任务的性能和效果。

(BERT生成的向量被称为上下文相关词向量(Contextualized Word Embeddings),与传统的词嵌入不同,它捕捉了每个单词在上下文中的语义信息。这种上下文相关性使得BERT模型在处理多义词、指代消解和语义推理等任务时表现出色。)

53、判别式(discriminative) 模型和生成式(generative)模型的核心区别是什么?

  • 1、判别式模型
    判别式模型关注的是对给定输入数据进行条件概率分布建模,即给定输入数据x,预测输出标签y的条件概率P(y|x)。判别式模型通过学习输入与输出之间的映射关系来进行建模和预测。常见的判别式模型包括逻辑回归、支持向量机(SVM)、随机森林等。

  • 2、生成式模型
    生成式模型关注的是对联合概率分布进行建模,即同时对输入数据x和输出标签y的联合概率分布P(x, y)进行建模。生成式模型通过学习数据的分布特征来进行建模和生成新的数据样本。常见的生成式模型包括高斯混合模型(GMM)、隐马尔可夫模型(HMM)、变分自编码器(VAE)等。
    生成式模型的特点是能够学习到数据的生成过程,可以用于生成新的样本,同时也可以用于推断未观测到的变量。生成式模型通常需要更多的参数和计算资源,但能够提供更丰富的概率分布信息,可以用于生成样本、填补缺失值、数据增强等任务。

总结来说,判别式模型关注的是输入和输出之间的条件概率分布,用于直接预测后验概率,解决分类、回归等任务;而生成式模型关注的是联合概率分布,用于学习数据的生成过程和生成新的样本。它们在建模思路和应用领域上有所差异,根据具体的任务和需求选择合适的模型进行建模和预测。

55、预训练方法 BERT和OpenAI GPT有什么区别?

BERT(Bidirectional Encoder Representations from Transformers)和OpenAI GPT(Generative Pre-trained Transformer)都是自然语言处理(NLP)领域中非常重要的预训练模型,但它们在预训练任务、模型结构和应用方面存在一些区别。

  • 1、预训练任务
    BERT:BERT模型的预训练任务包括两个:Masked Language Modeling(MLM)和Next Sentence Prediction(NSP)。在MLM任务中,BERT模型需要预测被掩盖的输入单词;而在NSP任务中,BERT模型需要判断两个句子是否是原始文本中的连续句子。
    OpenAI GPT:OpenAI GPT模型的预训练任务是语言建模,即根据前面的上下文预测下一个单词。GPT模型基于Transformer架构的解码器部分,只利用了左侧的上下文信息进行预测

  • 2、模型结构
    BERT:BERT模型采用了Transformer的编码器结构,其中包括多个编码层(Transformer Encoder Layers),每个编码层由多头自注意力机制(Multi-Head Self-Attention)和前馈神经网络(Feed-Forward Neural Networks)组成。BERT模型是双向的,能够利用句子中的上下文信息
    OpenAI GPT:OpenAI GPT模型采用了Transformer的解码器结构,其中包括多个解码层(Transformer Decoder Layers),每个解码层也由多头自注意力机制和前馈神经网络组成。GPT模型是单向的只能利用句子中左侧的上下文信息

  • 3、应用方向
    BERT:BERT模型主要应用于各种下游NLP任务,如文本分类、命名实体识别、情感分析等。它可以通过微调(Fine-tuning)的方式将预训练模型应用于特定任务,并在特定任务上取得很好的性能。
    OpenAI GPT:OpenAI GPT模型主要应用于生成式任务,如文本生成、对话系统等。GPT模型可以根据给定的上下文生成连续的文本,其强大的语言模型能力使得它在生成任务中表现出色。

61、Word2Vec中为什么使用负采样 (negtive sample) ?

Word2Vec是一种用于学习单词嵌入(Word Embeddings)的算法,其中使用了负采样(Negative Sampling)的技术。负采样的目的是改善训练效率和嵌入质量,并减少计算成本
在Word2Vec中,主要有两种训练方法:Skip-gram和CBOW(Continuous Bag-of-Words)
Skip-gram:用中心词预测上下文词,CBOW:用上下文词来预测中心词)这两种方法都是基于上下文来预测目标单词,而负采样是为了训练这个预测任务。
负采样的基本思想是,对于每个训练样本(由一个目标单词和上下文单词组成),随机选择一些不相关的负样本作为对比。这些负样本是从词汇表中按一定的概率分布抽样得到的,并且通常是根据它们的频率进行抽样。
负采样的原因有以下几点:

  1. 减少计算成本:对于大规模的词汇表,计算目标单词和所有其他单词之间的概率是非常耗时的。负采样将计算任务转化为对目标单词和少量负样本的二分类问题,从而大大降低了计算成本。
  2. 提高训练效率:通过负采样,可以减少需要更新的参数数量,从而加快模型的训练速度。相比于传统的层级Softmax或负例采样方法,负采样通常需要更新的参数更少
  3. 改善嵌入质量:负采样通过引入一些不相关的负样本,使得模型更加关注于正确的预测,从而改善了嵌入的质量。负采样可以将注意力集中在对目标单词和上下文单词的相关性预测上,而不是对整个词汇表的预测

总结来说,Word2Vec中使用负采样是为了减少计算成本、提高训练效率,并改善嵌入质量。负采样能够从词汇表中随机选择一些不相关的负样本,使得模型能够更好地学习到目标单词和上下文单词之间的语义关系。

负采样原理与Pytorch实现

62、如何理解Seq2Seq Attention模型?

Seq2Seq Attention模型是一种序列到序列(Sequence-to-Sequence)模型,用于处理输入序列和输出序列之间的对应关系。它通过引入注意力机制(Attention Mechanism)来改进传统的Seq2Seq模型,使得模型可以更好地处理长序列和捕捉输入与输出之间的对齐关系

在传统的Seq2Seq模型中,编码器(Encoder)将输入序列编码成一个固定长度的向量,然后解码器(Decoder)根据这个向量生成输出序列。这种模型在处理长序列时可能会面临信息丢失和性能下降的问题,因为编码器需要将整个输入序列压缩到一个固定长度的向量中
为了解决这个问题,Seq2Seq Attention模型引入了注意力机制。注意力机制允许解码器在生成输出序列的每个步骤时,根据输入序列中不同位置的相关信息来调整注意力权重。简单来说,注意力机制使得解码器可以"注意"输入序列中与当前生成位置相关的部分,从而更好地对应输入和输出之间的对齐关系。
Seq2Seq Attention模型的工作原理如下:

  1. 编码器:输入序列经过编码器,生成一系列编码器状态。编码器可以是RNN(如LSTM或GRU)或Transformer等结构。
  2. 注意力计算:解码器根据当前的解码器状态和前一个时间步的输出,计算与输入序列中各个位置的注意力分数注意力分数反映了输入序列中不同位置对当前输出的重要性
  3. 上下文向量:通过对编码器状态加权求和,根据注意力分数计算上下文向量。上下文向量是输入序列中与当前输出位置相关的信息的加权总和。
  4. 解码器:将上下文向量与当前解码器状态结合,生成当前时间步的输出。解码器可以是RNN或Transformer等结构。
  5. 重复步骤2-4:重复进行解码器的生成过程,直到生成完整的输出序列。

通过引入注意力机制,Seq2Seq Attention模型可以更好地处理长序列,并且在生成输出序列时更准确地对应输入序列的相关部分。这使得模型能够在机器翻译、摘要生成、对话系统等任务中取得更好的性能。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GCTTTTTT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值