-
7月22日-7月24日,为期三天的华为云鸿蒙应用开发师资培训·湖北站在湖北轻工职业技术学院圆满落下帷幕。本次培训聚焦鸿蒙应用开发技术与华为云认证,吸引了20多所学校的40多位教师参与,得到了参培老师的高度评价。 培训伊始,湖北轻工职业技术学院信息工程学院院长赵欣发表了致辞,他强调,随着万物互联时代的加速到来,鸿蒙操作系统正迅速成为推动各行业数字化转型的关键力量。他表示希望参培教师能够以本次培训为契机,不断学习新技术、新技能,提升自身的综合素质和能力水平,为培养更多优秀人才贡献力量。 随后,湖北云解决方案部部长苑磊首先对到场的老师们表示热烈的欢迎,并表示HarmonyOS 已走进百所高校课堂,成为热门课程,参加培训的各位老师也是将鸿蒙与开发者认证推向全国课堂的 “火种”。他希望能以此次培训为纽带,与各位老师持续深化交流合作,培养出更多适应未来社会需求的高素质人才。 接下来,华为云高校生态运营经理陈银豪为大家带来了“推进产教融合走向深水区,助力高校创新实践人才培养”的议题分享。他分享了华为云开发者人才培养在鸿蒙、人工智能等产品领域的人才解决方案,围绕人才培养的关键节点,构建深度完善的运营体系,通过“岗、课、赛、证、师、会”等全链条的生态运营服务,深化产教融合,助力高校人才培养,培养高质量实践人才。 培训期间,讲师从HarmonyOS简介、设计理念、技术架构、技术特性等多个角度对HarmonyOS进行介绍,使老师们对HarmonyOS具备一个较为系统全面的认识。紧接着,讲师阐述了鸿蒙应用开发的编程语言—ArkTS,系统地介绍了ArkTS语言的基础语法、UI描述规范、常用装饰器和渲染控制语法等知识。 通过对HarmonyOS基础知识与开发语言的学习,讲师又详细讲述基于ArkTS的声明式开发范式组件,包括基础组件、容器组件和媒体组件。ArkUI 是一套声明式开发框架,它具备简洁自然的 UI 信息语法、丰富的 UI 组件、多维状态管理,以及实时多维度预览等能力,帮助开发者提升应用开发效率,并能在多种设备实现生动而流畅的用户体验。讲师通过实际的组件应用案例,帮助老师们理解和区分ArkTS中的各类组件,具备在实际应用开发中熟练使用ArkTS组件的能力。 本次师资培训通过课堂学习、实验交流、考试等环节,旨在帮助参培老师掌握开发者认证课程知识体系以及提升鸿蒙开发实践能力,更好地将鸿蒙应用开发技术融入教学体系,为教学活动及人才建设提供有力的支撑。培训尾声,组织参培老师参加结课考试并为他们发放结课证书。通过本次暑期师资培训,老师们表示他们不仅掌握了鸿蒙应用开发的基础知识和最新趋势,还提升了鸿蒙开发的职业技能。 本次暑期师资培训的成功举办,离不开湖北轻工职业技术学院的鼎力支持与高度重视,也离不开各位教师的积极参与和辛勤付出。未来,我们期待更多的教师能够参与到华为云根技术与鸿蒙应用开发的培训和学习中来,促进高素质人才的培养。
-
GBDT(Gradient Boosting Decision Tree,梯度提升决策树)是一种强大的机器学习算法,广泛用于回归、分类和排序任务。它属于集成学习中的提升法(Boosting),通过逐步训练多个弱学习器(通常是决策树),并将它们组合成一个强模型。核心思想GBDT 的核心是:一步一步地修正错误。它的做法是:先训练一个简单的模型(如一棵小决策树)来预测数据。发现预测有误差(残差)。训练下一个模型,专门去拟合这些“残差”。再用第三个模型去拟合前两个模型组合后的残差……最终把所有模型的预测结果加起来,得到更准确的输出。就像老师批改作业:第一次只看大错,第二次重点看小错,逐步逼近正确答案。举个例子:预测房价你想预测房子的价格,有以下特征:面积、位置、房龄。第一棵树:发现面积越大价格越高,初步预测。预测值:300万 → 实际:320万 → 残差 = +20万第二棵树:专门学习“预测少了20万”这个模式(比如老小区被低估)它不预测总价格,而是预测“应该加多少钱”第三棵树:继续修正剩余误差(比如交通便利的加分)最终预测 = 第一棵树输出 + 第二棵树输出 + 第三棵树输出 + …每棵树都专注于“前人犯的错”,一步步提升精度。算法流程(简化)初始化模型:用一个常数(如平均房价)作为初始预测。对每一轮(t = 1 到 T):a. 计算当前模型的残差(即负梯度,GBDT 中称为“伪残差”)b. 训练一棵新的决策树,去拟合这些残差c. 将新树加入模型,更新整体预测输出最终模型:所有树的预测之和“梯度”来自损失函数的梯度下降思想,GBDT 实际上是在函数空间中进行梯度下降。Python 代码示例(使用 scikit-learn)from sklearn.datasets import load_boston from sklearn.ensemble import GradientBoostingRegressor from sklearn.model_selection import train_test_split from sklearn.metrics import mean_squared_error # 加载数据(以波士顿房价为例) boston = load_boston() X, y = boston.data, boston.target # 划分训练测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 创建 GBDT 回归模型 gbdt = GradientBoostingRegressor( n_estimators=100, # 使用100棵树 learning_rate=0.1, # 每棵树的贡献权重(步长) max_depth=3, # 每棵树的最大深度 random_state=42 ) # 训练模型 gbdt.fit(X_train, y_train) # 预测 y_pred = gbdt.predict(X_test) # 评估 mse = mean_squared_error(y_test, y_pred) print(f"均方误差: {mse:.2f}") # 特征重要性 print("特征重要性:", gbdt.feature_importances_) 注意:load_boston 已弃用,实际中可用 fetch_california_housing 或其他数据集替代。GBDT 的关键参数参数作用建议n_estimators树的数量50~500learning_rate学习率(每棵树的权重)0.01~0.3,越小需要越多树max_depth每棵树的最大深度3~6,防止过拟合subsample每次训练使用的样本比例<1.0 可引入随机性(类似随机森林)优点精度高:在结构化数据上表现优异可解释性强:能输出特征重要性支持多种损失函数:可用于回归、分类、排序对缺失值和异常值有一定鲁棒性缺点训练速度慢:树是串行训练的(不能并行)容易过拟合:如果树太多或太深对噪声敏感:特别是在残差拟合过程中常见变种XGBoost:GBDT 的高效实现,支持正则化、并行计算LightGBM:微软开发,速度快,内存占用低CatBoost:对类别特征处理友好,适合表格数据应用场景金融风控:信用评分、欺诈检测推荐系统:点击率预测工业预测:设备故障预测表格数据竞赛:Kaggle 中常见获胜方案总结GBDT 是一种“循序渐进、不断纠错”的模型:每棵树只学一点,但所有树加起来就很强大。它是传统机器学习中最成功的算法之一,尤其在表格数据(结构化数据)上,至今仍具有很强竞争力。
-
Fine-tune(微调) 是指在一个已经预训练好的模型基础上,针对特定任务或数据集进行进一步训练,使其适应新任务的过程。它是迁移学习(Transfer Learning)中最常用的方法之一,广泛应用于自然语言处理(NLP)、计算机视觉(CV)等领域。核心思想预训练(Pre-training):在大规模通用数据上训练一个模型(如 BERT 在 Wikipedia 上训练,或 ResNet 在 ImageNet 上训练),让它学会通用特征(如语言理解、边缘/纹理识别)。微调(Fine-tuning):将这个“通用模型”拿到你的具体任务上(如情感分析、猫狗分类),用你的小数据集继续训练,调整模型参数,使其更适配当前任务。类比:一个人先上“通识教育”(预训练),再学“专业课”(微调)。举个例子:情感分析你想做一个模型,判断用户评论是“正面”还是“负面”。从头训练:需要大量标注数据,训练时间长。微调做法:拿一个已经训练好的 BERT 模型(懂中文语法和语义)在它的顶部加一个分类层(输出正面/负面)用你的 1000 条标注评论继续训练模型快速学会“在上下文中判断情感”结果:准确率高、训练快、数据需求少。微调的典型步骤选择预训练模型如:BERT、RoBERTa(NLP);ResNet、ViT(CV)加载模型权重使用官方提供的预训练参数修改输出层NLP:加一个分类头(如全连接层)CV:替换最后的全连接层为你的类别数在目标任务上训练使用较小的学习率(如 2e-5)训练几个 epoch(避免过拟合)评估和部署Python 示例(使用 Hugging Face Transformers 做文本分类)from transformers import AutoTokenizer, AutoModelForSequenceClassification from transformers import Trainer, TrainingArguments import torch # 1. 加载预训练模型和分词器 model_name = "bert-base-chinese" tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForSequenceClassification.from_pretrained(model_name, num_labels=2) # 2. 准备数据 texts = ["这部电影太棒了!", "服务很差,不推荐"] labels = [1, 0] # 1=正面,0=负面 # 编码数据 inputs = tokenizer(texts, padding=True, truncation=True, return_tensors="pt") # 3. 设置训练参数 training_args = TrainingArguments( output_dir="./results", num_train_epochs=3, per_device_train_batch_size=8, learning_rate=2e-5, evaluation_strategy="epoch" ) # 4. 定义 Trainer 并微调 trainer = Trainer( model=model, args=training_args, train_dataset=inputs, # 实际使用需封装为 Dataset 对象 tokenizer=tokenizer ) trainer.train() 微调的两种常见方式方式说明全量微调(Full Fine-tuning)更新模型所有参数,效果好但计算量大部分微调(Partial Fine-tuning)只更新最后几层或分类头,速度快,适合小数据近年也有 LoRA(Low-Rank Adaptation) 等轻量微调方法,只训练少量新增参数,节省资源。优点节省时间和计算资源:无需从头训练小数据也能训练出好模型:依赖预训练知识性能通常优于从零开始训练注意事项学习率要小:避免破坏预训练学到的通用特征过拟合风险:目标数据少时容易过拟合,可用 Dropout、早停(early stopping)领域差异:如果目标任务和预训练数据差异太大(如医学文本用通用 BERT),效果可能不佳应用场景NLP:情感分析、命名实体识别、问答系统CV:医学图像分类、工业缺陷检测语音:特定人声识别、方言识别总结Fine-tune = 预训练模型 + 小数据 + 小学习率 + 任务适配它让深度学习不再是“大公司专属”,普通人也能用少量数据训练出高性能模型。
-
持续学习(Continual Learning),也称为终身学习(Lifelong Learning)或增量学习(Incremental Learning),是机器学习的一个研究方向,目标是让模型能够在连续的任务或数据流中不断学习新知识,同时保留对旧知识的记忆。核心挑战:灾难性遗忘(Catastrophic Forgetting)当模型学习新任务时(如识别猫),往往会严重遗忘旧任务的知识(如忘记如何识别狗)。这就像一个人学会新技能后,突然忘了以前会的东西。持续学习就是要解决这个问题:学新不忘旧举个例子:手机上的图像分类假设你手机里的相册分类功能:第一天:学会了识别“猫”和“狗”第二天:学会了识别“花”第三天:学会了识别“汽车”如果使用普通深度学习模型,每学一个新类别,旧的识别能力就会下降。而持续学习的目标是:在学会识别汽车的同时,依然能准确识别猫、狗和花。主要方法分类1. 基于正则化的学习(Regularization-based)思想:保护对旧任务重要的参数,不让它们被大幅修改。典型算法:EWC(Elastic Weight Consolidation)计算哪些参数对旧任务更重要在学习新任务时,限制这些参数的变化类比:重要记忆加“锁”,只允许非关键参数调整。2. 基于回放的方法(Replay-based)思想:保存一部分旧数据,学习新任务时“复习”旧数据。类型:真实回放:存少量旧样本(如每类存10张图)生成回放:用生成模型(如GAN)生成旧数据类比:人类通过“复习笔记”来巩固记忆。3. 基于架构扩展的方法(Architecture-based)思想:为新任务分配新的网络结构,避免干扰旧任务。典型做法:为每个任务分配独立的子网络使用门控机制选择激活哪部分缺点:模型会越来越大。4. 元学习与优化策略思想:训练模型具备“快速学习 + 不忘旧”的能力。如:Online EWC、MAS(Memory Aware Synapses)Python 伪代码示例(回放机制)# 模拟持续学习过程:任务1(猫/狗)→ 任务2(花) import torch import torch.nn as nn import torch.optim as optim # 假设模型 model = nn.Sequential( nn.Linear(784, 256), nn.ReLU(), nn.Linear(256, 128), nn.ReLU(), nn.Linear(128, 2) # 初始输出2类 ) optimizer = optim.Adam(model.parameters(), lr=1e-3) criterion = nn.CrossEntropyLoss() # 存储旧数据(回放缓冲区) replay_buffer = [] # 存 (image, label) # 第一阶段:训练任务1(猫/狗) for epoch in range(10): for x, y in dataloader_task1: # 混合当前数据和回放数据 if len(replay_buffer) > 0: x_rep, y_rep = zip(*replay_buffer) x = torch.cat([x, torch.stack(x_rep)]) y = torch.cat([y, torch.stack(y_rep)]) output = model(x) loss = criterion(output, y) optimizer.zero_grad() loss.backward() optimizer.step() # 保存当前任务的部分数据到回放缓冲区 some_data_from_task1 = [(img, label) for img, label in dataset_task1_sampled] replay_buffer.extend(some_data_from_task1) # 扩展输出层以适应新任务(可选策略) model.add_module("fc3", nn.Linear(128, 3)) # 现在3类 # 第二阶段:训练任务2(花),同时回放猫/狗数据 for epoch in range(10): for x, y in dataloader_task2: # 加入回放数据 if len(replay_buffer) > 0: x_rep, y_rep = zip(*replay_buffer) x = torch.cat([x, torch.stack(x_rep)]) y = torch.cat([y, torch.stack(y_rep)]) output = model(x) loss = criterion(output, y) optimizer.zero_grad() loss.backward() optimizer.step() 评估指标准确率矩阵(Accuracy Matrix):记录每个任务在每个学习阶段的性能平均准确率(Average Accuracy)遗忘程度(Forgetting Measure):旧任务性能下降多少应用场景智能手机:持续学习用户行为自动驾驶:适应新道路环境推荐系统:跟踪用户兴趣变化工业检测:新增缺陷类型无需重训总结持续学习的目标是让 AI 像人一样:不断学习新东西,同时不忘旧知识。它是通向**通用人工智能(AGI)**的重要一步,尤其在数据动态变化、隐私要求高(不能重复访问旧数据)的场景中具有重要意义。
-
Zero-Shot Learning(零样本学习)Zero-Shot Learning(ZSL)是一种机器学习方法,其核心思想是:模型能够识别或处理在训练过程中从未见过的类别或任务。换句话说:没有见过某类数据,也能做出合理判断。举个例子:动物分类假设你训练了一个模型,只学过以下动物的图片:狗猫老虎狮子现在,给它一张“豹子”的图片,模型从未在训练中见过“豹子”这个类别。但如果模型知道:豹子 = 有斑点、生活在草原、是大型猫科动物它之前学过“老虎”也有斑纹、是大型猫科动物它就可以推理出:“这可能是一种新的大型猫科动物”,从而正确分类。这就是 零样本学习 的能力——通过知识迁移,识别未见类别。实现方式Zero-Shot Learning 通常依赖语义信息(semantic attributes)或文本描述来建立“已知类别”和“未知类别”之间的联系。常见方法:属性映射(Attribute-based)每个类别用一组属性描述(如:有羽毛、会飞、有喙 → 鸟)模型学习从图像特征映射到属性空间对新类别,只要提供属性,就能匹配文本描述 + 嵌入空间对齐(如 CLIP)图像和文本被映射到同一个向量空间训练时学会“图片特征”与“文本描述”的对应关系推理时,用类别名称的文本(如“斑马”)直接匹配图像Python 示例(使用 CLIP 实现 Zero-Shot 图像分类)import torch from PIL import Image import clip # 加载预训练模型 device = "cuda" if torch.cuda.is_available() else "cpu" model, preprocess = clip.load("ViT-B/32", device=device) # 加载图片 image = preprocess(Image.open("zebra.jpg")).unsqueeze(0).to(device) # 定义可能的类别描述(即使模型从未见过这些类别的训练数据) text = clip.tokenize(["a photo of a zebra", "a photo of a horse", "a photo of a cheetah", "a photo of a car", "a photo of a bird"]).to(device) # 推理:计算图像与每个文本的相似度 with torch.no_grad(): image_features = model.encode_image(image) text_features = model.encode_text(text) logits_per_image, _ = model(image, text) probs = logits_per_image.softmax(dim=-1).cpu().numpy() print("预测概率:", probs) # 输出每个类别的可能性 输出示例:预测概率: [[0.95 0.03 0.01 0.005 0.005]] 模型从未在“斑马”上训练过,但通过文本描述“a photo of a zebra”,依然能正确识别!应用场景图像识别:识别新物种、新商品自然语言处理:理解新词、新意图推荐系统:推荐未见过的物品多模态任务:图文匹配、跨模态检索与 Few-Shot 的区别类型样本数量说明Zero-Shot0 个完全没见过该类别Few-Shot少量(如 1~5 个)见过极少量样本Supervised大量正常监督学习优点可扩展性强:无需重新训练即可识别新类别节省标注成本:不需要为每个新类收集大量数据更接近人类学习方式:通过描述理解新事物缺点依赖语义描述质量性能通常低于有监督学习容易受文本表述方式影响总结Zero-Shot Learning 是一种“见所未见,也能识”的能力,关键在于:将知识解耦为“语义”和“特征”,通过语义桥梁识别新类。它是现代多模态模型(如 CLIP、BLIP)的核心能力之一,推动了 AI 向更通用、更灵活的方向发展。
-
时间差分学习(Temporal Difference Learning,简称 TD 学习)是强化学习中一种核心的无模型(model-free)学习方法,用于估计值函数(如状态值函数 V(s)V(s)V(s) 或动作值函数 Q(s,a)Q(s,a)Q(s,a))。它结合了蒙特卡洛方法和动态规划的优点。核心思想时间差分学习通过**自举(bootstrapping)**的方式,利用后续估计值来更新当前值函数。它的基本更新逻辑是:当前预测 ← 当前预测 + 学习率 × 误差(新信息 - 旧预测)这个“误差”就是所谓的 TD误差(Temporal Difference Error):TD误差 = [即时奖励 + 折扣后下一状态的估计值] - 当前状态的估计值即:δ = r + γ·V(s') - V(s) 然后更新值函数:V(s) ← V(s) + α·δ其中:ααα:学习率γγγ:折扣因子rrr:当前获得的奖励sss:当前状态s′s's′:下一个状态举个例子:走格子游戏假设有一个智能体在走格子,每个格子是一个状态。目标是学会每个状态的“好坏”程度(值函数)。过程如下:智能体在状态 A,估计值 V(A)=0.5V(A) = 0.5V(A)=0.5它采取某个动作,进入状态 B,获得奖励 r=1r = 1r=1状态 B 的估计值 V(B)=0.8V(B) = 0.8V(B)=0.8计算 TD 误差:δ=r+γ⋅V(B)−V(A)=1+0.9×0.8−0.5=1.22δ = r + γ·V(B) - V(A) = 1 + 0.9×0.8 - 0.5 = 1.22 δ=r+γ⋅V(B)−V(A)=1+0.9×0.8−0.5=1.22更新 A 的值:V(A)←0.5+0.1×1.22=0.622V(A) ← 0.5 + 0.1×1.22 = 0.622 V(A)←0.5+0.1×1.22=0.622这样,A 的值被“拉高”,因为它通向一个好状态。TD 与蒙特卡洛(MC)的区别特性时间差分(TD)蒙特卡洛(MC)是否需要完整回合否(可以在线学习)是(必须等到回合结束)更新方式自举(用估计值更新)真实回报(完整轨迹)方差低高偏差有(因自举)无(如果模型正确)学习速度通常更快较慢TD 可以在每一步就学习,不需要等游戏结束,适合实时学习。TD 方法的两种主要形式TD(0):只看下一步,即上面的例子。TD(λ):结合多步信息,λ 控制“看多远”:λ = 0 → 等价于 TD(0)λ = 1 → 接近蒙特卡洛Python 代码示例:TD(0) 估计值函数import numpy as np # 假设有 5 个状态,初始化值函数 V = np.zeros(5) # V[0] 到 V[4] alpha = 0.1 gamma = 0.9 # 模拟一条轨迹:状态序列和奖励 # 格式:(状态, 奖励, 下一状态) trajectory = [ (0, 0, 1), (1, 0, 2), (2, 0, 3), (3, 1, 4), (4, 0, -1) # 终止状态 ] # TD(0) 更新 for s, r, s_next in trajectory: if s_next == -1: # 终止状态 td_error = r - V[s] else: td_error = r + gamma * V[s_next] - V[s] V[s] += alpha * td_error print("更新后的值函数:", V) 输出示例:更新后的值函数: [0.0009 0.009 0.09 0.81 0.9 ] 可以看到,靠近奖励的状态值被逐步“传播”回去。TD 在 Q-learning 中的应用Q-learning 是 TD 的一种形式,更新公式为:Q(s,a) ← Q(s,a) + α [r + γ·max_a' Q(s',a') - Q(s,a)] 这就是 TD 更新在动作值函数上的应用,属于 off-policy TD 学习。优点可以在线学习(每步更新)不需要环境模型(无模型)比蒙特卡洛更稳定、收敛更快适合连续任务或长回合任务总结时间差分学习是一种基于误差的增量式学习方法,核心是:用“下一时刻的估计”来修正“当前时刻的预测”它让智能体能够在交互过程中逐步学会“哪些状态更好”,是 Q-learning、SARSA、DQN 等算法的基础。
-
TRPO(Trust Region Policy Optimization,信赖域策略优化)是一种用于强化学习的策略优化算法,主要用于训练智能体在复杂环境中做出决策。它由 OpenAI 在 2015 年提出,是早期深度强化学习中非常重要的基于策略梯度的算法之一。核心思想TRPO 的目标是:在保证策略更新稳定的同时,逐步提升性能。传统策略梯度方法(如 REINFORCE 或 A2C)直接用梯度上升更新策略,但步长(学习率)不好控制:步子太大 → 策略崩溃(性能大幅下降)步子太小 → 学习太慢TRPO 解决这个问题的方法是:不直接用学习率,而是限制每次更新的“变化量”,确保新策略不会偏离旧策略太远。它通过引入“信赖域”(Trust Region)的概念,在每次更新时求解一个带约束的优化问题:在 策略变化不超过某个范围 的前提下,最大化预期收益的提升。这个“变化范围”通常用 KL散度(Kullback-Leibler Divergence)来衡量新旧策略之间的差异。数学形式(不展开公式,只讲逻辑)TRPO 求解如下问题:最大化:近似收益提升(优势函数加权和) 约束条件:新旧策略之间的 KL 散度 ≤ δ(一个小常数)也就是说:我们希望策略越“好”越好(收益高)但不能“变太多”,否则训练不稳定这种“带约束的优化”比“调学习率”更鲁棒。举个例子:训练机器人走路假设你正在训练一个机器人学走路:当前策略能让它走 5 步不倒你想改进策略,让它走得更远如果更新太猛:新策略可能完全不会走,直接摔倒(性能崩溃)TRPO 的做法是:允许策略改变,但限制“改变的程度”每次只允许“小步前进”,但方向是提升性能的这样即使某次更新效果一般,也不会导致灾难性退化就像“稳扎稳打”的学习方式。关键技术点优势函数(Advantage Function)用来评估某个动作比“平均水平”好多少。TRPO 使用广义优势估计(GAE)来更稳定地计算优势。KL 散度约束衡量新旧策略输出的动作概率分布之间的差异。太大会被限制。共轭梯度法 + 线搜索因为约束优化无法用标准反向传播,TRPO 使用共轭梯度法求解方向,再用线搜索确保不违反约束。Python 伪代码# 初始化策略网络(如神经网络) policy = PolicyNetwork() for iteration in range(num_iterations): # 1. 用当前策略收集一批数据(轨迹) trajectories = collect_trajectories(policy) # 2. 计算每个状态-动作的优势值(使用GAE) advantages = compute_advantages(trajectories) # 3. 构建目标函数:最大化优势加权和 objective = compute_expected_return(policy, trajectories, advantages) # 4. 计算旧策略(当前策略)的输出分布 old_policy = policy.get_distribution() # 5. 求解约束优化问题: # max objective # s.t. KL(new_policy, old_policy) <= delta # (使用共轭梯度和线搜索) policy.update_with_constraint(objective, old_policy, kl_constraint=0.01) 实际实现复杂,通常使用专门的强化学习库(如 Stable-Baselines3、RLlib)中的 TRPO 实现。优点稳定性高:由于信赖域约束,避免策略突变适合复杂控制任务:如机器人控制、连续动作空间无须调学习率:约束代替了学习率的作用缺点实现复杂:需要求解约束优化,计算开销大更新慢:每次更新需要多次计算KL散度和Hessian矩阵近似被后续方法改进:PPO(Proximal Policy Optimization)在 TRPO 基础上简化,更易用且性能相当应用场景连续控制任务(如 MuJoCo 机器人仿真)高维动作空间的强化学习对训练稳定性要求高的场景总结TRPO 是一种稳定、可靠的策略优化方法,核心思想是:“每次只允许策略做一点点改变,但要往更好的方向走。”它为后续的 PPO 等算法奠定了基础,虽然现在使用较少,但在强化学习发展史上具有重要地位。
-
GoogLeNet(也称为 Inception v1)是 2014 年由 Google 的研究人员提出的一种深度卷积神经网络结构,在当年的 ImageNet 大规模视觉识别挑战赛(ILSVRC)中取得了优异成绩。它以高准确率和相对较低的计算量著称。核心思想GoogLeNet 的主要创新在于 Inception 模块,其目标是:提升网络的表征能力控制模型大小和计算成本在不显著增加参数的情况下增加网络深度和宽度Inception 模块结构Inception 模块的核心是 多尺度并行卷积 + 融合。它在同一层中使用多种尺寸的卷积核(如 1×1、3×3、5×5)和池化操作,然后将输出在通道维度上拼接起来。典型 Inception 模块包含:1×1 卷积:用于降维(减少通道数),降低计算量3×3 卷积5×5 卷积3×3 最大池化 + 1×1 卷积:保持尺寸一致1×1 卷积是 GoogLeNet 的关键技巧,它可以在不改变空间尺寸的情况下压缩通道数,显著减少计算量。网络整体结构GoogLeNet 由多个 Inception 模块堆叠而成,共约 22 层(因此也叫 Inception v1)。主要组成部分:初始层(Stem):前几层是普通卷积和池化,用于提取基础特征多个 Inception 模块:交替使用不同配置的 Inception 模块逐步提取更高级的语义特征全局平均池化:最后一层使用全局平均池化(Global Average Pooling)代替传统全连接层大幅减少参数数量输出层:一个小型全连接层 + Softmax,用于分类(ImageNet 有 1000 类)辅助分类器(Auxiliary Classifiers):在中间层插入两个辅助损失函数,用于反向传播时提供额外梯度,缓解梯度消失问题推理时通常忽略优点计算效率高:通过 1×1 卷积降维,减少参数和计算量准确率高:在 ImageNet 上表现优异参数少:约 500 万参数,远少于同期的 VGG(约 1.3 亿)避免过拟合:使用全局平均池化和 DropoutPython 代码示例(Keras 简化版结构)from tensorflow.keras.layers import Input, Conv2D, MaxPooling2D, AveragePooling2D from tensorflow.keras.layers import Concatenate, GlobalAveragePooling2D, Dense, Dropout from tensorflow.keras.models import Model def inception_module(x, filters_1x1, filters_3x3_reduce, filters_3x3, filters_5x5_reduce, filters_5x5, filters_pool_proj): # 1x1 branch branch1 = Conv2D(filters_1x1, (1, 1), activation='relu', padding='same')(x) # 3x3 branch branch2 = Conv2D(filters_3x3_reduce, (1, 1), activation='relu', padding='same')(x) branch2 = Conv2D(filters_3x3, (3, 3), activation='relu', padding='same')(branch2) # 5x5 branch branch3 = Conv2D(filters_5x5_reduce, (1, 1), activation='relu', padding='same')(x) branch3 = Conv2D(filters_5x5, (5, 5), activation='relu', padding='same')(branch3) # Pool branch branch4 = MaxPooling2D((3, 3), strides=(1, 1), padding='same')(x) branch4 = Conv2D(filters_pool_proj, (1, 1), activation='relu', padding='same')(branch4) # Concatenate all branches return Concatenate(axis=-1)([branch1, branch2, branch3, branch4]) # 构建简化版 GoogLeNet input_layer = Input(shape=(224, 224, 3)) # Initial layers x = Conv2D(64, (7, 7), strides=(2, 2), padding='same', activation='relu')(input_layer) x = MaxPooling2D((3, 3), strides=(2, 2), padding='same')(x) # Inception modules x = inception_module(x, 64, 96, 128, 16, 32, 32) x = inception_module(x, 128, 128, 192, 32, 96, 64) # Global Average Pooling + Classifier x = GlobalAveragePooling2D()(x) x = Dropout(0.4)(x) output = Dense(1000, activation='softmax')(x) model = Model(inputs=input_layer, outputs=output) model.summary() 注意事项实际的 GoogLeNet 包含两个辅助分类器,训练时使用加权损失使用了 LRN(局部响应归一化),但后续研究发现作用不大后续有 Inception v2、v3、v4 等改进版本总结GoogLeNet 的贡献在于:提出 Inception 模块,实现多尺度特征提取使用 1×1 卷积降维,提升效率全局平均池化减少全连接层参数在保证高精度的同时控制模型复杂度它是深度学习发展中的重要里程碑,为后续高效网络设计(如 ResNet、MobileNet)提供了思路。
-
LSTM 模型,即 Long Short-Term Memory(长短期记忆网络)。什么是 LSTM?LSTM 是一种特殊的 循环神经网络(RNN),专门设计用来解决传统 RNN 在处理长序列时出现的 梯度消失 和 梯度爆炸 问题。它能够学习长期依赖关系,适合处理时间序列、自然语言、语音等序列数据。核心思想LSTM 能够记住或遗忘信息,关键在于它引入了 “记忆细胞”(Cell State) 和三个 “门”结构:遗忘门(Forget Gate)决定哪些信息从记忆中丢弃。比如:读到“我昨天去了北京”之后,再读“今天天气很好”,模型会忘记“昨天”的细节。输入门(Input Gate)决定哪些新信息要加入记忆。比如:当前词是“下雨了”,就把“下雨”这个状态加入记忆。输出门(Output Gate)根据当前记忆,决定输出什么。比如:根据上下文判断下一个词是“带伞”。这些门通过 Sigmoid 和 乘法操作 控制信息流动,让模型可以有选择地保留或更新长期信息。举个例子:情感分析任务:判断一句话的情感是正面还是负面。句子:“这部电影一开始很无聊,但后面特别精彩。”传统 RNN 可能只记住最后的“精彩”,忽略前面的转折。LSTM 可以通过记忆细胞记住“一开始无聊”,再结合“但后面精彩”,最终正确判断为“整体正面”。它能捕捉“但”这种转折词带来的长期依赖。Python 代码示例(使用 Keras)import numpy as np from tensorflow.keras.models import Sequential from tensorflow.keras.layers import LSTM, Dense from tensorflow.keras.preprocessing.sequence import pad_sequences # 模拟数据:5 个句子,每个句子用数字表示词(如词 ID) data = [ [1, 2, 3], [1, 2], [4, 5, 6, 7], [2, 3], [8, 9, 10, 11, 12] ] labels = [0, 1, 1, 0, 1] # 情感标签:0=负面,1=正面 # 序列长度统一 data = pad_sequences(data, maxlen=10, padding='post') # 构建 LSTM 模型 model = Sequential([ # 嵌入层:将词 ID 映射为向量(实际使用中需要预训练词向量) # 这里简化,假设输入已经是向量,用 LSTM 直接处理 LSTM(32, input_shape=(10, 1)), # 32 个 LSTM 单元,输入序列长度 10,每步 1 维 Dense(1, activation='sigmoid') # 二分类输出 ]) # 编译模型 model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy']) # 训练模型 model.fit(data.reshape(5, 10, 1), labels, epochs=10, batch_size=2) # 预测 pred = model.predict(data.reshape(5, 10, 1)) print("预测结果:", pred.flatten()) 注意:真实场景中,输入通常是词嵌入(如 Word2Vec、GloVe 或 BERT),这里为了简化用数字 ID 模拟。应用场景自然语言处理(NLP):情感分析、机器翻译、文本生成语音识别:将音频序列转为文字时间序列预测:股票价格、天气、销量预测手写识别:识别手写字符序列优缺点优点:能处理变长序列可捕捉长期依赖关系适用于多种序列任务缺点:训练速度慢,计算开销大参数多,容易过拟合现在很多任务已被 Transformer(如 BERT、GPT)取代总结LSTM 是一种强大的序列建模工具,通过“门控机制”实现了对长期信息的有效记忆和控制。虽然近年来被更先进的模型(如 Transformer)部分取代,但在中小规模序列任务中仍广泛使用。
-
多任务学习(Multi-Task Learning, MTL)是一种机器学习方法,其核心思想是:让一个模型同时学习多个相关任务,通过共享表示来提升各个任务的性能。与单任务学习(每个任务单独训练一个模型)不同,多任务学习通过共享部分模型参数,让任务之间“互相帮助”,尤其在数据量少或任务相似时效果明显。基本原理假设你有两个任务:任务1:识别图片中的猫任务2:识别图片中的狗这两个任务都涉及图像特征提取(边缘、纹理、形状等)。多任务学习会让模型前几层共享,用于提取通用特征;后几层分叉,分别处理猫和狗的分类。这样,模型可以从两个任务的数据中学习更鲁棒的特征,即使某个任务数据少,也能从另一个任务中“借”知识。模型结构示例(硬共享架构)输入数据 ↓ 共享层(如CNN前3层) ← 所有任务共用,学习通用特征 ↓ 任务1专用层 → 任务1输出(如猫分类) ↓ 任务2专用层 → 任务2输出(如狗分类)共享层:提取通用特征专用层:针对每个任务进行精细调整举个例子:自然语言处理中的多任务学习你想训练两个模型:任务A:判断一句话的情感(正面/负面)任务B:判断这句话是否包含某个关键词这两个任务都依赖对句子语义的理解。可以设计一个多任务模型:输入:一句话共享层:BERT 或 LSTM 提取句子表示分支1:接一个分类层做情感分析分支2:接另一个分类层做关键词检测训练时,总损失 = 情感损失 + 关键词损失,联合优化。结果:两个任务的准确率都比单独训练更高,尤其当某个任务标注数据少时。Python代码示例(PyTorch 风格伪代码)import torch import torch.nn as nn class MultiTaskModel(nn.Module): def __init__(self): super(MultiTaskModel, self).__init__() # 共享层 self.shared = nn.Sequential( nn.Linear(100, 64), nn.ReLU(), nn.Linear(64, 32), nn.ReLU() ) # 任务1专用:分类任务A self.task1_head = nn.Linear(32, 2) # 2分类 # 任务2专用:分类任务B self.task2_head = nn.Linear(32, 2) def forward(self, x): shared_out = self.shared(x) # 共享表示 out1 = self.task1_head(shared_out) out2 = self.task2_head(shared_out) return out1, out2 # 使用示例 model = MultiTaskModel() criterion1 = nn.CrossEntropyLoss() criterion2 = nn.CrossEntropyLoss() optimizer = torch.optim.Adam(model.parameters(), lr=0.001) # 假设有输入和标签 x = torch.randn(32, 100) # 32个样本,100维特征 y1 = torch.randint(0, 2, (32,)) # 任务1标签 y2 = torch.randint(0, 2, (32,)) # 任务2标签 # 前向传播 out1, out2 = model(x) loss1 = criterion1(out1, y1) loss2 = criterion2(out2, y2) total_loss = loss1 + loss2 # 或加权和 # 反向传播 optimizer.zero_grad() total_loss.backward() optimizer.step() 多任务学习的优点提升泛化能力:任务间共享信息,防止过拟合数据效率高:小样本任务可借助大样本任务的知识减少模型维护成本:一个模型处理多个任务应用场景NLP:联合学习命名实体识别 + 句法分析计算机视觉:目标检测 + 语义分割推荐系统:点击率预测 + 停留时长预测医疗AI:同时预测多种疾病指标总结多任务学习就像“一专多能”的人:通过共享基础能力(如语言理解、图像感知),同时掌握多个技能(分类、检测、预测),不仅效率高,而且每个技能都更扎实。关键在于:任务要相关,结构要合理,损失要平衡。
-
EM算法(Expectation-Maximization Algorithm)是一种迭代优化算法,主要用于含有隐变量(latent variables)的概率模型参数估计。当数据不完整或存在无法直接观测的变量时,EM算法能通过交替执行两个步骤来逐步逼近最优参数。核心思想假设我们有一组数据,但其中某些信息缺失或不可观测(比如数据属于哪个类别未知),直接用最大似然估计(MLE)求解困难。EM算法通过“猜测”隐变量的分布,反复优化模型参数。它分为两个步骤:E步(Expectation,期望步):固定当前模型参数,计算隐变量的后验概率(即每个数据点可能属于哪个隐状态的“责任”或“权重”)。M步(Maximization,最大化步):利用E步中得到的隐变量分布,重新估计模型参数,使数据的对数似然最大化。重复E步和M步,直到参数收敛。举个例子:混合高斯模型(GMM)假设你有一堆身高数据,来自男性和女性两个群体,但你不知道每条数据是男是女。你想估计:男性身高的均值和方差女性身高的均值和方差男女比例这就是一个典型的隐变量问题:性别是隐变量。EM算法过程如下:初始化:随机假设男性的均值=170,方差=20;女性均值=160,方差=15;男女比例=1:1。E步:对每个身高值(如175cm),计算它来自男性的概率和来自女性的概率。比如P(男|175) = 0.8,P(女|175) = 0.2。M步:根据这些“软分配”的概率,重新估计参数:男性均值 = 所有数据点 × 其属于男性的概率 的加权平均更新方差和比例同理重复:用新参数回到E步,继续迭代,直到参数变化很小。Python代码示例(使用sklearn的GMM)import numpy as np import matplotlib.pyplot as plt from sklearn.mixture import GaussianMixture from sklearn.datasets import make_blobs # 生成模拟数据(3个簇) X, _ = make_blobs(n_samples=300, centers=3, cluster_std=1.0, random_state=42) # 使用高斯混合模型(GMM),EM算法求解 gmm = GaussianMixture(n_components=3, covariance_type='full', random_state=42) labels = gmm.fit_predict(X) # 内部自动使用EM算法 # 输出参数 print("权重:", gmm.weights_) # 每个高斯成分的占比 print("均值:\n", gmm.means_) # 每个簇的中心 print("协方差:\n", gmm.covariances_) # 可视化 plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='viridis', s=40) plt.title("GMM聚类结果(EM算法)") plt.show() 适用场景混合高斯模型(GMM)隐马尔可夫模型(HMM)的训练缺失数据的参数估计主题模型(如pLSA)优缺点优点:能处理隐变量问题每次迭代都保证似然函数不下降实现简单,收敛稳定缺点:容易陷入局部最优(依赖初始值)需要指定模型结构(如GMM中K的值)计算量较大,尤其数据多时总结EM算法不是一种具体的模型,而是一种求解方法,特别适合“有隐藏信息”的概率模型。它的核心是“先猜后优化”,通过不断迭代,让模型参数和隐变量的估计越来越准。
-
K均值(K-Means)是一种常用的聚类算法,它的目标是将数据划分为K个簇,使得每个数据点属于离它最近的簇中心所在的簇。算法通过迭代优化簇中心和数据点的归属,最终使簇内数据的平方误差和最小。核心步骤:指定聚类数量K。随机初始化K个簇中心。将每个数据点分配给距离最近的簇中心(通常使用欧氏距离)。重新计算每个簇的中心(该簇所有点的均值)。重复步骤3和4,直到簇中心不再发生明显变化或达到最大迭代次数。举例:假设有一组二维数据点,想分成3类(K=3)。开始时随机选3个点作为初始中心。然后每个点根据距离归入最近的中心所属的簇。接着更新每个簇的中心为该簇所有点的平均位置。重复这个过程,直到中心几乎不再移动。Python代码示例:import numpy as np import matplotlib.pyplot as plt from sklearn.datasets import load_iris from sklearn.cluster import KMeans # 加载数据 iris = load_iris() X = iris.data # 使用全部4个特征 # 设置K=3,进行K均值聚类 kmeans = KMeans(n_clusters=3, random_state=42, n_init=10) labels = kmeans.fit_predict(X) # 输出聚类结果 print("聚类标签:", labels) print("簇中心:\n", kmeans.cluster_centers_) # 可视化(使用前两个主成分降维) from sklearn.decomposition import PCA pca = PCA(n_components=2) X_pca = pca.fit_transform(X) plt.scatter(X_pca[:, 0], X_pca[:, 1], c=labels, cmap='viridis') plt.scatter(kmeans.cluster_centers_[:, :2] @ pca.components_[:2], c='red', marker='x', s=200, label='中心') plt.legend() plt.title("K-Means聚类结果") plt.show() 注意:K值需要事先指定,选择合适的K是一个关键问题,常用方法有肘部法或轮廓系数法。初始中心的选择会影响结果,因此一般会多次随机初始化取最优。K均值对异常值敏感,且假设簇是凸形和大小相近的,对非球形或大小差异大的簇效果可能不好。
-
AP算法(Affinity Propagation)AP算法(Affinity Propagation,亲和传播)是一种无需预设聚类数量的智能聚类方法。它通过“消息传递”让数据点“投票”选出最能代表自己的“代表点”(即聚类中心),非常适合你不知道该分几类时使用!核心思想:让数据自己“选班长”想象一个班级:每个学生(数据点)都可以成为“班长”(聚类中心)每个人投票选出自己最想跟随的班长经过几轮讨论(消息传递),最终形成几个“核心班长”和他们带领的小组这就是 AP 算法的精髓:无需指定簇数,自动发现聚类结构!举个生活例子:餐厅选址你想在城市中开几家连锁餐厅,但不知道选哪几个位置最合适。每个候选地点是一个数据点AP 算法会自动分析哪些地点“最具代表性”(比如周围有很多相似需求的人群)最终选出几个“核心店址”,每个店服务一片区域无需事先决定开 3 家还是 5 家,算法自己决定!Python 实战:用 AP 算法聚类 Iris 数据集# 导入必备工具 import numpy as np import matplotlib.pyplot as plt from sklearn.datasets import load_iris from sklearn.cluster import AffinityPropagation from sklearn.decomposition import PCA import seaborn as sns # 加载经典鸢尾花数据集(150朵花,4个特征) iris = load_iris() X = iris.data # 花萼长度、宽度,花瓣长度、宽度 y_true = iris.target # 真实种类(用于对比) # 使用 AP 算法自动聚类 af = AffinityPropagation(random_state=42) y_pred = af.fit_predict(X) # 输出结果 n_clusters = len(af.cluster_centers_indices_) print(f"AP算法自动识别出 {n_clusters} 个聚类") print(f"聚类中心索引:{af.cluster_centers_indices_}") # 可视化:用PCA降维到2D并绘图 pca = PCA(n_components=2) X_pca = pca.fit_transform(X) plt.figure(figsize=(10, 6)) scatter = sns.scatterplot( x=X_pca[:, 0], y=X_pca[:, 1], hue=y_pred, palette="Set2", s=100, alpha=0.9, edgecolor='k' ) # 标出聚类中心 centers_pca = pca.transform(af.cluster_centers_) plt.scatter(centers_pca[:, 0], centers_pca[:, 1], s=200, c='red', marker='X', label='聚类中心', edgecolor='black', linewidth=2) plt.title("AP算法聚类结果(Iris数据集)", fontsize=16, pad=20) plt.xlabel("第一主成分") plt.ylabel("第二主成分") plt.legend() plt.grid(True, alpha=0.3) plt.tight_layout() plt.show() 输出示例AP算法自动识别出 3 个聚类 聚类中心索引:[132 52 18] 完美匹配 Iris 的 3 种真实类别!算法自己“想”出应该分 3 类,无需你指定!关键参数说明参数作用建议preference每个点成为中心的“意愿”值越小,聚类越多;可设为相似度矩阵对角线值damping阻尼系数(防止震荡)推荐 0.5~0.9,避免不收敛# 更稳定的设置 af = AffinityPropagation(damping=0.7, preference=-50, random_state=42) 优点总结优势说明无需指定簇数自动发现结构,适合探索性分析智能选择中心中心是真实存在的数据点适合复杂结构能发现非球形、不均匀的簇注意事项计算复杂度较高(O(N2)O(N^2)O(N2)),大数据慎用对 preference 参数敏感,需调参适合中小规模数据(几千以内)应用场景推荐医学分型:未知疾病亚型数量客户细分:不知道客户该分几类社交网络:自动发现社区结构总结AP算法 = 数据点民主选举 + 自动确定簇数它像一场“聚类选举”,让数据自己选出领导者,特别适合你对数据结构一无所知的场景!
-
从LLMs大模型到Agent智能体,是人工智能时代下技术迅猛演进的里程碑之一。当进入2025年,大模型基础能力突破临界点,包括交互与理解能力、创造生成能力、长任务推理能力、工具使用能力等,驱动“AI Agent”成为确定性未来。Agent智能体凭借感知-认知-决策-行动的基本结构、以及在动态的现实环境中具备的自主执行与闭环能力,赋予更多人创建可持续的 AI 原生应用程序的能力,同时也为产业智能化升级注入强大动力。当Agent应用开发逐渐全民化,在各行业的土壤落地发芽,但是当面向更多复杂的行业场景、大型企业的定制化精确化需求,能实现向核心业务延伸并更注重实效的企业级AI Agent的重要性越发凸显。 Part01AI原生应用引擎由1.0全面升级至2.0——ModelArts Versatile,打造面向企业的通用AI智能体 华为云ModelArts Versatile-AI原生应用引擎应运而生,凭借企业级Agent的四个关键价值特征:专业(懂企业流程、懂企业数据)、高产(生成高效、作业高效)、主动(自主制造、智能交互)、安全(隐私保护、合规安全),从技术探索走向场景深耕,基于华为内部丰富的AI实践经验,打造企业专属AI数字生产线。Versatile在AI原生应用“工程平台”的基础上,增加通用AI智能体、场景AI能力、行业经验模板等能力,构筑“构建智能体时代的AgentOS”的全面平台能力。通用Agentic能力,支持开箱即用;垂域Agentic能力,支持扩展开发;构建以华为云为底座的繁茂AI生态;Versatile,从应用视角使能企业选好/用好/管好大模型,支撑智能应用创新。开发态AgentStudio:定位为AI应用工程,Agent的开发工具,一站式构建AI智能体,统一AI数据底座,动态上下文记忆使用态AgentSpace:为用户提供统一Agent入口,Agent统一交互入口,人与AI协同的智能入口,统一的Agent指挥中心运营态AgentGallery:以知识工程助力AI原生应用创新,提供Agent Map/MCPTools MapAgentOps:AI智能体的“运维中枢”, 承载Agent从“构成”到“养成”使命,全链路监控、评估和优化实现智能体的可观测、可管控、可迭代。 Part02ModelArts Versatile-AI原生应用引擎,打造最佳企业级Agent平台 01 元学习&规划智能体——Agent定义模板化,像写文档一样开发智能体,让人人都能构建自己的企业级智能体Versatile聚焦企业级智能体,走深向实,垂直行业,深度适配。基于企业知识底座,整合交互系统、推理系统、执行系统、记忆系统,借助“元学习(意为“学会如何学习”)的能力, 提取企业业务场景经验,如行政办公文档、业务运行文档,形成“文档化”开发Agent的新型极简方式,降低开发门槛,赋能更多企业领域开发者内化成基础技能。并通过Managing Agents的框架能力,完成更为精准的议题理解、记忆上下文、会话管理,最终实现企业经验提取,持续积累企业场景经验模板,动态经验知识库迭代的良性循环式运营,指导Agent输出专业级结果。关键技术剖析基于DeepSeek R1或其他Reasoning SOTA模型,提供通用Reasoning能力;通过预置“经验模板”提升垂域场景任务智能上限及任务效果;支持基于“生产任务”积累“轨迹数据”,叠加RL得到更优推理模型,以及持续积累优秀的任务“经验模板”,支持“经验模板Redo”及经验知识库迭代; 02 支持多智能体协同,实现企业10X+效率专家员工在Versatile平台核心引擎内置Managing Agents框架能力,内嵌多个专家级的智能体,包括Search Agents、Data Agents、Coding Agents、Operator Agents等一系列的Agent,便于开发者快速调用和编排。如围绕企业内“招聘”相关的业务流程,借助Versatile构建的招聘Agent,可基于目标的自主规划及多种工具调用,只需耗费5分钟便可覆盖招聘需求分析、候选人搜索、候选人筛选等繁琐的作业流程,并提供专家级高准确性的工作输出成果,真正做到“智能体分钟级工作输出,达成传统天级工作成果”的理想状态。关键技术剖析Versatile基于MoA架构和MCP协议,实现生态扩展及Multi Agent架构MoA是一种先进的多代理系统,专门为检索增强生成 (RAG)任务而设计。与以前的模型不同,MoA架构利用一组小型、专业的模型,以高度协调的方式协同工作,以更高的精度和更低的成本回答复杂的问题。MCP是一种标准化开放协议,为LLM提供标准化的上下文信息传递方式,简化AI模型与外部工具/数据的集成。MCP作为Agent背后的关键技术,被誉为“AI智能体领域的Type-C”。Versatile拥抱开源Agent协议,支持广泛的MCP生态及工具集成,平台集成了丰富的MCP Server模版资产,可快速复用模版资产快速部署MCP服务,并基于部署的MCP服务能够快速构建出千行百业的AI智能体。 03 支持多种智能交互,件件有着落,事事有回音,成为更加主动和自主的智能体为解决企业语境下,下达任务过程不可控、Agent难以实现精准自主闭环的困境,Versatile提供三方面能力,包括主动问询澄清、动态上下文生成、上帝视角督导。其中,主动问询澄清是当任务下发不够清晰时,智能体进行主动问询,事情交代越清楚,结果输出越准确。动态上下文生成对于执行效果起到非常关键的作用,上下文分成用户上下文、任务上下文和领域知识上下文三方面,通过这三个方面可360度理解用户所提交问题的背景、潜在诉求,让智能体比用户更懂用户自己。同时通过对任务分解,支持用户选择修改,让整个交互过程变得既简单又灵活。 04 AgentOps承载Agent从“构成”到“养成”使命,构建安全治理体系,实现三个“不”企业落地智能体,安全是底线,也是红线。所有没有安全保证的智能体几乎是无法生根落地的。Versatile借助华为公司的安全治理体系,包括安全策略、合规管理、反馈审计等一系列的底座的能力,构建数据清洗、Prompt攻击检测、不良内容检测三个主要能力,保障知识安全、交互安全、应用内容安全,实现学不到(使用敏感词、专家规则、检测模型清除原始预料中的有毒语料)、攻不破(攻击模式分析、恶意意图识别、感知增强能力,防御针对大模型的攻击行为)、生不成(安全围栏和风控检测能力,确保输出内容没有不良内容)关键技术剖析AgentOps关键支柱能力:调用链和重放分析:记录Agent行为、决策过程和交互结果,逐步解构整个任务流程,快速定位错误或问题;成本管理:监控和控制每个AI Agent与LLM和API的交互的费用,避免成本迅速膨胀;评估测试:根据标准化或自定义基准测试评估Agent性能,支持HITL和LLM-as-a-Judge;合规性和安全性:检测潜在的数据泄露、Prompt注入和未授权的API使用; Part03信通院重量级评估:Versatile获得智能体评估的最高等级证书,实力赋能更多企业开发者本年度6月,由中国信通院人工智能研究院向华为颁发智能体评估证书-工具和平台(5级),华为成为业界首家获得最高等级证书的单位,ModelArts Versatile平台的专业度达到行业领先水平,加速实现“让人人都能构建自己的企业级智能体”的产品愿景。图:中国信通院人工智能研究院主任曹峰向华为云aPaaS产品部副部长杨建颁发智能体评估证书 Part04客户合作与行业实践ModelArts Versatile-AI原生应用引擎面向各类企业场景,加速AI原生应用落地。现已与政务、医疗、制造、电力、差旅、零售等行业客户合作,构建深耕行业的专业Agent助手,通过搭建企业级数字化AI产线,凭借“更专业、更高产、更主动”的产品优势,帮助实现业务效率的飞速提升。如:慧通差旅 X Versatile-AI原生应用引擎打造企业级差旅Agent,实现AI数字生产力跃升,加速差旅智能化:意图识别准确率提升5%:慧通差旅基于数据创新和模型创新联合Versatile智能交互,提升准确率。智能体开发效率提升3倍:通过文档化快速编排智能体,进行任务间有机协同。数据&算法迭代效率提升为天级:通过数据飞轮天级迭代,反哺模型,让慧通差旅构建的专属Agent越来越聪明。 <Versatile-AI原生应用引擎 体验入口> 华为开发者空间--开发平台--AI Agent( ↑ ↑ 请在PC端点击进入↑ ↑)
-
一、什么是协同过滤(Collaborative Filtering)?协同过滤是一种基于用户行为数据(如评分、点击、购买等)来预测用户对未接触物品的偏好的推荐技术。其核心思想是:“物以类聚,人以群分” —— 和你兴趣相似的用户喜欢的物品,你也可能喜欢。二、协同过滤的主要类型1. 基于用户的协同过滤(User-Based Collaborative Filtering)思想:找到与目标用户兴趣相似的其他用户,将这些相似用户喜欢但目标用户未接触的物品推荐给目标用户。步骤:计算用户之间的相似度(常用余弦相似度、皮尔逊相关系数)。找出与目标用户最相似的 Top-K 用户。根据这些相似用户的评分加权预测目标用户对某物品的评分。公式示例(预测评分):在基于用户的协同过滤中,目标用户 u 对物品 i 的评分预测通常采用加权平均偏差的形式,公式如下:2. 基于物品的协同过滤(Item-Based Collaborative Filtering)思想:计算物品之间的相似度,推荐与用户过去喜欢的物品相似的新物品。适用场景:物品数量相对稳定,用户数量多变(如电商平台)。优点:物品相似度可预先计算,推荐响应更快。相似度计算:常使用余弦相似度或调整余弦相似度(考虑用户评分偏差)。三、协同过滤的优缺点优点缺点不需要物品或用户的先验信息(如内容、标签)冷启动问题(新用户/新物品无法推荐)能发现用户潜在兴趣(基于群体行为)数据稀疏性问题(用户-物品评分矩阵稀疏)算法直观,易于实现可扩展性差(用户/物品增多时计算量大)推荐结果个性化强容易陷入“信息茧房”四、改进方法为克服传统协同过滤的缺点,研究者提出了多种改进:矩阵分解(Matrix Factorization):将用户-物品评分矩阵分解为低维隐向量(Latent Factors)。代表算法:SVD、SVD++、ALS(交替最小二乘)。可结合正则化防止过拟合。基于深度学习的协同过滤:使用神经网络学习用户和物品的非线性关系。如:NeuMF(Neural Matrix Factorization)。混合推荐系统:结合协同过滤与基于内容的推荐(Content-Based),缓解冷启动。五、应用场景电商平台(如淘宝、京东):推荐“买了这个商品的人也买了…”视频平台(如Netflix、YouTube):根据观看历史推荐视频音乐平台(如Spotify):推荐相似风格歌曲社交媒体(如微博、小红书):推荐可能感兴趣的人或内容六、Python 示例(使用 Surprise 库)from surprise import Dataset, Reader, KNNBasic from surprise.model_selection import train_test_split # 加载数据 reader = Reader(rating_scale=(1, 5)) data = Dataset.load_from_dict({'uid': [1, 1, 2, 2, 3], 'iid': [1, 2, 1, 3, 3], 'rating': [5, 4, 3, 5, 4]}, reader=reader) trainset, testset = train_test_split(data, test_size=0.25) # 使用基于用户的协同过滤 algo = KNNBasic(sim_options={'user_based': True}) algo.fit(trainset) predictions = algo.test(testset) # 输出预测结果 for prediction in predictions: print(f"User {prediction.uid}, Item {prediction.iid}, " f"True Rating: {prediction.r_ui}, Predicted: {prediction.est}") 七、总结协同过滤是推荐系统的基石之一,尽管存在冷启动和稀疏性问题,但通过矩阵分解、深度学习等方法可以有效提升性能。在实际应用中,通常会将协同过滤与其他推荐技术结合,构建更强大的混合推荐系统。
上滑加载中
推荐直播
-
华为云码道-玩转OpenClaw,在线养虾2026/03/11 周三 19:00-21:00
刘昱,华为云高级工程师/谈心,华为云技术专家/李海仑,上海圭卓智能科技有限公司CEO
OpenClaw 火爆开发者圈,华为云码道最新推出 Skill ——开发者只需输入一句口令,即可部署一个功能完整的「小龙虾」智能体。直播带你玩转华为云码道,玩转OpenClaw
回顾中 -
华为云码道-AI时代应用开发利器2026/03/18 周三 19:00-20:00
童得力,华为云开发者生态运营总监/姚圣伟,华为云HCDE开发者专家
本次直播由华为专家带你实战应用开发,看华为云码道(CodeArts)代码智能体如何在AI时代让你的创意应用快速落地。更有华为云HCDE开发者专家带你用码道玩转JiuwenClaw,让小艺成为你的AI助理。
回顾中 -
Skill 构建 × 智能创作:基于华为云码道的 AI 内容生产提效方案2026/03/25 周三 19:00-20:00
余伟,华为云软件研发工程师/万邵业(万少),华为云HCDE开发者专家
本次直播带来两大实战:华为云码道 Skill-Creator 手把手搭建专属知识库 Skill;如何用码道提效 OpenClaw 小说文本,打造从大纲到成稿的 AI 原创小说全链路。技术干货 + OPC创作思路,一次讲透!
回顾中
热门标签