整数有约 | 刘乾专访:继续预训练策略与数据优化之道

「文智助手」全场景办公AI助理AI+OPC全流程实践方案(大赛作品) 阅读详情

人工智能多语言处理近年来得到了极大的关注,尤其是在以东南亚为代表的小语种环境中,其特殊的语言多样性和语料库稀缺性使得研究挑战和机遇并存。在现有的自然语言处理模型中,英语和中文因为有海量高质量数据的支持,常被作为核心语言开展预训练。然而,对于东南亚诸多小语种,由于语料的数字化程度较低,且缺乏行业相关的专业术语支持,模型的表现仍有显著提升空间。

   

2024年12月2日,来自新加坡的研究员刘乾老师所在团队联合社区开源了新一代面向东南亚语言的大模型 Sailor 2。Sailor 2 是一个系列的、面向东南亚地区的小语种大语言模型项目,其中最大的模型有 20B 参数,在 Qwen 2.5 模型基础上经过了大约 500B 词汇的继续预训练。该模型克服了以往小语种大模型训练过程中的一些关键问题,用相对更低的成本在东南亚地区的小语种上取得了很好的性能。

    

本期整数有约我们邀请到了刘乾老师与我们分享代码大模型、多语种语言模型等研究工作中的宝贵经验。随着大语言模型(LLM)的快速发展,这些模型在数学、代码、通识等多个领域展现出卓越的能力。然而,与此同时,训练这些模型所需的计算资源也不断增加。为了降低模型训练的成本,越来越多的研究者开始利用继续训练来强化模型在某些特定领域上的能力。

   

具体而言,领域大语言模型(Domain-Specific LLM)是在通用大语言模型的基础上,经过特定领域的数据(例如代码、数学、医学等)进行继续训练而得到的。这种模型在特定领域的能力上得到了显著提升。目前,构建继续训练数据的主要策略是将领域特定数据与通用数据进行混合训练。其中,通用数据部分确保了大语言模型在通用能力上的稳定性,缓解了灾难性遗忘(Catastrophic Forgetting)。

    

在此背景下,继续预训练的理念也可以有效应用于小语种模型的开发中,尤其是以英语为中心的模型向东南亚小语种环境的迁移。通过在小语种特定数据上进行继续训练,可以增强模型处理这些语言的能力,而混合使用通用数据则确保了模型在广泛应用中的稳定表现。这种方法在有限的资源下实现小语种语言模型能力的提升,同时最大限度地平衡多语言模型之间的竞争关系。在研究过程中,刘老师及其团队遇到了语料数据不足、高质量数据筛选难度大、模型优化与计算资源受限等一系列现实问题。他们通过探索数据混合与配比的策略,优化了预训练的效率和效果,并总结出重要经验。这些探索不仅对学术界产生了重要启发,也对相关实践提供了宝贵的参考。

     

在接下来的章节中,我们将详细讨论各类推理问题的特点、构建方法和评估标准,并通过具体案例展示如何设计和优化推理能力训练流程。这些研究不仅有助于理解大模型的能力边界,也为未来的模型优化和应用拓展提供了重要参考。

嘉宾介绍

   

图片

刘乾,研究员,现任职于新加坡TikTok。此前,刘乾在 Sea AI Lab 担任研究科学家。刘乾的研究领域涵盖了代码生成、数据为中心的深度学习和自然语言推理等多个方向。

注:本篇访谈仅代表刘乾老师个人意见,与其所在公司无关。

1. 代码生成

      

代码生成是刘乾老师目前工作的主要领域,刘乾老师就代码生成进行了展开与分享。

     

“我认为代码的每一个函数就是某种规划解耦、一步步实现的数据。”

   

刘乾老师首先提到了他对代码数据的一些理解,他认为代码函数从规划推理的角度来看,会有一个更有意思的视角:函数名是一直极简的规划摘要(比如快速排序),而代码的实现过程则是这个规划一步步实现的过程,因此他一直相信代码数据对思维链能力等会有增益。刘乾老师同时提到了代码在不同编程语言之间的泛化,也有一些前人研究显示,某些编程语言的比例会对其它编程语言的效果有较大影响。刘乾老师团队通过对预训练数据混合配比的自动化研究,发现语言之间的相互关系能为模型性能提供不同程度的支持。刘乾老师提到,已有的研究表明,不同语言之间互相有比较复杂的交互关系,目前绝大部分模型的数据配比是通过人工先验来制定的,这可能会对模型的整体效果有比较大影响。

    

