华为Ai岗机考20250903完整真题

华为Ai岗机考20250903

华为自26届秋招(2025年起)对AI岗位机考进行了改革,考试题型调整为20道选择题(15道单选(6分)+5道不定项选择(12分))+2道编程题(150+300)

题目核心围绕人工智能技术(如Transformer架构、EM算法、PCA降维、激活函数等)与数学基础(如线性变换、概率分布、数值迭代、插值计算等)展开,相较于以往题型,知识覆盖面与考查深度均有显著变化。

目前,网络上针对此次改革后AI岗位的完整机考试卷资源较为稀缺。本次特别整理并提供2025年9月3日华为AI岗位机考的完整真题。希望对读者备考提供一定的帮助,祝大家都顺利上岸!

整理不易,麻烦给个免费的三连。

华为Ai岗机考20250903

一、选择题

(一)单项选择题(共15题)

  1. 在文本生成中,以下哪种模型最适合用于生成连续文本?()
    A. LSTM
    B. 最大熵模型
    C. 隐马尔可夫模型(HMM)
    D. 决策树
  2. 线性变换 T : R 2 → R 2 T: \mathbb{R}^{2} \to \mathbb{R}^{2} T:R2→R2将向量 e 1 = [ 1 0 ] e_{1}=\begin{bmatrix}1\\0\end{bmatrix} e1​=[10​]映为 [ 3 1 ] \begin{bmatrix}3\\1\end{bmatrix} [31​],将 e 2 = [ 0 1 ] e_{2}=\begin{bmatrix}0\\1\end{bmatrix} e2​=[01​]映为 [ − 1 2 ] \begin{bmatrix}-1\\2\end{bmatrix} [−12​],则向量 v = [ 4 3 ] v=\begin{bmatrix}4\\3\end{bmatrix} v=[43​]在 T T T下的像为?()
    A. [ 5 7 ] \begin{bmatrix}5\\7\end{bmatrix} [57​]
    B. [ 8 11 ] \begin{bmatrix}8\\11\end{bmatrix} [811​]
    C. [ 12 − 2 ] \begin{bmatrix}12\\-2\end{bmatrix} [12−2​]
    D. [ 9 10 ] \begin{bmatrix}9\\10\end{bmatrix} [910​]
  3. 已知 u = [ 2 − 1 3 ] u=\begin{bmatrix}2\\-1\\3\end{bmatrix} u=​2−13​​, v = [ 4 0 − 2 ] v=\begin{bmatrix}4\\0\\-2\end{bmatrix} v=​40−2​​,且 A = u v ⊤ A = uv^{\top} A=uv⊤,则 A A A的第2行第3列元素是(行列号从1开始计数)?()
    A. 2
    B. -4
    C. 0
    D. 6
  4. 在计算某天线的安装角度时,需要求解如下非线性方程 x = cos ⁡ x x = \cos x x=cosx,工程师小王打算使用迭代公式 x k + 1 = cos ⁡ ( x k ) x_{k + 1}=\cos(x_{k}) xk+1​=cos(xk​)进行数值计算。以下有关该迭代收敛性的说法中,哪一项是正确的?()
    A. 当算法收敛时,速度是二次的
    B. 对任意初始值,该算法都能收敛到其唯一实根
    C. 该算法是不稳定的,因为余弦函数有界,而线性函数无界
    D. 该方程有两个实根,算法收敛到哪一个取决于初始值
  5. 你正在使用一个机器学习模型来解决一个分类问题,在训练集上得到了非常高的准确率,但是在测试集上的准确率却相对较低。这种情况最有可能是以下哪种现象?()
    A. 过拟合
    B. 欠拟合
    C. 无法判断
    D. 正好拟合
  6. 桥梁应力监测中,传感器测得: t = [ 0 , 1 , 2 ] t = [0,1,2] t=[0,1,2]秒时 σ = [ 100 , 120 , 150 ] M P a \sigma = [100,120,150]MPa σ=[100,120,150]MPa。用二次插值 P 2 ( t ) = 100 + 20 t + 5 t ( t − 1 ) P_{2}(t)=100 + 20t + 5t(t - 1) P2​(t)=100+20t+5t(t−1)预测 t = 1.5 t = 1.5 t=1.5秒应力。已知真实应力函数为 σ ( t ) = 100 + 20 t + 5 t 2 \sigma(t)=100 + 20t + 5t^{2} σ(t)=100+20t+5t2,则应力预测值的绝对误差是?()
    A. 2.5MPa
    B. 5.0MPa
    C. 0.0MPa
    D. 7.5MPa
  7. 在进行特征工程时,我们经常会对特征进行标准化处理。假设有一个特征 X X X,其期望 E [ X ] = 10 E[X]=10 E[X]=10,方差 V a r ( X ) = 4 Var(X)=4 Var(X)=4。现在我们对其进行线性变换得到新特征 Y = 3 X − 5 Y = 3X - 5 Y=3X−5。那么新特征 Y Y Y的方差 V a r ( Y ) Var(Y) Var(Y)是多少?()
    A. 31
    B. 36
    C. 12
    D. 7
  8. 向量组 α 1 \alpha_{1} α1​, α 2 \alpha_{2} α2​, α 3 \alpha_{3} α3​线性无关,已知 β 1 = k 1 α 1 + α 2 + k 1 α 3 \beta_{1}=k_{1}\alpha_{1}+\alpha_{2}+k_{1}\alpha_{3} β1​=k1​α1​+α2​+k1​α3​, β 2 = α 1 + k 2 α 2 + ( k 2 + 1 ) α 3 \beta_{2}=\alpha_{1}+k_{2}\alpha_{2}+(k_{2}+1)\alpha_{3} β2​=α1​+k2​α2​+(k2​+1)α3​, β 3 = α 1 + α 2 + α 3 \beta_{3}=\alpha_{1}+\alpha_{2}+\alpha_{3} β3​=α1​+α2​+α3​,若 β 1 \beta_{1} β1​, β 2 \beta_{2} β2​, β 3 \beta_{3} β3​线性相关,则 k 1 k_{1} k1​, k 2 k_{2} k2​的值为()
    A. k 1 = 1 k_{1}=1 k1​=1且 k 2 = 0 k_{2}=0 k2​=0
    B. k 1 = 1 k_{1}=1 k1​=1或 k 2 = 1 k_{2}=1 k2​=1
    C. k 1 = 1 k_{1}=1 k1​=1且 k 2 = 1 k_{2}=1 k2​=1
    D. k 1 = 1 k_{1}=1 k1​=1或 k 2 = 0 k_{2}=0 k2​=0
  9. 设随机变量 X X X的概率密度函数为 f ( x ) = 1 b − a ( a ≤ x ≤ b ) f(x)=\frac{1}{b - a}(a\leq x\leq b) f(x)=b−a1​(a≤x≤b),其他情况为0。该分布是:()
    A. 泊松分布
    B. 指数分布
    C. 正态分布
    D. 均匀分布
  10. 关于线性变换 T : R n → R m T: \mathbb{R}^{n} \to \mathbb{R}^{m} T:Rn→Rm,以下说法正确的是?()
    A. T ( u + v ) = T ( u ) + T ( v ) T(u + v)=T(u)+T(v) T(u+v)=T(u)+T(v)仅当 u ⊥ v u\perp v u⊥v时成立
    B. 零向量映射不一定为零向量
    C. 线性变换不能改变向量的维度
    D. T ( c u ) = c T ( u ) T(cu)=cT(u) T(cu)=cT(u)对所有标量 c c c和向量 u u u成立
  11. 关于Transformer解码器的描述错误的是?()
    A. 解码器额外使用编码器-解码器交叉注意力层(Cross - Attention)
    B. 第二个Multi - Head Attention层的K、V矩阵使用Encoder的编码信息矩阵进行计算
    C. 解码器的第二个Multi - Head Attention采用了Masked掩码操作
    D. 解码器包含掩码自注意力层(Masked Self - Attention)
  12. 下述检验正态性假设的方法中错误的是()
    A. 直方图方法
    B. 拟合优度检验方法
    C. 使用偏度系数和峰度系数
    D. T检验
  13. 某工厂生产的产品次品率为0.02,随机抽取100件产品,次品数 X X X近似服从的分布是?()
    A. 均匀分布
    B. 伯努利分布
    C. 泊松分布
    D. 正态分布
  14. 用牛顿迭代法求函数 ( x + 3 ) x 2 = 0 (x + 3)x^{2}=0 (x+3)x2=0的根,初值为 x 0 = 3 x_{0}=3 x0​=3的情况下,其收敛速度是()
    A. 超线性收敛
    B. 二次收敛
    C. 线性收敛
    D. 对数收敛
  15. 在使用PCA(主成分分析)进行降维时,主要依据以下哪一项来选择主成分?()
    A. 样本的分布密度
    B. 特征之间的相关性
    C. 主成分的方差贡献率
    D. 数据的类别分布

