概述: EWC 通过在损失函数中添加一个正则化项,防止重要参数偏离先前任务的最优值。这个正则化项基于费舍尔信息矩阵,衡量每个参数对先前任务的重要性。
公式:
其中 是费舍尔信息矩阵, 是旧任务的最优参数。
代码示例:
pythonimport torch
def ewc_loss(new_loss, model, fisher_matrix, old_params, lambda_ewc):
ewc_penalty = 0
for param, fisher, old_param in zip(model.parameters(), fisher_matrix, old_params):
ewc_penalty += torch.sum(fisher * (param - old_param).pow(2))
return new_loss + (lambda_ewc / 2) * ewc_penalty
Query改写的核心价值
解决原始Query的三大痛点
问题类型 | 典型案例 | 改写效果 |
---|---|---|
信息残缺 | "这个功能怎么用?" → "CRM系统中客户画像功能的操作指南" | 补全关键实体 |
语义模糊 | "帮我查下数据" → "查询2024年6月华东区销售额(万元)" | 明确维度指标 |
表达歧义 | "苹果最新消息" → "Apple公司2024年Q3财报发布时间" | 消除指代歧义 |
在我们项目中,选择 RAG 而不是直接微调 LLM,主要基于以下几个核心考量:
Information :表示该损失函数与信息论有关,用于最大化两个相关样本之间的互信息(mutual information)。
Noise-Contrastive Estimation (NCE) :最初由 Gutmann 和 Hyvärinen 提出的一种方法,用于通过区分真实数据和噪声样本来估计概率分布。InfoNCE 是 NCE 的一个变体,专门用于对比学习。
m-RoPE是传统RoPE(旋转位置编码)在多模态场景下的扩展。传统RoPE处理的是一维序列,而m-RoPE专门设计用来处理包含图像和视频等视觉内容的多模态输入。
如代码中注释所述:
多模态3D旋转位置编码是1D旋转位置编码的扩展。输入嵌入序列包含视觉(图像/视频)嵌入和文本嵌入,或者仅包含文本嵌入。对于视觉嵌入部分,我们分别在时间、高度和宽度维度上应用旋转位置编码。这里我们将通道维度分为3个块,用于时间、高度和宽度旋转位置编码。对于文本嵌入部分,我们只应用1D旋转位置编码。