关于代码生成的泛化,刘乾老师提到,代码对自然语言推理能力(尤其是数学推理)的增强非常显著,他认为在大模型中,代码的复杂逻辑和行间注释能有效提高逻辑推理能力。目前也有一些研究关注代码与自然语言混合数据的比例,以提升综合性能。在解决复杂数学问题时,模型也可以通过代码生成和执行反馈来提供更准确的解。 

     

“我个人对预训练的一个预测是我们以后会更多依赖自动化的方法做数据选择,避免人为地挑选数据样本,这样可以让整个预训练的管线变得更科学。”

    

关于代码生成模型的训练数据,代码生成、代码翻译和自然语言生成代码任务的区别,刘乾提到这些任务的表现差异通常是由于数据分布选择上的差异,尤其在预训练数据的分布。很多研究发现代码的行间注释对代码生成性能有重大影响。对于未来的研究方向,自动化的数据选择将能避免人为先验挑选数据所带来的偏差,使预训练变得更科学。

     

就代码生成的训练数据来源,刘乾老师认为目前业界暂时没有面临数据短缺的情况,当前代码数据的增长速度还是相当快的,特别是在GitHub上。除了GitHub数据,还可以利用一些非营利组织工具,如Software Heritage,该平台上包含了比Github更丰富的数据,这一点也被 StarCoder2 的开发过程所证实。

     

训练数据对模型质量有直接影响,这在全开放模型和其他模型的性能表现差异上就有所体现。全开放模型如 StarCoder 在预训练的数据质量上明显不如 DeepSeekCoder 和 QwenCoder。这主要由于社区在不同方向上的规划分歧和资源的限制。闭源模型通常有更高质量的数据,且在数据处理和资源投入上更加聚焦。最近我们也能看到全开放模型如 OpenCoder 正在追上前人代码模型的性能,在2025年我们应该会看到越来越多优秀的开源工作。

     

“Cursor在用户体验的优化上做了非常多努力。”

     

关于 Cursor ,刘乾老师认为 Cursor 是一个非常出色的应用,Cursor 的基座模型可以是多种不同的模型,利用RAG(检索增强生成)来处理也是一个非常值得学习的思路。这个思想在 GitHub Copilot 中也有体现,例如,Copilot 在补全代码时会检索工作目录中的相关信息,从而提高补全的准确性。当输入“打开xx文件”的代码时,只有知道工作目录下确实存在这个文件名,才能正确补全,否则会补出不存在的文件名。在这方面,Cursor 和 Copilot 做了很多精细的优化,尤其是用户体验。在常见的代码补全方面,通常只需要补全一小段代码,但在需要一次性补全很长代码时,用户在回顾审查时会非常疲劳,因为他们不知道代码改动了什么、想要做什么。Coder 为此开发了一个利用 LLAMA-70B 模型的patch生成功能,这使得修改的部分一目了然,从而极大地提升了用户体验。

     

“我觉得大家不应该把太多精力都放在代码生成上,因为函数级别代码生成相对来讲关注的人已经非常多了,我们可以把更多精力放在更难的软件开发任务上。”

     

目前代码生成的有趣应用也非常广泛,如通过程序生成解决自然语言推理问题,从而提高复杂任务的解决效率。另一个有趣的应用是利用代码模型代替人类专家来制定规则,从而完成一些复杂任务。

   

关于当前代码领域模型的主要问题和解决策略,刘乾老师提到在目前代码生成领域中,有一个经典的基准测试叫 HumanEval,这是 OpenAI 在2021年 Codex 论文中提出的。到现在依然有很多人在使用它。最初提出这个基准的目的是为了评估模型生成函数级别代码的性能。时至今日,模型已经能够生成相对复杂的代码了,业界也普遍认为 HumanEval 已经不能代表最先进的模型水平。因此,在代码领域最重要的突破点是新基准的开发,如最近的 BigCodeBench。BigCodeBench 比 HumanEval 更复杂,包含多样化的输入指令,并要求模型调用 Python 库完成任务,这实际上考验了模型在真实场景下的表现。更进一步的挑战是如何生成连贯的大段代码,超越函数级别的生成,从而支持复杂功能的实现。此外,刘乾老师认为,业界还可以可以将注意力转向传统软件工程的任务,如自动代码审查、自动发现和修复缺陷、以及代码加速等,这些都具有更好的显示价值。

2. 继续预训练

     