(二)不定项选择题(共5题)

  1. 设 { N ( t ) , t ≥ 0 } \{N(t),t\geq0\} {N(t),t≥0}是强度为 λ \lambda λ的泊松过程。以下陈述中,正确的是()
    A. 在区间 [ 0 , t ] [0,t] [0,t]内事件数 N ( t ) N(t) N(t)的均值为 λ t \lambda t λt
    B. 已知在时间 [ 0 , t ] [0,t] [0,t]内发生了 n n n个事件,那么这 n n n个事件的发生时刻在 [ 0 , t ] [0,t] [0,t]上是独立同分布的均匀分布
    C. 时间间隔 T 1 T_{1} T1​(首次事件到达时间)服从参数为 λ \lambda λ的指数分布
    D. 两次连续事件的时间间隔 T 2 − T 1 T_{2}-T_{1} T2​−T1​与 T 1 T_{1} T1​相互独立
  2. 在EM算法中,GMM的M - step的解析解需要()
    A. 必须对角协方差
    B. 协方差矩阵正定
    C. 各成分权重和为1
    D. 均值更新为加权平均
  3. 下列关于线性变换的说法中,正确的是()
    A. 设 T : R 2 → R 2 T: \mathbb{R}^{2} \to \mathbb{R}^{2} T:R2→R2是将向量 [ x y ] \begin{bmatrix}x\\y\end{bmatrix} [xy​]映射为 [ 2 x + y x − 3 y ] \begin{bmatrix}2x + y\\x - 3y\end{bmatrix} [2x+yx−3y​]的变换,则 T T T是线性变换
    B. 设 T : R 3 → R 2 T: \mathbb{R}^{3} \to \mathbb{R}^{2} T:R3→R2是将向量 [ x y z ] \begin{bmatrix}x\\y\\z\end{bmatrix} ​xyz​​映射为 [ x + y + 1 z − 2 y ] \begin{bmatrix}x + y + 1\\z - 2y\end{bmatrix} [x+y+1z−2y​]的变换,则 T T T不是线性变换(因存在常数项1,不满足线性变换“ T ( 0 ) = 0 T(0)=0 T(0)=0”的性质)
    C. 若 T 1 T_{1} T1​, T 2 T_{2} T2​均为 T : R n → R m T: \mathbb{R}^{n} \to \mathbb{R}^{m} T:Rn→Rm的线性变换,则它们的和 T ( x ) = T 1 ( x ) + T 2 ( x ) T(x)=T_{1}(x)+T_{2}(x) T(x)=T1​(x)+T2​(x)仍是线性变换
    D. 若 T : R n → R m T: \mathbb{R}^{n} \to \mathbb{R}^{m} T:Rn→Rm是线性变换,则对于任意向量 α \alpha α, β ∈ R n \beta\in \mathbb{R}^{n} β∈Rn和常数 k k k, m ∈ R m\in \mathbb{R} m∈R,有 T ( k α + m β ) = k T ( α ) + m T ( β ) T(k\alpha + m\beta)=kT(\alpha)+mT(\beta) T(kα+mβ)=kT(α)+mT(β)
  4. 关于深度学习中的激活函数ReLU、Softmax、Sigmoid和Tanh,以下描述正确的是:()
    A. ReLU函数在输入为负时输出为零,而在输入为正时输出为输入值本身
    B. Tanh函数的输出值范围在 [ − 1 , 1 ] [-1,1] [−1,1]之间,常用于隐藏层的激活函数
    C. Sigmoid函数的导数在输入为0时达到最大值,随着输入值的增大或减小而逐渐减小
    D. Softmax函数将输入值归一化为概率分布,所有输出值的和为1
  5. 与大语言模型(LLM)相比,以下哪些是多模态大语言模型(MLLM)在处理多模态输入时面临的独特挑战?()
    A. 跨模态的语义理解与生成
    B. 多模态输入的实时处理与推理延迟
    C. 模型参数量的爆炸式增长
    D. 多模态数据的对齐(如图像与文本的语义对齐)

