CrackingMachineLearningInterview
CrackingMachineLearningInterview 是一个专为人工智能与机器学习领域求职者打造的开源面试备战知识库。它系统性地整理了来自全球科技巨头及本土企业的核心面试题,旨在帮助候选人从容应对从基础理论到前沿落地的各类考核,从而在激烈的竞争中脱颖而出。
该资源库有效解决了求职者面对庞杂知识体系时无从下手、缺乏针对性练习以及难以掌握最新行业趋势(如大模型应用)的痛点。它不仅涵盖了经典的机器学习算法、统计学和深度学习内容,更紧跟 2026 年技术风向,深度解析了生成式 AI(GenAI)、大语言模型(LLM)、RAG 检索增强生成、智能体(Agents)架构以及 MLOps 生产化部署等现代面试热点。
无论是机器学习工程师、数据科学家、AI 研发人员,还是从事数据工程与 DevOps 的专业开发者,都能从中获益。CrackingMachineLearningInterview 提供了清晰的"2026 面试路线图”和分阶段学习建议,用户可根据自身目标选择经典题库或专项追踪(如云原生 ML 平台、系统设计)。其独特的亮点在于将传统算法根基与现代 AI 工程实践完美结合,并辅以推荐的学习顺序和项目案例,帮助用户构建从理论基础到生产级系统设计的完整能力闭环,是通往理想职位的实用指南。
使用场景
资深算法工程师李明正备战一家头部科技公司的机器学习专家岗位面试,急需系统梳理从传统模型到最新 GenAI 的全栈知识体系。
没有 CrackingMachineLearningInterview 时
- 复习方向迷茫:面对海量资料,难以区分哪些是 2026 年大厂考察的重点(如 Agent、RAG),容易在过时技术上浪费精力。
- 知识盲区频现:缺乏针对 MLOps 和云平台的专项训练,在系统设计环节对模型服务化、特征存储等生产级问题回答空洞。
- 模拟实战缺失:找不到涵盖多智能体协作、LLM 评估等前沿场景的高质量真题,导致面对新题型时反应迟钝,逻辑混乱。
- 学习路径杂乱:没有清晰的进阶路线图,基础理论与工程落地能力脱节,难以构建完整的知识闭环。
使用 CrackingMachineLearningInterview 后
- 精准锁定考点:直接依据"2026 面试路线图”和新增问答库,高效聚焦 LLM 缩放、Agent 架构等现代面试核心,复习效率倍增。
- 补齐工程短板:通过 MLOps 和云平台专属板块,深入掌握 MLflow、模型监控及 AWS SageMaker 等实战细节,系统设计回答极具深度。
- 从容应对新潮:利用 GenAI 轨道中的 LangGraph、多智能体系统及高级 RAG 案例进行模拟演练,能够流畅拆解复杂的前沿技术难题。
- 构建清晰体系:遵循“建议学习顺序”,从经典算法平滑过渡到生产级 AI 系统,形成了逻辑严密且覆盖全面的技术知识网。
CrackingMachineLearningInterview 将零散的备考资源转化为结构化的通关指南,帮助候选人从“盲目刷题”转型为“精准打击”,显著提升斩获高薪 Offer 的概率。
运行环境要求
未说明
未说明

快速开始
CrackingMachineLearningInterview
面向机器学习工程师、人工智能工程师、数据科学家、深度学习工程师、数据工程师以及专注于DevOps或平台的角色的实用面试准备资源库。
请访问 CrackingMachineLearningInterview GitPage(以获得更好的UI/UX体验)。
本仓库适合哪些人
- 机器学习工程师
- 数据科学家
- 深度学习工程师
- 人工智能工程师
- 从事AI/ML相关产品的软件工程师
- 数据工程师
- MLOps工程师
- DevOps/平台工程师
如何使用本仓库
- 如果您正在准备当前的AI/ML相关面试,请从2026年面试路线图开始。
- 对于现代面试环节,可以参考2026年附加问答。
- 针对专业方向的面试,可查阅AI / GenAI、数据工程和DevOps章节。
- 核心的机器学习、统计学、深度学习和算法相关内容,请参考经典题库。
- 制定有针对性的学习计划时,可参考备考资源与参考文献。
- 如果希望从基础到生产级AI系统有一个清晰的学习路径,可以参考建议学习顺序。
快速导航
- 2026年面试路线图
- 2026年附加问答
- 2026年常见面试问题(新)
- AI / GenAI赛道
- 经典机器学习赛道
- 深度学习赛道
- MLOps赛道
- 数据工程赛道
- DevOps赛道
- 编程挑战赛道
- 云上ML平台
- 系统设计赛道
- 框架赛道
- 建议学习顺序
- 重点推荐项目
- 备考资源与参考文献
- 学习模式
- 经典题库
- 贡献说明
关于我们
- GitHub个人主页:Shafaypro ©
- 仓库地址:CrackingMachineLearningInterview
图片引用
- 图片引用仅用于教育目的。如需署名,请参阅仓库中的引用信息。
分享
欢迎在您的博客、学习笔记或面试准备资料中分享本仓库链接。
仓库结构
docs/2026-interview-roadmap.md:针对机器学习工程师和人工智能工程师职位的当前面试重点领域。docs/2026-additional-questions.md:涵盖LLM、RAG、评估、智能体及生产级AI的现代2026年题库。docs/interview_questions_2026.md:深入探讨智能体、RAG、LLM扩展、生产级AI和系统设计等主题的面试问答。(新)docs/resources-and-references.md:书籍、参考资料及其他补充面试内容。docs/study-pattern.md:推荐的备考主题、难度分级及学习结构。ai_genai/:GenAI和LLM工程相关主题,包括n8n、CrewAI、LangGraph、LangSmith、多智能体系统及高级RAG。(扩展)classical_ml/:经典机器学习算法——时间序列、聚类、降维、推荐系统、特征工程。mlops/:MLOps相关主题——MLflow、模型服务、特征存储、可解释性、数据质量、LLM评估。(扩展)cloud_ml/:云上ML平台——AWS SageMaker、Google Vertex AI、Azure ML。data_engineering/:数据工程面试主题、平台概念及地理空间AI。(扩展)devops/:DevOps、基础设施、部署及AI测试相关主题。(扩展)frameworks/:ML和AI框架,包括FastAPI、Pydantic、PyTorch、HuggingFace以及LLM推理服务。(扩展)system_design/:ML系统设计模式、RAG流水线、智能体架构、批处理与实时系统。(扩展)deep_learning/:深度学习基础、Transformer模型及应用训练流水线。(扩展)coding_challenges/:Python和SQL面试练习指南,适用于编码筛选和数据问题解决。(新)README.md:仓库首页,包含原始的经典机器学习面试题库。
建议学习顺序
如果您希望从理论过渡到生产级AI工程,可以按照以下顺序学习:
重点推荐项目
利用这些项目,您可以将本仓库转化为作品集,而不仅仅是阅读清单:
AI / 生成式AI赛道
此赛道适用于AI工程师、生成式AI工程师、大模型工程师、应用AI及代理平台相关的面试。
核心主题:
- 大模型与生成式AI基础 (新)
- RAG
- RAG工程 (新)
- 向量数据库
- 向量数据库——进阶(Pinecone、Weaviate、FAISS、pgvector、混合检索、重排序) (新)
- LLMOps
- 代理式AI
- 代理系统与工具使用 (新)
- 多智能体系统(模式、记忆、工具调用、故障处理) (新)
- 多模型与AI编排 (新)
- 多模态AI (新)
- CrewAI (新)
- n8n - AI工作流自动化 (新)
- n8n - 高级AI工作流 (新)
- LangGraph (新)
- LangSmith — 可观测性与评估 (新)
- 提示工程(CoT、ReAct、少样本、自洽性、ToT、输出控制) (新)
- 结构化输出与函数调用(JSON模式、工具使用、Pydantic、Instructor) (新)
- 大模型安全(提示注入、越狱、红队测试、防御机制) (新)
- MCP
- LangChain
- Anthropic概览
数据工程赛道
此赛道适用于管道、ETL、编排、数据仓库、湖仓一体、流处理以及地理空间相关岗位的面试。
核心主题:
- 面向AI的数据工程 (新)
- 数据建模 (新)
- 数据架构 (新)
- Apache Spark
- Apache Kafka
- Apache Airflow
- dbt简介
- dbt面试指南
- Apache Iceberg
- Delta Lake
- DuckDB
- OpenClaw
- 地理空间AI系统(Google Solar API、ArcGIS、PostGIS、H3) (新)
深度学习赛道
此赛道适用于机器学习工程师、深度学习工程师以及需要深入理解架构和训练流程的应用AI相关岗位的面试。
核心主题:
DevOps赛道
此赛道适用于基础设施、CI/CD、容器、编排、IaC以及AI系统测试相关岗位的面试。
核心主题:
经典机器学习赛道
此赛道适用于经典机器学习算法相关的面试、数据科学岗位,以及作为机器学习工程师岗位的基础知识。
核心主题:
MLOps赛道
此赛道适用于MLOps工程师、高级机器学习工程师以及生产级ML系统相关岗位的面试。
核心主题:
- LLMOps / MLOps工程 (新)
- MLflow
- 模型可解释性(SHAP、LIME)
- 特征存储
- 模型服务
- 数据质量与验证
- 大模型评估(评估指标、基准测试、幻觉检测、人机协作) (新)
- 评估与护栏 (新)
云上机器学习平台赛道
此赛道适用于在AWS、GCP或Azure等云平台上工作的机器学习工程师及MLOps相关岗位的面试。
核心主题:
- 云上机器学习平台概述 (新)
- 云上机器学习平台对比(SageMaker vs Vertex AI vs Azure ML)
- AWS SageMaker面试指南 (新)
- Google Vertex AI面试指南 (新)
- Azure Machine Learning面试指南 (新)
系统设计赛道
此赛道适用于需要深入系统设计能力的高级机器学习工程师、资深工程师及首席工程师岗位的面试。
核心主题:
编码挑战赛道
此赛道适用于需要现场编码、居家编程题解答或SQL考核的面试环节。
核心主题:
- 编码挑战概述 (新)
- Python编码挑战 (新)
- SQL编码挑战 (新)
框架赛道
此赛道适用于需要实际动手开发Python API并具备AI框架专业知识的岗位。
核心主题:
经典题库
监督学习与无监督学习的区别是什么?
监督学习是指你已经知道结果,并且提供了完全标注的结果数据;而在无监督学习中,你并没有得到标注好的结果数据。所谓“完全标注”,就是指训练数据集中的每个样本都附有算法应该自行得出的答案标签。例如,一个花卉图像的标注数据集会告诉模型哪些照片是玫瑰、雏菊和水仙花。当给模型一张新图片时,它会将这张图片与训练样本进行比较,从而预测出正确的标签。