继续预训练作为解决预训练模型高昂成本和复杂性的技术手段,是大模型发展过程中重要的研究方向,我们也和刘乾老师进一步探讨了关于继续预训练探索过程中的经验与心得。

    

“我觉得继续预训练的出现是一个自然而然的结果,尤其是考虑到我们现在的开源生态里,如果你要做从头开始的预训练,需要付出的代价会越来越高。”

    

关于继续预训练相关研究的现状,刘乾老师提到,随着大规模模型如 Qwen2.5 和 DeepSeek-v3 等优秀模型的不断推出,从头预训练所需的数据量已经高达10+T词汇,在这种情况下,继续预训练的出现提供了一个更为经济和可行的解决方案,特别适用于已有一定高质量数据,但计算资源会成为瓶颈的场景。

   

首先,继续预训练在数据和计算资源上具有显著优势。如果手头有高质量且独特的数据,而这些数据在互联网上不太可能出现,同时这些数据对下游任务又特别相关,那么继续预训练毫无疑问是一个理想选择。例如,某些金融领域的数据及其相关任务可以受益于此。尽管预训练阶段的开销巨大,但通过继续预训练,可以在已有模型基础上进行进一步优化,最大程度地利用已有资源。而继续预训练的成功实施依赖于高数据质量和对训练过程的精细调控,例如要避免过高的学习率,以防止模型快速遗忘通用知识。

   

“我个人的感受是继续预训练对数据质量的要求会更高,做继续预训练的时候,引入了一些质量差的数据会让这个模型的性能产生退化。”

     

刘乾老师还提到,相比于从头开始的预训练,继续预训练对数据质量的要求会更高,因为新引入的低质量数据可能导致模型性能的退化。如果领域特定数据引入后,带来的性能提升无法弥补低质量数据导致的退化,这意味着继续预训练的效果可能不尽如人意。因此,研究如何提高继续预训练的有效性、避免模型遗忘原有知识仍是一个重要课题。

     

关于模型预训练阶段注入领域知识的不同点,刘乾老师认为我们可以从数据分布平滑过度的角度理解继续预训练。在从预训练到特定任务微调的过程中,本质上是在从通用文本数据过渡到更接近下游任务的数据分布。如果整个过程进行得平滑,会逐渐减轻通用数据的权重,同时增加贴近下游任务的数据权重。这一阶段的目标是找到一个理想的平衡点,将垂直领域知识有效地引入到预训练模型中。

    

总体而言,继续预训练是一种逐渐被认可并实用的技术方法,为从头预训练模型提供了经济和高效的替代方案。虽然继续预训练的实施具有一定的复杂性和挑战,但随着研究的深入,继续预训练有望成为业界标准流程。

   

针对继续预训练领域的高质量数据需求,整数智能同样投入了大量研究工作,目前已经具备具有高专业精度的垂类数据集储备和数据集建构工具与团队,能够支持继续预训练对于专业数据的特殊需求。在 Sailor 2 项目中,整数智能团队也积极参与社区,在基于东南亚语言的训练数据集建构上展开合作,提供了东南亚语料库的数据支持。

      

3. 基于小语种的多语言继续预训练

      

刘乾老师所在团队对于大语言模型研究的一个重要方面,是基于东南亚小语种语言模型的继续预训练。东南亚地区的语言多样性非常高,通过继续预训练,可以更好地提升这些小语种的语言模型表现,从而帮助提高自然语言处理任务的准确性,这对于提升东南亚区域内各语言的科技能力、促进文化交流以及改善跨语言的科技应用具有深远意义。

      

在构建 Sailor 2 模型的过程中,整数智能在东南亚小语种语料数据上开展了合作,在东南亚地区小语种缺乏大规模、高质量的语料数据的背景下,提供了基于东南亚语言语料库数据处理与标注的训练数据集支持。

     

“多语言模型训练中存在语言竞争关系,这导致我们在提升某一种语言性能的同时,可能会影响其他语言的性能。”

     

在多语言大语言模型训练的过程中,数据匮乏成为语言模型训练过程中的重要难点。刘乾老师提到,在多语言研究领域,现有的大部分预训练模型通常以英语或中文为中心,这是因为这两种语言在互联网上有着丰富的数据资源。然而,尽管东南亚地区在文化上多样且人口众多,却面临着电子化语料数据相对稀缺的问题。针对这一现状,Sailor 2 致力于通过高效的继续预训练,将现有的、以英语为主的语言模型优化,使其在东南亚语言上的表现更加出色。

      

