AI-900 91题解析:Azure AI基础与机器学习考点精讲
简介这份资源是面向准备参加微软 AI-900Microsoft Azure AI Fundamentals认证考试的学习者整理的 91 道考题合辑属于人工智能入门级认证的备考材料适合零基础转行者、在校学生以及需要快速了解 Azure AI 基础概念的从业人员使用。压缩包内共 1 个文件为 PDF 格式整体约 2.86MB轻量便于手机或电脑端随时翻阅。目前已有 448 人学习下载具备一定的参考热度。内容以原题加答案解析的形式组织覆盖 AI 工作负载与负责任 AI 原则、机器学习基础概念、计算机视觉、自然语言处理等考试领域具体题目如 Webchat Bot 带来的商业价值减轻客服人员工作量、机器学习中训练集与评估集的随机划分方法、混淆矩阵中真阳性与假阴性等指标的含义以及自动化机器学习中启用解释模型以满足透明性原则等均给出正确选项与解释说明便于读者理解出题思路并查漏补缺。1. 91 道题背后AI-900 考的是什么能力拿到这份 AI-900 题库的人第一反应通常是打印出来背答案。翻到第 3 题就会卡住题目给的是一张混淆矩阵答案是两个数字填空第 7 题、第 12 题是拖拽匹配工作负载与场景第 5 题是一组 Yes/No 判断。纯文字答案在这种题型前面几乎失效必须先把 Azure AI 的知识框架立起来才能反过来读懂题目在问什么。AI-900 全称 Microsoft Azure AI Fundamentals基础级认证考点集中在两块AI 工作负载与负责任 AI 原则以及 Azure 上机器学习的基本原理。91 道题的覆盖面基本落在这两块里适合从后端、运维、测试转 AI 方向的工程师也适合需要跟客户对齐 Azure 认知服务边界的售前和产品岗。2. 从 Split Data 到混淆矩阵Azure 机器学习基础的题目解法这一章的题量最大也最容易靠语感答错。题库里第 2 题问如何划分训练和评估数据第 20 题问从已有数据集创建训练集和验证集该用哪个模块第 18 题问分类模型可以用哪个指标评估。三道题看着毫不相干实际都在考同一件事你知不知道数据在 Azure 机器学习里是怎么流动的。2.1 特征、标签与按行随机划分先把概念钉死。数据集里每一列如果是模型的输入叫特征feature如果是要预测的目标叫标签label。第 2 题的四个选项里A 和 C 把特征和标签拆开分别用于训练和评估这是典型误导——特征和标签是同一行数据的两个部分拆开等于把监督学习变成无监督模型根本学不到映射关系。D 选项按列随机划分同样错误特征列被砍掉一半模型输入维度都不完整了。正确答案是按行随机划分。常见做法是先给数据做一次洗牌再按比例切分比如 70% 训练、30% 评估。在 Azure 机器学习设计器designer里这个动作由Split Data模块承担拖到画布上后需要关注的参数有三个参数取值示例作用Splitting modeSplit rows按行切分最常见的模式Fraction of rows in the first output dataset0.7第一个输出端口拿到 70% 数据Random seed0固定随机种子保证多次运行切分结果一致Stratified splitTrue分类任务按标签分层避免某类样本全落在一侧Stratify columnlabel指定分层依据的列参数里最容易被忽略的是 Random seed 和 Stratified split。种子不固定同一份数据每次跑出来的评估分数都在抖调参时你分不清是参数生效了还是切分运气好。标签分布不均衡时不开分层可能出现某一类样本在评估集里只有两三条指标直接失真。提示设计器里 Split Data 的第一个输出端口是第一个数据集按上表的 0.7 配置它就是训练集第二个端口是评估集。端口接反是新手最常见的连错。2.2 分类和回归的指标不能混用第 18 题给的是四个指标true positive rate、MAE、R²、RMSE问哪个能评估分类模型。答案只有 true positive rate。这个考点很多人在考场上翻车因为四个词都见过但没建立指标—任务类型的对应关系。指标适用任务含义True Positive Rate召回率分类正例中被正确识别的比例TP/(TPFN)Precision精确率分类预测为正例的样本里真正为正的比例F1 Score分类精确率和召回率的调和平均AUC分类ROC 曲线下面积衡量排序能力MAE平均绝对误差回归预测值与真实值差的绝对值的平均RMSE均方根误差回归对大误差更敏感的误差度量R²决定系数回归模型解释了目标变量多少方差判题时可以记一条粗暴规则只要题干里出现预测某个数值房价温度销量先往回归指标上想出现是/否分类哪个类别欺诈识别就往分类指标上想。MAE、RMSE、R² 这三个在 Azure 机器学习的回归任务里是默认输出而分类任务界面上根本不会给你这三项。2.3 用混淆矩阵反推指标混淆矩阵类题目题库里的 HOTSPOT 题本质是让你读表算数。假设二分类模型的测试结果如下预测正例预测反例实际正例8515实际反例1090记忆方法是横看实际、竖看预测主对角线 85 和 90 是预测正确的部分85 是真正例 TP90 是真负例 TN右上角 15 是假负例 FN实际是正例却被判成反例左下角 10 是假正例 FP。弄清这四个格子剩下的指标都是算术题。import numpy as np from sklearn.metrics import confusion_matrix, classification_report # 用 y_true / y_pred 构造矩阵顺序是 [负例, 正例] y_true [0] * 100 [1] * 100 y_pred [0] * 90 [1] * 10 [0] * 15 [1] * 85 cm confusion_matrix(y_true, y_pred, labels[1, 0]) # labels 顺序决定矩阵排布 tn, fp, fn, tp cm[1][1], cm[1][0], cm[0][1], cm[0][0] tpr tp / (tp fn) # 召回率题库里常问的就是这个 fpr fp / (fp tn) # 假正例率画 ROC 曲线用 precision tp / (tp fp) print(fTP{tp} FN{fn} FP{fp} TN{tn}) print(fTPR{tpr:.3f} FPR{fpr:.3f} Precision{precision:.3f}) print(classification_report(y_true, y_pred, digits3)) # 手算校验TPR 85 / (85 15) 0.85 assert abs(tpr - 0.85) 1e-9这段代码里labels[1, 0]是关键参数它决定矩阵的行列顺序。sklearn 默认把标签升序排列正类 1 会排在前面但如果不显式指定读表时极易把 FP 和 FN 对调。confusion_matrix返回的是二维数组classification_report则一次给出精确率、召回率和 F1用来交叉验证手算结果。跑完这段你会得到 TPR0.850、FPR0.100、Precision0.895和手算完全一致。题库里出现某个格子是多少的填空题时先确定坐标系是实际为行、预测为列再数格子速度比背公式快得多。3. Face 与 Computer Vision 的职责边界视觉和 NLP 工作负载怎么选第 7 题和第 12 题都是拖拽题左边一列工作负载类型右边一列业务场景要求一一匹配。这类题的杀伤力在于选项会被复用也可能完全不用光靠排除法很难做对。真正稳的做法是记住每种工作负载的能力动词看到场景句里的动作就能秒选。3.1 从一道 retweet 场景题看服务的分工题库第 17 题是个典型场景慈善活动要在社交平台上转发戴墨镜的人的照片条件是照片里有一个或多个人脸并且至少有一人戴太阳镜问该用哪个服务操作。四个选项分别是 Face 服务的 Verify、Face 服务的 Detect、Computer Vision 的 Describe Image、Computer Vision 的 Analyze Image。判断路径是这样走的题目要求的是从图像里检测出属性不是比对两个人脸是否属于同一个人。Verify 做的是人脸验证判断两张脸是否同一人Identify 做的是从人员组里识别身份都不涉及有没有戴墨镜。Describe Image 输出的是自然语言描述句子粒度太粗判断不了太阳镜这种具体属性。所以答案是 Face 服务的 Detect 操作因为只有它能在返回结果里带上glasses这个面部属性。常见取值包括 NoGlasses、ReadingGlasses、Sunglasses、SwimmingGoggles正好覆盖题干里的条件。把服务边界整理成表拖拽题基本就变成查表场景信号词该选的工作负载/操作人脸属性、眼镜、年龄、情绪Face 服务 Detect两张脸是不是同一人Face 服务 Verify从已有人员库中认出是谁Face 服务 Identify给图片生成一句描述Computer Vision Describe Image抽取图片标签、物体、品牌Computer Vision Analyze Image文字提取、表单结构化Computer Vision Read / Form Recognizer情绪倾向、主观/客观判断语言服务 Sentiment Analysis提取核心词语言服务 Key Phrase Extraction判断文本是哪种语言语言服务 Language Detection识别文本里的人名地名机构名语言服务 Entity Recognition注意拖拽题里ComputePipelineDataset这类词属于 Azure 机器学习资源概念不是 AI 工作负载类型。把它们和能力类场景混在一起是干扰项看到识别提取生成描述这类动作先排除基础设施名词。3.2 把视觉服务的调用参数调对知道选哪个服务只是第一步参数写错同样拿不到想要的结果。下面是 Face Detect 的 REST 调用写法用 requests 发一次请求import requests face_url https://your-resource.cognitiveservices.azure.com/face/v1.0/detect headers { Ocp-Apim-Subscription-Key: your-key, Content-Type: application/octet-stream, } # 只声明需要的属性属性和 id 都是按量计费的 params { returnFaceId: true, returnFaceLandmarks: false, returnFaceAttributes: glasses,headPose,blur, detectionModel: detection_01, } # 也可直接传 URL params[returnFaceAttributes] glasses with open(group_photo.jpg, rb) as f: resp requests.post(face_url, headersheaders, paramsparams, dataf) resp.raise_for_status() faces resp.json() sunglasses_count sum( 1 for face in faces if face[faceAttributes][glasses] Sunglasses ) print(f检测到人脸 {len(faces)} 张其中戴太阳镜 {sunglasses_count} 张)几个参数值得逐个说明。returnFaceAttributes是一个逗号分隔的字符串不写这一项返回结果里只有人脸框位置没有任何属性写了glasses才有办法判断墨镜。returnFaceLandmarks会返回 27 个面部关键点坐标除非要做姿态分析否则关掉能省不少传输量。detectionModel决定检测模型的精度与召回取向默认值在普通人脸照片上够用。请求体可以直接传二进制图片流如果图片已经在对象存储上传 URL 更省带宽。题干里至少有一人戴太阳镜这类条件落到代码上就是any()而不是all()至少包含一张人脸则是len(faces) 0。很多人在这种地方看错题与 API 本身没关系。3.3 NLP 类题目的判词方法自然语言处理那部分题干几乎都是同一套模板给一段业务描述问该用哪种能力。判词方法是抓动词和产出物。产出物是这段文字偏正面还是负面选情绪分析产出物是几个核心词或标签选关键短语提取产出物是这段文字用的是哪种语言选语言检测产出物是把文档归到某个类别选文档分类或文本分类。题库里有一道题的正确答案是用于情感分析、主题检测、语言检测、关键短语提取和文档分类的那类能力选项里其他几个分别是计算机视觉、语音、异常检测的工作负载。做题时可以把工作负载和典型能力做成一张对照表考场上直接映射比逐个选项读解释快得多。4. 负责任 AI 六原则与 AutoML 可解释性开关题库里涉及负责任 AI 的题目至少有七八道分散在第 1、4、6、8、9、10、11、13、14 题。题干千变万化答案却始终在六个原则里挑。把这六个原则和题干关键词绑成映射表这部分基本可以做到不丢分。4.1 六原则与题干信号的映射关系微软的负责任 AI 原则包括公平性、可靠性与安全性、隐私与安全、包容性、透明度、问责制。判题时不要读整句抓关键词更准题干信号对应原则判断依据训练数据要能代表整体人群、避免偏见Fairness数据代表性决定结果公平在意外情况下安全响应、抵抗恶意操纵Reliability and Safety系统韧性属于可靠性范畴听障视障人群也能使用、不遗漏用户群体Inclusiveness覆盖多样化人群需求打开黑箱、知道哪些特征影响预测Transparency可解释性是透明度的手段数据收集与使用要让用户有控制权Privacy and Security涉及个人数据处理设计部署方要为系统行为负责、保留人类控制Accountability责任归属与人的最终决策第 8 题和第 13 题问的都是包容性一道说系统要让有听觉、视觉障碍的人也能用另一道说语音识别要找出可能无意中排除特定用户群的障碍。两道题的场景不同信号词都是特定用户群体障碍。第 9 题是拖拽题把原则和描述配对描述里出现抵抗有害操纵就配可靠性与安全性出现人类保持有意义的控制就配问责制出现数据收集、使用、存储的透明以及用户控制就配隐私与安全。第 11 题问的是哪个任务能让服务满足透明度原则答案是提供文档帮助开发者调试代码。其余选项里给视频配可被屏幕阅读器读取的文字属于包容性开自动伸缩属于工程可靠性训练数据代表整体人群属于公平性。三个干扰项各自对应别的原则这就是出题人的套路。4.2 Explain best model 打开的是什么第 4 题是这一块唯一跟工具直接相关的题用自动化机器学习的图形界面建模要满足透明度原则该做什么。四个选项分别是把 Validation type 设为 Auto、开启 Explain best model、把 Primary metric 设为 accuracy、把 Max concurrent iterations 设为 0。只有开启 Explain best model跟透明度有关。它做的事情是让自动化 ML 在给出最佳模型的同时输出每个特征对预测结果的影响方向和影响幅度也就是特征重要性。医疗、金融这类受监管的行业必须能解释模型为什么给出这个结论否则没法过合规。后面三个选项都是性能或成本相关的配置验证类型影响评估方式主指标决定优化目标并发迭代数影响训练耗时和资源占用跟可解释性毫无关系。提示题干里出现 transparencyblack boxfeature importanceexplain 这些词时优先找跟可解释性、文档、调试信息相关的选项性能类参数一律排除。4.3 用 SDK 复现一次带解释的自动化 ML 运行图形界面之外用 SDK 提交任务时同样要把解释开关打开否则跑出来的模型只有分数没有解释。下面是常见写法的骨架from azure.ai.ml import MLClient, automl from azure.ai.ml.constants import AssetTypes from azure.identity import DefaultAzureCredential ml_client MLClient.from_config(credentialDefaultAzureCredential()) # 训练数据已注册为 MLTable 资产 my_training_data ml_client.data.get(namecustomer-churn, labellatest) classification_job automl.classification( computecpu-cluster, experiment_nameai900-explain-demo, training_datamy_training_data, target_column_namechurn, primary_metricaccuracy, # 分类任务可选项之一 n_cross_validationsauto, enable_model_explainabilityTrue, # 关键开关生成特征重要性 enable_early_terminationTrue, # 连续无提升迭代则提前停止省算力 max_trials20, max_concurrent_trials4, ) returned_job ml_client.jobs.create_or_update(classification_job) print(returned_job.studio_url)enable_model_explainabilityTrue是需要重点盯住的参数它决定运行结束后能不能拿到特征重要性图。primary_metric一旦设定就锁定优化方向分类任务常用 accuracy 或 AUC-weighted回归任务常用 normalized RMSE改错这项会让模型朝错误目标优化。n_cross_validationsauto让服务按数据量自动决定折数数据很小时手动指定 5 折更稳。enable_early_termination和max_concurrent_trials都是控成本和控时长的旋钮跟透明度无关但生产环境里不设一个任务可能跑掉几小时算力。如果习惯用命令行YAML 文件里对应的字段通常是enable_model_explainability: true提交命令为az ml job create --file automl-job.yml --resource-group rg --workspace-name ws。训练完成后在作业页面的 Explanations 页签下能看到每个特征的重要性排序这一步在考试里不会让你操作但在实际项目里是能不能交付的分水岭。5. 把 91 道题用成错题本解析、抽题与归因背题的最大问题是遗忘曲线不区分考点。更有效的做法是把题库当语料处理一遍抽出题干、选项、正确答案和 Section 字段按考点域分组随机抽题自测错题单独留存。下面这段脚本用正则做粗解析够用且不依赖额外库。import json import random import re from collections import defaultdict raw open(ai900-91q.txt, encodingutf-8).read() # 按 QUESTION n 切块 blocks re.split(r\nQUESTION\s(\d)\s*, \n raw) questions [] for i in range(1, len(blocks), 2): qid, body int(blocks[i]), blocks[i 1] answer re.search(rCorrect Answer:\s*([A-F,\s]), body) section re.search(rSection:\s*(.), body) questions.append({ id: qid, answer: (answer.group(1).strip() if answer else ), section: (section.group(1).strip() if section else UNKNOWN), body: body.strip(), }) by_section defaultdict(list) for q in questions: by_section[q[section]].append(q) # 每个考点域随机抽 5 题避开 HOTSPOT / DRAG DROP 这类无文本答案的题 for section, qs in by_section.items(): text_qs [q for q in qs if q[answer]] picked random.sample(text_qs, min(5, len(text_qs))) print(f[{section}] 共 {len(qs)} 题抽取 {len(picked)} 题) for q in picked: print(f Q{q[id]} - {q[answer]}) json.dump(questions, open(parsed.json, w, encodingutf-8), ensure_asciiFalse, indent2)re.split用捕获组切分返回的列表会保留题号所以步长取 2 就能同时拿到题号和题目正文。Correct Answer的字符集写成[A-F,\s]是为了兼容多选题返回的 CDF 这种形式题库第 14 题就是三个答案。section字段是分组依据这份题库的两大考点域会自然分开。最后过滤掉没有文本答案的题是因为 HOTSPOT 和 DRAG DROP 题型的答案在原文里是占位符脚本抽出来也没法自测这类题应该单独列出来手工过。错题记录的维度建议这样设计比单纯记我错了第几题有用得多记录字段取值示例用途考点域机器学习基本原理定位薄弱模块题型单选 / 多选 / 拖拽 / HOTSPOT判断是知识问题还是题型问题错因概念混淆 / 关键词漏看 / 选项排除错误决定复习动作复现线索Split Data 模块参数表回查笔记的锚点一个实用的技巧是给每次自测设一个 60 题的随机池考前一周每天过一轮错题当天回查对应章节的参数表或 API 参数而不是回看题目本身。错因标成概念混淆的题说明你缺的是表格标成关键词漏看的题说明缺的是判词习惯两类问题的解法完全不同。本文还有配套的精品资源点击获取