什么是强化学习?如何定义它?
强化学习不同于监督学习之处在于,它不需要提供标注好的输入-输出对,也不需要明确纠正次优动作。相反,它的重点在于在探索未知领域与利用现有知识之间找到平衡。在强化学习中,每一步学习都会根据某种奖励机制来决定给予模型正向或负向的反馈,并据此调整模型的行为。
![]()
什么是深度学习?
深度学习被定义为受大脑结构和功能启发的人工神经网络(ANN)算法。深度学习通常专注于非线性分析,因此特别适用于人工智能领域的非线性问题。
机器学习与深度学习的区别是什么?
由于深度学习是机器学习的一个子集,而两者又都是人工智能的一部分。虽然基础的机器学习模型在其特定任务上会逐渐改进,但仍然需要人工干预。如果某个AI算法的预测不准确,工程师就需要介入并进行调整。而在深度学习中,算法可以通过自身的神经网络自主判断预测是否准确。

半监督学习与强化学习的区别是什么?
半监督学习在训练过程中会使用少量的标注数据结合大量的未标注数据。它介于监督学习(完全标注)和无监督学习(无标注)之间。常见的技术包括自训练、标签传播和生成模型等。例如:用100张标注过的图片和10,000张未标注的图片来训练一个图像分类器。
强化学习(RL)是一种范式,其中智能体通过与环境交互来学习,根据其行为获得奖励或惩罚。与基于固定数据集工作的半监督学习不同,强化学习涉及序列决策过程。智能体会学习一种策略,以最大化随时间累积的奖励。例如:训练机器人行走或训练智能体下棋。
偏差与方差的区别是什么?
偏差是指模型所做的过度简化假设。
方差则是指模型不仅能够学习数据中的规律,还会学习其中的噪声,从而导致模型的高度变异性。偏差和方差之间总是存在权衡关系,因此建议在这两者之间找到平衡,并始终使用交叉验证来确定最佳模型。
什么是线性回归?它是如何工作的?
线性回归是在二维平面上拟合一条直线,以明确因变量与自变量之间的相关性。它使用简单的直线/斜率公式,最常见的是 f(X) = Mx + b 的形式。
其中,b 表示偏置项,
X 表示输入变量(自变量),
f(X) 表示 Y,即因变量(结果)。
线性回归的工作原理是:给定 n 个统计单位的数据集,线性回归模型假设因变量 y 与 p 维自变量 x 之间的关系是线性的。这种关系通过误差项 ε 来建模——这是一个不可观测的随机变量,会在因变量和自变量之间的线性关系中引入“噪声”。因此,模型的形式为 Y = B0 + B1X1 + B2X2 + …… + BN XN。
这也意味着:Y(i) = X(i)^T + B(i)。
其中,T 表示转置,
X(i) 表示第 i 个记录的输入向量,
B(i) 表示偏置向量。
回归分析的应用场景:
泊松回归用于计数型数据。
逻辑回归和 probit 回归用于二元数据。
多项式逻辑回归和多项式 probit 回归用于分类数据。
有序 logit 和有序 probit 回归用于顺序型数据。
什么是逻辑回归?它是如何工作的?
逻辑回归是一种统计方法,用于根据一个或多个自变量预测二元响应的概率。也就是说,给定某些因素,逻辑回归可以用来预测只有两个可能取值的结果,比如 0 或 1、通过或不通过、是或否等。逻辑回归适用于因变量(目标变量)为分类变量的情况。例如:
预测一封电子邮件是垃圾邮件(1)还是正常邮件(0);
判断肿瘤是恶性(1)还是良性(0);
判断一笔交易是否为欺诈(1 或 0)。
预测基于指定类别的概率进行。其工作原理与线性回归类似,但使用 logit 函数将数值压缩到 0 到 1 之间,从而得到概率值。
什么是 logit 函数?或者 sigmoid 函数?它们在机器学习和深度学习中有哪些应用?
Sigmoid 函数可能适用于将实数值转换为表示概率的值。而 Logit 函数的作用则是将概率值从负无穷映射到正无穷,最终将其转换为 0 或 1 的真实数值,代表假或真。Logit 函数常用于分类任务中,尤其是在逻辑回归中;而 Sigmoid 函数则广泛应用于深度学习中,用于在某一层或输出层中获取名义上的结果。
线性回归方程的梯度下降法公式是什么?

什么是支持向量机?它与OVR分类器有何不同?
支持向量机是一种用于分类和回归的技术。它通过超平面估计来找到最佳的线性拟合超平面。尽管如此,SVM也可以通过核技巧处理非线性问题。SVM的核心思想是基于间隔最大化(即最大化两类之间的距离)。
“一对多”是所有涉及分类的机器学习算法中常用的基本分类器概念,其基本思路是将某一类与其他所有类进行比较。
为了使二分类器在多分类问题中表现良好,有两种启发式方法可以改进多分类任务:
![]()
使用OVO策略的算法包括:
- 极限学习机(ELM)
- 支持向量机(分类器)
- K近邻算法(基于距离的邻近类别)
- 朴素贝叶斯(基于最大后验概率MAP)
- 决策树(父节点选择一个特征后,在子节点中继续决策)
- 神经网络(不同结构的网络)

SVM核函数的类型
可以将核函数看作是针对特定应用场景而设计的过滤器。
- 多项式核(常用于图像处理)
- 高斯核(当对数据缺乏先验知识时使用)
- 高斯径向基函数(与第2种相同)
- 拉普拉斯RBF核(推荐用于训练集超过百万条样本的情况)
- 双曲正切核(基于神经网络的核函数)
- Sigmoid核(可作为神经网络的代理)
- ANOVA径向基核(适用于回归问题)
回归分析中有哪些不同的评估指标?
回归分析中有多种评估指标:
- 均方误差(MSE):估计值与实际值之间差的平方的平均值。
- 平均绝对误差(MAE):绝对差的平均值。

如何定义平均绝对误差与均方误差?
MAE:当你进行回归分析且不希望异常值产生过大影响时,应使用MAE。此外,如果你知道数据分布是多峰的,并且希望预测结果落在某个峰值上而非平均值上,MAE也会很有用。 MSE:相反,当你希望惩罚异常值时,则应使用MSE。
如何评估你的分类器?
分类器可以通过多种方式评估,最基本的是混淆矩阵及其相关指标,如真正例(TP)、真负例(TN)、假正例(FP)和假负例(FN)。同时,还可以结合准确率、精确率和召回率等指标进行综合评估。
什么是分类?
分类是指根据指定的类别对各类别或实体进行归类,判断该类别是否存在于给定的数据集中。这一概念广泛应用于基于图像的分类或基于数据的分类。分类的结果通常以“是”或“否”的形式呈现,也可能以具体对象或类别的形式给出。
如何区分多标签分类与多分类?
多分类指的是一个样本只能属于多个类别中的某一个,例如A、B或C,但不能同时属于两个或更多类别。
而在多标签分类中,一个样本可以属于一个或多个类别,例如A,或者A和B,甚至A、B和C。