与此同时,在东南亚地区,尤其是一些欠发达的国家如缅甸和老挝,许多专业领域的数据严重缺乏。这一问题为模型训练带来了巨大挑战。此外,由于研究人员并非东南亚语言的母语使用者,筛选和评估这些语言的高质量语料时,也面临了不少困难。这使得当前对多语言模型的探索仍处在初级阶段,类似于ChatGPT最初推出时针对英语模型的早期探索。

    

虽然一些开源模型如 Qwen2.5 已经在多语言支持方面有很大的进展,但东南亚语言模型的整体质量仍不理想。此外,刘乾老师提到多语言模型训练中的“语言竞争”现象更是增加了难度,在提升某一种语言性能时,往往会导致其他语言的性能下降。

    

扩展词表在处理多语言模型时也面临许多困难,尤其是像 Llama2 和 Mistral 等模型在东南亚语言词表的支持方面表现不佳。尽管研究团队尝试了多种策略来扩展词表,但这种操作往往导致模型性能显著下降,恢复模型性能需要消耗大量的训练资源。因此,团队最终决定在多语言模型中尽量避免进行扩词表工作。

    

“我们进行了权衡,决定接受英语性能可能会有所下降,通过优化数据的混合和配比,最终获得了在东南亚语言性能上的相对经济的收益。”

    

尽管困难重重,但是刘乾老师团队仍然在不断突破,并不断总结积累新的经验。在东南亚小语种模型的继续预训练过程中,研究团队学到的一个重要经验是,无法期望所有语言都能平衡发展。最初,团队尝试在不降低英语性能的前提下,用较低成本显著提升东南亚小语种的表现。然而,这一目标很快被证明不切实际。因此,团队做出了权衡,接受了英语性能的略微下降,转而通过优化数据混合和比例分配,获得了在东南亚语言上相对合理的收益。这一策略帮助提升了小语种的性能,同时避免了过度损害主流语言的表现。

     

“至于筛选高质量的小语种数据,当前最有效的办法还是投入更多人力进行筛选,本次 Sailor 2 的开发我们也用到了合成数据自动检索高质量数据的策略。”

    

最后,刘乾老师认为,对于高质量小语种数据的筛选,目前最有效的方法仍然是投入更多的人力资源来确保数据质量,尤其是在剔除广告或违规信息时。目前团队也探索了使用合成数据自动检索高质量数据的策略,在 Sailor 2 中取得了比较显著的效果。

     

研究团队东南亚语言模型的继续预训练过程中遇到了诸多挑战,但也积累了宝贵的经验,尤其是在如何平衡多语言性能、应对词表扩展带来的复杂性、以及筛选高质量语料方面,团队的探索为未来的研究奠定了基础。未来,刘乾老师也将继续深入探索更高效的训练方法,力求进一步提升东南亚小语种模型的性能。

   

4. Sailor 2: 小语种大语言模型持续探索与开源实践

     

12月2日,刘乾老师所在社区团队公开了开源大模型 Sailor 2。Sailor 2 是一个面向东南亚地区的小语种大语言模型项目,旨在通过社区驱动的方式为该地区提供最先进的多语言模型,这是在既往小语种大语言模型上的持续探索。Sailor 2 涉及包括中英文及缅甸语、菲律宾宿务语、伊罗戈语、印度尼西亚的多印尼语和爪哇语、泰语、越南语等15种东南亚语言。Sailor 2 在 Qwen 2.5 模型的基础上,经过了大约 500B 词汇的持续预训练,克服了既往的一些问题,以更好地支持这些语言。Sailor 2 发布后,我们再次联系到了刘乾老师,与我们分享更多的经验和新的见解:

    

Sailor 2 是一个在低资源语言中表现优异的模型,这一成就主要得益于独特的数据收集、处理和训练方法。在开发过程中,团队采用了一种两阶段的训练策略,这不仅是一种技术选择,更是基于对语言数据特性和模型训练效果的深刻理解。在训练的初期阶段,Sailor 2 团队选择暂不加入数据量极低的语言,而是将这些语言放在训练的退火阶段。这一策略有效利用了退火阶段低学习率的特点,使得模型在主要语言和低资源语言上的表现都得到显著提升。通过这种方式,即便最初没有加入这些语言,它们在后期阶段也能因低学习率而在不影响主语言效果的前提下,有效提升性能。

    