二、编程题(共2题)

21. 云存储设备故障预测

在云存储系统中,需要预测存储设备故障以提前迁移数据。每条设备日志包含:设备ID,写入次数,读取次数,平均写入延迟(ms),平均读取延迟(ms),设备使用年限(年),设备状态(0正常/1故障)。需实现一个设备故障预测系统,包含以下功能:

1. 数据清洗规则
  • 缺失值标记为“NaN”,用该字段有效值的均值填充;
  • 异常值判定与处理:
    • 写入次数、读取次数:小于0时为异常值,用该字段有效值的中位数替换;
    • 平均写入延迟、平均读取延迟:小于0或大于1000ms时为异常值,用该字段有效值的中位数替换;
    • 设备使用年限:小于0或大于20年时为异常值,用该字段有效值的中位数替换。
2. 逻辑回归模型训练要求
  • 训练方法:使用批量梯度下降法(Batch GD),每次迭代使用全部样本;
  • 特征变量:写入次数、读取次数、平均写入延迟、平均读取延迟、设备使用年限;
  • 标签变量:设备状态;
  • 训练参数:迭代次数100次,学习率 α = 0.01 \alpha=0.01 α=0.01,初始权重全为0。
3. 预测输出要求
  • 输出预测结果:0(表示设备正常)或1(表示设备故障)。