什么是混淆矩阵?
混淆矩阵,也称为误差矩阵,是一种特殊的表格布局,用于可视化算法(通常是监督学习算法,而非监督学习中则称为匹配矩阵)的性能。矩阵的每一行代表预测为某一类的实例,而每一列则代表实际属于某一类的实例(反之亦然)。
之所以称为“混淆矩阵”,是因为它能清晰地展示系统是否容易将两类混淆(即经常把一类误判为另一类)。

哪些算法属于高偏差算法?
偏差是指模型为了简化目标函数以便于近似而做出的假设。
- 高偏差算法最常见的是线性算法,这些算法关注线性关系或线性距离。例如:
- 线性回归、逻辑回归或线性判别分析。
哪些算法属于高方差和低方差算法?
方差是指当训练数据发生变化时,目标函数的估计值会发生多大的变化。
- 高方差算法包括决策树、K近邻算法和支持向量机。
- 低方差算法包括线性回归、逻辑回归和LDA。
为什么上述算法会表现出高偏差或高方差?
线性机器学习算法通常具有高偏差和低方差。 而非线性机器学习算法则往往具有低偏差和高方差。
预测偏差的根本原因有哪些?
预测偏差的可能根本原因包括:
- 特征集不完整
- 数据噪声过多
- 数据处理流程存在缺陷
- 训练样本存在偏差
- 正则化过于强烈
什么是梯度下降?随机梯度下降与普通梯度下降有何区别?
梯度下降是一种用于解决优化问题的迭代方法。在经典的梯度下降中,没有“epoch”或“batch”的概念。梯度下降的关键在于:
- 根据梯度方向更新权重。
- 梯度是从所有数据点精确计算得出的。 随机梯度下降可以这样理解:
- 它是一种快速而粗略的方法,仅从单个数据点估算梯度。
- 如果我们将“单个数据点”放宽到“数据的一个子集”,那么就引入了批次和轮次的概念。

什么是随机森林和决策树?
决策树是一种决策支持工具,它采用树状模型来表示决策及其可能的后果,包括随机事件的结果、资源成本和效用。它是展示仅包含条件控制语句的算法的一种方式。
随机森林或随机决策森林是一种用于分类、回归及其他任务的集成学习方法,其工作原理是在训练时构建大量决策树,并输出各棵树的类别众数(分类)或预测均值(回归)。这种方法可用于消除由单棵决策树引起的过拟合问题。

什么是分裂过程?
根据提供的数据特征将数据划分为子集。(对决策树非常有用)
什么是剪枝过程?
剪枝是指缩短决策树的分支。这一过程旨在使决策更快地做出,通过将某些分支节点转化为叶节点来减小树的规模,并移除原分支下的叶节点。
如何进行树的选择?
树的选择主要基于以下两点:
1) 熵
决策树是从根节点自上而下构建的,涉及将数据划分为包含相似取值(同质性高)的子集。ID3算法使用熵来衡量样本的同质性。如果样本完全同质,熵为零;如果样本被均等划分,则熵为一。
熵(x) -> -p log(p) - qlog(q),其中对数以2为底。
2) 信息增益
信息增益是基于数据集在某个属性上划分后熵的减少量。构建决策树的关键在于找到能够带来最大信息增益的属性(即产生最同质的分支)。
2.1) 计算目标变量的熵。
2.2) 然后根据不同的属性对数据集进行划分,计算每个分支的熵,并按比例加权求和,得到划分后的总熵。用划分前的熵减去划分后的总熵,所得结果即为信息增益,也就是熵的减少量。
2.3) 选择信息增益最大的属性作为决策节点,按其分支划分数据集,并对每个分支重复上述过程。
决策树中熵的伪代码:
'''
from math import log
def calculateEntropy(dataSet):
number = len(dataSet)
labelCounts = {}
for featureVector in dataSet:
currentLabel = featureVector[-1]
if currentLabel not in labelCounts.keys():
labelCounts[currentLabel] = 0
labelCounts[currentLabel] +=1
entropy = 0
for i in labelCounts:
probability = float(labelCounts[keys])/number
entropy -=probability*log(probability,2)
return entropy
'''
随机森林与决策树如何工作?
-* 决策树 *- 一种简单的树结构,由树的选择过程定义。
-* 随机森林 *- 多棵决策树的组合,通过聚合方式确定最终结果。
在分类任务中,随机森林的分类结果基于每棵树的投票;而在回归任务中,则基于各棵树结果的平均值。
什么是基尼指数?请解释该概念?
基尼指数通过从1中减去每个类别的概率平方和来计算。它倾向于较大的划分。
比如,你想绘制一棵决策树,并决定第一次应该使用哪个特征/列进行划分?这很可能由你的基尼指数来决定。
基尼指数的计算过程是怎样的?
基尼指数:
对于每次划分中的每个分支:
计算该分支所占的比例,用于加权;
对于分支中的每个类别:
计算该类别在当前分支中的概率;
将该概率平方;
将所有类别概率的平方相加;
用1减去这个总和。#这就是该分支的基尼指数
根据基准概率对每个分支进行加权;
将各分支的加权基尼指数相加。
基尼分割/基尼指数的公式是什么?
它倾向于较大的划分。
使用类别的平方比例。
如果完全正确分类,基尼指数为零。
如果均匀分布,则为1 – (1/# 类别)。
你希望选择一个具有低基尼指数的变量进行划分。
算法公式为:1 – ( P(类别1)^2 + P(类别2)^2 + … + P(类别N)^2)
什么是概率?如何定义似然?
概率表示某事件发生的百分比,或事件的成功率。例如,可以说某个事件发生的概率是70%等。
假设我们抛掷一枚硬币,正面朝上的概率是0.5,因为硬币正反面的概率相等。因此,正面朝上的概率就是0.5。
似然是条件概率。仍以抛硬币为例,假设我们抛了10次,其中有7次正面朝上,3次背面朝上。似然可以通过二项分布计算得出,具体数值会因分布的不同而有所变化。
似然(成功事件) - > L(0.5|7)= 10C7 * 0.5^7 * (1-0.5)^3 = 0.1171
L(0.5 | 7) 表示在已知成功次数的情况下,出现失败的概率。
10C7 表示从10次试验中选取7次成功的组合。
一般而言:
事件(X | Y) -> C(总事件|成功事件) * [(X的概率) ^ (成功事件X)] * [(1 - X的概率) ^ (1 - 成功事件X)]
什么是熵?信息增益又是什么?它们有何区别?
熵:指正在处理的信息的随机性。
信息增益是将某个类别的概率乘以其概率的以2为底的对数。信息增益倾向于具有许多不同取值的小型划分。最终,你需要根据自己的数据和划分标准进行实验。信息增益取决于熵的变化(熵的减少意味着信息增益的增加)。
什么是KL散度?在机器学习中它的应用场景是什么?
库尔贝克-莱布勒散度用于计算一个分数,该分数衡量一个概率分布相对于另一个概率分布的差异。
如何定义交叉熵?它的主要用途是什么?
熵:指正在处理的信息的随机性。
交叉熵:信息论领域中的一种度量方法,基于熵的概念,通常用于计算两个概率分布之间的差异。它与KL散度密切相关,但又有所不同;KL散度衡量的是两个概率分布之间的相对熵,而交叉熵则可以被视为计算这两个分布的总熵。
交叉熵可以通过P和Q中事件的概率来计算,公式如下: H(P, Q) = – sum x in X P(x) * log(Q(x))
你如何定义AUC-ROC曲线?
ROC曲线是一条概率曲线,而AUC则代表分类器对类别的区分能力或程度。AUC-ROC曲线是在不同阈值设置下对分类问题性能的衡量指标。
它反映了模型区分不同类别能力的强弱。主要用于分类问题中,在不同阈值下的性能评估。AUC值越高,表明模型越能准确地将0类预测为0、1类预测为1。类比而言,AUC值越高,说明模型越能有效地区分患病患者与健康个体。

你如何定义假阳性(第一类错误)和假阴性(第二类错误)?
假阳性:指模型错误地将某个样本预测为正类的情况。(实际为A,却被预测为B),也称为第一类错误。
假阴性:指模型错误地将某个样本预测为负类的情况。(实际不是A,却被预测为A),也称为第二类错误。
你如何定义精确率(Precision)和召回率(真正例率,Recall)?
以一个简单的分类例子——“将电子邮件分类为垃圾邮件或非垃圾邮件”为例:
精确率衡量的是被标记为垃圾邮件的邮件中,实际正确分类的比例,即阈值线右侧点所占的比例。也可以定义为被判定为正类的事件中,真正为正类的比例,例如:
精确率 = 真正例 / (真正例 + 假正例)
召回率则衡量的是所有实际的垃圾邮件中,被正确分类的比例:
召回率 = 真正例 / (真正例 + 假阴例)
精确率和召回率之间始终存在权衡关系,这与偏差和方差的关系类似。
对于你的分类模型,你会更倾向于选择精确率还是召回率?
这完全取决于具体的业务场景或领域专家的需求。例如,在欺诈检测等金融领域(如银行、在线电商网站),通常建议优先考虑提高召回率而非精确率。而在其他场景,比如单词建议或多标签分类任务中,则可能更注重精确率。总体而言,应根据具体的应用场景来决定。
什么是F1分数?它体现了怎样的含义?
F1分数是精确率和召回率的调和平均值,当精确率和召回率达到完美时,F1分数可达1。它也被称为Dice相似度系数。
大卫(统计学家):F1分数之所以被广泛使用,是因为它同等重视精确率和召回率。然而在实际应用中,不同类型分类错误所带来的代价往往不同。换句话说,精确率和召回率的重要性因具体问题而异。
感知机与支持向量机(SVM)有何区别?
(核)感知机与SVM之间的一个主要实际区别在于:感知机可以进行在线训练(即随着新样本逐一到达时不断更新权重),而SVM则无法做到这一点。感知机本质上就是铰链损失函数加上随机梯度下降优化算法。
SVM的目标与L2正则化的感知机几乎相同。
SVM可以看作是铰链损失函数加上L2正则化项,再结合二次规划或其他更复杂的优化算法(如SMO算法)。
逻辑回归与线性回归有什么区别?
LogR是分类器,LR则是回归模型。
LogR的输出值介于0到1之间,表示概率。
LR的输出值则是从1到正无穷的实数,其中N为已知常数。

什么是异常值?如何去除异常值?
异常值是指在从总体中随机抽取的样本中,与其他数值相比偏离过大、显得不正常的观测值。

去除异常值的方法包括:
1) 使用四分位距法(IQR * 1.5)
2) 使用Z-score标准化后剔除法(使远离均值的数据点被移除)
3) 结合Z-score与IQR的自定义方法
什么是正则化?
正则化技术用于通过适当地拟合给定的训练数据集来减少误差,并防止过拟合。它会在损失函数中加入惩罚项(Lambda乘以权重大小),以抑制过于复杂的模型。
L1正则化与L2正则化有何区别?
1) L1正则化(套索回归)
(最小绝对收缩和选择算子)在损失函数中加入系数绝对值大小作为惩罚项。
2) L2正则化(岭回归)
在损失函数中加入系数平方大小作为惩罚项。图中高亮部分即为L2正则化项。
这两种方法的关键区别在于:套索回归会将不重要特征的系数缩减至零,从而直接移除这些特征。因此,在特征数量较多的情况下,套索回归在特征选择方面表现更为出色。
数据采样有哪些不同的方法?
数据采样是一种统计分析技术,用于从较大的数据集中选取具有代表性的子集,并对其进行处理和分析,以识别整体数据中的模式和趋势。常见的数据采样方法有:
1) 简单随机抽样(随机选取记录)
2) 分层抽样(按共同特征划分子集,并保持各子集比例一致)
3) 聚类抽样(将总体按特定因素划分为若干聚类,再对每个聚类进行简单随机抽样)
4) 多阶段抽样(在聚类抽样的基础上进一步分层抽样)
5) 系统抽样(按固定间隔选取样本)
你能解释一下欠采样和过采样的概念吗?
欠采样是指将某一类别的样本从较大规模缩小到较小规模的过程,例如将100万条记录减少到10万条,同时保持各类别间的信息比例不变。
过采样是指使用较小的类别样本(例如10万条)来扩展到百万级别,同时保持数据的趋势和特性,从而构建完整的数据集。
什么是不平衡类别?
当各类别之间的样本数量不均衡时,就称为类别不平衡。具体来说,就是多个类别或所关注类别的正态分布或支持计数不相同或相差很大。
例如:
- 类别A有100万条记录
- 类别B有1000条记录
这种情况就是一个不平衡的数据集,而类别B则属于欠平衡类别。
如何解决类别不平衡问题?
可以通过以下技术来解决类别不平衡问题:
- 过采样
- 欠采样
- SMOTE(结合过采样和欠采样的方法)
- 引入更多数据集
- 进行更深入的趋势分析
如何定义加权移动平均?
加权移动平均是在移动平均的基础上,为某些特定时间段内重复出现的值赋予更高的权重,以确保这些值在计算中具有更高的优先级或影响力。
什么是ARIMA模型?
ARIMA是自回归积分滑动平均模型的简称,它结合了回归分析和移动平均法,适用于时间序列分析,并能以可接受的精度进行趋势预测。
如何定义Bagging和Boosting?XGBoost与随机森林有何不同?
- Bagging:通过从原始数据集中有放回地抽取子样本,生成多个训练数据集,从而降低预测的方差。
例如:随机森林(使用随机抽样的子集)。 - Boosting:一种迭代技术,根据上一次分类的结果调整样本的权重。
例如:AdaBoost、XGBoost(主要采用梯度下降法)。
什么是IQR?它如何帮助去除异常值?
IQR即四分位距,表示第三四分位数与第一四分位数之间的范围。
四分位数将数据分为四个相等的部分:
- Q1:0%-25%
- Q2:25%-50%
- Q3:50%-75%
- Q4:75%-100%
IQR = Q3 - Q1
什么是SMOTE?
SMOTE是一种合成少数类过采样技术。
它是一种非常流行的过采样方法,旨在改进随机过采样,但其在高维数据上的表现尚未得到充分研究。KNN算法可以从SMOTE中受益。
如何解决过拟合或欠拟合问题?
欠拟合:
- 增加模型复杂度
- 延长训练时间
- 降低学习率
过拟合:
- 交叉验证
- 提前停止
- 提高学习率(跳跃式调整)
- 集成方法
- 引入更多数据
- 删除特征
避免过拟合的一些技术有哪些?
- 交叉验证
- 提前停止
- 提高学习率(跳跃式调整)
- 集成方法
- 引入更多数据
- 删除特征
什么是神经元?
人工神经网络中的“神经元”是对生物神经元的一种数学近似。
它接收一个输入向量,对其进行变换,并输出一个标量值。
可以将其视为一种滤波器。通常,神经网络中会使用非线性滤波器。
什么是隐藏层和输入层?

