数智时代,数据已成为推动科技进步和产业发展的关键要素。2024年10月,国家数据局局长刘烈宏在《人民日报》上刊文指出,充分发挥数据的基础资源作用和创新引擎作用,有利于带动各类生产要素创新性配置,促进各类先进生产要素向发展新质生产力集聚,提升全要素生产率,为发展新质生产力开辟新空间。要加快构建自立自强的数字技术创新体系,依托数据驱动科技创新,持续增强科技实力和创新能力,深化科技与产业融合,推动产业创新。2025年“数据要素×”大赛科技创新赛道紧扣“科学数据赋能科技及产业发展”核心目标,设置一系列极具前瞻性与现实意义的赛题,为行业发展指引新方向。 一、鼓励科学数据汇聚共享:筑牢协同服务网络基石 科学数据是国家科技创新发展和经济社会发展的重要基础性战略资源,科学数据的汇聚共享是实现科学数据价值最大化的基础。本赛题聚焦科学数据开放共享机制,重点关注海量多源科学数据治理、数据安全与隐私保护等场景。当前,重大科技基础设施与项目产生的各类科学数据,亟须有效汇聚与高效治理,才能串联起价值链条。大赛通过打造可信科学数据空间,实现跨领域流通的科学数据协同服务网络,将推动打破数据孤岛,让数据在不同领域间自由流动。发展综合型、智能化、交互式等新型科学数据发现服务模式,将帮助科研人员高效定位数据,推动科学数据有序开放共享和融合利用。 二、推动科技领域人工智能大模型开发:夯实智能创新根基 科学数据的质量和准确性是人工智能大模型开发的关键所在。本赛题聚焦科学数据标注分类、领域大模型预训练、微调与推理应用等,深度挖掘科学数据和文献价值。通过细粒度知识抽取和多源知识融合,构建科学知识资源底座,建设高质量语料库和基础科学数据集,为大模型提供充足“养分”。本赛题将有力支持科技领域大模型的开发训练,提升其理解和解决复杂的科学问题的能力,为科研和技术创新注入强大智能动力。 三、科学数据助力科学研究和技术创新:成为产业升级引擎 跨领域科学数据与人工智能等技术的深度融合,蕴藏巨大创新潜力。本赛题聚焦科学数据成果赋能技术创新和产业发展等场景,推动其全方位、深层次融合应用与挖掘。大赛通过搭建创新交流平台,为科研人员提供高质量的数据资源与知识服务,结合大模型等新技术,助力科研人员突破传统局限,大胆探索未知领域。特别是在生物育种、新材料等重点领域,以数智融合为引擎,驱动科学创新涌现与转化,推动产业升级迈向新高度。 四、科学数据加速科研新范式变革:催生科研新质生产力 AI for Science在各学科领域的研究与落地,标志着科研范式正迎来深刻变革。本赛题依托各类数据库与知识库,借助人工智能、大数据等技术,推进跨学科、跨领域协同创新。数据驱动的科研模式能够发现新规律、创造新知识、发明新方法,推动科学研究方法不断进步。这种变革不仅加速了科学研究范式的转变,更为新质生产力发展注入强大动力。同时,新质生产力的发展为科技创新提供更广阔的应用场景和发展空间。二者相辅相成,协同共进。大赛积极助推科研范式变革,将进一步提升我国在全球科技竞争中的优势地位,推动科技与产业朝着更高水平更具创新性的方向稳步迈进。 科技创新赛道赛题体系完整有机,紧扣科学数据赋能科技及产业发展目标,从汇聚共享、大模型开发到科研创新驱动范式变革,助力培育和发展新质生产力。本次大赛为产学研用搭建展示创新能力的舞台,有望催生一系列具有重大价值的科研成果和产业应用,为国家科技自立自强和高质量发展贡献力量。 作者:周园春 中国科学院计算机网络信息中心副主任 来源(公众号):北京数据
2025-10-16 18:21 37
来源(公众号):大数据AI智能圈 如果每次学习新技能都要重新组装大脑,人类还能成为万物之灵吗?可这就是当前AI训练的常态——每遇到新任务就得或多或少的"回炉重造"——微调(Fine-Tuning)。 斯坦福大学最新提出的主动式上下文工程 Agentic Context Engineering(ACE)技术,正在挑战这一看似理所当然的做法,它让AI第一次拥有了类似人类的"经验积累"能力。 论文标题:Agentic Context Engineering: Evolving Contexts for Self-Improving Language Models 技术突破的边界与现实考量 传统微调就像装修房子时把承重墙都砸了重建,既费时费力又风险巨大。 ACE的思路则截然不同:与其动房子的结构,不如添置一套智能家居系统。 这套"智能系统"由三个核心组件构成——生成器(Generator)负责探索各种解决方案,反思器(Reflector)像资深导师一样总结经验教训,整编器(Curator)则将这些智慧结晶整理成可随时查阅的"经验手册"。 这种设计巧妙地避开了当前AI训练的最大痛点。 传统方法要么追求"言简意赅"导致关键信息丢失,要么陷入"信息过载"让模型无所适从。 ACE通过增量式更新机制找到了平衡点:每次遇到新问题,系统只在现有知识库上做局部调整,就像人类大脑形成新的神经连接,而不是把整个神经系统推倒重来。 更精妙的是"grow-and-refine"机制,它让知识库具备了类似生物体的自我调节能力。 系统会定期清理重复信息,保留最有价值的经验,确保知识库既不断丰富又保持精干。 这种设计着实体现了对智能本质的深刻理解——真正的智慧不在于拥有多少知识,而在于如何有效组织和运用这些知识。 在AppWorld基准测试中,ACE的表现堪称惊艳:无需任何标注数据,仅凭执行反馈就能让开源小模型性能提升17.1%,直接逼近顶级商用系统的水准。 这个数字背后隐藏着巨大的商业价值——它意味着企业可以用更小的模型、更低的成本获得接近顶级AI的能力。 金融分析领域的测试同样令人振奋。面对复杂的财报分析和数值推理任务,ACE通过构建专业化的"知识图谱",平均性能提升8.6%。这种提升不是简单的参数优化,而是真正意义上的"专业素养"积累! 尽管ACE展现出巨大潜力,但断言"微调已死"显然过于激进。 就像电动汽车不会立即淘汰燃油车一样,ACE和传统微调各有其适用场景。对于需要深度领域适配、数据量充足且对模型性能要求极高的场景,传统微调仍有其不可替代的价值。 ACE的真正突破在于开创了AI训练的新范式——它让"持续学习"从概念变成了现实。 传统微调好比一次性投资,投入大、周期长、风险高;ACE则像是建立了一个"经验银行",可以持续存入新的智慧,随时提取使用。这种范式转变对于需要快速响应市场变化的企业而言,其价值远超技术本身。 从更宏观的角度看,ACE技术降低了AI应用的门槛。 当小模型通过精巧的架构设计就能获得接近大模型的能力时,AI技术将不再是科技巨头的专利,更多中小企业也能享受到人工智能的红利。 这种"民主化"趋势可能比技术突破本身更具深远意义。 结语 ACE技术的出现,标志着AI发展正在从"蛮力计算"向"精巧智能"转变趋势。 它告诉我们,真正的人工智能不一定要通过堆砌算力和数据来实现,关键在于如何让机器具备持续学习和经验积累的能力。这种转变不仅具有技术意义,更承载着深刻的商业价值和伦理考量。 未来,ACE能否杀死微调并不重要,重要的是它一可能会促使更多领域开花结果。 从智能客服到医疗诊断,从自动驾驶到创意设计,任何需要持续积累经验、不断优化决策的场景都可能受益于这种"经验手册"式的学习机制。当AI系统能够像人类专家一样在实践中不断打磨专业技能时,我们离真正的通用人工智能AGI或许就不远了。
2025-10-14 17:37 45
在现代数据科学和机器学习的领域中,数据是开发预测模型和进行精确分析的基础资源。然而,真实的数据集并非总是可访问、完整或可用的。数据稀缺、固有偏见或隐私限制等问题常常导致获取高质量数据变得困难。这时,“合成数据”的概念应运而生:为了模拟真实数据的特征,同时保护隐私和灵活性而生成的人工数据。 本指南旨在概述生成可靠且实用的合成数据的技术。其中包括探索概率方法、传统机器学习(ML)技术以及大型语言模型(LLM)等高级模型的使用。本指南将提供具体的使用示例,以创建用于训练预测模型和其他分析的实用数据集,确保它们符合现实世界数据的典型约束和特征。 一 什么是合成数据 合成数据是人工生成的信息,模仿真实数据的特征。与直接从观察、实验或传感器收集的数据不同,合成数据是通过算法、数学模型或高级机器学习技术生成的。其主要目的是重现真实数据集中存在的统计结构和关系,即使它们是完全虚构的。 在许多应用领域,收集的数据可能不足以构建稳健的模型。这个问题在观测数据有限的专业领域或工业物联网 (IoT) 应用等新兴领域尤为明显。生成合成数据可以扩展这些数据集,同时保留其基本的统计和结构属性。 这些数据并非简单的匿名或修改过的现有数据副本,而是可以代表原始数据集中未必出现的假设情景或变量的新组合。例如,生成合成图像来训练视觉识别模型,或生成表格数据来模拟经济趋势。 1.合成数据的发展历程 创建合成数据的实践可以追溯到 20 世纪七八十年代,当时计算机模拟开始在科学和工程领域获得广泛关注。当时,蒙特卡罗采样等技术已经被用来基于数学分布生成数据。 21 世纪初,随着隐私保护意识的增强以及真实数据共享法律限制的不断增加,医疗、金融和公共服务等领域涌现出大量合成数据。近年来,机器学习的出现深刻地改变了这一格局。大型语言模型 (LLM) 等先进方法能够创建高度逼真、关系复杂细致的数据。 2.使用合成数据的优点和缺点 以下列出了一些可能让您考虑使用合成数据生成方法的原因。 (1)完全控制:由于数据是人工生成的,因此可以精确地建模其特征,例如分布、相关性和异常值。 (2)可扩展性:一旦设计了合成数据生成器,就可以创建任意大小的数据集,以满足特定的计算或分析需求。 (3)减少偏差:如果设计正确,合成数据可以避免现实世界数据中常见的固有偏差。这使得模型测试能够在更中性和可控的条件下进行。 (4)降低成本:生成合成数据通常比收集真实数据更便宜,特别是在需要复杂设备或大量资源进行获取的领域。 (5)保护隐私:真实数据通常包含敏感信息,这些信息一旦共享,就会面临隐私泄露的风险。由于这些数据并非与真实个人绑定,因此我们可以规避这一问题,同时仍保持分析效用。 (6)克服数据稀缺:收集足够的数据成本高昂或不切实际,例如用罕见疾病的图像训练计算机视觉模型。合成数据可以在不增加额外成本的情况下扩展数据集。 (7)促进实验和开发:合成数据为测试算法和模型提供了一个安全的环境,而不会存在暴露敏感数据或影响真实系统的风险。 (8)创建自定义场景:在某些应用中,需要模拟现实世界中难以观察到的极端事件或不太可能发生的场景。合成数据允许以可控的方式构建这些情况。 尽管合成数据具有诸多优点,但其使用也带来了一些挑战: (1)合成数据的有效性:合成数据集的质量取决于生成模型捕捉目标领域特征的能力。如果设计不当,合成数据可能会引入错误或扭曲的表征。 (2)法规的接受:在某些领域,合成数据的使用可能尚未被完全接受或监管,这可能会限制其在官方环境中的使用。 (3)维持复杂的关系:重现变量之间的复杂关系(例如在生物或金融系统中观察到的关系)可能特别困难。 (4)合成偏差:虽然合成数据可以减少真实数据中存在的偏差,但如果生成模型基于错误的假设,则存在引入人为偏差的风险。 因此,选择适当的技术并仔细验证结果以确保这些数据在特定应用环境中有用且可靠至关重要。 三 合成数据生成技术 使用概率技术生成合成数据是基于使用数学分布来模拟在真实数据集中观察到的变异性。这种方法允许您建模和创建遵循特定统计分布(例如正态分布、均匀分布或二项分布)的数据。这些方法尤其适用于: •在受控条件下测试算法。 •为真实数据有限或不可用的情况生成数据集。 •根据定义的概率模型模拟变量之间的关系。 1.基本分布 数学分布,例如正态分布(高斯分布)、均匀分布和泊松分布,是生成合成数据的基本工具。使用 NumPy 等 Python 库,您可以创建代表特定场景的模拟数据集。 示例:生成具有正态分布的数据集 import numpy as np import matplotlib.pyplot as plt # 生成正态分布数据 mu, sigma = 0, 1 # 平均值和标准差 data_normal = np.random.normal(mu, sigma, 1000) # 可视化 plt.hist(data_normal, bins=30, alpha=0.7, color='blue', edgecolor='black') plt.title('正态分布') plt.xlabel('值') plt.ylabel('频率') plt.show() 2.蒙特卡罗采样 蒙特卡洛采样是一种通过模拟更复杂的分布或由任意复杂函数定义的分布来生成数据的技术。当简单分布无法满足需求时,它是理想的选择。 示例:使用蒙特卡洛近似积分。 import numpy as np import matplotlib.pyplot as plt # 真实分布的参数(等待时间) real_mu = 10 # 平均值 real_sigma = 2 # 标准差 n_real_samples = 10000 # 真实数据数量(样本) # 真实数据生成(观测分布) real_data = np.random.normal(real_mu, real_sigma, n_real_samples) # 蒙特卡洛:用于近似真实分布的渐进样本 n_monte_carlo_samples = 500 # 蒙特卡洛样本的最大数量 monte_carlo_data = np.random.normal(real_mu, real_sigma, n_monte_carlo_samples) # 创建图表来比较真实分布和蒙特卡洛模拟 plt.figure(figsize=(12, 6)) # 真实分布 plt.hist(real_data, bins=30, alpha=0.5, color='blue', label='真实分布', density=True) # 蒙特卡洛分布 plt.hist(monte_carlo_data, bins=30, alpha=0.5, color='orange', label='蒙特卡洛', density=True) plt.title("真实分布与蒙特卡洛模拟的比较") plt.xlabel("等待时间(分钟)") plt.ylabel("密度") plt.legend() plt.grid(True) plt.show() 3.条件分布 条件分布允许你模拟变量之间存在相关性的数据集。这对于生成维持数据集维度之间有意义关系的合成数据至关重要。 示例:多元正态分布 mean = [0, 0] # X 和 Y 的平均值 covariance = [[1, 0.8], [0.8, 1]] # 协方差矩阵 data_multivariate = np.random.multivariate_normal(mean, covariance, 500) # 可视化 plt.scatter(data_multivariate[:, 0], data_multivariate[:, 1], alpha=0.6) plt.title('多元正态分布') plt.xlabel('X') plt.ylabel('Y') plt.axis('equal') plt.show() 基于统计分布的数据生成方法具有诸多优势。它们允许完全控制,能够定义特定参数,确保数据按照定义明确的统计模型生成。此外,它们还具有灵活性,能够轻松适应不同情况,例如需要单峰或多峰分布的情况。从操作角度来看,它们被证明特别高效,因为即使对于大型数据集,数据生成也快速且充分。 然而,它们也存在一些局限性。这些方法最适用于统计结构简单清晰的数据集,但在表示复杂或非线性关系方面效果较差。此外,为了获得有用的结果,必须深入了解分布及其参数,这要求使用方法的人具备一定的技术专业知识。 完整示例:具有特定关系的数据生成 让我们创建一个合成数据集,其中包含两个变量之间的噪声线性关系,例如身高和体重。 # 参数 np.random.seed(42) n_samples = 1000 slope = 2.5 # 线性关系的斜率 intercept = 50 # 截距 noise_level = 5 # 噪声水平 # 数据生成 heights = np.random.normal(170, 10, n_samples) # 正态分布的身高 weights = slope * heights + intercept + np.random.normal(0, noise_level, n_samples) # 可视化 plt.scatter(heights, weights, alpha=0.6) plt.title('综合线性关系 (身高 vs 体重)') plt.xlabel('身高 (cm)') plt.ylabel('体重 (kg)') plt.show() 4.使用传统机器学习方法生成数据 使用传统机器学习方法生成合成数据是一种广泛使用的技术,用于扩展现有数据集或创建新数据集,同时保持合理的结构和分布。与深度神经网络等高级方法不同,这些方法易于实现,并且可以直接控制生成数据的特征。 (1)高斯混合模型 高斯混合模型 (GMM) 是一种概率模型,它将数据集表示为多个高斯分布的组合。GMM 中的每个聚类都对应一个高斯分量。这种方法对于生成模拟多类数据集的数据特别有用。 示例:使用 GMM 根据样本数据生成合成数据集 import numpy as np import matplotlib.pyplot as plt from sklearn.mixture import GaussianMixture # 原始数据:两个主要聚类 np.random.seed(42) data_original = np.concatenate([ np.random.normal(loc=0, scale=1, size=(100, 2)), np.random.normal(loc=5, scale=1.5, size=(100, 2)) ]) # 创建 GMM 模型 gmm = GaussianMixture(n_components=2, random_state=42) gmm.fit(data_original) # 生成新的合成数据 data_sintetici = gmm.sample(200)[0] # 并排可视化 fig, axes = plt.subplots(1, 2, figsize=(12, 6), sharex=True, sharey=True) # 原始数据图 axes[0].scatter(data_original[:, 0], data_original[:, 1], alpha=0.6, label="Original Data") axes[0].legend() axes[0].set_title("Original Data") axes[0].grid(True) # 合成数据图 axes[1].scatter(data_sintetici[:, 0], data_sintetici[:, 1], color='r', alpha=0.6, label="Dati Sintetici") axes[1].legend() axes[1].set_title("Synthetic Data Generated with GMM") axes[1].grid(True) plt.tight_layout() plt.show() 这种方法的主要优点之一是能够直接控制聚类数量和方差,从而实现更有针对性和个性化的分析。此外,它对于具有多峰分布的数据特别有效,能够很好地近似其结构。 然而,该方法也存在一些局限性。该方法仅适用于能够用高斯分布建模的数据集,这限制了其应用范围。此外,它需要预先确定最佳组件数量,这在更复杂的环境中可能是一个挑战。 (2)生成决策树 生成决策树在变量之间建立条件关系。它们可用于生成遵循复杂模式的数据,例如逻辑约束或变量之间的依赖关系。 示例:根据条件规则生成合成数据集。 import numpy as np import matplotlib.pyplot as plt from sklearn.mixture import GaussianMixture from sklearn.tree import DecisionTreeClassifier import pandas as pd # 创建一个简单的数据集 np.random.seed(42) data_original = pd.DataFrame({ 'Feature1': np.random.choice([0, 1], size=100), 'Feature2': np.random.choice([0, 1], size=100), 'Label': np.random.choice([0, 1], size=100) }) # 构建决策树 X = data_original[['Feature1', 'Feature2']] y = data_original['Label'] tree = DecisionTreeClassifier(max_depth=3, random_state=42) tree.fit(X, y) # 生成新数据 syntetic_data = pd.DataFrame({ 'Feature1': np.random.choice([0, 1], size=100), 'Feature2': np.random.choice([0, 1], size=100) }) synthesized_data['Label'] = tree.predict(synthetic_data) print("生成的合成数据:\n", synthesized_data.head()) 这种方法的主要优点之一是其灵活性,甚至可以对复杂的规则进行建模。当您想要复制变量之间存在条件关系的数据集时,这种方法尤其有用,可以确保数据结构的一致性。 然而,该方法也存在一些局限性。它可能会导致原始数据过度拟合,从而降低其泛化能力。此外,它并非生成高变异性数据集的最佳解决方案,因为在高变异性数据集中,保持数据的代表性更加困难。 5.使用 LLM(大型语言模型)生成合成数据 大型语言模型 (LLM) 代表了生成合成数据的最先进技术之一。它们将自然语言理解和生成功能与深度学习的强大功能相结合,使其成为创建结构化、连贯且个性化数据集的理想工具。在本节中,我们将探索如何使用 LLM 生成合成数据,并通过实际示例和 Python 代码来演示其应用。 像 GPT 或 BERT 这样的 LLM 可以通过训练或调整来创建合成数据,这得益于它们具有以下能力: •理解背景:他们可以分析和生成具有复杂关系的数据,以适应特定的背景。 •个性化:它们提供生成符合用户定义的规则或模式的数据的能力。 •对非结构化数据的有效性:它们对于生成文本和表格数据特别强大。 示例:创建表格数据集 让我们考虑这样一种情况:我们想要为营销应用程序生成一个表格数据集,其中包含客户信息,例如年龄、城市和年收入。 步骤 1:定义提示 有效的提示能够引导大型语言模型 (LLM) 撰写连贯的数据。以下是示例提示: 生成一个包含 10 行 4 列的数据集:\n“ Job”(表示人员职业的字符串)、“ Age”(18 到 75 之间的整数)、“ Country”(表示国家名称的字符串) 和“Score”(0 到 100 之间的浮点数)。\n\n“ “Job | Age | Country | Score\n” “---------------------------------\n” “Teacher | 30 | USA | 88.5\n” “Engineer | 45 | UK | 92.3\n” “Nurse | 28 | Canada | 75.4\n” “Artist | 33 | France | 68.9\n” “Doctor | 50 | Germany | 85.1\n” 步骤2:使用Python生成数据 借助“transformers”之类的库,我们可以与预先训练的模型交互来生成数据集: from transformers import GPTNeoForCausalLM, GPT2Tokenizer import torch import re # 加载 tokenizer 和 hugging face 模型 model_name = "EleutherAI/gpt-neo-1.3B" tokenizer = GPT2Tokenizer.from_pretrained(model_name) tokenizer.pad_token = tokenizer.eos_token model = GPTNeoForCausalLM.from_pretrained(model_name) model.config.pad_token_id = tokenizer.eos_token_id device = torch.device("cuda" if torch.cuda.is_available() else "cpu") model.to(device) model.eval() prompt = ( "生成一个包含 10 行 4 列的数据集:\n" "Job(表示人员职业的字符串)、" "Age(18 到 75 之间的整数)、" "Country(表示国家名称的字符串)、" "and Score(浮点数)介于 0 和 100 之间)。\n\n" "工作 | 年龄 | 国家 | 年收入\n" "---------------------------------\n" "教师 | 30 | 美国 | 88.5\n" "工程师 | 45 | 英国 | 92.3\n" "护士 | 28 | 加拿大 | 75.4\n" "艺术家 | 33 | 法国 | 68.9\n" "医生 | 50 | 德国 | 85.1\n" ) # 对提示进行编码 inputs = tokenizer(prompt, return_tensors="pt", padding=True).to(device) input_ids = inputs['input_ids'] attention_mask = inputs['attention_mask'] # 生成文本 output = model.generate( input_ids=input_ids, attention_mask=attention_mask, max_length=input_ids.shape[1] + 200, num_return_sequences=1, no_repeat_ngram_size=2, do_sample=False, temperature=0.7, pad_token_id=tokenizer.eos_token_id ) # 解码输出 generated_text = tokenizer.decode(output[0], skip_special_tokens=True) print(generated_text) # 提取阅读模式 data_pattern = re.compile( r"([A-Za-z\s]+)\s*\|\s*(\d{1,2})\s*\|\s*([A-Za-z\s]+)\s*\|\s*(\d{1,3}\.\d+)" ) matches = data_pattern.findall(generated_text) print("\nExtracted Data:") for match in matches: print(f"Job: {match[0].strip()}, Age: {match[1]}, 国家: {match[2].strip()}, 收入: {match[3]}") 提取的数据: 工作:教师,年龄:30,国家:美国,收入:88.5 工作:工程师,年龄:45,国家:英国,收入:92.3 工作:护士,年龄:28,国家:加拿大,收入:75.4 工作:艺术家,年龄:33,国家:法国,收入:68.9 工作:医生,年龄:50,国家:德国,收入:85.1 工作:经理,年龄:25,国家:西班牙,收入:77.8 工作:销售员,年龄:35,国家:日本,收入:73.6 工作:司机,年龄:20,国家:澳大利亚,收入:71.2 工作:办事员,年龄:40,国家:印度,收入:70.7 工作:学生,年龄:24,国家:中国,收入:69.0 工作:面包师,年龄:22,国家:巴西,收入:66.75 工作:女佣,年龄: 23,国家:意大利,收入:65.25 职业:厨师,年龄:21,国家:希腊,收入:64.15 职业:家庭主妇,年龄:26,国家:土耳其,收入:63.85 职业:渔夫,年龄:29,国家:俄罗斯,收入:62.65 职业:搬运工,年龄:27,国家:南非,收入:61.45 职业:水手,年龄:32,国家:美国,收入:60.35 职业:士兵,年龄:31,国家:瑞典,收入:59.05 职业:警察,年龄:34,国家:荷兰,收入:58.95 职业:护理人员,年龄:36,国家:比利时,收入:57.55 职业:建筑工人,年龄:37,国家:丹麦,收入:56.40 职业:电工,年龄:38,国家:挪威,收入: 55.10 LLM(大型语言模型)拥有众多优势,使其成为用途极为广泛的工具。首先,它们具有极大的灵活性:能够生成结构化和非结构化数据,从而适应多种需求。此外,通过使用 API 和 Python 库,它们可以简化与工作流程的集成,从而实现快速有效的实施。 另一个积极的方面是定制的可能性:可以轻松修改提示以满足特定需求,从而使这些模型在目标环境中更有用。 然而,需要考虑一些限制和关键方面。例如,生成数据的质量很大程度上取决于所使用的公式和模型的设置。 另一个需要注意的因素是偏差的存在:由于模型是从训练数据中学习的,因此它们可能会重现数据中已经存在的偏差或扭曲。最后,成本也是一个重要因素,尤其是在生产环境中,大量使用LLM可能会导致巨额成本。 6.具有特定结构和关系的数据生成 生成具有特定结构和关系的合成数据是一项高级实践,需要运用技术在遵循复杂约束的同时创建人工数据集。这种方法对于模拟至关重要,因为合成数据必须代表真实场景或补充现有数据集,且不损害其完整性。 在许多情况下,生成具有明确结构的数据都非常有用。例如,在金融模拟中,生成遵循变量间特定相关性的时间序列非常重要。在物理学领域,创建遵循特定方程或自然法则的数据至关重要。然而,在生物信息学中,构建考虑特定研究背景中的生物或化学约束的数据集至关重要。 主要目标是创建不仅具有统计代表性而且符合其所指应用领域的规则和关系特征的合成数据。 (1)处理复杂的关系 示例:固定总和数据生成 一个常见的情况是生成遵守总和约束的变量,例如不同部门之间的预算分配。 import numpy as np import pandas as pd # 观察值和类别的数量 n_observations = 100 n_categories = 3 # 每个观察值的总和 total_sum = 100 # 生成随机数据 data = np.random.dirichlet(np.ones(n_categories), size=n_observations) * total_sum # 创建 DataFrame df = pd.DataFrame(data, columns=[f"Category_{i+1}" for i in range(n_categories)]) df["Total"] = df.sum(axis=1) print("使用固定和生成的数据集示例:") print(df.head()) >>> 使用固定和生成的数据集示例: Category_1 Category_2 Category_3 Total 0 58.673361 34.972747 6.353891 100.0 1 16.882673 14.145658 68.971669 100.0 2 71.446625 10.170256 18.383118 100.0 3 57.066341 37.334702 5.598957 100.0 4 15.686990 3.622839 80.690171 100.0 狄利克雷分布用于生成随机比例,每个比例代表总数的一部分。这些比例一旦计算出来,就会进行缩放,使其总和等于定义为 total_sum 的特定值。这样,该函数生成的数据就遵循了基本约束,即所有比例的总和恰好等于指定的目标值。 示例:具有预定义相关性的数据 另一个常见的需求是生成具有变量之间特定相关性的合成数据。 from scipy.stats import norm # 数据集的维度 n_samples = 1000 # 所需的相关矩阵 correlation_matrix = np.array([[1.0, 0.8, 0.5], [0.8, 1.0, 0.3],[0.5, 0.3, 1.0]]) # 创建相关数据 mean = [0, 0, 0] data = np.random.multivariate_normal(mean, correlation_matrix, size=n_samples) # 转换为 DataFrame df_corr = pd.DataFrame(data, columns=["Variable_1", "Variable_2", "Variable_3"]) print(df_corr.corr()) >>> Variable_1 Variable_2 Variable_3 Variable_1 1.000000 0.784861 0.490152 Variable_2 0.784861 1.000000 0.263210 变量_3 0.490152 0.263210 1.000000 multivariate_normal 函数允许您生成遵循多元分布的数据,尊重作为输入提供的相关矩阵建立的相关性。 (2)基于图的模型 基于图的模型对于模拟社交网络、交易或信息流很有用。 导入 networkx 作为 nx 导入 pandas 作为 pd 导入 matplotlib.pyplot 作为 plt # 创建因果图 n_nodes = 10 p_connection = 0.3 graph = nx.erdos_renyi_graph(n_nodes, p_connection) # 转换为 DataFrame edges = nx.to_pandas_edgelist(graph) print("连接列表(弧):") print(edges) # 图形可视化 plt.figure(figsize=(8, 6)) nx.draw(graph, with_labels=True, node_color='lightblue', edge_color='gray', node_size=700, font_size=10) plt.title("因果图的表示") plt.show() 这一背景下的主要应用包括:一方面,社交网络的模拟,它可以分析和预测虚拟或现实社区中的互动动态和集体行为。另一方面,我们发现分布式系统中的数据流建模是理解、优化和管理复杂且互联的技术环境中信息传输的关键活动。 (3)时间序列的自回归模型 自回归时间序列用于模拟具有时间依赖性的数据。 导入 numpy 作为 np 导入 networkx 作为 nx 导入 pandas 作为 pd 导入 matplotlib.pyplot 作为 plt 从 statsmodels.tsa.arima_process 导入 ArmaProcess # 定义 AR 和 MA 参数 ar_params = np.array([1, -0.5]) ma_params = np.array([1, 0.4]) model = ArmaProcess(ar=ar_params, ma=ma_params) # 生成时间序列 n_points = 200 time_series = model.generate_sample(nsample=n_points) # 可视化 导入 matplotlib.pyplot 作为 plt plt.plot(time_series) plt.title("自回归时间序列") plt.show() 四 合成数据生成中的伦理考虑和限制 合成数据的生成提供了一种创新而灵活的解决方案,可以克服与真实数据的可用性、质量和保护相关的挑战,但它也引发了需要仔细评估的重大道德和操作问题。 一个问题涉及与真实数据过度相似的风险。如果合成数据过于忠实于原始来源,则可能会泄露个人敏感信息。此外,将这些数据与其他数据集相结合,有助于识别其中的关联性,从而促进重新识别。 另一个关键问题是原始数据中存在的偏差可能会被转移或放大。如果在生成过程中没有进行严格的控制,合成数据确实可能会使类别不平衡或属性永久化。此外,在创建过程中,可能会引入新的无意偏差,从而加剧问题。 合成数据的有效性和可用性是另一个挑战。为了发挥作用,数据必须遵循现实世界数据固有的关系和约束,例如求和或时间序列。如果缺少这些特征,合成数据可能无法使用。此外,基于合成数据训练的机器学习模型可能无法充分推广到现实世界。 从监管和道德角度来看,合成数据的生成必须符合数据保护法,例如欧洲的《通用数据保护条例》(GDPR)或美国的《消费者隐私法案》(CCPA)。这意味着对原始数据进行严格管理,并在流程的每个阶段都遵守法律要求。 五 小结 合成数据生成正逐渐成为数据科学和机器学习中的关键要素,尤其是在真实数据可用性受到隐私限制、偏见或缺乏代表性等因素限制的情况下。然而,其有效性取决于选择最合适的技术,并意识到其局限性和伦理影响。 在现有的技术中,概率技术被证明能够简单有效地表示线性分布,尽管它们在处理复杂数据时存在局限性。传统的机器学习方法在简单性和捕捉更复杂结构的能力之间取得了良好的平衡。高级语言模型(例如大型语言模型)以其灵活性而著称,能够生成高度真实且复杂的数据,非常适合模拟、表格分析和文本等应用场景。 为了最大限度地发挥合成数据的价值,至关重要的是要根据具体需求定制生成策略,持续监控所生成数据的质量,并将其与真实数据进行比较。此外,还需要整合控制措施以减轻偏见和隐私侵犯,并及时了解该领域的快速技术发展。 来源(公众号):数据驱动智能
2025-10-13 18:25 41
来源(公众号):大数据AI智能圈 "李总,这个月的OEE(整体设备效率)数据出来了。" "多少?" "78.3%。" "环比呢?" "这个...我让小张算一下。" 这是我在某汽车厂调研时真实看到的对话。厂长想要的是"用嘴问数据",但现实中却是"用人跑数据"。 NL2SQL的"美丽谎言" 过去两年,我走访了37家制造企业,看到了一个令人心碎的现状:90%的AI问数项目都在假装成功。 为什么?因为大家都被NL2SQL这个"美丽谎言"给骗了。 "自然语言转SQL,让业务人员直接问数据"——听起来多么动人。但现实是,当你问"上周A线的良品率为什么下降了"时,系统给你的是一堆看不懂的SQL代码,或者更惨——直接报错。 我见过最离谱的案例:某家电巨头的BI团队,花了8个月时间做NL2SQL,结果上线第一周就被业务部门集体抵制。 原因?系统把"直通率"理解成了"通过率",把"不良品"算成了"返工品"。一个字的差异,让整个季度的质量分析全部作废。 制造业的数据问数,根本不是简单的"中译英"问题,而是"业务语言"到"数据语言"的鸿沟问题。 MQL:制造业的"数据方言" 制造业有自己的"方言"。 同样叫"效率",设备部门说的是OEE,生产部门说的是节拍达成率,计划部门说的是订单准时交付率。同样叫"库存",原材料仓库关心的是周转天数,成品仓库关心的是呆滞比例,财务部门关心的是资金占用。 这些差异不是简单的同义词替换,而是深深刻在业务逻辑里的"认知基因"。 传统的NL2SQL就像把一个广东人直接扔到东北,告诉他"都是中文,自己理解去吧"。而MQL(Manufacturing Query Language)的做法是,先建一个"翻译官"体系,把各地方言先整理成标准普通话,再去做转换。 这个翻译官体系,就是"制造业指标体系"。 听起来很土,但这是真正的"降维打击"。当别的厂商还在纠结"怎么让SQL更懂人话"时,我们直接绕过了这个维度——不让SQL懂人话,而是让人话先变成"指标话"。 从"炼金术"到"化学方程式" 某食品厂的CIO老王跟我吐槽:"我们厂有12个版本的'良品率',每个部门都有自己的算法。质量部算的是'合格数/检验数',生产部算的是'合格数/生产数',财务部算的是'合格数/订单数'。一个指标,三套口径,开会就像鸡同鸭讲。" 这不是技术问题,这是"制造业炼金术"时代的典型症状——每个人都在用自己的"秘方",没有统一的"化学方程式"。 MQL的核心就是把"炼金术"变成"化学方程式"。 怎么做?先把所有的"秘方"都晒出来,然后建立一套"指标语法": 原子指标:不可再拆分的最小单位,比如"合格数"、"生产数" 计算指标:由原子指标组合而成,比如"良品率=合格数/生产数" 维度:看数据的角度,比如"时间"、"产线"、"班次" 口径:具体的计算规则,比如"合格数是否包含返工后合格的产品" 听起来很简单?但就是这么简单的东西,90%的制造企业都没有。 我见过的最夸张的case:某造船厂,同一个"交付准时率",采购部、生产部、销售部有三个完全不同的定义,而且每个部门都坚信自己的才是"标准答案"。最后怎么解决的?一把手的铁腕——"以后都用财务部的定义,谁反对谁下课"。 这就是现实:技术问题最后都是组织问题,数据问题最后都是权力问题。 制造业AI问数的"三重门" 做了这么多项目,我总结出一个规律:制造业AI问数要成功,必须跨过"三重门"。 第一重门:指标门 很多项目死在这里。技术团队觉得"不就是几个指标吗",业务部门觉得"这么简单的需求你们都理解不了"。 真相是:制造业的指标体系,比互联网复杂100倍。 互联网公司的指标,大多是"用户行为"的统计——点击率、转化率、留存率。这些指标的定义相对标准化,跨公司差异不大。 制造业的指标,是"物理世界"的量化——每个工厂的设备不同、工艺不同、管理模式不同,指标定义也就不同。更惨的是,这些差异往往隐藏在"经验"里,老员工心知肚明,新员工一脸懵逼。 第二重门:数据门 跨过了指标门,还有更惨的数据门。 制造业的数据,是典型的"三多三少": 系统多,打通少:ERP、MES、WMS、PLM...每个系统都有自己的数据标准 历史多,质量少:10几年的历史数据,但90%都有质量问题 细节多,维度少:记录了每个螺丝的拧紧力矩,但不知道这个螺丝属于哪个产品 最惨的是,制造业的数据质量问题是"结构性"的——不是简单的"清洗"就能解决,而是需要"重新定义"。 比如"生产开始时间",MES记录的是"第一个工序开始时间",ERP记录的是"订单下达时间",手工报表用的是"班组长记得的时间"。三个数据源,三个数值,哪个才是"真值"? 第三重门:认知门 最难的是认知门。 技术团队觉得:"我们做了这么炫酷的AI问数系统,业务部门应该感激涕零才对。" 业务部门觉得:"你们连'良品率'都算不对,还谈什么AI?" 认知差异的核心在于:技术团队关注的是"技术先进性",业务部门关注的是"业务准确性"。 一个真实的对话: 技术:"我们的AI问数系统准确率达到85%了!" 业务:"那剩下的15%怎么办?万一我汇报给老板的数在那15%里呢?" 技术:"......" 制造业的数据应用,容错率极低。一个错误的数据,可能导致错误的决策,错误的决策可能导致数百万的损失。 这就是现实:在制造业,99%的准确率等于0——因为没人知道哪1%是错的。 结语 做了这么多项目,我总结出一个"生存法则":制造业AI问数,必须先做"数字化治理",再做"智能化应用"。 AI问数不是"速效救心丸",而是"长期处方药"。 它不能帮你跳过数字化转型的"坑",只能让你在坑里少待一会儿。 真正的制造业AI问数,拼的不是算法多先进,界面多炫酷,而是——你敢不敢先花半年时间,把最基础的指标体系梳理清楚? 毕竟,在制造业,慢就是快,快就是死。
2025-10-11 10:10 48
标题:StyleBench: Evaluating thinking styles in Large Language Models 日期:2025-09-25 机构:University of California, Berkeley, Virginia Tech 链接:http://arxiv.org/pdf/2509.20868v1 一句话总结:本文推出StyleBench综合基准,通过多样化任务和15个大语言模型系统评估五种推理风格,揭示策略有效性高度依赖于模型规模与任务类型。 大型语言模型的多种“思维风格” 大型语言模型(LLM)的强大之处远不止于其庞大的参数量。决定其在复杂任务上成功的关键因素在于引导其推理过程的方法。用户不能简单地要求模型直接输出答案,而通常需要通过提示使其以结构化方式“思考”。这推动了多种提示技术的发展,这些技术常被称为“推理风格”或“思维模式”。 早期突破性技术如思维链(CoT)表明,仅需要求模型进行逐步思考,就能显著提升其数学和逻辑问题的解决能力。此后,更复杂的技术呈现寒武纪式爆发,形成了并行推理路径、迭代草稿甚至算法回溯等多元方法。然而,这些不同推理风格、特定LLM与任务性质之间复杂的相互作用仍未被充分理解。这留下了一个关键问题:如何为特定任务选择正确的思维风格,以实现性能与效率的最佳平衡? StyleBench:系统性评估框架 为应对这一挑战,研究者推出了StyleBench——一个旨在系统评估不同推理风格在多样化场景下性能的综合基准。这并非简单的性能排名,而是对LLM认知机制的深度探索。 该评估涵盖广泛维度:StyleBench在五类推理任务(包括数学问题、常识问答和逻辑谜题)上测试五种不同推理风格;研究涉及LLaMA、Qwen、Mistral和Gemma等主流系列的15个前沿开源模型,参数规模从灵巧的2.7亿到庞大的1200亿不等。核心目标是超越个案经验,为任意应用场景选择最高效推理策略提供清晰的经验性指导。 思维分类学:从线性链到搜索树 StyleBench对五种代表性“思维风格”进行分类评估,每种风格以不同方式构建模型的问题解决流程。理解这些风格是释放LLM全部潜能的关键。图1直观呈现了这些处理框架的核心逻辑。 序列式风格 思维链(CoT):作为基础技术,它要求模型将问题分解为线性步骤序列,类似于人类展示解题过程。通过生成显式推理轨迹,该方法简单有效。示例可参见图4a。 草稿链(CoD):该风格追求简洁性,约束模型生成凝练的符号化推理轨迹,通过迭代优化解决方案“草稿”。通过少样本示例引导,输出形式如,该过程如图4b所示。 路由式风格 思维草图(SoT):采用巧妙的两阶段处理:首先由训练的“路由模型”识别问题类型,随后检索该类问题的解决范例来增强提示。在保持透明度的同时鼓励符号化简答,如图6所示。 搜索式风格 思维树(ToT):将推理视为搜索问题,允许模型同步探索多条并行推理路径(树的分支),评估后剪枝低潜力路径,实现解空间的系统性探索(图5b)。 算法思维(AoT):受经典算法启发,该方法实现回溯搜索,使模型能够撤离无效推理路径并探索替代方案,通过避免死胡同有效模拟算法化问题解决(图5a)。 表1对比了这些风格在处理数学问题时的提示词构建方式。 规模效应:模型参数量的影响 StyleBench的核心发现表明:虽然模型规模越大性能越优,但规模收益在不同思维风格间并不均衡。所有推理策略的性能随模型尺寸增加而提升,但提升速率存在显著差异。 基于搜索的策略(如ToT和AoT)呈现明显的缩放定律:它们在挑战性开放任务上的优势仅在大规模模型(超过150亿参数)上凸显;在中小型模型上,复杂搜索机制几乎不产生增益,表现为“平庸”结果。这表明有效管理复杂搜索空间是大型模型涌现的能力。 相比之下,CoD被证明是从最小到最大所有模型规模中最稳定、最鲁棒的风格,使其成为资源受限环境下的可靠选择。图2展示的不同规模模型组在跨任务中的聚合准确率清晰印证了这些缩放 dynamics。 无万能解:推理风格与任务匹配 研究最重要的结论是:不存在单一最优推理风格。最佳选择高度依赖于具体任务。研究发现了强烈的“任务-风格亲和性”,为实践者提供了急需的导航图。 数学推理(GSM8K):令人惊讶的是,最简单的CoT在所有模型规模上持续优于其他风格。这表明对于结构化多步问题(如小学数学),直接序列分解不仅足够且最优。 逻辑推理(LogiQA):需要逻辑演绎的任务中,SoT成为明显优胜者。研究推测这是因为逻辑任务极大受益于SoT提供的结构化符号轨迹和相关少样本示例,使模型能高效应用形式推理规则。 开放谜题(24点游戏):对于需要组合搜索的创造性谜题,ToT和AoT的分支回溯方法最有效,但该优势仅体现在能驾驭复杂搜索空间的大型模型中。 常识推理(CommonsenseQA):依赖知识检索的任务中,CoD和SoT的简洁风格通过高效直接的回答实现最佳性能。值得注意的是,大型模型中所有推理风格表现相当,表明模型更多依赖内在知识库而非复杂推理来解决问题。 从猜测到推理:不同规模模型的行为模式 除聚合准确率外,StyleBench揭示了不同规模模型间有趣的行为差异。 小模型的猜测游戏 关键发现是:小模型(<50亿参数)在困难任务上的失败并非因为耗尽生成长度,而是缺乏必要的推理能力。它们往往“默认采用猜测”而非尝试复杂推理链,可能生成表面结构化但逻辑荒谬的响应。例如在AIME数据集案例中,小模型执行多个正确步骤后却在验证阶段犯关键错误,仍自信输出错误最终答案(论文附录D.1详述)。这表明小模型的主要瓶颈是推理能力缺失而非生成能力不足。 指令跟随作为涌现技能 可靠遵循指令的能力(如用\boxed{答案}格式化输出)随模型规模显著提升。小模型频繁忽略此类指令,对依赖格式的自动评估系统构成挑战。该行为源于预训练模式,小模型缺乏覆盖这些模式的能力,即使获得明确指令。 token使用与效率 与直觉相反,小模型在困难任务上并不总是消耗更多token。如图3所示,它们常在生成猜测答案后提前终止生成。而基于搜索的AoT和ToT方法因探索性质天然需要更多token。对于LogiQA等结构化任务,SoT和CoD等简洁方法效率显著,在保持高精度的同时分别比CoT缩短94%和16%的生成长度。 选择最优推理策略的实践路线 如何将这些洞察应用于实践?研究探索了能否微调LLM使其自主选择最佳推理风格。结果表明这种“元推理”能力尚未成熟:经训练的模型仅学会默认选择训练数据中最频繁最优的风格(CoD),而非形成真正的上下文感知选择策略(图14)。 在模型能可靠自选策略之前,我们可以将StyleBench的发现作为实践路线图: 复杂开放问题(如谜题、战略规划): 若能使用大规模模型(>150亿参数),采用ToT或AoT等搜索方法,其探索回溯能力极具价值 否则(使用小模型时),这些方法可能无效,简易风格或更可靠(但不保证成功) 结构化序列问题(如数学应用题、逻辑演绎): 首选CoT,其简洁性和已验证效果使其成为强基线 对于符号表示有益的任务(如逻辑推理),考虑SoT以获得更优性能 效率关键场景(低延迟、低成本)或使用小模型时: 倾向SoT和CoD等简洁风格,它们在常识QA和符号推理等任务上提供精度与计算成本的最佳权衡 通过建立这些缩放定律和任务-风格亲和性,StyleBench研究为利用当今大型语言模型构建更高效、鲁棒且强大的推理系统奠定了重要基础。 来源(公众号):AI Signal 前瞻
2025-10-10 18:35 34
演示让AIAgent看起来毫不费力。但真正的痛苦始于演示之后,当 AI 代理、工作流程、遗留系统和评估开始发挥作用时。 为什么现在这很重要 智能助理随处可见。演示视频充斥着各大流行媒体。供应商承诺推出“自动辅助驾驶”,让你在喝拿铁咖啡的同时就能管理你的整个部门。而且,说实话,这些原型相当不错。 但如果你曾经尝试过从幻灯片到实际生产,你就会知道:人工智能并非最难的部分。模型正在快速改进,调用 API 也并非火箭科学。真正的障碍来自更古老、更复杂、更深刻的人性。 当企业在代理上遇到阻碍时,他们会遇到以下困境: 到处都能看到AIAgent(这不该是AI的事)。 定义什么应该自动化(工作流程清晰)。 与现有系统(遗留系统和 API)集成。 证明其可靠运行(评估和监控)。 让我们来分析一下。 真正困难的是什么 架构、框架、内存、多模态和实时性都很重要。这些都很重要!但与三大难题相比,这些都是可以解决的工程问题。 混乱源于人员、流程和老旧基础设施的协调。这正是企业项目成败的关键所在。 障碍#1 — 随处可见的Agent(不该做的事) 首先,有一件事值得大声说出来:你不需要到处都使用 Agentic 系统。事实上,许多企业问题可以用更简单、更稳固的方法更好地解决: 经典代码——如果流程重复且定义明确,则脚本或服务将比代理运行得更快、更便宜、更可靠。 传统机器学习——当任务是关于结构化数据的预测时,回归或分类器通常优于推理循环。 图形界面和工作流引擎——有时真正需要的是清晰度和可用性;在 UI 中映射流程可以解决的不仅仅是增加自主性。 简单的 LLM 调用——在很多情况下,几个精心提示的 API 调用即可提供所需的所有“智能”,而无需编排开销。 代理最适合处理那些复杂、多步骤、动态的工作流程,因为灵活性至关重要。对于其他所有情况,选择合适的工具来完成任务可以避免额外的成本、脆弱性和集成难题。 障碍#2——工作流程定义(内容) 事实是:企业很少有清晰的工作流程。 流程存在于人们的头脑中。异常会不断累积。合规性会增加隐藏的步骤。当你问“客服人员到底应该处理什么?”时,你已经陷入了永无止境的会议、过时的规范以及诸如“哦,但对于客户 X,我们的做法不同”之类的旁白之中。 这就是为什么工作流程现代化是首要的: 与企业坐在一起,绘制工作流程图,详细说明采取的每个行动、由谁执行以及手动程度如何。 阐明什么可以实现自动化、如何实现自动化,并非所有事物都需要 Agentic、什么仍保持人性化以及它们如何相互关联。 记录混乱的现实,展示工作流程并进行验证。 如果没有这些基础工作,您的代理人将会: 把错误的事情自动化。 使一半的事情自动化并停滞。 或者被那些本应帮助的人悄悄忽视。 障碍#3 — 与现有系统的集成(方法) 一旦您知道要自动化什么,您就会面临第三个障碍:集成到已经存在的系统。 更糟糕的是——大多数系统在设计时根本没有考虑过代理。很多系统甚至在设计时都没有考虑过 API。 需要脆弱连接器的传统 ERP。 具有半记录端点的CRM 或票务系统。 十年前用框架编写的内部应用程序现在已无人再触及。 身份验证方案、基于角色的访问、合规性限制。 后端系统的工作流程非常复杂,您需要 3 天的时间才能了解它的用途。 集成不仅仅是“连接到 API”。它还涉及数十年的技术债务、所有权孤岛和脆弱的依赖关系。 这就是为什么一个在全新应用栈上顺利运行的演示代理在现实世界中突然崩溃的原因。它必须与多年来不断打补丁和定制的系统进行通信。 在企业现实中,集成等于: 查找遗留系统工作流程及其使用方法。 让系统专家来帮助我们(他们没有时间!) 在新旧数据格式之间进行转换。 处理速率限制和可靠性问题。 与 IT/安全团队协商访问权限(有时是最困难的部分)。 直到越过这个障碍,代理才会停止,停留在原型循环中。 障碍#4 — 评估(证明) 即使您确定了工作流程并成功完成集成,您仍会遇到第四个问题:您如何知道它有效? 代理中的评估是出了名的不顺利: 任务级指标:代理是否按照定义完成了工作流程?完成率是多少?误报率是多少? 代理级指标:代理是否遵循工作流程并生成了正确的计划?我们是否捕获了所有流程中的错误并将其转交给人工处理? 业务指标:它是否节省了时间、降低了成本或提高了准确性? 安全指标:它是否避免了幻觉、违反政策、违反合规性,并且基本上没有做我们不希望它做的事情? 通常的机器学习技巧在基准数据集上提高准确率并不能解决问题。每个企业都有独特的需求。 这里的实用模式包括: 评估数据集:精心挑选的输入以及预期的代理规划和输出。 真正的代理评估:不仅评估结果,还评估代理计划和授权。 影子模式:代理在完全控制人类之前与人类一起奔跑。 持续监控:跟踪一段时间内的漂移、性能和回归。 如果没有严格评估,代理要么在演示中看起来很神奇,但在生产中却悄无声息地失败,或者更糟的是,他们会在无人注意的情况下破坏一些关键的东西。 结论——为什么AI代理在企业中会失败 让我们回顾一下。 企业代理最难的部分不是人工智能本身,而是: 代理幻影(不该做的事):在没有必要的地方随处看到代理。 清晰度(什么):定义业务工作流程,在需要的地方进行现代化。 集成(方法):插入遗留系统、脆弱的 API 和数十年的技术债务。 评估(证明):不断评估代理以建立信任。 忽略这些,你的“自主辅助驾驶”就会一直困在原型的炼狱里。拥抱这些,你就能把人工智能从光鲜亮丽的演示变成企业级资产。 教训是什么?不要把代理的采用视为一个人工智能项目,而要将其视为一个工作流程+集成现代化项目,从第一天起就内置评估。 来源(公众号):数据驱动智能
2025-10-09 17:45 47
在数据团队待久了,总会遇到两种让人头疼的情况: 业务同事说“你们做的模型太绕,我要个销售额数据都费劲”; 技术同事也叹气,“业务需求变得比翻书还快,模型刚弄好就得大改”。 其实数据建模这事儿,就是把业务需求和技术实现连起来的那根线,看着基础,却藏着不少坑。它真不是画几张图、写几行代码那么简单,得真懂业务逻辑,还得算着技术成本,甚至得提前想到以后可能会变的地方,是个实打实的系统活儿。 今天我就不跟你扯教科书上的理论了,就从实际应用的角度,把数据建模的全流程拆解开,重点说说这四个核心问题: 需求该怎么接 模型该怎么设计 落地时要避开哪些坑 后续怎么跟着迭代 一、需求分析 数据建模第一步,80%人都会踩坑——把需求分析做成了简单记录。 业务方说:“我要用户复购率的周环比数据。”技术同学记下来,转头就从订单表里取“下单时间”“用户ID”“金额”,按周分组一算。 结果交上去的时候,业务方就问了: “预售订单怎么没算进去?为啥用支付时间不是下单时间?怎么只算了APP端的数据?” 问题出在哪? 需求分析根本不是原样转述,而是得翻译。业务方提需求的时候,往往带着他们自己的业务语境,模糊不清是常有的事。 这时候,数据建模就得把需求拆成三个关键部分: 1. 搞清楚业务目标:这数据是要解决啥问题? 就拿复购率来说: 它到底是用来验证“用户生命周期价值(LTV)的短期情况”, 还是评估“促销活动的效果”? 目标不一样,模型里的字段设计、关联的维度,那差别可就大了: 要是前者,就得把用户的首单时间、以前的消费层级都关联上; 要是后者,就得关联活动标签、优惠券使用情况。 2. 明确数据边界:哪些数据该要,哪些不该要? 业务方说“用户行为数据”,可能在他们看来,默认就包括APP、小程序、H5三端的点击记录,但技术这边就得问清楚: PC端的算不算? 机器人的流量要不要过滤掉? 设备信息(比如是iOS还是Android)用不用关联? 边界要是没划清: 模型上线后,肯定就得陷入“补数据-改模型”的循环里,没完没了。 3. 弄明白使用场景:谁用这数据,怎么用? 同样是“销售额报表”: 给老板看的周报,得汇总到品牌、大区这个级别; 给运营看的日报,就得细到SKU、门店; 要是给算法做预测用,可能还得保留用户分群标签、时间序列特征。 说白了,使用场景决定了模型的细致程度和冗余情况——老板要的是整体情况,算法要的是细节特征,模型得跟这些场景匹配上才行。 所以跟业务方沟通需求的时候,拿着“5W1H”清单去问细节: Who(谁用) What(具体要啥指标) When(时间范围是啥) Where(数据从哪儿来) Why(业务上要解决啥问题) How(输出成啥样) 二、模型设计 需求分析清楚了,就到模型设计这一步了。这一步的核心,就是用结构化的模型语言,把业务逻辑固定成能计算的资产。 数据建模的方法不少,像维度建模、实体关系建模、数据湖建模等等。但实际干活的时候,最常用的还是维度建模,特别是星型模型和雪花模型。 为啥呢? 因为它够简单—— 业务的人能看明白, 技术团队也好实现, 计算效率也有保障。 1. 第一步:确定业务过程 业务过程就是模型里的“核心事件”,比如: “用户下单” “商品入库” “优惠券核销” 它必须是能量化、能追踪的具体动作,不能是抽象的概念。比如说“用户活跃”是一种状态,它对应的业务过程应该是“用户登录”“用户点击”这些具体动作。 2. 第二步:识别维度 维度就是看业务过程的角度,用来回答“谁、何时、何地、什么条件”这些问题。比如分析“用户下单”,可能涉及的维度有: 时间维度(下单时间、支付时间) 用户维度(用户ID、性别、注册渠道、会员等级) 商品维度(商品ID、类目、品牌、价格带) 场景维度(渠道:APP/小程序;活动:大促/日常;地域:省/市) 要注意的是: 维度得“全面准确”,但别“过度设计”。也就是说维度设计得基于当前的业务需求,同时留点儿扩展的空间。 3. 第三步:确定度量 度量是业务过程的“量化结果”,必须是数值型的、能聚合的字段,像订单金额、商品销量、支付转化率这些都是。 这里有个容易被忽略的点:度量得明确“计算规则”。比如说: “销售额”,是指“下单金额”还是“支付金额”? “复购率”是“30天内购买2次及以上”还是“最近一次购买距离首单不超过30天”? 规则不统一,模型输出的指标就容易让人产生误解。 4. 第四步:选择模型类型(星型vs雪花) 怎么选呢? 主要看查询效率: 星型模型减少了JOIN操作,适合经常查询的场景,比如BI报表; 雪花模型更规范,适合不常查询但分析复杂的场景,比如数据科学家做深度的关联分析。 用过来人的经验告诉你,优先选星型模型。在大数据的场景下,JOIN操作特别费计算资源,星型模型能明显提高查询速度。 要是维度需要细分: 可以把常用的维度字段合并到事实表里,做成“宽表”来优化,别动不动就拆成雪花结构。 三、实施落地 模型设计好了,就该落地实施了。这一步难的不是写代码,而是在“模型够不够好”和“工程上能不能实现”之间找到平衡。 1. 数据分层:让模型好维护 数据仓库的分层设计(ODS→DWD→DWS→ADS)是实施阶段的基础。每一层的职责得明确: ODS(原始数据层):存着原始的日志和业务库数据,一点都不修改,用来回溯和校验; DWD(明细数据层):做清洗、去重、标准化的工作,比如统一时间格式、填补缺失的值; DWS(汇总数据层):按主题来聚合数据,比如用户主题、商品主题的日活、周销数据; ADS(应用数据层):直接对接业务需求,像BI报表、算法模型的输入数据都从这儿来。 具体怎么做数据转换? 使用 API 输出,实现将 API 数据写入指定接口,将数据库或者其他形式的数据生成为 JSON 格式,以便进行数据交互。可以借助数据集成与治理一体化平台FineDataLink,使用 JSON 生成算子,生成 JSON 格式数据,满足复杂业务场景下的数据清洗、转换和同步等需求。 2. ETL设计:让模型能跑起来 ETL(抽取-转换-加载)是模型落地的关键。很多团队在这一步容易出问题: 要么是ETL的任务链太长,依赖关系复杂,导致经常失败; 要么是转换逻辑写死在代码里,需求一变更,就得重新开发。 正确的打开方式是: 用元数据管理ETL流程:借助FineDataLink把任务依赖可视化,设置重试机制和告警; 把转换逻辑“参数化”:像时间窗口(按天/周/月聚合)、维度过滤条件这些,用配置表来管理,别硬写到代码里; 保留“中间结果”:在ETL过程中输出临时表,比如清洗后的用户明细表,方便排查问题和回溯。 3. 存储选型:让模型跑得快 不同的模型场景,得用不同的存储介质: 经常查询的小数据集:用关系型数据库(MySQL、PostgreSQL)或者OLAP引擎(ClickHouse); 大规模的明细数据:用分布式存储(Hive、HBase)或者数据湖(Delta Lake、Iceberg); 有实时数据需求的:用流批一体存储(Flink + Kafka)。 要注意的是: 别为了用新技术而选复杂的存储方式。比如存用户画像,要是没有强一致性的需求,用MySQL加Redis的组合,可能比用HBase更简单高效。 四、迭代优化 数据模型上线了不算完,它的生命周期长着呢。随着业务发展,模型得不断迭代——这一点很多团队都容易忽略,最后往往要付出额外的成本。 1. 什么时候该迭代了? 出现这些情况,就得考虑优化模型了: 性能下降:以前10秒能出结果的查询,现在要1分钟,可能是数据量太大了,也可能是索引失效了; 满足不了新需求:业务方需要新的维度(比如“用户社交关系”)或者新的度量(比如“分享率”); 存储成本太高:模型冗余太多,比如雪花模型的多层维度表重复存储数据,导致存储费用飙升。 2. 迭代有啥策略? 迭代不能拍脑袋决定,得看数据反馈进行策略调整: 结语 数据建模是把业务价值和技术实现连起来的“结合点”,一个好的模型: 让业务的人看得懂、用着顺, 让技术的人改起来方便、跑起来顺畅。 还想跟你说句实在话:“先让模型能用起来,再慢慢让它变好。”别追求一开始就做出“完美模型”,在业务迭代中不断优化,这才是数据建模最实在的经验。 来源(公众号):五分钟学大数据
2025-09-30 16:57 89
热门文章