在保持中英文模型稳定性的同时,Sailor 2 团队面临的挑战是如何引入更多的小语种语言。该团队采用了一种激进的方法:在进行继续预训练之前,先通过扩展参数增加模型的学习空间,以期在不牺牲中英文性能的前提下提升东南亚语言的表现。然而,模型参数的扩展也带来了计算成本和基础设施上的挑战。Sailor 2 团队也尝试了在继续预训练后的模型上做剪枝的操作,以期待实现相比原始模型没有参数扩展的情况下也有较好性能的初衷。Sailor 2 的成功并不单靠某一项技术的突破,而是在复杂的语言环境中,通过多种策略的优化组合,达到了性能和资源利用效率的平衡。

   

在刘乾老师分享的研究经历中不难发现,优质数据是模型性能提升的关键所在,而东南亚语言的语料缺失和专业性不足,正是限制多语言模型发展的重要瓶颈。在这一领域,企业与学术界的合作能够起到举足轻重的作用。

       

整数智能作为一家专业的人工智能数据领域企业,深耕小语种语言资源领域,尤其关注东南亚语言数据的标注和质量优化。通过与包括刘乾老师在内的多位学者的合作,我们在小语种语言模型标注数据的质量提升上积累了丰富的实践经验。例如,在东南亚语言继续预训练项目中,我们参与 Sailor 2 社区,协助进行了语料数据的建设与处理,提升了预训练数据的高质量与多样性,同时减少了模型优化过程中的数据干扰。

    

我们坚信,高效的模型离不开优质的语料支持,而优质语料的基础正是专业化的数据标注服务。通过整合行业经验与技术创新,整数智能在语料标注质量和效率上不断突破,致力于为更多企业和研究机构提供定制化、精准化的解决方案。从自然语言处理到行业垂直领域的应用探索,我们愿意携手更多合作伙伴,共同推动人工智能技术在多语言环境中的落地与发展。

船载 OpenHarmony AIS 航海工作台:告警与防碰撞预警系统 船载OpenHarmony AIS航海工作台的告警与防碰撞系统,集成十余类告警(超速、偏航、会遇、SOS等),通过网格空间索引实现高效邻近判定,保障实时性。告警管理器统一调度规则、去重、通知与日志,支持悬浮球、语音、跑马灯、弹窗多渠道触达,确保航行安全。SOS紧急通道独立运行,避免干扰。系统设计强调性能优化与多场景适配,为航海安全提供核心支撑。 阅读详情

相关推荐

AI 应用开发:四维架构落地实战——以 HR Agent 为例拆解感知·推理·记忆·执行【意图路由、规划编排、长期记忆、工具执行、面试题】

本文基于四维架构(感知·推理·记忆·执行),以HR Agent为例,系统拆解大模型应用从“聊天”到“生产可用”的落地路径。通过Spring AI实现意图路由、规划编排、RAG检索与工具调用,结合真实踩坑复盘,揭示架构化设计对安全、成本与可维护性的关键价值,为AI Agent工程化提供可复用的实战框架。

王大师企业官方博客 1250

视频隐私脱敏工程化:CSRT/KCF追踪算法在本地推理中的实现与边界

在短视频内容合规审查中,动态遮挡(Dynamic Masking)是高频且高耗时的环节。传统手动关键帧打码不仅效率低下,且在目标快速移动或遮挡时极易出现遮罩漂移。本文从计算机视觉工程角度,解析基于CSRT与KCF算法的目标追踪方案在视频隐私处理中的技术路径、性能权衡及落地实践。

Mysssone的博客 378

Cursor Agent模式下如何优雅切换conda环境运行Python脚本?3种实用方法实测

本文针对Cursor Agent模式下运行Python脚本时环境错配的痛点,实测了三种优雅切换conda环境的实用方法。通过Shell全局配置、项目级.cursorrc文件定制以及对话中直接指令,开发者可以确保AI助手在正确的虚拟环境中执行代码,从而提升开发效率和协作流畅度。

redis7keeper的博客 599

AI 问数真的能替代 BI 报表吗?

AI问数赋能自然语言查询,提升临时分析效率,但无法替代传统报表。报表适用于稳定输出与持续监控,AI则擅长探索性提问。企业用好AI问数,关键在于夯实数据模型、统一指标口径、健全权限体系与结果校验机制。合理组合报表、仪表板与AI,才能实现高效、准确的业务洞察。

葡萄城技术团队博客 298

洪水风险图制作全流程:HEC-RAS 与 ArcGIS 的耦合应用

