2026年人工智能训练师(四级)操作技能考核试题及评分标准_第1页
2026年人工智能训练师(四级)操作技能考核试题及评分标准_第2页
2026年人工智能训练师(四级)操作技能考核试题及评分标准_第3页
2026年人工智能训练师(四级)操作技能考核试题及评分标准_第4页
2026年人工智能训练师(四级)操作技能考核试题及评分标准_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2026年人工智能训练师(四级)操作技能考核试题及评分标准2026年人工智能训练师(四级)操作技能考核试题及评分标准【考生须知】1.本卷共六大题,满分100分,考试时间180分钟。2.所有操作必须在指定虚拟机内完成,擅自连接外网按零分计。3.答题文件统一保存在/home/ai_trainer/answer/目录,文件命名格式为“题号_考生编号.ipynb”,如“Q3_2026JSJ0041.ipynb”。4.评分以结果文件、代码、可视化、文字解释四项综合判定,任何一项缺失均扣对应权重。5.禁止在卷面出现真实姓名、身份证号、公司名等个人信息,违者全卷零分。——————————试题部分——————————【一】数据清洗与增强(15分)任务描述某电商提供“用户评论情感分类”原始语料(路径:/data/raw/review.csv),字段:review_id,user_id,content,label(0负/1正)。需完成:1.删除content为空或字符数<4的记录;2.对content做简繁转换、全角转半角、英文统一小写;3.使用回译(中→英→中)做数据增强,仅对label=1且content长度>15的样本扩增1倍;4.输出清洗后数据至/home/ai_trainer/answer/Q1_cleaned.csv,并给出各label数量柱状图。评分要点①清洗逻辑正确4分;②增强策略符合要求3分;③结果文件无缺失2分;④柱状图清晰含坐标轴标签3分;⑤代码规范与注释3分。【二】文本特征工程(15分)任务描述沿用Q1结果,完成:1.分词并去停用词(停用词表:/dict/stopwords.txt);2.构建TF-IDF向量(max_features=8000,ngram_range=(1,2));3.使用PCA降至256维,可视化前2主成分,颜色区分label;4.计算并输出“快递”一词的TF-IDF权重最高的前10条评论的review_id列表。评分要点①分词准确2分;②TF-IDF参数正确3分;③PCA降维与可视化4分;④关键词检索正确3分;⑤代码复现性3分。【三】模型训练与调优(20分)任务描述基于Q2的256维特征,建立轻量级情感分类模型:1.划分训练集/验证集=8:2,随机种子42;2.选用LightGBM,用Optuna进行贝叶斯调参,优化目标:验证集F1,搜索空间:num_leaves∈[16,128],learning_rate∈[0.01,0.3],feature_fraction∈[0.6,1.0],max_depth∈[3,12];3.训练完成后输出最优参数、最优F1值、特征重要性前10的条形图;4.保存模型为/home/ai_trainer/answer/Q3_best_lgb.txt(lightgbm.Booster.save_model)。评分要点①数据划分正确2分;②Optuna搜索空间完整3分;③最优F1≥0.85得5分,0.80–0.84得3分,低于0.80得1分;④特征重要性图正确3分;⑤模型文件可加载2分;⑥代码与报告5分。【四】模型解释与错误分析(15分)任务描述加载Q3模型,完成:1.对验证集计算混淆矩阵,输出召回率最低类别的5条典型错误样本的review_id、真实label、预测概率;2.使用SHAP对整条验证集计算平均绝对SHAP值,输出全局重要性前10的特征;3.对其中一条错误样本生成中文解释报告(≥150字),说明模型为何误判。评分要点①混淆矩阵正确2分;②错误样本选择合理3分;③SHAP值计算正确3分;④解释报告逻辑清晰、引用SHAP值4分;⑤代码与可视化3分。【五】模型压缩与部署(15分)任务描述将Q3模型压缩为≤1MB的.tflite格式,并在树莓派4B模拟器(armv7l)上运行:1.使用模型量化(整数量化,int8),保存为/home/ai_trainer/answer/Q5_model.tflite;2.编写Python推理脚本infer.py,输入为一行中文评论文本,输出label与概率;3.在模拟器执行:python3infer.py“发货快,质量一般”>result.txt,提交result.txt;4.计算模型压缩率(原始大小/压缩后),并解释量化对F1的影响(验证集重新测评)。评分要点①量化后大小≤1MB3分;②推理脚本无报错4分;③result.txt输出正确3分;④压缩率与F1变化分析3分;⑤代码与文档2分。【六】持续学习与监控(20分)任务描述假设Q3模型已上线,每日新增数据约2000条,需设计可持续学习流程:1.用Python实现“置信度筛选+人工标注”闭环:对预测概率∈[0.4,0.6]的样本视为低置信,写入待标注池;2.模拟第1天新增数据/home/ai_trainer/answer/Q6_day1.csv,字段同Q1,含低置信样本500条;人工标注后合并至训练集,重新训练LightGBM;3.计算“新模型”相比“旧模型”在验证集上的F1提升ΔF1;4.设计监控指标:①数据漂移(PSI),②模型漂移(预测分布KL散度),编写函数并输出第1天指标;5.撰写技术方案(≥300字),阐述如何降低人工标注成本并保持模型鲁棒。评分要点①置信度筛选逻辑正确3分;②重新训练流程无泄漏4分;③ΔF1计算正确2分;④PSI与KL代码正确4分;⑤技术方案可行、条理清晰5分;⑥代码与注释2分。——————————答案与解析——————————【Q1参考实现】```pythonimportpandasaspdimportopencc,matplotlib.pyplotasplt,seabornassnscc=opencc.OpenCC('t2s')df=pd.read_csv('/data/raw/review.csv')1.删除df=df.dropna(subset=['content'])df=df[df.content.str.len()>=4]2.规范化defnorm(text):text=cc.convert(text)#繁→简text=text.replace(',',',').replace('。','.')#全角→半角示例text=text.lower()returntextdf['content']=df.content.apply(norm)3.回译增强fromgoogletransimportTranslator#需预装trans=Translator()pos=df[df.label==1].reset_index(drop=True)aug=[]fortinpos.content:iflen(t)>15:en=trans.translate(t,dest='en').textzh=trans.translate(en,dest='zh-cn').textaug.append(zh)aug_df=pd.DataFrame({'content':aug,'label':1})df=pd.concat([df,aug_df],ignore_index=True)4.保存与绘图df.to_csv('/home/ai_trainer/answer/Q1_cleaned.csv',index=False)sns.countplot(x='label',data=df)plt.savefig('/home/ai_trainer/answer/Q1_bar.png')```解析:回译增强需控制语言流畅度,若出现翻译失败应异常捕获并跳过;柱状图需含xlabel、ylabel,否则扣1分。【Q2参考实现】```pythonimportjieba,re,osfromsklearn.feature_extraction.textimportTfidfVectorizerfromsklearn.decompositionimportPCAimportmatplotlib.pyplotaspltdf=pd.read_csv('/home/ai_trainer/answer/Q1_cleaned.csv')stop=set(open('/dict/stopwords.txt',encoding='utf-8').read().split())defcut(s):return''.join([wforwinjieba.lcut(s)ifwnotinstopandre.match(r'[\u4e00-\u9fa5]+',w)])df['cut']=df.content.astype(str).apply(cut)vec=TfidfVectorizer(max_features=8000,ngram_range=(1,2))X=vec.fit_transform(df.cut)pca=PCA(n_components=256,random_state=42)X_pca=pca.fit_transform(X.toarray())可视化plt.scatter(X_pca[:,0],X_pca[:,1],c=df.label,cmap='coolwarm',s=8)plt.colorbar();plt.savefig('/home/ai_trainer/answer/Q2_pca.png')关键词检索feature_names=vec.get_feature_names_out()idx=list(feature_names).index('快递')top10=X[:,idx].toarray().ravel().argsort()[-10:][::-1]print(df.review_id.iloc[top10].tolist())```解析:PCA降维仅用于可视化,不用于建模;若“快递”不在特征词中,应输出空列表并文字说明,否则扣2分。【Q3参考实现】```pythonimportoptuna,lightgbmaslgbfromsklearn.model_selectionimporttrain_test_splitfromsklearn.metricsimportf1_scoreX_train,X_val,y_train,y_val=train_test_split(X_pca,df.label,test_size=0.2,random_state=42,stratify=df.label)defobjective(trial):param={'objective':'binary','metric':'binary_logloss','num_leaves':trial.suggest_int('num_leaves',16,128),'learning_rate':trial.suggest_float('lr',0.01,0.3,log=True),'feature_fraction':trial.suggest_float('ff',0.6,1.0),'max_depth':trial.suggest_int('md',3,12),'verbose':-1}gbm=lgb.train(param,lgb.Dataset(X_train,y_train),valid_sets=[lgb.Dataset(X_val,y_val)],early_stopping_rounds=50,num_boost_round=500)pred=(gbm.predict(X_val)>0.5).astype(int)returnf1_score(y_val,pred)study=optuna.create_study(direction='maximize')study.optimize(objective,n_trials=30)best=study.best_paramsgbm=lgb.train(best,lgb.Dataset(X_train,y_train),num_boost_round=200)f1=f1_score(y_val,(gbm.predict(X_val)>0.5).astype(int))print('bestF1:',f1)lgb.plot_importance(gbm,max_num_features=10)plt.savefig('/home/ai_trainer/answer/Q3_importance.png')gbm.save_model('/home/ai_trainer/answer/Q3_best_lgb.txt')```解析:Optuna需设置随机种子保证复现;若F1<0.80需在报告里分析是否数据不均衡,未分析扣2分。【Q4参考实现】```pythonfromsklearn.metricsimportconfusion_matrix,recall_scoreimportshappred=(gbm.predict(X_val)>0.5).astype(int)cm=confusion_matrix(y_val,pred)print(cm)召回率最低类别rec=recall_score(y_val,pred,average=None)worst=rec.argmin()wrong_idx=np.where((y_val==worst)&(pred!=worst))[0]top5=wrong_idx[:5]proba=gbm.predict(X_val[top5])print(df.review_id.iloc[top5].tolist(),y_val.iloc[top5].values,proba)SHAPexplainer=shap.TreeExplainer(gbm)shap_values=explainer.shap_values(X_val)global_shap=np.abs(shap_values).mean(axis=0)top10_f=global_shap.argsort()[-10:][::-1]print(top10_f)解释一条sample=X_val[wrong_idx[0]]shap.initjs()shap.force_plot(explainer.expected_value,shap_values[wrong_idx[0],:],sample)```解析:SHAP值需对应原始特征索引,若未映射回特征名称扣2分;解释报告需引用SHAP正负方向,否则扣2分。【Q5参考实现】```pythonimporttensorflowastfLightGBM→ONNX→TFLiteimportonnxmltools,lightgbmaslgbgbm=lgb.Booster(model_file='/home/ai_trainer/answer/Q3_best_lgb.txt')onnx=onnxmltools.convert_lightgbm(gbm,initial_types=[('input',FloatTensorType([None,256]))])onnxmltools.utils.save_model(onnx,'lgb.onnx')转TFLiteconverter=tf.lite.TFLiteConverter.from_saved_model('lgb.onnx')#需tf-onnxconverter.optimizations=[tf.lite.Optimize.DEFAULT]converter.target_spec.supported_types=[8]converter.inference_input_type=8converter.inference_output_type=8tflite_model=converter.convert()open('/home/ai_trainer/answer/Q5_model.tflite','wb').write(tflite_model)推理脚本withopen('infer.py','w')asf:f.write('''importnumpyasnp,sys,jieba,reimporttensorflowastfinterpreter=tf.lite.Interpreter(model_path='/home/ai_trainer/answer/Q5_model.tflite')interpreter.allocate_tensors()inp=interpreter.get_input_details()[0]out=interpreter.get_output_details()[0]预处理同Q2text=sys.argv[1]cut=''.join([wforwinjieba.lcut(text)ifwnotinstopandre.match(r'[\u4e00-\u9fa5]+',w)])vec=vec.transform([cut])#需pickle保存vecpca_vec=pca.transform(vec.toarray()).astype(8)interpreter.set_tensor(inp['index'],pca_vec)interpreter.invoke()prob=interpreter.get_tensor(out['index'])[0]print('label:',int(prob>0),'prob:',prob)''')压缩率orig=os.path.getsize('/home/ai_trainer/answer/Q3_best_lgb.txt')comp=os.path.getsize('/home/ai_trainer/answer/Q5_model.tflite')print('压缩率:',orig/comp)量化后F1val_int8=X_val.astype(8)pred_int8=[]forrowinval_int8:interpreter.set_tensor(inp['index'],row.reshape(1,-1))interpreter.invoke()pred_int8.append(interpreter.get_tensor(out['index'])[0])f1_int8=f1_score(y_val,(np.array(pred_int8)>0).astype(int))print('量化F1:',f1_int8)```解析:若量化后F1下降>0.03需在报告说明业务可接受范围,否则扣2分;推理脚本需完整,缺失预处理扣3分。【Q6参考实现】```python1.置信度筛选df_new=pd.read_csv('/home/ai_trainer/answer/Q6_day1.csv')df_new['cut']=df_new.content.astype(str).apply(cut)X_new=pca.transform(vec.transform(df_new.cut).toarray())prob_new=gbm.predict(X_new)uncertain=np.where((prob_new>=0.4)&(prob_new<=0.6))[0]print('低置信样本:',len(uncertain))2.人工标注模拟:随机赋label(实际需人工)df_unc=df_new.iloc[uncertain].copy()df_unc['label']=np.random.randint(0,2,len(df_unc))#模拟df_all=pd.concat([df,df_unc],ignore_index=True)重新训练X_all=pca.transform(vec.transform(df_all.cut).toarray())y_all=df_all.labelX_train2,X_val2,y_train2,y_val2=train_test_split(X_all,y_all,test_size=0.2,random_state=42,stratify=y_all)gbm2=lgb.train(best,lgb.Dataset(X_train2,y_train2),num_boost_round=200)f1_new=f1_score(y_val,(gbm2.predict(X_val)>0.5

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论