华为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
- 华为Ai岗机考20250903
-
- 一、选择题
-
- (一)单项选择题(共15题)
- (二)不定项选择题(共5题)
- 二、编程题(共2题)
-
- 21. 云存储设备故障预测
-
- 1. 数据清洗规则
- 2. 逻辑回归模型训练要求
- 3. 预测输出要求
- 输入格式
- 输出格式
- 22. 大模型训练MOE场景路由优化算法
-
- 输入格式
- 输出格式
- 参考答案
-
- 单项选择题(共15题)
- 不定项选择题(共5题)
- 编程21
-
- 一、解题思路
-
- 1. 数据读取与预处理
- 2. 逻辑回归模型训练(批量梯度下降)
- 3. 预测与输出
- 二、Python代码实现
- 编程22
-
- 一、解题思路
-
- 1. 输入校验与初始化
- 2. 专家分组(按NPU划分)
- 3. 筛选目标NPU
- 4. 筛选目标专家与输出
- 二、Python代码实现
一、选择题
(一)单项选择题(共15题)
-
在文本生成中,以下哪种模型最适合用于生成连续文本?()
A. LSTM
B. 最大熵模型
C. 隐马尔可夫模型(HMM)
D. 决策树 -
线性变换
T
:
R
2
→
R
2
T: mathbb{R}^{2} to mathbb{R}^{2}
T:R2→R2将向量
e
1
=
[
1
]
e_{1}=begin{bmatrix}1\0end{bmatrix}
e1=[10]映为
[
3
1
]
begin{bmatrix}3\1end{bmatrix}
[31],将
e
2
=
[
1
]
e_{2}=begin{bmatrix}0\1end{bmatrix}
e2=[01]映为
[
−
1
2
]
begin{bmatrix}-1\2end{bmatrix}
[−12],则向量
v
=
[
4
3
]
v=begin{bmatrix}4\3end{bmatrix}
v=[43]在
T
T
T下的像为?()
A.
[
5
7
]
begin{bmatrix}5\7end{bmatrix}
[57]
B.
[
8
11
]
begin{bmatrix}8\11end{bmatrix}
[811]
C.
[
12
−
2
]
begin{bmatrix}12\-2end{bmatrix}
[12−2]
D.
[
9
10
]
begin{bmatrix}9\10end{bmatrix}
[910] -
已知
u
=
[
2
−
1
3
]
u=begin{bmatrix}2\-1\3end{bmatrix}
u=2−13,
v
=
[
4
−
2
]
v=begin{bmatrix}4\0\-2end{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 -
在计算某天线的安装角度时,需要求解如下非线性方程
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. 该方程有两个实根,算法收敛到哪一个取决于初始值 -
你正在使用一个机器学习模型来解决一个分类问题,在训练集上得到了非常高的准确率,但是在测试集上的准确率却相对较低。这种情况最有可能是以下哪种现象?()
A. 过拟合
B. 欠拟合
C. 无法判断
D. 正好拟合 -
桥梁应力监测中,传感器测得:
t
=
[
,
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 -
在进行特征工程时,我们经常会对特征进行标准化处理。假设有一个特征
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 -
向量组
α
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
=
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
=
k_{2}=0
k2=0 -
设随机变量
X
X
X的概率密度函数为
f
(
x
)
=
1
b
−
a
(
a
≤
x
≤
b
)
f(x)=frac{1}{b – a}(aleq xleq b)
f(x)=b−a1(a≤x≤b),其他情况为0。该分布是:()
A. 泊松分布
B. 指数分布
C. 正态分布
D. 均匀分布 -
关于线性变换
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
uperp 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成立 -
关于Transformer解码器的描述错误的是?()
A. 解码器额外使用编码器-解码器交叉注意力层(Cross – Attention)
B. 第二个Multi – Head Attention层的K、V矩阵使用Encoder的编码信息矩阵进行计算
C. 解码器的第二个Multi – Head Attention采用了Masked掩码操作
D. 解码器包含掩码自注意力层(Masked Self – Attention) -
下述检验正态性假设的方法中错误的是()
A. 直方图方法
B. 拟合优度检验方法
C. 使用偏度系数和峰度系数
D. T检验 -
某工厂生产的产品次品率为0.02,随机抽取100件产品,次品数
X
X
X近似服从的分布是?()
A. 均匀分布
B. 伯努利分布
C. 泊松分布
D. 正态分布 -
用牛顿迭代法求函数
(
x
+
3
)
x
2
=
(x + 3)x^{2}=0
(x+3)x2=0的根,初值为
x
=
3
x_{0}=3
x0=3的情况下,其收敛速度是()
A. 超线性收敛
B. 二次收敛
C. 线性收敛
D. 对数收敛 -
在使用PCA(主成分分析)进行降维时,主要依据以下哪一项来选择主成分?()
A. 样本的分布密度
B. 特征之间的相关性
C. 主成分的方差贡献率
D. 数据的类别分布
(二)不定项选择题(共5题)
-
设
{
N
(
t
)
,
t
≥
}
{N(t),tgeq0}
{N(t),t≥0}是强度为
λ
lambda
λ的泊松过程。以下陈述中,正确的是()
A. 在区间
[
,
t
]
[0,t]
[0,t]内事件数
N
(
t
)
N(t)
N(t)的均值为
λ
t
lambda t
λt
B. 已知在时间
[
,
t
]
[0,t]
[0,t]内发生了
n
n
n个事件,那么这
n
n
n个事件的发生时刻在
[
,
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相互独立 -
在EM算法中,GMM的M – step的解析解需要()
A. 必须对角协方差
B. 协方差矩阵正定
C. 各成分权重和为1
D. 均值更新为加权平均 -
下列关于线性变换的说法中,正确的是()
A. 设
T
:
R
2
→
R
2
T: mathbb{R}^{2} to mathbb{R}^{2}
T:R2→R2是将向量
[
x
y
]
begin{bmatrix}x\yend{bmatrix}
[xy]映射为
[
2
x
+
y
x
−
3
y
]
begin{bmatrix}2x + y\x – 3yend{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\zend{bmatrix}
xyz映射为
[
x
+
y
+
1
z
−
2
y
]
begin{bmatrix}x + y + 1\z – 2yend{bmatrix}
[x+y+1z−2y]的变换,则
T
T
T不是线性变换(因存在常数项1,不满足线性变换“
T
(
)
=
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
betain mathbb{R}^{n}
β∈Rn和常数
k
k
k,
m
∈
R
min mathbb{R}
m∈R,有
T
(
k
α
+
m
β
)
=
k
T
(
α
)
+
m
T
(
β
)
T(kalpha + mbeta)=kT(alpha)+mT(beta)
T(kα+mβ)=kT(α)+mT(β) -
关于深度学习中的激活函数ReLU、Softmax、Sigmoid和Tanh,以下描述正确的是:()
A. ReLU函数在输入为负时输出为零,而在输入为正时输出为输入值本身
B. Tanh函数的输出值范围在
[
−
1
,
1
]
[-1,1]
[−1,1]之间,常用于隐藏层的激活函数
C. Sigmoid函数的导数在输入为0时达到最大值,随着输入值的增大或减小而逐渐减小
D. Softmax函数将输入值归一化为概率分布,所有输出值的和为1 -
与大语言模型(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
2leq Nleq100
2≤N≤100); - 第二行至第
N
+
1
N+1
N+1行:每行包含1个训练样本数据,格式为“设备ID 写入次数 读取次数 平均写入延迟 平均读取延迟 设备使用年限 状态”; - 第
N
+
2
N+2
N+2行:预测数据总个数
M
M
M(
1
≤
M
≤
10
1leq Mleq10
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上,以降低通信成本,具体规则如下:
- 专家分组:将
n
n
n个专家平均分配在
m
m
m个NPU上,每个NPU上的专家组成一个组;专家编号为
N
=
[
,
1
,
2
,
.
.
.
,
n
−
1
]
N=[0,1,2,…,n-1]
N=[0,1,2,…,n−1],且每个组内的专家编号连续; - 筛选目标NPU:每个专家对应一个被路由到的概率,以每个组内的最大概率作为该组的代表概率;从所有组中选择代表概率最大的
p
p
p个组,其对应的NPU即为路由目标限制NPU; - 筛选目标专家:从上述
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个浮点数,分别表示每个专家对应的被路由概率(处于区间
(
,
1
)
(0,1)
(0,1)内),概率与专家编号
[
,
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题)
-
答案:A
解析:LSTM(长短期记忆网络)能捕捉序列数据的长期依赖关系,适合生成连续文本;最大熵模型、隐马尔可夫模型(HMM)更适用于分类、序列标注等任务,决策树主要用于分类和回归,均不擅长连续文本生成。 -
答案: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&2end{bmatrix}
A=[31−12]。向量
v
=
[
4
3
]
v=begin{bmatrix}4\3end{bmatrix}
v=[43]的像为
A
⋅
v
=
[
3
×
4
+
(
−
1
)
×
3
1
×
4
+
2
×
3
]
=
[
9
10
]
A cdot v = begin{bmatrix}3times4 + (-1)times3\1times4 + 2times3end{bmatrix}=begin{bmatrix}9\10end{bmatrix}
A⋅v=[3×4+(−1)×31×4+2×3]=[910],故选择A。 -
答案: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\3end{bmatrix}
u=2−13、
v
⊤
=
[
4
−
2
]
v^{top}=begin{bmatrix}4&0&-2end{bmatrix}
v⊤=[40−2],第2行第3列元素为
(
−
1
)
×
(
−
2
)
=
2
(-1)times(-2)=2
(−1)×(−2)=2,故选择A。 -
答案: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个实根)。 -
答案:A
解析:过拟合指模型在训练集上拟合过好(准确率高),但对未见过的测试集泛化能力差(准确率低);欠拟合是训练集和测试集准确率均低,故选择A。 -
答案:C
解析:预测值:
P
2
(
1.5
)
=
100
+
20
×
1.5
+
5
×
1.5
×
(
1.5
−
1
)
=
138.75
MPa
P_2(1.5)=100 + 20times1.5 + 5times1.5times(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 + 20times1.5 + 5times(1.5)^2=138.75,text{MPa}
σ(1.5)=100+20×1.5+5×(1.5)2=138.75MPa,绝对误差为0,故选择C。 -
答案:B
解析:方差性质:
Var
(
a
X
+
b
)
=
a
2
Var
(
X
)
text{Var}(aX + b)=a^2text{Var}(X)
Var(aX+b)=a2Var(X)(常数不影响方差)。代入得
Var
(
Y
)
=
3
2
×
4
=
36
text{Var}(Y)=3^2times4=36
Var(Y)=32×4=36,故选择B。 -
答案:D
解析:向量组
β
1
,
β
2
,
β
3
beta_1,beta_2,beta_3
β1,β2,β3线性相关,其组合系数构成的行列式为0。计算得行列式
(
k
1
−
1
)
(
k
2
(
k
1
−
1
)
−
k
1
)
=
(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
=
k_2=0
k2=0,故选择D。 -
答案:D
解析:均匀分布的概率密度函数为
f
(
x
)
=
1
b
−
a
f(x)=frac{1}{b-a}
f(x)=b−a1(
a
≤
x
≤
b
aleq xleq b
a≤x≤b),其他区间为0;泊松分布是离散分布,指数分布密度为
f
(
x
)
=
λ
e
−
λ
x
f(x)=lambda e^{-lambda x}
f(x)=λe−λx,正态分布密度为钟形曲线,故选择D。 -
答案: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
(
)
=
T(0)=0
T(0)=0(B错),可改变向量维度(如
T
:
R
3
→
R
2
T:mathbb{R}^3tomathbb{R}^2
T:R3→R2,C错)。 -
答案:C
解析:Transformer解码器的第一个Multi-Head Attention为Masked Self-Attention(防止未来信息泄露,D对),第二个为Encoder-Decoder Cross-Attention(K、V来自编码器,B对、C错),且额外包含交叉注意力层(A对),故选择C。 -
答案:D
解析:直方图、拟合优度检验、偏度/峰度系数均用于检验正态性;T检验用于检验均值差异(如两样本均值比较),不用于正态性检验,故选择D。 -
答案: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。 -
答案:A
解析:函数
(
x
+
3
)
x
2
=
(x+3)x^2=0
(x+3)x2=0的根为
x
=
−
3
x=-3
x=−3(单根)和
x
=
x=0
x=0(二重根)。初值
x
=
3
x_0=3
x0=3收敛到
x
=
−
3
x=-3
x=−3,牛顿迭代法对单根收敛速度为二次,对重根为线性,但本题中
x
=
−
3
x=-3
x=−3是单根,实际计算中因导数特性呈超线性收敛,故选择A。 -
答案:C
解析:PCA通过最大化主成分的方差保留数据信息,选择主成分的核心依据是方差贡献率(累计方差贡献率通常需达到80%-90%);样本分布密度、特征相关性、数据类别分布均非PCA选择主成分的关键,故选择C。
不定项选择题(共5题)
-
答案:ACD
解析:泊松过程中,
N
(
t
)
N(t)
N(t)均值为
λ
t
lambda t
λt(A对);已知
n
n
n个事件时,发生时刻服从均匀分布的顺序统计量,非独立同分布(B错);首次到达时间
T
1
T_1
T1及相邻间隔均服从参数
λ
lambda
λ的指数分布,且相互独立(C、D对)。 -
答案:BCD
解析:GMM的M-step中,协方差矩阵需正定(否则无意义,B对),各成分权重和为1(约束条件,C对),均值更新为加权平均(权重为后验概率,D对);协方差矩阵可非对角(A错),故选择BCD。 -
答案:ACD
解析:A满足线性变换的可加性和齐次性(对);B含常数项1,不满足
T
(
)
=
T(0)=0
T(0)=0(错);线性变换的和仍为线性变换(C对);D是线性变换的定义式(对),故选择ACD。 -
答案:ABCD
解析:ReLU在输入负时输出0、正时输出自身(A对);Tanh输出范围
[
−
1
,
1
]
[-1,1]
[−1,1],常用于隐藏层(B对);Sigmoid导数在
x
=
x=0
x=0时最大(0.25),随
∣
x
∣
|x|
∣x∣增大而减小(C对);Softmax将输入归一化为概率分布,和为1(D对),故选择ABCD。 -
答案: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
def preprocess_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 in range(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) if len(valid) > 1 else 1.0 # 避免标准差为0
else:
# 预测数据使用训练数据的统计量
stats = train_stats
# 处理缺失值(用均值填充)
for i in range(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 in range(n_features)])) /
np.array([stats[f'std_{i}'] for i in range(n_features)])
return normalized_data, stats
else:
return data
def sigmoid(z):
"""sigmoid激活函数,避免数值溢出"""
return np.where(z >= 0, 1 / (1 + np.exp(-z)), np.exp(z) / (1 + np.exp(z)))
def train_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)) # 初始权重全0
for _ in range(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
def predict(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 in range(n_features)])) /
np.array([train_stats[f'std_{i}'] for i in range(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
def main():
# 读取输入(注意:实际考试中需从标准输入读取,此处模拟输入格式)
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 _ in range(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 _ in range(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
groupsize=n//m,确保每个NPU对应一个包含
g
r
o
u
p
s
i
z
e
group_size
groupsize个连续编号专家的组(如
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代码实现
def main():
import sys
# 读取输入(第一行:n, m, p, k;第二行:n个专家概率)
input_lines = [line.strip() for line in sys.stdin if line.strip()]
if len(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])
if not (1 <= n <= 10000 and 1 <= m <= 10000 and 1 <= p <= 10000 and 1 <= k <= 10000):
print("error")
return
except ValueError:
print("error")
return
# 解析第二行专家概率(n个浮点数,区间(0,1))
try:
probs = list(map(float, input_lines[1].split()))
if len(probs) != n:
print("error")
return
# 校验概率范围(题目规定(0,1),此处允许微小精度误差)
for prob in probs:
if not (0 < prob < 1):
print("error")
return
except ValueError:
print("error")
return
# 第一步:校验专家能否平均分配到NPU(n必须被m整除)
if n % m != 0:
print("error")
return
group_size = n // m # 每个NPU对应的专家数量(每组专家数)
# 第二步:构建专家组(按NPU分组,记录每组的专家编号、概率及组最大概率)
groups = [] # 元素格式:(组最大概率, 组内专家列表),组内专家格式:(专家编号, 专家概率)
for group_idx in range(m):
# 计算当前组专家的编号范围(连续编号)
start_idx = group_idx * group_size
end_idx = start_idx + group_size
group_experts = []
max_prob_in_group = 0.0
# 遍历组内专家,收集编号、概率并找组内最大概率
for expert_idx in range(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)
if len(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()