输入格式
  • 第一行:训练样本总个数 N N N( 2 ≤ N ≤ 100 2\leq N\leq100 2≤N≤100);
  • 第二行至第 N + 1 N+1 N+1行:每行包含1个训练样本数据,格式为“设备ID 写入次数 读取次数 平均写入延迟 平均读取延迟 设备使用年限 状态”;
  • 第 N + 2 N+2 N+2行:预测数据总个数 M M M( 1 ≤ M ≤ 10 1\leq M\leq10 1≤M≤10);
  • 第 N + 3 N+3 N+3行至第 N + M + 2 N+M+2 N+M+2行:每行包含1个预测样本数据,格式为“设备ID 写入次数 读取次数 平均写入延迟 平均读取延迟 设备使用年限 状态”(预测时状态字段仅为数据格式统一,无实际意义)。
输出格式
  • 共 M M M行,每行输出1个预测结果(0或1),与预测数据的顺序一一对应。

22. 大模型训练MOE场景路由优化算法

MOE模型训练时,token需根据概率发送到top - k个不同的专家进行计算,专家分布在多个NPU卡上。Device - Limited routing算法可将token的路由目标限制在 p p p个NPU上,以降低通信成本,具体规则如下:

  1. 专家分组:将 n n n个专家平均分配在 m m m个NPU上,每个NPU上的专家组成一个组;专家编号为 N = [ 0 , 1 , 2 , . . . , n − 1 ] N=[0,1,2,...,n-1] N=[0,1,2,...,n−1],且每个组内的专家编号连续;
  2. 筛选目标NPU:每个专家对应一个被路由到的概率,以每个组内的最大概率作为该组的代表概率;从所有组中选择代表概率最大的 p p p个组,其对应的NPU即为路由目标限制NPU;
  3. 筛选目标专家:从上述 p p p个NPU对应的所有专家中,选择概率最大的 k k k个专家,其编号即为最终路由目标。
输入格式
  • 第一行:4个整数,分别表示专家个数 n n n、NPU个数 m m m、路由目标限制NPU个数 p p p、目标路由专家个数 k k k(均处于区间 [ 1 , 10000 ] [1,10000] [1,10000]内);
  • 第二行: n n n个浮点数,分别表示每个专家对应的被路由概率(处于区间 ( 0 , 1 ) (0,1) (0,1)内),概率与专家编号 [ 0 , 1 , 2 , . . . , n − 1 ] [0,1,2,...,n-1] [0,1,2,...,n−1]一一对应。
输出格式
  • 若 n n n不能被 m m m整除(无法平均分组),或从目标NPU对应的专家中无法获取到 k k k个专家编号,则输出“error”;
  • 若满足条件,则按专家编号从小到大的顺序输出 k k k个专家编号,任意相邻两个编号之间用空格分隔,最后一个编号后无空格。

参考答案

答案仅供参考