- 输入层:神经网络的初始输入层。
- 隐藏层:位于输入层和输出层之间的一层,它会对输入应用权重,并通过激活函数处理后作为输出传递出去。
简而言之,隐藏层对输入数据进行非线性变换。
隐藏层的数量和结构取决于神经网络的具体功能,且每层的权重也可能不同。
什么是输出层?
ANN中的输出层决定了最终的输出结果,其具体形式完全取决于应用场景以及用于数值缩放的函数。
常见的选择包括:
- 线性函数:用于回归任务。
- Sigmoid/Softmax函数:用于分类任务。
什么是激活函数?
激活函数对接收到的输入进行变换,以使值保持在激活函数允许的范围内。
它更像是应用于整个层(向量)的数学尺度滤波器,用于调整数值范围。
常见的激活函数包括:
Sigmoid或Softmax函数(存在梯度消失问题)
Softmax的输出是一个非负向量,且总和为1。当类别互斥时(例如“这些图片只包含猫或狗,不可能同时包含两者”),Softmax非常有用。如果有2、3、4、5个互斥标签,都可以使用Softmax。Tanh函数(同样存在梯度消失问题)
如果输出被限制在[-1,1]范围内,Tanh可能比较合适。ReLU函数
当输出有上下限约束时,ReLU单元或类似变体会很有帮助。
如果输出仅限于非负值,那么使用ReLU作为激活函数是合理的(0到Max(x))。Leaky ReLU函数
用于解决隐藏层中ReLU函数可能出现的“死亡ReLU”问题。
什么是卷积神经网络?
卷积神经网络是神经网络的一个子类,至少包含一个卷积层。
它们非常适合捕捉局部信息(如图像中的邻近像素或文本中的周围词语),同时还能降低模型的复杂度(训练更快、所需样本更少、减少过拟合风险)。
卷积单元会从前一层的多个单元接收输入,共同形成一个邻域。因此,这些输入单元会共享权重。
什么是循环神经网络?
循环神经网络是一类人工神经网络,其中节点之间的连接沿着时间序列形成有向图。
这使得它能够表现出时间动态行为。RNN源自前馈神经网络,可以利用其内部状态(记忆)来处理可变长度的输入序列。这使它适用于诸如无分段连笔手写识别或语音识别等任务。

什么是LSTM网络?
长短期记忆网络(LSTM)是一种人工循环神经网络架构。
与标准的前馈神经网络不同,LSTM具有反馈连接。它不仅可以处理单个数据点(如图像),还可以处理整个数据序列(如语音或视频)。
例如,LSTM适用于无分段连笔手写识别、网络流量异常检测或入侵检测系统等任务。

什么是卷积层?
卷积是将一个滤波器简单地应用于输入,从而产生激活的过程。对输入重复应用同一个滤波器会生成一张激活图,称为特征图,它指示了在输入(如图像)中检测到的特定特征的位置和强度。
您可以使用基于水平线、垂直线、灰度转换或其他转换滤波器的滤波器。

什么是池化层?
池化层通过总结特征图上各个区域中特征的存在情况,提供了一种下采样特征图的方法。
常见的两种池化方法是平均池化和最大池化,它们分别总结了特征的平均存在情况和最显著的特征激活情况。
这一步骤用于缩小特征尺度(例如,您已经检测到垂直线,现在需要减少一些特征以进入下一阶段)。