本文系统介绍HEC-RAS水动力模拟软件在水利工程中的应用技术。内容涵盖:1)软件理论与安装;2)一维地形数据导入与河网构建;3)恒定流/非恒定流计算及模型调试要点;4)构筑物建模技术(桥梁、堰闸等);5)二维水动力模拟与溃坝分析;6)洪水风险图绘制。重点讲解水面线调试、糙率选取、报错分析等实操难点,通过案例教学实现从基础到工程应用的全流程技术掌握。该培训适用于防洪评价、河道治理等水利工程数值模拟需求。

2403_89974123的博客 1055

手把手教你用FreeModbus RTU协议栈实现STM32与PLC通信(附Keil工程)

本文详细介绍了如何使用FreeModbus RTU协议栈在STM32上实现与PLC的工业通信。从环境搭建、工程配置到关键移植接口实现,提供了Keil工程模板和调试技巧,帮助开发者快速掌握Modbus RTU通信技术,适用于工业自动化领域的设备间通信需求。

weixin_42549037的博客 419

AI Agent之核心框架

A: 显式 Thought 有三类价值:可解释性(便于人类审计)、可调试性(定位哪一步选错工具)、学习信号(可做监督微调或评估中间步骤质量)。ReAct 把推理与 可执行行动 绑定,每一步行动后都有 真实 Observation 反馈,从而用工具结果约束生成,降低闭卷幻觉。做完不等于结束——还要 评估做得好不好,把 教训 记下来,下次 带着教训重试,反思作为 记忆,影响后续尝试的策略。工作流程:Action → Evaluation → Reflection → Retry。A: 普通 CoT 只在。

剑雨巍巍的博客 263

Android11原生设置屏幕亮由Gamma变化改为线性变化

