1. 什么是有监督学习? 半监督学习?
有监督学习: 有监督学习是一种机器学习方法,它使用已标注的数据进行训练,即每个输入数据都有一个对应的正确输出标签。模型通过学习这些输入-输出对来进行预测或分类。常见的有监督学习任务包括分类和回归。
半监督学习: 半监督学习是一种结合了有监督学习和无监督学习的方法。它利用大量未标注的数据和少量标注的数据来训练模型。这种方法在标注数据昂贵或难以获取的情况下非常有用。半监督学习试图通过利用未标注的数据的潜在结构来提高模型的性能。
2. 请列举有监督学习、半监督学习常见的方法
有监督学习常见方法:
- 线性回归
- 逻辑回归
- 决策树
- 随机森林
- 支持向量机(SVM)
- k近邻算法(k-NN)
- 神经网络(如前馈神经网络、卷积神经网络)
半监督学习常见方法:
- 自训练(Self-training)
- 协同训练(Co-training)
- 图半监督学习(Graph-based semi-supervised learning)
- 生成对抗网络(GAN)中的半监督变体
- 半监督支持向量机(S3VM)
3. 简述 K-means 原理,谱聚类、层次聚类原理
K-means 原理: K-means 聚类是一种迭代的聚类算法,其目的是将数据集划分为 个簇,使得簇内数据点的总方差最小。算法步骤如下:
- 随机选择 个初始簇中心。
- 将每个数据点分配到最近的簇中心。
- 重新计算每个簇的中心点。
- 重复步骤 2 和 3,直到簇中心不再变化或达到预定的迭代次数。
谱聚类原理: 谱聚类利用图论中的谱理论,将数据点看作图中的节点,通过图的拉普拉斯矩阵的特征值和特征向量进行聚类。主要步骤如下:
- 构建相似度矩阵并计算拉普拉斯矩阵。
- 计算拉普拉斯矩阵的前 个特征向量。
- 将数据点映射到特征向量空间。
- 在特征向量空间中使用 K-means 进行聚类。
层次聚类原理: 层次聚类分为自底向上(凝聚型)和自顶向下(分裂型)两种。自底向上方法步骤如下:
- 每个数据点初始作为一个单独的簇。
- 计算所有簇间的相似度,合并相似度最高的两个簇。
- 更新簇间相似度矩阵。
- 重复步骤 2 和 3,直到所有数据点被合并到一个簇或达到预定的簇数。
4. 简述算法流程 K-means 对噪声数据的处理
K-means 算法对噪声数据的处理能力较弱,主要原因是:
- 噪声数据点会影响簇中心的计算,导致簇中心偏离真实位置。
- 噪声数据可能被错误地分配到某个簇,影响簇的纯度和结果的准确性。
为了缓解噪声数据对 K-means 的影响,可以采取以下措施:
- 使用基于密度的聚类算法(如 DBSCAN),其对噪声数据的鲁棒性更好。
- 预处理数据,去除明显的异常值。
- 使用鲁棒 K-means 变体(如 K-medoids),减少对噪声数据的敏感性。
5. 请比较 K-means、谱聚类、层次聚类的优缺点
K-means: 优点:
- 简单易实现。
- 计算速度快,适用于大规模数据集。
- 适用于球状聚类。
缺点:
- 对初始簇中心敏感,可能导致局部最优解。
- 对噪声和离群点敏感。
- 需要预先指定簇的数量 。
谱聚类: 优点:
- 能处理非凸形状的聚类。
- 利用图论的优势,适用于具有复杂结构的数据。
缺点:
- 计算复杂度高,不适用于大规模数据集。
- 构建相似度矩阵时需要合适的参数选择(如相似度度量)。
层次聚类: 优点:
- 不需要预先指定簇的数量。
- 生成树状结构,提供数据的多层次聚类信息。
缺点:
- 计算复杂度高,特别是对于大规模数据集。
- 对噪声和离群点敏感。
- 难以处理大的数据集,计算量大。
6. 请简述 bagging 和 boosting 原理
Bagging 原理: Bagging(Bootstrap Aggregating)是一种并行集成学习方法,通过多个弱分类器的并行训练和投票决策来提高模型的稳定性和准确性。主要步骤如下:
- 从原始数据集中有放回地抽取多个子集。
- 在每个子集上训练一个基分类器。
- 将多个基分类器的预测结果进行投票或平均,得到最终结果。
Boosting 原理: Boosting 是一种串行集成学习方法,通过逐步训练多个弱分类器,每个分类器都关注前一个分类器错分的数据。主要步骤如下:
- 初始化数据的权重,每个数据点权重相同。
- 训练基分类器,根据其在训练集上的表现调整数据权重。
- 强化错分数据的权重,使后续分类器更关注这些数据。
- 将多个基分类器的结果加权结合,得到最终结果。
7. Bagging 和 Boosting 的 2 点相同和 2 点不同
相同点:
- 都是集成学习方法,通过多个弱分类器的组合来提高模型的性能。
- 都能够减小模型的方差,降低过拟合的风险,提高泛化能力。
不同点:
- 训练方式:
- Bagging 是并行训练,每个基分类器相互独立。
- Boosting 是串行训练,每个基分类器依赖前一个分类器的结果。
- 数据处理:
- Bagging 使用有放回抽样的方法生成多个训练子集。
- Boosting 通过调整数据权重来关注错分数据,逐步提高模型的准确性。
8. SVM 原理是什么?会推导线性。给你简单几个点能不能求?画图
SVM 原理: 支持向量机(SVM)是一种用于分类的有监督学习算法。其核心思想是找到一个最佳的决策边界(超平面),将不同类别的样本最大化地分开。SVM 通过最大化类间距(margin)来实现这一点。对于线性可分的数据,SVM 尝试找到一个超平面,使得到最近的样本点的距离最大化。
线性 SVM 推导: 对于给定的训练集 ,其中 是输入特征, 是标签,SVM 寻找一个超平面,使得:
通过引入拉格朗日乘子和优化方法,可以得到以下优化问题:
解这个优化问题可以得到最优的 和 。
求简单几个点: 假设有三个点 。我们可以通过绘图和计算来找到分离这些点的超平面。
画图: 由于文本限制,无法绘制图像,但可以在平面直角坐标系上绘制点,并根据上述约束条件找到最佳的分离超平面。
9. 主成分分析 (PCA) 原理,可以解决什么问题?可以举个例子吗
PCA 原理: 主成分分析(PCA)是一种降维技术,通过线性变换将高维数据映射到低维空间,保留尽可能多的原始数据的变异信息。PCA 寻找数据的主成分方向,使得投影后的方差最大。具体步骤如下:
- 标准化数据。
- 计算数据协方差矩阵。
- 计算协方差矩阵的特征值和特征向量。
- 选择最大的 个特征值对应的特征向量,构成主成分。
- 将原始数据投影到主成分空间。
解决问题: PCA 可以解决高维数据中的信息冗余、噪声问题,并提高计算效率。
举例: 在图像处理中,处理高清图像需要大量的存储和计算。通过 PCA,可以将高维图像数据降维到较低维度,减少数据存储和计算开销,同时保留大部分图像信息。
10. LDA 原理,可以解决什么问题?可以举个例子吗
LDA 原理: 线性判别分析(LDA)是一种用于分类的降维技术,通过线性变换将数据投影到低维空间,最大化类间方差与类内方差之比。LDA 通过 Fisher 判别准则寻找最佳投影方向,使得投影后不同类别的样本尽可能分开。
解决问题: LDA 主要用于分类任务中的降维,帮助提高分类器的性能。
举例: 在文档分类中,可以使用 LDA 将高维的词频特征降维,提取出最能区分不同类别文档的特征,进而提高分类器的准确率。
11. 给你个三层网络,让你求一次 BP,会做吗
是的,我可以求解三层神经网络的一次反向传播(BP)。
步骤:
- 前向传播:计算每一层的激活值。
- 计算误差:计算输出层的误差。
- 反向传播:从输出层向输入层反向计算每层的梯度。
- 更新权重:根据梯度下降法更新每层的权重。
具体计算会涉及大量的矩阵运算和导数计算。
12. 卷积、池化、Dropout、Batch Normalization 是什么意思,请解释原理,起什么作用
卷积(Convolution): 卷积操作是通过卷积核(滤波器)在输入数据上滑动,并进行点积运算,提取局部特征。卷积层在图像处理中可以检测到不同的边缘、角点等特征。
池化(Pooling): 池化层通过下采样操作减少数据的维度和计算量,常见的池化操作有最大池化和平均池化。池化层可以在保留主要特征的同时减少参数量,增强模型的鲁棒性。
Dropout: Dropout 是一种正则化技术,在训练过程中随机丢弃一定比例的神经元,以防止过拟合。Dropout 强制神经网络在每次迭代中都不同地学习特征,提高了模型的泛化能力。
Batch Normalization: Batch Normalization 是一种加速神经网络训练并提高稳定性的方法。它通过对每一批数据进行归一化,使得每层输入保持相同的分布,从而加快收敛速度,减少对初始化的依赖。
13. 常见的 loss 函数,分别用于什么问题?
- 均方误差(MSE,Mean Squared Error):用于回归问题,衡量预测值和真实值之间的均方差。
- 交叉熵损失(Cross-Entropy Loss):用于分类问题,尤其是多类别分类,衡量预测分布与真实分布之间的差异。
- 平滑 L1 损失(Smooth L1 Loss):在目标检测和一些回归问题中使用,兼具 L1 和 L2 损失的优点。
- Hinge 损失:主要用于支持向量机(SVM)中,衡量分类边界的错分类情况。
- 二元交叉熵损失(Binary Cross-Entropy Loss):用于二分类问题,衡量预测概率与真实标签之间的差异。
14. 优化函数有哪些,请写几种?你经常用的哪种?有什么优势
- 随机梯度下降(SGD,Stochastic Gradient Descent):基础的优化算法,逐步更新参数。
- 动量(Momentum):在 SGD 基础上增加动量项,加速收敛并减少震荡。
- Adam(Adaptive Moment Estimation):结合了动量和自适应学习率的优点,常用于深度学习,收敛快且稳定。
- RMSProp:自适应学习率方法,适合处理非平稳目标。
我经常使用 Adam 优化器。其优势在于:
- 收敛速度快
- 适应不同问题的学习率调整
- 较稳定,能避免局部最优解
15. 随机梯度下降原理
随机梯度下降(SGD)是一种迭代优化方法,每次使用一个或一小批样本来计算梯度并更新模型参数,而不是使用整个数据集。这种方法能显著减少计算量,特别适合大规模数据集。其基本公式为:
其中, 为模型参数, 为学习率, 为损失函数, 为样本。
16. Transformer 编码器解码器原理
Transformer 由编码器和解码器组成,主要用于序列到序列的任务,如机器翻译。编码器负责将输入序列转换为上下文表示,解码器利用这些表示生成输出序列。其核心是自注意力机制(Self-Attention),能够捕捉序列中远距离依赖关系。
编码器:
- 输入嵌入+位置编码
- 多头自注意力层
- 前馈神经网络
- 层归一化和残差连接
解码器:
- 输出嵌入+位置编码
- 多头自注意力层
- 编码器-解码器注意力层
- 前馈神经网络
- 层归一化和残差连接
17. 如何实现 self-attention?如何实现加速的?
Self-Attention 通过计算输入序列中每个位置与其他位置的注意力权重来生成输出。具体步骤:
- 计算查询(Query)、键(Key)和值(Value)矩阵。
- 计算注意力得分:
- 加权求和生成输出。
为了加速,可以使用以下方法:
- 缓存中间结果,减少重复计算。
- 使用低秩近似或稀疏注意力机制。
- 利用硬件加速,如 GPU 或 TPU。
18. 为什么用引入 Multi-Head Attention?
Multi-Head Attention 的引入是为了增强模型的表达能力。通过并行使用多个独立的注意力头,模型可以关注输入序列的不同部分和不同特征,从而捕捉到更多的细粒度信息。其优势包括:
- 提高了模型的灵活性和性能。
- 有助于捕捉到不同子空间中的信息。
- 增强了模型对复杂关系的建模能力。
19. 具体操作 BERT 原理?和 Transformer 先比的区别?优势?
BERT 原理: BERT(Bidirectional Encoder Representations from Transformers)是基于 Transformer 结构的预训练语言模型。BERT 通过双向 Transformer 编码器进行预训练,以捕捉上下文中的语义信息。其主要特点包括:
- 双向性:BERT 同时关注左侧和右侧的上下文信息,而传统的单向语言模型只能关注一个方向。
- 预训练任务:
- 掩码语言模型(Masked Language Model, MLM):随机掩盖输入句子中的一些单词,然后预测这些掩码位置的词。
- 下一句预测(Next Sentence Prediction, NSP):预测两句句子是否为连续句子。
与 Transformer 的区别:
- Transformer:由编码器和解码器组成,主要用于序列到序列的任务。
- BERT:只使用了 Transformer 的编码器部分,专注于句子和词的表示。
优势:
- 丰富的语义信息:双向上下文使得 BERT 在捕捉词语之间的关系和语义信息方面更为准确。
- 广泛适用性:BERT 通过预训练和微调,能很好地适应多种自然语言处理任务。
20. 贝叶斯公式
贝叶斯公式用于计算条件概率,表达式为:
其中:
- 是在 发生的条件下 发生的概率(后验概率)。
- 是在 发生的条件下 发生的概率(似然)。
- 是 发生的先验概率。
- 是 发生的先验概率。
21. 极大后验(MAP)什么时候等于极大似然(ML)
极大后验估计(MAP)在先验分布是均匀分布(即各个参数取值的先验概率相同)时等于极大似然估计(ML)。此时,MAP 和 ML 的目标函数一致,因为先验概率 ( P(\theta) ) 对参数 ( \theta ) 的估计没有影响。
22. 给定模型,对新实例进行分类/预测什么是贝叶斯网络?
贝叶斯网络: 贝叶斯网络是一种有向无环图(DAG),表示随机变量及其条件依赖关系。每个节点代表一个随机变量,边表示变量之间的条件依赖关系。贝叶斯网络用于对新实例进行分类或预测,步骤如下:
- 构建贝叶斯网络模型,定义变量和依赖关系。
- 学习参数,即计算条件概率表(CPT)。
- 给定新实例,使用贝叶斯公式和条件概率表进行推断和预测。
23. 给你一个网络写出简单的联合概率
假设有一个简单的贝叶斯网络,包括三个节点 A、B、C,其中 A 是 B 和 C 的父节点。
联合概率分布可以表示为:
24. 图模型有什么用?原理是什么?
图模型: 图模型用于表示随机变量之间的依赖关系,通过图结构(有向或无向图)来简化联合概率分布的计算。图模型包括贝叶斯网络(有向图)和马尔可夫随机场(无向图)。
原理:
- 贝叶斯网络:表示条件独立性,通过链式规则和条件概率表计算联合概率。
- 马尔可夫随机场:表示对称性和局部依赖,通过势函数和归一化常数计算联合概率。
25. 给一个 MRF,写出联合概率分布
假设有一个简单的马尔可夫随机场(MRF),包括三个节点 X、Y 和 Z,其中 X 和 Y、Y 和 Z 之间存在边。
联合概率分布可以表示为:
其中 和 是势函数, 是归一化常数。
26. MRF 推理有哪几种,请简述
MRF 推理方法:
- 确切推理:
- 变量消元法:通过消元非查询变量来计算边缘概率。
- 信念传播:在树形结构中,利用消息传递算法进行精确推理。
- 近似推理:
- 马尔可夫链蒙特卡罗(MCMC):通过采样方法近似推断概率分布。
- 变分推理:通过优化方法近似计算难以处理的概率分布。
27. 请简述传统机器学习和深度强化学习区别
传统机器学习:
- 数据依赖:传统机器学习模型依赖于大量标注数据进行训练,常见的算法包括决策树、支持向量机、随机森林等。
- 任务类型:通常用于监督学习(分类、回归)和无监督学习(聚类、降维)。
- 特征工程:需要人工设计和选择特征,特征工程的质量对模型性能影响很大。
- 训练目标:通过最小化损失函数来优化模型参数。
深度强化学习:
- 探索与利用:深度强化学习(DRL)通过智能体与环境的交互来学习策略,平衡探索和利用。
- 任务类型:主要用于决策和控制任务,如机器人控制、游戏AI等。
- 自动特征提取:利用深度神经网络自动提取特征,减少人工干预。
- 训练目标:通过最大化累积奖励来优化策略,通常使用策略梯度、Q学习等方法。
28. DON 原理?如何学习?
DON(Deep Q-Network)原理: DON 是一种结合深度学习和 Q-learning 的强化学习方法,用于解决高维状态空间中的决策问题。其核心思想是使用深度神经网络近似 Q 函数,选择最优动作。
学习步骤:
- 经验回放:使用经验回放机制,将智能体与环境交互产生的状态-动作-奖励-下一状态存储在记忆库中,从中随机采样训练数据,打破数据相关性。
- 目标网络:引入目标网络 Q’,每隔一段时间更新,以减少 Q 值更新的波动。
- 损失函数:使用均方误差(MSE)作为损失函数,定义为:
- 训练:通过梯度下降法最小化损失函数,更新 Q 网络参数。
29. 对抗学习原理?可以写出公式吗?
对抗学习原理: 对抗学习通过训练生成模型和判别模型之间的博弈,提高生成模型的能力。常见的方法有生成对抗网络(GAN)。
GAN 公式: GAN 由生成器 G 和判别器 D 组成,目标是生成器生成逼真的数据,使得判别器无法区分真实数据和生成数据。
- 生成器损失:
- 判别器损失:
- 优化目标:
30. 请简单描述优化策略
优化策略: 优化策略指在训练机器学习模型时用于调整模型参数的方法,目的是最小化(或最大化)目标函数。常见的优化策略包括:
- 梯度下降法:通过计算目标函数相对于参数的梯度,沿梯度的负方向更新参数。变种包括:
- 批量梯度下降(Batch Gradient Descent)
- 随机梯度下降(SGD)
- 小批量梯度下降(Mini-batch Gradient Descent)
- 动量方法:在梯度下降的基础上引入动量项,帮助加速收敛:
- Adam 优化器:结合动量和自适应学习率的优化算法:
31. 图神经网络定义?和传统神经网络区别是什么?
图神经网络(GNN): 图神经网络是一类用于处理图结构数据的神经网络,通过节点之间的信息传递和聚合来学习节点表示或图表示。
区别:
- 数据结构:GNN 处理的是图数据,包括节点和边的关系;传统神经网络(如卷积神经网络 CNN)处理的是规则的网格数据(如图像)。
- 信息传递:GNN 通过图卷积、消息传递等机制在节点之间传递和聚合信息;传统神经网络通过层与层之间的全连接或卷积操作处理数据。
- 应用场景:GNN 适用于社交网络分析、知识图谱、化学分子结构等图结构数据;传统神经网络多用于图像、文本等规则数据。
32. 图卷积网络和图神经网络区别?描述
图卷积网络(GCN): 图卷积网络是图神经网络的一种特定实现,通过图卷积操作在图结构数据上进行特征提取。GCN 通过对节点及其邻居节点的特征进行卷积操作,聚合邻居信息来更新节点表示。
图神经网络(GNN): 图神经网络是一个广义的概念,涵盖了各种在图结构上进行信息传递和聚合的模型。除了 GCN,还有其他形式的图神经网络,如图注意网络(GAT)、图自编码器(Graph Autoencoders)等。
区别:
- 范畴:GNN 是一个广泛的框架,包括多种图结构数据处理模型;GCN 是 GNN 的一个特定子类。
- 实现方式:GCN 主要使用卷积操作;GNN 可以使用不同的信息传递和聚合机制,如注意力机制、消息传递等。