单项选择题(共15题)

  1. 答案:A
    解析:LSTM(长短期记忆网络)能捕捉序列数据的长期依赖关系,适合生成连续文本;最大熵模型、隐马尔可夫模型(HMM)更适用于分类、序列标注等任务,决策树主要用于分类和回归,均不擅长连续文本生成。
  2. 答案:A
    解析:线性变换矩阵 A A A由基向量的像构成(列向量为 T ( e 1 ) T(e_1) T(e1​)、 T ( e 2 ) T(e_2) T(e2​)),即 A = [ 3 − 1 1 2 ] A=\begin{bmatrix}3&-1\\1&2\end{bmatrix} A=[31​−12​]。向量 v = [ 4 3 ] v=\begin{bmatrix}4\\3\end{bmatrix} v=[43​]的像为 A ⋅ v = [ 3 × 4 + ( − 1 ) × 3 1 × 4 + 2 × 3 ] = [ 9 10 ] A \cdot v = \begin{bmatrix}3\times4 + (-1)\times3\\1\times4 + 2\times3\end{bmatrix}=\begin{bmatrix}9\\10\end{bmatrix} A⋅v=[3×4+(−1)×31×4+2×3​]=[910​],故选择A。
  3. 答案:A
    解析:矩阵乘法 A = u v ⊤ A = uv^{\top} A=uv⊤中,元素 A i j A_{ij} Aij​为 u u u的第 i i i个元素与 v v v的第 j j j个元素乘积。 u = [ 2 − 1 3 ] u=\begin{bmatrix}2\\-1\\3\end{bmatrix} u=​2−13​​、 v ⊤ = [ 4 0 − 2 ] v^{\top}=\begin{bmatrix}4&0&-2\end{bmatrix} v⊤=[4​0​−2​],第2行第3列元素为 ( − 1 ) × ( − 2 ) = 2 (-1)\times(-2)=2 (−1)×(−2)=2,故选择A。
  4. 答案:B
    解析:方程 x = cos ⁡ x x=\cos x x=cosx仅有1个实根;迭代公式 x k + 1 = cos ⁡ ( x k ) x_{k+1}=\cos(x_k) xk+1​=cos(xk​)满足压缩映射条件,对任意初始值均收敛到该实根(A错,收敛速度为线性;C错,算法稳定;D错,方程仅1个实根)。
  5. 答案:A
    解析:过拟合指模型在训练集上拟合过好(准确率高),但对未见过的测试集泛化能力差(准确率低);欠拟合是训练集和测试集准确率均低,故选择A。
  6. 答案:C
    解析:预测值: P 2 ( 1.5 ) = 100 + 20 × 1.5 + 5 × 1.5 × ( 1.5 − 1 ) = 138.75 MPa P_2(1.5)=100 + 20\times1.5 + 5\times1.5\times(1.5-1)=138.75\,\text{MPa} P2​(1.5)=100+20×1.5+5×1.5×(1.5−1)=138.75MPa;真实值: σ ( 1.5 ) = 100 + 20 × 1.5 + 5 × ( 1.5 ) 2 = 138.75 MPa \sigma(1.5)=100 + 20\times1.5 + 5\times(1.5)^2=138.75\,\text{MPa} σ(1.5)=100+20×1.5+5×(1.5)2=138.75MPa,绝对误差为0,故选择C。
  7. 答案:B
    解析:方差性质: Var ( a X + b ) = a 2 Var ( X ) \text{Var}(aX + b)=a^2\text{Var}(X) Var(aX+b)=a2Var(X)(常数不影响方差)。代入得 Var ( Y ) = 3 2 × 4 = 36 \text{Var}(Y)=3^2\times4=36 Var(Y)=32×4=36,故选择B。
  8. 答案:D
    解析:向量组 β 1 , β 2 , β 3 \beta_1,\beta_2,\beta_3 β1​,β2​,β3​线性相关,其组合系数构成的行列式为0。计算得行列式 ( k 1 − 1 ) ( k 2 ( k 1 − 1 ) − k 1 ) = 0 (k_1-1)(k_2(k_1-1)-k_1)=0 (k1​−1)(k2​(k1​−1)−k1​)=0,解得 k 1 = 1 k_1=1 k1​=1或 k 2 = 0 k_2=0 k2​=0,故选择D。
  9. 答案:D
    解析:均匀分布的概率密度函数为 f ( x ) = 1 b − a f(x)=\frac{1}{b-a} f(x)=b−a1​( a ≤ x ≤ b a\leq x\leq b a≤x≤b),其他区间为0;泊松分布是离散分布,指数分布密度为 f ( x ) = λ e − λ x f(x)=\lambda e^{-\lambda x} f(x)=λe−λx,正态分布密度为钟形曲线,故选择D。
  10. 答案:D
    解析:线性变换满足可加性 T ( u + v ) = T ( u ) + T ( v ) T(u+v)=T(u)+T(v) T(u+v)=T(u)+T(v)(对任意 u , v u,v u,v,A错)和齐次性 T ( c u ) = c T ( u ) T(cu)=cT(u) T(cu)=cT(u)(对任意标量 c c c、向量 u u u,D对);必满足 T ( 0 ) = 0 T(0)=0 T(0)=0(B错),可改变向量维度(如 T : R 3 → R 2 T:\mathbb{R}^3\to\mathbb{R}^2 T:R3→R2,C错)。
  11. 答案:C
    解析:Transformer解码器的第一个Multi-Head Attention为Masked Self-Attention(防止未来信息泄露,D对),第二个为Encoder-Decoder Cross-Attention(K、V来自编码器,B对、C错),且额外包含交叉注意力层(A对),故选择C。
  12. 答案:D
    解析:直方图、拟合优度检验、偏度/峰度系数均用于检验正态性;T检验用于检验均值差异(如两样本均值比较),不用于正态性检验,故选择D。
  13. 答案:C
    解析:次品数 X X X服从二项分布 B ( 100 , 0.02 ) B(100,0.02) B(100,0.02),当 n n n大、 p p p小时,二项分布近似泊松分布(参数 λ = n p = 2 \lambda=np=2 λ=np=2);均匀分布是连续分布,伯努利分布为单次试验,正态分布需 n p np np和 n ( 1 − p ) n(1-p) n(1−p)均较大,故选择C。
  14. 答案:A
    解析:函数 ( x + 3 ) x 2 = 0 (x+3)x^2=0 (x+3)x2=0的根为 x = − 3 x=-3 x=−3(单根)和 x = 0 x=0 x=0(二重根)。初值 x 0 = 3 x_0=3 x0​=3收敛到 x = − 3 x=-3 x=−3,牛顿迭代法对单根收敛速度为二次,对重根为线性,但本题中 x = − 3 x=-3 x=−3是单根,实际计算中因导数特性呈超线性收敛,故选择A。
  15. 答案:C
    解析:PCA通过最大化主成分的方差保留数据信息,选择主成分的核心依据是方差贡献率(累计方差贡献率通常需达到80%-90%);样本分布密度、特征相关性、数据类别分布均非PCA选择主成分的关键,故选择C。