什么是最大池化层?它是如何工作的?
最大池化使用所考虑区域内找到的最大值。最大池化操作会计算每个特征图上每个小块中的最大值。

什么是核函数或滤波器?
核方法是一类用于模式分析的算法,其中最著名的是支持向量机(SVM)。
核函数已被引入用于序列数据、图、文本、图像以及向量等。
核函数用于通过线性分类器解决非线性问题,使其变得可用。

什么是分割?
将数字源划分为多个片段的过程。
如果以图像为例,可以想象将图像源分割成多个片段,比如飞机对象。
分割的目标是简化和/或改变图像的表示形式,使其更具意义且更易于分析。
什么是姿态估计?
从图像中检测出人体姿势即为姿态估计。
什么是前向传播?
输入数据沿网络的正向流动。每一层隐藏层接收输入数据,根据激活函数进行处理,并传递给下一层。

什么是反向传播?
反向传播是训练神经网络的核心。它是根据前一 epoch(迭代)中获得的误差率(即损失)来微调神经网络权重的做法。
正确调整权重可以降低误差率,从而提高模型的泛化能力,使其更加可靠。

什么是丢弃神经元?
“丢弃”是指在神经网络中随机丢弃某些单元(包括隐藏层和输出层)。
简而言之,丢弃就是在训练过程中随机忽略某些神经元。所谓“忽略”,指的是在特定的前向或反向传播过程中不考虑这些单元。
更技术性地说,在每个训练阶段,每个节点都有概率 p 被保留,概率 1-p 被丢弃,从而留下一个规模较小的网络;被丢弃的节点的所有输入和输出边也会被移除。
什么是展平层?
展平层将输入的空间维度压缩为通道维度。例如,如果该层的输入是一个 H×W×C×N×S 的数组(一系列图像),那么展平后的输出就是一个 (H×W×C)×N×S 的数组。
反向传播是如何改进模型的?
它是根据前一 epoch(迭代)中获得的误差率(即损失)来微调神经网络权重的做法。正确调整权重可以降低误差率,从而提高模型的泛化能力,使其更加可靠。
什么是相关性和协方差?
“协方差”表示变量之间线性关系的方向。
而“相关性”则同时衡量两个变量之间线性关系的强度和方向。
在比较来自不同总体的数据样本时,协方差用于确定两个随机变量共同变化的程度,而相关性则用于判断一个变量的变化是否会导致另一个变量的变化。协方差和相关性都用于衡量变量之间的线性关系。

什么是方差分析?何时使用方差分析?
方差分析(ANOVA)是一组统计模型及其相关的估计方法(例如组间和组内的“变异”),用于分析样本中各组均值之间的差异。
当您收集了一个分类自变量和一个定量因变量的数据时,可以使用单因素方差分析。自变量应至少有三个水平(即至少三个不同的组或类别)。
你如何定义降维?我们为什么要使用降维?
降维是指通过获取一组主变量来减少所考虑的随机变量数量的过程。方法可以分为特征选择和特征提取。
我们使用降维的原因是:
1) 数据集过于庞大
2) 训练时间/数据收集时间过长
3) 假设过于复杂/模型过拟合
降维的类型包括:
1) 特征选择
2) 特征投影(将数据从高维空间映射到低维空间)
3) 主成分分析
一种用于降维的线性技术,它以最大化方差的方式将数据线性映射到低维空间。
4) 非负矩阵分解
5) 核主成分分析(利用核技巧的非线性方法)
6) 基于图的核主成分分析(局部线性嵌入、特征嵌入)
7) 线性判别分析
一种用于统计学、模式识别和机器学习的方法,用于寻找能够区分或分离两个或多个类别对象或事件的特征线性组合。
8) 广义判别分析
8) t-SNE(是一种非线性的降维技术,适用于高维数据的可视化。)
9) UMAP
均匀流形近似与投影(UMAP)是一种非线性降维技术。在视觉上,它类似于t-SNE,但它假设数据均匀分布在局部连通的黎曼流形上,并且该流形的黎曼度量在局部是常数或近似常数。
10) 自编码器(可以学习非线性降维函数)
什么是主成分分析?PCA在降维中是如何工作的?
主成分分析是降维的主要线性技术,它通过线性映射将数据降至低维空间,同时使低维表示中的数据方差最大化。实际上,首先会构建数据的协方差矩阵(有时是相关矩阵),然后计算该矩阵的特征向量。与最大特征值相对应的特征向量(即主成分)可用于重建原始数据的大部分方差。原始空间(维度等于数据点的数量)已被降维至由少数几个特征向量张成的空间(虽然会有一定的信息损失,但有望保留最重要的方差)。

什么是最大似然估计?
最大似然估计是一种确定模型参数值的方法。这些参数值被选择为使得模型描述的过程产生实际观测到的数据的可能性最大。
什么是朴素贝叶斯?它是如何工作的?
一种通过最大化似然函数来估计概率分布参数的方法,使得在假定的统计模型下,观测到的数据具有最大的概率。
什么是贝叶斯定理?
基于对可能与该事件相关的条件的先验知识,对某一事件发生的概率进行评估。
什么是概率?
概率是一个介于0和1之间的数值,大致来说,0表示不可能发生,1表示必然发生。事件的概率越高,该事件发生的可能性就越大。例如:
一个简单的例子就是抛掷一枚公平(无偏)的硬币。由于硬币是公平的,两种结果(“正面”和“反面”)发生的概率相等;“正面”的概率等于“反面”的概率;并且由于没有其他可能的结果,因此“正面”或“反面”任一结果的概率都是1/2(也可以写成0.5或50%)。
什么是联合概率?
联合概率是一种统计度量,用于计算两个事件同时发生且在同一时刻发生的可能性。
P(A和B) 或 P(A ^ B) 或 P(A & B)
联合概率的计算公式为:
P(A和B) = P(A给定B) * P(B)

什么是边缘概率?
在变量Y已知的情况下,事件X=A发生的概率。单个随机事件的概率P(A),即一个独立事件的单一概率。
什么是条件概率?什么是分布概率?
在事件B已知的情况下,事件A发生的概率称为条件概率。
什么是Z分数?
Z分数(也称为标准分数)表示某个观测值或数据点与所观测数据的均值相差多少个标准差。
什么是KNN?它是如何工作的?邻域标准是什么?如何调整它?
KNN算法依赖于计算某一点与类中各个点之间的距离,从而形成基于投票的邻域分类器。最终预测结果取决于哪些点最接近待预测的输入点。你可以根据需要设置任意数量的邻居,指定的邻居越多,分类器就会考虑更多的类别来决定最终结果。
其工作原理与距离算法类似,你需要先确定目标点,然后计算所有邻近点的距离,找出最近的几个点。之后根据投票结果得出结论,例如,在该邻域内有5个属于类别A的点,2个属于类别B的点,则最终判定为类别A。
根据欺诈交易,您更倾向于低假阴率还是低假阳率?
建议选择低假阴率,原因是如果将实际发生的欺诈交易误判为未发生,
这将对业务模式产生巨大影响。
KNN和K均值算法有何区别?
K均值:无监督学习,随机选取初始点,通过基于距离的平均值进行预测。
KNN:有监督学习,基于邻近样本,使用C值进行投票。

什么是注意力机制?请举例说明。
神经网络中的注意力机制使模型能够专注于其输入(或特征)的一个子集。
1) 硬注意力(图像裁剪)
2) 软注意力(突出显示关注区域,同时保持图像尺寸不变)

什么是自编码器?什么是Transformer?
自编码器接收输入数据,将其压缩成一个代码,然后尝试从这个压缩后的代码中重建原始输入。这就像先读完《白鲸记》,再根据简短的梗概尝试重新写出原作一样。虽然这是一种有趣的深度学习技巧,但在现实世界中,简单的自编码器应用较少。然而,如果增加一些复杂性,其应用场景就会大大扩展:例如,在训练过程中同时使用带噪声和无噪声的图像,自编码器可以去除图像、视频或医学扫描等视觉数据中的噪声,从而提高图像质量。
什么是图像字幕生成?
图像字幕生成是指为图像生成文字描述的过程。它结合了自然语言处理和计算机视觉技术来生成字幕。

请举几个文本摘要的例子。
文本摘要的任务是将一段较长的文本浓缩成较短的形式,在保留原意的同时减少文本的篇幅。
一些例子包括:
1) 论文摘要
2) 文档摘要
等
请定义风格迁移。
风格迁移是一种计算机视觉技术,它将一张图像的艺术风格应用到另一张图像的内容上。
该技术通常使用卷积神经网络(如VGG)分离并重组两张图像的内容和风格表示。损失函数结合了内容损失(保持内容图像的结构)和风格损失(匹配风格图像的Gram矩阵统计信息)。神经风格迁移由Gatys等人于2015年提出。现代方法则采用快速风格迁移(预训练的前馈网络)以实现实时应用。应用场景包括:照片滤镜、艺术图像生成、创意工具等。
请定义图像分割和姿态分析。
图像分割:在数字图像处理和计算机视觉中,图像分割是将数字图像划分为多个区域(像素集合,也称为图像对象)的过程。分割的目标是简化图像表示,使其更易于分析。
姿态分析:
指确定人体位置和方向的过程。