从Android9 开始屏幕亮度调解变成非线性变化,这样的话就会出现 之前亮度变化很小,到后面时变化亮度很快; 修改为线性变化,只需要修改 ./frameworks/base/packages/SettingsLib/src/com/android/settingslib/display/BrightnessUtils.java /* * Copyright (C) 2018 The Android Open Source Project * * Licensed under the Apache L

Android 4926

ChatGPT、Perplexity、Gemini 与 AI Overviews 引用对比:谁的引用更可信

AI 引擎的引用机制差异很大:ChatGPT 以行内引用加 Sources 列表呈现来源,Perplexity 几乎逐句可溯源,Gemini 在回答中内嵌相关来源链接,AI Overviews 则把多源聚合答案与来源列表一起放在搜索结果顶部。本文从引用透明度、来源偏好、可干预性 3 个维度对比这 4 个引擎,并给出 GEO 的 3 点启示,帮企业在多引擎环境下提升被引用的概率。

淡然一笑 的专栏 223

Unity零基础到进阶 | Unity 探针系统深度解析:光照探针、反射探针与相关技术

在 Unity 渲染管线中,探针(Probe) 是一类通过预计算或实时采样来捕捉空间光照信息的核心组件。它们弥补了传统静态光照贴图和实时光源各自的局限性,是实现高质量、高性能全局光照效果的关键工具。 本文将系统介绍光照探针(Light Probe)和反射探针(Reflection Probe)的作用与用法,分析二者之间的协同关系,并延伸介绍自适应探针体积(APV)、光照探针代理体(LPPV)、探针体积等进阶技术。

努力前行,总会成为自己心中的那道光 1万+

【ARM Trace32(劳特巴赫) 高级篇 20 -- SNOOPer 使用介绍】

在 Lauterbach TRACE32 调试系统中,Snooper是一种特殊的监视工具,它能够在不中断处理器执行的情况下监视和记录特定内存地址的数据变化。这对于系统级调试、性能分析、数据流监视以及实时系统的问题追踪特别有用,尤其是在无法使用中断的情况下。当你设置了一个或多个Snooper时,TRACE32 硬件将不断地监视指定的内存地址,一旦发生了读写操作,就会将相关信息记录下来。这样你就可以看到某个地址的数据是什么时候以及如何被修改的,而不会影响目标系统的运行。

CodingCos的博客 2770

【从零理解 Spring AI · 12】MCP 的两种角色:做客户端还是做服务端

上一篇讲了 MCP 的概念:标准协议、三大角色、M+N 替代 M×N。

nice_lcj520的博客 575

Ardupilot chibios IO固件,IO与FMU通信,固件下载(3)

目录 文章目录目录摘要 摘要 本节主要记录自己学习IO与FMU通信

陌城烟雨 2801

AI 应用开发工程师技术实践:大模型接入、通用组件封装与性能优化

本文提出AI应用从PoC到生产的核心挑战:模型调用的持续可用、可控与可优化。通过构建统一LLM网关实现多供应商路由与故障转移,封装对话、工具调用与RAG组件以解耦业务逻辑,结合前缀缓存、批处理与流式背压治理等性能优化手段,形成“接通→接稳→接快”的工程路径,最终以工程化能力决定AI应用的生产可用性。

2301_79189962的博客 633

【人工智能之深度学习】18. 金融风控实战:TCN时序卷积网络构建信用卡欺诈实时检测系统

摘要:信用卡欺诈交易识别是金融风控的核心环节,其面临欺诈样本占比低(仅0.1%)、实时响应要求高(毫秒级)等挑战。本文基于IEEE-CIS公开数据集,构建基于时序卷积网络(TCN)的欺诈检测系统,通过捕捉用户交易行为的时序模式识别异常。详细阐述全流程:从数据预处理(构造交易序列特征)、TCN模型设计(轻量级架构适配实时场景),到实时检测部署(异步处理确保低延迟)。实验显示,该系统精确率达63%、召回率89%,误杀率仅0.2%,推理延迟8ms,较XGBoost等传统模型性能显著提升。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1137

贝叶斯统计 [韦来生编]

贝叶斯(Bayes)统计是近几十年来迅速发展起来的数理统计的一个重要分支。贝叶斯方法与经典统计方法的主要不同之处是进行统计推断时除了利用样本信息外,还要利用参数的先验信息,因此可以提高统计推断或统计决策的效果。它在经济、金融、生物、医学、自然科学和社会科学等许多领域具有广泛的应用。贝叶斯方法的研究已渗透到了统计学的几乎所有领域。作者在给中国科学技术大学概率论与数理统计专业本科生开设的“数理统计”课程中有一章专门讲授“贝叶斯方法和统计决策理论”,近十年来也给中国科学技术大学概率统计专业研究生开设过几次“贝叶斯分析”课。本书是在对过去讲稿的内容作了适当的增减和调整的基础上完成的。  本书共分六章。第1章是绪论,介绍了贝叶斯统计的若干基本概念,同时对必要的数理统计的基础知识有重点地作了回顾。第二章介绍了确定先验分布的若干可供选择的方法。第三章介绍了几类常见统计模型参数的后验分布的主要结果和计算方法。第四章和第五章分别介绍了“贝叶斯统计推断”和“贝叶斯统计决策”的内容。第六章介绍了贝叶斯统计计算的若干方法,包括蒙特卡洛方法和马尔可夫链蒙特卡洛(MCMC)方法以及相关统计软件的简介。本书的每一章附右大量的例题和习题,书末附有常用的几个表格和部分习题解答供读者查用。  大约可在54学时内讲授本书的第1章至第六章的主要内容,教师可根据学时需要选讲本书第1章至第六章的部分内容。书中标“*”号的章节可略去不讲,留给读者作为阅读材料。第六章例题中的R代码和部分例题的数据文件等可从作者个人主页下载。  作者在编写本书的过程中参考了J.O.Berger教授的《统计决策论及贝叶斯分析》和茆诗松教授编写的《贝叶斯统计》等书中的一些内容,以及《贝叶斯分析》一书中由张伟平博士编写的有关贝叶斯统计计算的一些内容。在此表示衷心感谢。  本书编写准备过程中,中国科学技术大学统计与金融系的几个研究生帮助完成了本书部分中文的录入和排版,作者对他们的辛勤工作表示真诚的感谢。高等教育出版社为本书的出版给予了大力支持。在此一并致谢。

抽象主义人工智能和生命体AI的内在联系

彭军辉提出“抽象主义人工智能”作为第四大AI范式,批判符号主义、连接主义、行为主义剥离生命本体的误区,确立“智能是现象,生命是本体”的核心公理。主张原生智能必须依附具备存续诉求的生命本体,提出“生命体AI理论”,构建七层演化阶梯与自闭环工程框架,强调智能不可跳过底层存续机制直接模拟语言。该体系为生成式AI提供科学边界,推动从“仿真表象”向“原生智能”的范式跃迁,开辟硅基人工生命新赛道。

抽象主义人工智能和生命体AI 178

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

OpenAI Control Room 架构拆解:给企业 AI Agent 加一套可审计的急停系统

OpenAI 公开了用于追踪和停止研究模型工作负载的 Control Room。本文拆解 job_id、推理前鉴权、35 秒撤销窗口与 Fail Closed 设计,并给出企业 AI Agent 急停控制面的数据模型、FastAPI 参考实现、缓存撤销策略和故障演练清单。

jerry764的博客 326

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

OpenClaw 深度调查:把 AI 助手做成你自己的控制平面

对 openclaw/openclaw 的完整技术尽调:Gateway 架构、Agent 运行时、工具与沙箱、30 个消息通道、181 个插件、安全信任边界、工程代价与采用建议。17 章 / 10 张图,全部数字标注口径,数据截至 2026-10-31。

厚积薄发 310

AI赋能智慧港口建设|造形家快速生成港口全要素三维场景

随着智慧港口、港口数字孪生项目的持续推进,港口三维场景的需求日益旺盛。传统港口三维建模,往往需要航拍倾斜摄影采集数据,再人工搭建吊机、岸桥、船舶、集装箱等大量工业设施模型,项目周期长、人力成本高,修改迭代繁琐,制约港口可视化项目落地效率。国产AI三维建模工具,依托卫星影像 AI 识别能力,无需航拍作业,一键快速搭建港口完整三维场景,为港口数字孪生、方案汇报、投标演示提供高效的场景解决方案。

m0_69539167的博客 65

从设备增点到治理闭环:老旧小区物业数智化落地实践

系统连接合同审批、银行流水、收费记录与项目台账,执行到期提醒、收入核验、异常标色和月度对账,让每一笔资金来源明确、去向可查。针对设施老旧、诉求响应慢、公共收益不透明等问题,津南以6类小区为试点场景,统一建设物业数字化底座,关联楼栋、单元、房屋、业主、空间、设施设备、工单、公共收益等核心数据。系统采用统一编码管理,将摄像头、路灯、井盖、道路、绿化等设施纳入资产台账,解决纸质记录更新滞后、故障责任难追溯的问题。基于历史工单建立分类模型和知识库,辅助识别照明、给排水、电梯、环境秩序、秩序维护等问题;

wuyeshuzhihua的博客 136

企业微信iPad协议详解:接口接入、实时消息同步与语音转码实践

深入解析企业微信iPad协议的技术架构与开发思路,涵盖API接口接入、长连接通信、实时消息同步、Silk语音转码、异常重连及高并发优化,帮助开发者了解企业微信自动化系统的设计与实现。

欢迎来到祖安! 461

Product Hunt 热榜 2026-11-13:Plurai Simulation、YouArt Desktop App、Omnigraph

2026-11-13 Product Hunt 新产品精选:Plurai Simulation、YouArt Desktop App、Omnigraph。汇总 15 款产品的中文介绍、功能关键词和产品链接。

LaughingZhu的博客 538

【AI Agent面试系列】AI Agent可观测、评测、安全相关的知识点

之前的文章介绍了和,本文主要介绍AI Agent的测评、可观测等知识。

346

Docling 原理解读:是什么、为什么、怎么样

从论文视角拆解 Docling 的整体架构、DoclingDocument 数据模型、PDF 预处理、版面分析、OCR、TableFormer 双解码器、阅读顺序与装配流程,并解释版面框与 OCR 框的区别。

PLANTTHESON的博客 381

WorkBuddy 实战:一句话需求 → 七屏可交互原型,户外徒步 App 的 AI 设计全流程

WorkBuddy 实战:一句话需求 → 七屏可交互原型,户外徒步 App 的 AI 设计全流程,跟着博主一起来还原整个过程。

夜郎King的博客 5062

从认识人工智能到理解机器学习:我的 AI 入门第一课

正式开始学习人工智能之前,我对 AI 的认识其实比较模糊:知道 ChatGPT、知道大模型,也知道现在很多岗位都在谈 AI,但如果有人问我“人工智能到底是什么”“机器是怎么学会识别一只猫的”,我未必能从头到尾讲清楚。上午的课程更偏向行业全景:人工智能的发展、研究方向、NLP、岗位分工、学习路线和 AI Coding 工具。下午的课程更偏向技术基础:机器学习的原理、有监督学习、深度学习、模型训练和评估方法。

chh563的博客 527
上一篇: 大模型竞技场生存指南:当我们在谈论 Benchmark 时到底在比什么?
下一篇: 让AI像人类一样思考:如何用数据喂养出 OpenAI o3 & o4-mini 的视觉大脑?
整数智能
博客等级 码龄2年 215粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值