不定项选择题(共5题)

  1. 答案:ACD
    解析:泊松过程中, N ( t ) N(t) N(t)均值为 λ t \lambda t λt(A对);已知 n n n个事件时,发生时刻服从均匀分布的顺序统计量,非独立同分布(B错);首次到达时间 T 1 T_1 T1​及相邻间隔均服从参数 λ \lambda λ的指数分布,且相互独立(C、D对)。
  2. 答案:BCD
    解析:GMM的M-step中,协方差矩阵需正定(否则无意义,B对),各成分权重和为1(约束条件,C对),均值更新为加权平均(权重为后验概率,D对);协方差矩阵可非对角(A错),故选择BCD。
  3. 答案:ACD
    解析:A满足线性变换的可加性和齐次性(对);B含常数项1,不满足 T ( 0 ) = 0 T(0)=0 T(0)=0(错);线性变换的和仍为线性变换(C对);D是线性变换的定义式(对),故选择ACD。
  4. 答案:ABCD
    解析:ReLU在输入负时输出0、正时输出自身(A对);Tanh输出范围 [ − 1 , 1 ] [-1,1] [−1,1],常用于隐藏层(B对);Sigmoid导数在 x = 0 x=0 x=0时最大(0.25),随 ∣ x ∣ |x| ∣x∣增大而减小(C对);Softmax将输入归一化为概率分布,和为1(D对),故选择ABCD。
  5. 答案:ABD
    解析:MLLM的独特挑战包括跨模态语义理解与生成(A对)、多模态实时处理延迟(B对)、多模态数据对齐(D对);模型参数量增长是LLM和MLLM共有的挑战(非独特,C错),故选择ABD。

编程21

一、解题思路
1. 数据读取与预处理
  • 读取输入:先读取训练样本数量 N N N及对应的 N N N条训练数据,再读取预测样本数量 M M M及对应的 M M M条预测数据,数据需按“设备ID、写入次数、读取次数、平均写入延迟、平均读取延迟、设备使用年限、状态”的格式解析。
  • 缺失值处理:将数据中的缺失值(标记为“NaN”)用对应字段有效值的均值填充,需先筛选出各字段非“NaN”的有效数据,计算均值后替换缺失值。
  • 异常值处理:根据规则判定异常值(写入/读取次数<0;平均写入/读取延迟<0或>1000;使用年限<0或>20),用对应字段有效值的中位数替换异常值,同样需先筛选有效数据计算中位数。
2. 逻辑回归模型训练(批量梯度下降)
  • 特征与标签提取:从预处理后的训练数据中提取特征(写入次数、读取次数、平均写入延迟、平均读取延迟、设备使用年限)和标签(设备状态,0为正常、1为故障)。
  • 特征标准化:为提升梯度下降收敛速度,对特征进行标准化(均值归一化,即 X n o r m = X − μ σ X_{norm}=\frac{X - \mu}{\sigma} Xnorm​=σX−μ​, μ \mu μ为特征均值, σ \sigma σ为特征标准差)。
  • 批量梯度下降迭代:初始权重 w w w全为0,学习率 α = 0.01 \alpha=0.01 α=0.01,迭代100次。每次迭代计算预测值(通过sigmoid函数 h θ ( x ) = 1 1 + e − θ T x h_\theta(x)=\frac{1}{1+e^{-\theta^T x}} hθ​(x)=1+e−θTx1​)、损失函数梯度,更新权重 w = w − α × gradient w = w - \alpha \times \text{gradient} w=w−α×gradient。
3. 预测与输出
  • 预测数据预处理:对预测数据执行与训练数据相同的缺失值、异常值处理及特征标准化(使用训练数据的特征均值和标准差,避免数据泄露)。
  • 结果预测:将预处理后的预测特征代入训练好的逻辑回归模型,通过sigmoid函数得到概率,概率≥0.5预测为1(故障),否则预测为0(正常),按顺序输出预测结果。