请定义语义分割。
语义分割是根据物体类型对图像进行分割。

什么是实例分割?
与语义分割类似,但针对每个独立的物体,并为其分配唯一的标识符。
什么是命令式编程和符号式编程?

请定义文本分类,并给出一些应用场景。
文本分类又称文本标注或文本归类,是将文本按照特定类别进行划分的过程。通过自然语言处理(NLP),文本分类器可以自动分析文本内容,并根据其内容自动分配预先定义好的标签或类别。
应用场景包括:
1) 文档分类
2) 文档归类
3) 文档中的兴趣点识别
4) 光学字符识别(OCR)
等

处理缺失数据应使用哪些算法?
参考来源:https://github.com/andrewekhalel/MLQuestions
1) 偏差与方差之间存在怎样的权衡?[来源]
如果我们的模型过于简单,参数很少,则可能具有高偏差和低方差。相反,如果模型参数较多,则会表现出高方差和低偏差。因此,我们需要找到一个适当的平衡点,避免过拟合和欠拟合数据。[[来源]](https://towardsdatascience.com/understanding-the-bias-variance-tradeoff-165e6942b229)
2) 什么是梯度下降法?[来源]
[[解答]](https://machinelearningmastery.com/gradient-descent-for-machine-learning/)
梯度下降法是一种优化算法,用于寻找使成本函数最小化的函数参数(系数)值。
当参数无法通过解析方法(如线性代数)计算得出,而必须借助优化算法进行搜索时,梯度下降法尤为适用。
3) 请解释过拟合和欠拟合现象,以及如何应对它们?[来源]
[[解答]](https://towardsdatascience.com/overfitting-vs-underfitting-a-complete-example-d05dd7e19765)
机器学习/深度学习模型本质上是在其给定的输入(即训练特征)和目标输出(即标签)之间建立某种关系。无论这种学习到的关系(函数)的质量如何,其在测试集(与训练数据不同的数据集)上的表现都需要进一步评估。
大多数机器学习/深度学习模型都包含可训练的参数,这些参数会在训练过程中被优化,以建立输入与输出之间的关系。根据模型参数的数量,可以将其分为灵活性较高(参数较多)和灵活性较低(参数较少)两类。
当模型的灵活性(即参数数量)不足以捕捉训练数据中的潜在模式时,就会出现欠拟合问题。而当模型过于灵活、过度适应训练数据中的噪声时,则会出现过拟合现象。在后一种情况下,我们说模型“记住了”训练数据。
例如,用一阶多项式(直线)来拟合二阶多项式(二次函数),就是欠拟合的一个例子。同样,用十阶多项式来拟合一条直线,则属于过拟合。
4) 如何应对维度灾难?[来源]
- 特征选择(手动或通过统计方法)
- 主成分分析(PCA)
- 多维尺度分析
- 局部线性嵌入
[来源]
5) 什么是正则化?为什么使用正则化?请列举一些常见的正则化方法。[来源]
正则化是一种通过限制模型复杂度或灵活性来防止过拟合的技术。 示例:
- 岭回归(L2范数)
- Lasso回归(L1范数)
岭回归的一个明显缺点是模型的可解释性较差。它会将不重要特征的系数压缩到接近于零,但不会完全变为零。也就是说,最终模型中仍然会包含所有特征。然而,在Lasso回归中,当调节参数λ足够大时,L1惩罚项会使部分系数精确地等于零。因此,Lasso不仅能够进行正则化,还能实现变量选择,从而得到稀疏模型。 [来源]
6) 请解释主成分分析(PCA)。[来源]
主成分分析(PCA)是一种降维技术,用于在机器学习中减少数据集的特征数量,同时尽可能保留数据的信息量。其原理是找到数据变化最大的方向(主成分),并将数据投影到这些方向构成的低维子空间上。
7) 为什么ReLU在神经网络中比Sigmoid更好、更常用?[来源]
- 计算效率:由于ReLU是一个简单的阈值函数,前向传播和反向传播的速度更快。
- 减少梯度消失的风险:ReLU对正数的导数为1,对负数的导数为0;而Sigmoid激活函数在输入稍有变化时就会迅速饱和(梯度接近于0),从而导致梯度消失的问题。
- 稀疏性:当ReLU的输入为负数时,会产生稀疏激活现象,即只有少数神经元会被激活,从而使网络更加轻量化。
8) 给定一维卷积神经网络中每一层的步长S和卷积核大小,编写一个函数来计算网络中某个节点的感受野。这实际上就是计算有多少个输入节点会连接到CNN中的某个神经元。[来源]
感受野是指在一次运算中,用于生成输出的输入区域的一部分。
假设CNN的滤波器大小为k,某一层的感受野就是滤波器使用的输入数量k,再乘以输入中未被卷积滤波器缩小的维度a。这样就得到了k×a的感受野。
更直观地说,对于一个32×32×3的图像,如果使用5×5的卷积滤波器,那么对应的感受野就是滤波器尺寸5乘以输入体积的深度(RGB颜色通道),即5×5×3的尺寸。
9) 在图像/矩阵上实现连通组件。[来源]
10) 用C++实现一个稀疏矩阵类。[来源]
11) 编写一个函数来计算积分图像,并再编写一个函数从积分图像中获取区域和。[来源]
12) 当试图从带有噪声的样本中估计一个平面时,如何去除异常值?[来源]
随机抽样一致性算法(RANSAC)是一种迭代方法,用于从包含异常值的数据集中估计数学模型的参数,且不让异常值影响估计结果。[来源]
13) CBIR是如何工作的?[来源]]
[答案] 基于内容的图像检索是指利用图像本身的内容来提取元数据的概念。与目前基于图像关联关键词的检索方法不同,该技术通过计算机视觉技术生成元数据,以提取在查询过程中所需的相关信息。实现方式多种多样,从特征检测来提取关键词,到使用卷积神经网络(CNN)提取密集特征,并将其映射到已知的关键词分布上。
采用后一种方法时,我们不再关注图像中具体显示的内容,而是更关注由已知图像生成的元数据与一组已知标签或标记在该元数据空间中的相似性。
14) 图像配准是如何工作的?稀疏与稠密光流等方法。[来源]
15) 请描述卷积是如何工作的。如果输入是灰度图像和RGB图像,又会有什么不同?下一层的形状由什么决定?[来源]
在卷积神经网络(CNN)中,卷积操作会使用一个称为核或滤波器的小矩阵对输入图像进行处理。核以步长滑过图像,与图像对应位置的元素逐点相乘并求和,最终得到的结果称为特征图。
当输入为RGB图像(或多于3个通道)时,滑动窗口则会变成一个三维立方体。下一层的形状由卷积核大小、卷积核数量、步长、填充以及膨胀率等因素决定。
16) 请告诉我如何根据物体周围各个角度拍摄的图像及深度传感器测量数据,创建该物体的3D模型。[来源]
3D重建主要有两种流行的方法:
SfM更适合用于构建大型场景的模型,而MVS则更适合用于构建小型物体的模型。
17) 不使用任何特殊函数,仅利用基本算术运算,实现SQRT(const double & x)。[来源]
可以使用泰勒级数来近似计算sqrt(x):
18) 反转一个位串。[来源]
如果你使用的是Python3:
data = b'\xAD\xDE\xDE\xC0'
my_data = bytearray(data)
my_data.reverse()
19) 尽可能高效地实现非极大值抑制。[来源]
非极大值抑制(NMS)是一种用于消除同一图像中对同一目标多次检测的技术。 解决这一问题的第一步是按照置信度分数对边界框进行排序(N LogN)。然后从得分最高的框开始,移除那些与当前框重叠度(IoU)超过特定阈值的框。(N^2)
为了优化这个方案,可以使用R树或KD树等特殊数据结构来快速查询重叠的框。(N LogN) [来源]
20) 在原地反转一个链表。[来源]
21) 什么是数据归一化?为什么我们需要它?[来源]
数据归一化是非常重要的预处理步骤,用于将数值缩放到特定范围,以确保反向传播过程中的更好收敛性。通常,这涉及对每个数据点减去其均值,再除以其标准差。如果不进行归一化,某些数值较大的特征会在损失函数中被赋予更高的权重(例如,一个高量级特征变化1%,影响就很大;而对于低量级特征来说,这种变化几乎可以忽略不计)。通过归一化,所有特征的权重才能趋于一致。
22) 为什么我们在处理图像时使用卷积而不是全连接层?[来源]
首先,卷积能够保留、编码并充分利用图像中的空间信息。如果我们只使用全连接层,就无法获取相对的空间信息。其次,卷积神经网络(CNN)具有一定的平移不变性,因为每个卷积核都充当独立的滤波器或特征检测器。
23) 是什么使CNN具有平移不变性?[来源]
如上所述,每个卷积核都充当独立的滤波器或特征检测器。因此,假设你在进行目标检测,无论目标位于图像的哪个位置,都不会影响结果,因为我们始终会以滑动窗口的方式在整个图像上应用卷积操作。
24) 为什么分类任务的CNN中要使用最大池化?[来源]
最大池化在计算机视觉中有重要作用。它能够减少计算量,因为在池化之后,特征图的尺寸会变小。同时,由于取的是最大激活值,语义信息也不会丢失太多。此外,还有观点认为,最大池化也有助于增强CNN的平移不变性。可以参考吴恩达关于最大池化的优点的精彩视频。
25) 为什么分割卷积神经网络通常采用编码器-解码器的结构?[来源]
编码器可以被看作是一个特征提取网络,而解码器则利用这些特征信息,通过“解码”并上采样到原始图像尺寸来预测图像的各个分割区域。
26) 残差网络有什么重要意义?[来源]
残差连接的主要作用是允许特征直接从前面的层获取信息。这使得信息在网络中的传播变得更加容易。一篇非常有趣的论文表明,使用局部跳跃连接可以使网络形成一种多路径的集成结构,从而使特征可以通过多种路径在网络中传播。
27) 什么是批归一化?它为什么有效?[来源]
训练深度神经网络的一个复杂之处在于,随着前一层参数的变化,每一层输入的分布也会在训练过程中发生变化。批归一化的思想就是对每一层的输入进行归一化处理,使其输出激活值的均值为零、标准差为一。这一操作是在每个单独的小批量数据上完成的,即仅计算该小批量的均值和方差,然后进行归一化。这类似于对网络输入进行标准化的方式。那么,这种做法有什么好处呢?我们知道,对网络输入进行归一化有助于模型的学习。然而,神经网络实际上是由一系列层组成的,其中一层的输出会作为下一层的输入。因此,我们可以将神经网络中的任意一层视为一个更小子网络的第一层。从这个角度来看,我们可以在应用激活函数之前对某一层的输出进行归一化,然后再将其传递给下一层(子网络)。
28) 为什么通常使用多个3×3这样的小卷积核,而不是少数几个大卷积核?[来源]
这一点在VGGNet论文中有非常清晰的解释。原因有两点:首先,使用多个小卷积核可以获得与少数大卷积核相同的感受野,并捕捉更多的空间上下文信息,但小卷积核所需的参数和计算量更少。其次,由于小卷积核需要使用更多的滤波器,因此可以引入更多的激活函数,从而使卷积神经网络学习到更具区分性的映射函数。
29) 为什么我们需要验证集和测试集?它们之间有什么区别?[来源]
在训练模型时,我们会将可用数据划分为三个独立的集合:
- 训练集用于拟合模型的参数。然而,在训练集上得到的准确率并不能可靠地预测模型在新样本上的表现。
- 验证集用于评估模型在未参与训练的数据上的表现。基于验证集计算的指标可以用来调整模型的超参数。但是,每次我们评估验证集并根据其结果做出决策时,都会将验证集的信息泄露到模型中。评估次数越多,泄露的信息就越多。这样一来,我们就有可能对验证集过拟合,最终导致验证分数无法再可靠地反映模型在实际应用中的表现。
- 测试集用于评估模型在从未见过的数据上的表现。只有在我们已经通过验证集调优了模型参数之后,才能使用测试集。
因此,如果我们省略测试集而只使用验证集,那么验证分数就无法很好地估计模型的泛化能力。
30) 什么是分层交叉验证?我们在什么情况下应该使用它?[来源]
交叉验证是一种将数据划分为训练集和验证集的技术。在普通的交叉验证中,这种划分是随机进行的。而在分层交叉验证中,划分会保持训练集和验证集中各类别比例的一致性。
例如,假设我们有一个数据集,其中类别A占10%,类别B占90%。如果使用分层交叉验证,那么训练集和验证集中的比例将完全相同。相反,如果使用普通的交叉验证,在最坏的情况下,验证集中可能完全没有类别A的样本。
分层交叉验证适用于以下场景:
- 数据集中包含多个类别。数据集越小、类别分布越不均衡,就越需要使用分层交叉验证。
- 数据集中包含不同分布的数据。例如,在自动驾驶的数据集中,可能会同时包含白天和夜晚拍摄的图像。如果不确保训练集和验证集中都包含这两种类型的数据,模型就会出现泛化问题。
31) 为什么集成模型的性能通常优于单个模型?[来源]
集成模型是通过结合多个模型来生成单一预测的方法。提高预测准确性的关键在于,各个模型应犯不同的错误。这样,一个模型的错误就可以被其他模型的正确预测所弥补,从而提升集成模型的整体性能。
为了构建一个有效的集成模型,我们需要多样化的子模型。实现多样性的方法包括:
- 使用不同的机器学习算法。例如,可以将逻辑回归、K近邻和决策树结合起来。
- 在训练时使用数据的不同子集。这种方法称为自助法集成。
- 为训练集中的每个样本赋予不同的权重。如果按照集成模型的误差逐步调整样本权重,则称为提升法。
许多数据科学竞赛的获胜方案都是集成模型。然而,在实际的机器学习项目中,工程师需要在运行时间和准确性之间找到平衡。
32) 什么是不平衡数据集?你能列出一些处理它的方法吗?[来源]
不平衡数据集是指目标类别比例不均衡的数据集。例如,在一个用于检测某种疾病的医学图像数据集中,通常负样本的数量会远远多于正样本——比如98%的图像没有该疾病,而只有2%的图像有该疾病。
处理不平衡数据集有不同的方法:
- 过采样或欠采样。我们不必从训练数据集中以均匀分布进行采样,而是可以采用其他分布方式,使模型看到更平衡的数据集。
- 数据增强。我们可以通过对现有数据进行可控的修改来增加较少出现类别的数据。在上述示例中,我们可以翻转带有疾病的图像,或者在图像副本上添加噪声,同时确保疾病仍然可见。
- 使用合适的评估指标。在上述示例中,如果有一个总是预测为阴性的模型,其准确率也会达到98%。然而,当使用不平衡数据集时,精确率、召回率和F1分数等指标能更好地反映模型的准确性。
33) 你能解释一下监督学习、无监督学习和强化学习之间的区别吗?[来源]
在监督学习中,我们训练模型来学习输入数据与输出数据之间的关系。要进行监督学习,必须要有标注好的数据。
而在无监督学习中,我们只有未标注的数据。模型会学习数据的表示形式。无监督学习常用于在大量未标注数据和少量标注数据的情况下初始化模型参数。我们先训练一个无监督模型,然后利用该模型的权重来训练一个监督模型。
在强化学习中,模型接收输入数据,并根据其输出获得奖励。模型通过学习一种能够最大化奖励的策略来完成任务。强化学习已成功应用于围棋等策略性游戏,甚至经典的雅达利电子游戏。
34) 什么是数据增强?你能举几个例子吗?[来源]
数据增强是一种通过修改现有数据来合成新数据的技术,且这种修改不会改变目标内容,或者只会以已知的方式改变目标内容。
计算机视觉是数据增强非常有用的一个领域。我们可以对图像进行许多种修改:
- 调整大小
- 水平或垂直翻转
- 旋转
- 添加噪声
- 变形
- 修改颜色 每种问题都需要定制化的数据增强流程。例如,在光学字符识别(OCR)中,翻转会改变文本内容,因此并不适用;但调整大小和小幅旋转可能会有所帮助。
35) 什么是图灵测试?[来源]
图灵测试是一种用来检验机器是否具备人类水平智能的方法。通过让机器挑战人类智能,若机器通过测试,则被认为具有智能。然而,即使机器能够模仿人类行为,也不一定意味着它真正理解人类。
36) 什么是精确率?
精确率(也称为阳性预测值)是指检索到的实例中相关实例所占的比例。
精确率 = 真阳性 / (真阳性 + 假阳性)
[来源]
37) 什么是召回率?
召回率(也称为灵敏度)是指所有相关实例中被正确检索出来的实例所占的比例。
召回率 = 真阳性 / (真阳性 + 假阴性)
[来源]
38) 请定义F1分数。[来源]
它是精确率和召回率的加权平均值。它同时考虑了假阳性和假阴性的情况,常用于衡量模型的性能。
F1分数 = 2 * (精确率 * 召回率) / (精确率 + 召回率)
39) 什么是损失函数?[来源]
损失函数是一个标量函数,用于量化神经网络的误差程度。损失函数越低,神经网络的表现越好。例如,在MNIST数据集中,输入图像是数字2,而神经网络错误地预测为3。
40) 列出不同的激活函数或神经元类型。[来源]
- 线性神经元
- 二值阈值神经元
- 随机二值神经元
- Sigmoid神经元
- Tanh函数
- 整流线性单元(ReLU)
41) 请定义学习率。
学习率是一个超参数,用于控制我们在梯度下降过程中调整网络权重的幅度。[来源]
42) 什么是动量法(在神经网络优化中)?
动量法可以让优化算法记住上一步的方向,并将其部分贡献加入到当前步骤中。这样一来,即使算法陷入平坦区域或局部最小值,也能突破并继续向真正的最小值前进。[来源]
43) 批量梯度下降和随机梯度下降有什么区别?
批量梯度下降是使用整个数据集计算梯度。这种方法非常适合凸的或相对平滑的误差曲面。在这种情况下,我们可以较为直接地朝着局部或全局最优解前进。此外,如果学习率逐渐降低,批量梯度下降最终会找到其所处吸引域内的最小值。
随机梯度下降(SGD)则是每次只用一个样本计算梯度。SGD在存在大量局部极值的误差曲面上表现更好(虽然不能说“好”,但相比批量梯度下降确实更优)。由于使用较少的样本计算梯度,产生的梯度会更加“嘈杂”,这有助于模型跳出局部最小值,进入一个可能更优的区域。[来源]
44) 时代、批次和迭代的区别。
- 时代:对所有训练样本进行一次前向传播和一次反向传播。
- 批次:在一次前向和反向传播中一起处理的样本。
- 迭代:训练样本总数除以批次大小。
45) 什么是梯度消失?[来源]
随着隐藏层的不断增加,反向传播在将信息传递到较低层时变得越来越无效。实际上,当信息反向传播时,梯度会逐渐消失,相对于网络中的权重而言变得非常小。
46) 什么是 Dropout?[来源]
Dropout 是一种简单有效的方法,用于防止神经网络过拟合。它通过随机丢弃神经网络中的一部分单元来实现。这类似于自然界的繁殖过程:自然界通过组合不同的基因(即丢弃其他基因)来产生后代,而不是强化那些相互适应的基因。
47) 请定义 LSTM。[来源]
长短期记忆网络(LSTM)专门设计用于解决长期依赖问题,它通过维护一个状态来决定记住什么、忘记什么。
48) 列举 LSTM 的关键组件。[来源]
- 门控机制(遗忘门、记忆门、更新门和读取门)
- tanh(x)(取值范围为 -1 到 1)
- Sigmoid(x)(取值范围为 0 到 1)
49) 列举 RNN 的变体。[来源]
- LSTM:长短期记忆网络
- GRU:门控循环单元
- 端到端网络
- 记忆网络
50) 什么是自编码器?请列举几个应用。[来源]
自编码器主要用于学习给定数据的压缩表示。其常见应用包括:
- 数据去噪
- 降维
- 图像重建
- 图像上色
51) GAN 的组成部分有哪些?[来源]
- 生成器
- 判别器
52) Boosting 和 Bagging 有什么区别?
Boosting 和 Bagging 都是集成学习技术,它们通过结合多个弱学习器(分类器或回归器,其性能仅略高于随机猜测)来创建一个能够做出准确预测的强学习器。Bagging 是通过对数据集进行有放回的自助采样,然后用每个样本训练一个可能较弱的学习器。而 Boosting 则使用全部数据来训练每个学习器,但之前被错误分类的样本会在后续训练中获得更高的权重,从而使后续学习器更加关注这些样本。[来源]
53) 请解释 ROC 曲线的工作原理。[来源]
ROC 曲线是一种图形化工具,用于展示在不同阈值下真正例率与假正例率之间的对比关系。它通常用来衡量模型的敏感性(真正例)与误报率(假正例)之间的权衡。
54) I 类错误和 II 类错误有什么区别?[来源]
I 类错误是假阳性,而 II 类错误则是假阴性。简而言之,I 类错误是指实际上没有发生的事情却被错误地认为发生了;而 II 类错误则是指实际上发生了的事情却被错误地认为没有发生。可以这样理解:I 类错误就像告诉一个男人他怀孕了,而 II 类错误则像是告诉一位孕妇她并没有怀孕。
55) 生成式模型和判别式模型有什么区别?[来源]
生成式模型会学习数据的不同类别,而判别式模型则专注于区分不同类别的数据。通常情况下,在分类任务中,判别式模型的表现优于生成式模型。
56) 基于实例的学习与基于模型的学习。
基于实例的学习:系统通过记忆训练样本,然后利用相似性度量对新样本进行泛化。
基于模型的学习:另一种从样本集中进行泛化的办法是构建一个模型,然后用这个模型来进行预测。这种方法称为基于模型的学习。 [来源]
57) 何时使用标签编码(Label Encoding)与独热编码(One Hot Encoding)?
这个问题通常取决于你的数据集以及你打算使用的模型。不过,在选择适合你模型的编码方法之前,仍有一些需要注意的要点:
我们使用独热编码的情况包括:
- 分类特征是非有序的(例如国家名称等)
- 分类特征的数量较少,因此可以有效地应用独热编码
我们使用标签编码的情况包括:
- 分类特征是有序的(例如小学低年级、小学高年级、初中、高中等)
- 分类数量较多,因为独热编码可能导致较高的内存消耗
58) LDA 和 PCA 在降维方面有什么区别?
LDA 和 PCA 都是线性变换技术:LDA 是监督学习方法,而 PCA 是无监督学习方法——PCA 不考虑类别标签。我们可以把 PCA 理解为一种寻找数据中方差最大方向的技术。相比之下,LDA 则试图找到能够最大化类别可分性的特征子空间。
59) 什么是 t-SNE?
t-分布随机邻域嵌入(t-SNE)是一种无监督的非线性技术,主要用于数据探索和高维数据的可视化。简单来说,t-SNE 可以帮助我们直观地了解数据在高维空间中的分布情况。
60) t-SNE 和 PCA 在降维方面有什么区别?
首先需要注意的是,PCA算法于1933年提出,而t-SNE则是在2008年才被开发出来。自1933年以来,数据科学领域发生了巨大变化,尤其是在计算能力和数据规模方面。其次,PCA是一种线性降维技术,其目标是最大化方差并保留较大的成对距离。换句话说,原本差异较大的样本在降维后会更加分散。然而,当处理非线性流形结构的数据时,这种特性可能导致可视化效果不佳。所谓流形结构,可以理解为任何几何形状,例如圆柱体、球体、曲线等。
与PCA不同,t-SNE只保留较小的成对距离或局部相似性,而PCA则关注于通过最大化方差来保持较大的成对距离。
61) 什么是UMAP?
UMAP(均匀流形近似与投影)是一种新颖的流形学习降维技术。UMAP基于黎曼几何和代数拓扑的理论框架构建而成,最终形成了一种实用且可扩展的算法,适用于真实世界的数据。
62) 在降维任务中,t-SNE与UMAP有何区别?
UMAP与t-SNE输出结果之间最大的区别在于它们对局部与全局结构的平衡处理方式:UMAP通常更能保留最终投影中的全局结构。这意味着簇间关系在UMAP的可视化中往往比t-SNE更为有意义。然而,需要注意的是,由于UMAP和t-SNE在将高维数据投影到低维空间时都会对数据的高维形状进行一定程度的扭曲,因此无论使用哪种方法,在低维空间中得到的任意轴或距离都无法像PCA那样直接解释。
63) 随机数生成器是如何工作的?例如Python中的rand()函数?
它根据种子生成伪随机数,并且存在一些著名的算法。有关这方面的更多信息,请参阅以下链接。 [src]
64) 假设我们要在同一数据集上评估n个不同的机器学习模型的性能,为什么以下划分机制是不正确的呢?
def get_splits():
df = pd.DataFrame(...)
rnd = np.random.rand(len(df))
train = df[ rnd < 0.8 ]
valid = df[ rnd >= 0.8 & rnd < 0.9 ]
test = df[ rnd >= 0.9 ]
return train, valid, test
#模型1
from sklearn.tree import DecisionTreeClassifier
train, valid, test = get_splits()
...
#模型2
from sklearn.linear_model import LogisticRegression
train, valid, test = get_splits()
...
rand()函数每次运行时都会以不同的顺序对数据进行排序,因此如果再次执行该划分机制,我们得到的80%数据行将会与第一次不同。这就带来了一个问题:我们需要在相同的测试集上比较各个模型的性能。为了确保采样的可重复性和一致性,我们可以提前设置随机种子,或者在数据划分完成后将其保存下来。另一种方法是直接在sklearn的train_test_split()函数中设置random_state参数,这样就能在不同运行中获得完全一致的训练集、验证集和测试集。
65) 贝叶斯统计与频率派统计有何区别?[src]
频率派统计是一种以样本统计量为基础,用于估计总体参数,并提供点估计和置信区间的框架。
相比之下,贝叶斯统计则利用先验知识和信息来更新对某个参数或假设的信念,并为参数提供概率分布。
两者的根本区别在于:贝叶斯统计将先验知识和信念纳入分析过程,而频率派统计则不涉及这些内容。
贡献
非常欢迎各位贡献:
- 克隆本仓库。
- 提交您的问题或答案。
- 打开拉取请求。
更多学习资料
- 备考资源及现代参考文献:
docs/resources-and-references.md - 推荐的主题分解:
docs/study-pattern.md
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。
markitdown
MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器