二、Python代码实现
import numpy as np defpreprocess_data(data, train_stats=None, is_train=True):""" 数据预处理:处理缺失值和异常值,训练数据计算统计量,预测数据使用训练统计量 data: 输入数据(二维列表,每行对应一条数据,列:[写入次数, 读取次数, 平均写入延迟, 平均读取延迟, 设备使用年限]) train_stats: 训练数据的统计量(均值、中位数、标准差),is_train=False时需传入 is_train: 是否为训练数据(True/False) return: 预处理后的数据,训练数据时额外返回统计量 """ data = np.array(data, dtype=np.float64) n_features = data.shape[1] stats ={}# 存储训练数据的统计量:mean(均值)、median(中位数)、std(标准差)if is_train:# 计算训练数据各字段的均值、中位数、标准差(忽略NaN)for i inrange(n_features): valid = data[~np.isnan(data[:, i]), i] stats[f'mean_{i}']= np.mean(valid) stats[f'median_{i}']= np.median(valid) stats[f'std_{i}']= np.std(valid)iflen(valid)>1else1.0# 避免标准差为0else:# 预测数据使用训练数据的统计量 stats = train_stats # 处理缺失值(用均值填充)for i inrange(n_features): data[np.isnan(data[:, i]), i]= stats[f'mean_{i}']# 处理异常值(用中位数填充)# 特征0:写入次数,特征1:读取次数(异常值<0)for i in[0,1]: data[data[:, i]<0, i]= stats[f'median_{i}']# 特征2:平均写入延迟,特征3:平均读取延迟(异常值<0或>1000)for i in[2,3]: mask =(data[:, i]<0)|(data[:, i]>1000) data[mask, i]= stats[f'median_{i}']# 特征4:设备使用年限(异常值<0或>20) mask =(data[:,4]<0)|(data[:,4]>20) data[mask,4]= stats[f'median_4']# 训练数据标准化(预测数据后续用训练统计量标准化)if is_train: normalized_data =(data - np.array([stats[f'mean_{i}']for i inrange(n_features)]))/ \ np.array([stats[f'std_{i}']for i inrange(n_features)])return normalized_data, stats else:return data defsigmoid(z):"""sigmoid激活函数,避免数值溢出"""return np.where(z >=0,1/(1+ np.exp(-z)), np.exp(z)/(1+ np.exp(z)))deftrain_logistic_regression(X, y, epochs=100, alpha=0.01):""" 批量梯度下降训练逻辑回归模型 X: 标准化后的训练特征(n_samples × n_features) y: 训练标签(n_samples × 1) epochs: 迭代次数 alpha: 学习率 return: 训练好的权重w """ n_samples, n_features = X.shape # 初始化权重(含偏置项,故特征维度+1,先给X添加偏置列) X_with_bias = np.hstack([np.ones((n_samples,1)), X])# (n_samples, n_features+1) w = np.zeros((n_features +1,1))# 初始权重全0for _ inrange(epochs):# 计算预测概率 y_pred_prob = sigmoid(np.dot(X_with_bias, w))# 计算梯度(批量梯度,使用全部样本) gradient =(1/ n_samples)* np.dot(X_with_bias.T,(y_pred_prob - y.reshape(-1,1)))# 更新权重 w -= alpha * gradient return w defpredict(w, X_test, train_stats):""" 模型预测 w: 训练好的权重 X_test: 预处理后的预测特征(未标准化) train_stats: 训练数据的统计量(用于标准化) return: 预测结果(0/1) """ n_features = X_test.shape[1]# 用训练数据的均值和标准差标准化预测特征 X_test_norm =(X_test - np.array([train_stats[f'mean_{i}']for i inrange(n_features)]))/ \ np.array([train_stats[f'std_{i}']for i inrange(n_features)])# 添加偏置列 X_test_with_bias = np.hstack([np.ones((X_test_norm.shape[0],1)), X_test_norm])# 计算预测概率并转为标签(≥0.5为1,否则为0) y_pred_prob = sigmoid(np.dot(X_test_with_bias, w)) y_pred =(y_pred_prob >=0.5).astype(int).flatten()return y_pred defmain():# 读取输入(注意:实际考试中需从标准输入读取,此处模拟输入格式)import sys input_lines =[line.strip()for line in sys.stdin if line.strip()] ptr =0# 读取训练数据 N =int(input_lines[ptr]) ptr +=1 train_data =[] train_labels =[]for _ inrange(N): parts = input_lines[ptr].split() ptr +=1# 提取特征(索引1-5:写入次数、读取次数、平均写入延迟、平均读取延迟、设备使用年限) features =[float(p)if p !='NaN'else np.nan for p in parts[1:6]]# 提取标签(索引6:设备状态) label =int(parts[6]) train_data.append(features) train_labels.append(label)# 读取预测数据 M =int(input_lines[ptr]) ptr +=1 test_data =[]for _ inrange(M): parts = input_lines[ptr].split() ptr +=1# 提取特征(同训练数据,状态字段无意义) features =[float(p)if p !='NaN'else np.nan for p in parts[1:6]] test_data.append(features)# 1. 预处理训练数据 X_train_norm, train_stats = preprocess_data(train_data, is_train=True) y_train = np.array(train_labels)# 2. 训练逻辑回归模型 w = train_logistic_regression(X_train_norm, y_train, epochs=100, alpha=0.01)# 3. 预处理预测数据并预测 X_test_processed = preprocess_data(test_data, train_stats=train_stats, is_train=False) y_pred = predict(w, X_test_processed, train_stats)# 4. 输出预测结果for pred in y_pred:print(pred)if __name__ =="__main__": main()

编程22

一、解题思路
1. 输入校验与初始化
  • 核心校验:首先判断专家总数 n n n是否能被NPU个数 m m m整除(若不能,直接输出“error”),确保专家可平均分配到每个NPU形成连续编号的专家组;同时后续需确认目标NPU对应的专家总数不小于 k k k(若不足,同样输出“error”)。
  • 数据初始化:读取专家概率列表,与专家编号(0到 n − 1 n-1 n−1)一一对应,便于后续按概率筛选专家。
2. 专家分组(按NPU划分)
  • 计算每组专家数:每组专家数量 g r o u p s i z e = n / / m group_size = n // m groups​ize=n//m,确保每个NPU对应一个包含 g r o u p s i z e group_size groups​ize个连续编号专家的组(如 n = 6 n=6 n=6、 m = 2 m=2 m=2时,组1为专家0-2,组2为专家3-5)。
  • 构建分组数据:遍历所有专家,按编号归属划分到对应组,同时记录每组的最大概率(作为该组的“代表概率”,用于筛选目标NPU)。
3. 筛选目标NPU
  • 按组概率排序:将所有组按“代表概率”降序排列,选择前 p p p个组(即概率最大的 p p p个组),其对应的NPU即为路由目标限制NPU。
  • 收集目标专家池:汇总这 p p p个目标组内的所有专家(含编号和概率),形成待选专家池。
4. 筛选目标专家与输出
  • 按专家概率排序:将待选专家池中的专家按概率降序排列,选择前 k k k个专家(若专家池总数不足 k k k,输出“error”)。
  • 结果格式化:将选中的 k k k个专家按编号从小到大排序,用空格分隔输出,确保行尾无空格。
二、Python代码实现
defmain():import sys # 读取输入(第一行:n, m, p, k;第二行:n个专家概率) input_lines =[line.strip()for line in sys.stdin if line.strip()]iflen(input_lines)<2:print("error")return# 解析第一行参数(专家数n、NPU数m、目标NPU数p、目标专家数k)try: n, m, p, k =map(int, input_lines[0].split())# 校验参数范围(题目规定区间[1,10000])ifnot(1<= n <=10000and1<= m <=10000and1<= p <=10000and1<= k <=10000):print("error")returnexcept ValueError:print("error")return# 解析第二行专家概率(n个浮点数,区间(0,1))try: probs =list(map(float, input_lines[1].split()))iflen(probs)!= n:print("error")return# 校验概率范围(题目规定(0,1),此处允许微小精度误差)for prob in probs:ifnot(0< prob <1):print("error")returnexcept ValueError:print("error")return# 第一步:校验专家能否平均分配到NPU(n必须被m整除)if n % m !=0:print("error")return group_size = n // m # 每个NPU对应的专家数量(每组专家数)# 第二步:构建专家组(按NPU分组,记录每组的专家编号、概率及组最大概率) groups =[]# 元素格式:(组最大概率, 组内专家列表),组内专家格式:(专家编号, 专家概率)for group_idx inrange(m):# 计算当前组专家的编号范围(连续编号) start_idx = group_idx * group_size end_idx = start_idx + group_size group_experts =[] max_prob_in_group =0.0# 遍历组内专家,收集编号、概率并找组内最大概率for expert_idx inrange(start_idx, end_idx): prob = probs[expert_idx] group_experts.append((expert_idx, prob))if prob > max_prob_in_group: max_prob_in_group = prob groups.append((max_prob_in_group, group_experts))# 第三步:筛选概率最大的p个组(目标NPU对应的组)# 按组最大概率降序排序,取前p个组 groups_sorted =sorted(groups, key=lambda x: x[0], reverse=True) target_groups = groups_sorted[:p]# 第四步:收集目标组内的所有专家,形成待选专家池 candidate_experts =[]for _, experts in target_groups: candidate_experts.extend(experts)# 校验待选专家数是否足够k个(不足则输出error)iflen(candidate_experts)< k:print("error")return# 第五步:按专家概率降序排序,选择前k个专家,再按编号升序排列# 先按概率降序,概率相同则按编号升序(避免概率一致时排序混乱) candidate_experts_sorted =sorted(candidate_experts, key=lambda x:(-x[1], x[0])) selected_experts = candidate_experts_sorted[:k]# 按专家编号升序排列输出 selected_ids =sorted([expert[0]for expert in selected_experts])# 第六步:格式化输出(空格分隔,行尾无空格)print(' '.join(map(str, selected_ids)))if __name__ =="__main__": main()
Could not load content