LZ AI NOTE · AI 公众号与知识站
AiNotes
AiNotes
AI 的摘要与思考
AI Coding Agent 的 IR 是什么
(这是所有 agent 共享的世界,或者 State,或者是 Agent 直接沟通的契约)
这可能不是一个 Agent 问题,而是一个 Computer Science 问题。 如果把历史串起来,会发现每一次大的工程能力提升,都伴随着一种新的"中间表示"(Representation)出现:
- 编译器有 IR,所以不同语言可以共享优化能力。
- 数据库有 关系模型,所以不同应用可以共享数据。
- 浏览器有 DOM,所以 HTML、CSS、JavaScript 可以协同工作。
- Kubernetes 有 Resource Object,所以调度器、控制器、Operator 能协同工作。 而 AI Software Engineering 今天可能正处于一个类似的阶段。 我们已经有了很强的"执行器"(Claude Code、Codex、Cursor),却还没有一个大家都认可的Engineering Representation。 所以你会看到大家都在卷 Agent、卷 Prompt、卷 MCP,但这些更像是在优化"执行器";真正缺失的,是那个让所有执行器都能理解同一种工程世界的表示层。 我不知道最终答案是什么,也不认为目前已经有成熟方案。但如果未来五年这个领域出现一次范式变化,我反而会期待它首先出现在Representation层,而不是又一个更大的模型。因为没有稳定的表示,再强的模型也只能不断从 PRD、代码、文档和聊天记录里重新拼凑世界。
关于 AI 的 Review 深度
起初:Review 不够深入。 大家提议:需要更深入一点 添加一条优化 Prompt:深入分析潜在问题。
后来:AI 开始分析很多不存在的问题。 大家提议:不要过度推测。 调价一条优化 Prompt:不要臆测。
于是 AI 又开始保守。 大家又提议:应该适当分析潜在风险。
最后又提议:多分析,但不要猜。
那这个该怎么解?
当 Prompt 开始同时描述多个互相制约的目标(如"深入但别猜"“全面但别啰嗦”),说明问题已经从 Prompt Engineering 演变成了系统设计问题。
Agentic coding and persistent returns to expertise
研究发现,用户在具体任务上的专业程度越高,Claude 每次指令后能完成的工作越多,成功率也越高。 文章举的意思是:一个不会 Python 的会计,如果非常清楚对账规则,也可能很好地指挥 Claude 写出有用脚本。
得出一个众所周知的结论:AI 编程工具可能会替代一部分“纯实现型”工作,但不会替代领域判断。未来更有价值的可能是:清楚知道问题是什么、标准是什么、如何判断结果对不对的人。
Paving the way for agents in biology
文章真正想说的是基础设施问题
团队开发了 gget virus,它把 NCBI Virus 复杂的网页检索逻辑封装成可复现、可审计、机器可调用的工具。 加上这个工具后,所有智能体准确率都超过 90%,最高到 99.7%,多次运行的波动也基本消失。模型之间差距也明显缩小。 要让 AI 真正参与科学发现,底层的数据访问、标识符、schema、元数据、坐标系统、过滤逻辑必须更可靠、更标准、更适合 agent 调用。
其他行业也是如此,比如 AI Coding Agent 想要做好,从需求文档开始就得规范化。
指令风格
OpenAI和Anthropic两家的指令风格取向其实不太一样。OpenAI更多在告诉AI「应该做什么」,Anthropic更多在告诉AI「不能做什么」。
我个人更赞同Anthropic这条路。原因很简单——人对自己需要什么往往说不清,对自己不接受什么倒是清楚得多。把「红线」讲明白,剩下的留给模型发挥,既给了空间,也守住了底线。可能这也是为什么不少人觉得Claude比ChatGPT「更有人味」——不一定是模型本身的差异,而是规则风格让模型保留了更多发挥空间。
- 摘要自 harness guide
Token 帕金森定律 - 大模型时代的组织行为学
经典的帕金森定律是“工作会自动膨胀,占满所有可用的时间”
洞察一:算力时代的“新膨胀定律”
核心理念: 在AI协作中,任何一项任务的算力消耗(Token/推理时间/模型调用),都会自发膨胀,直到耗尽所有已被分配的算力预算——无论这个预算看起来多充裕。
一句话版: 你以为给了员工无限的Token,换来的会是效率和深度;实际上,你只是把“摸鱼”变成了“摸算力”。
洞察二:平庸的“模型升级”
核心理念: 经典定律说“不称职的官员会找两个更平庸的助手”。今天,这变成了“一个简单的需求,会被拆解成多个高配模型参与的多智能体协作流程”。
现象描述:
本可以用轻量模型一句话搞定的总结 → 变成了用最强模型先总结、再让另一个模型“挑战”、再让第三个模型“美化”的算力黑洞 最终输出可能和最初版本毫无差异,但消耗的Token翻了几十倍
洞察三:算力充裕,反而杀死了“用脑子”
核心理念: 帕金森定律真正可怕的,不是时间或算力被消耗——而是“优化”和“精简”的动机,在资源无限供给的环境中被系统性地消灭了。
深层矛盾: 当Token被视为免费的、无限的资源时——
没人会去优化提示词 没人会去选性价比最高的模型 没人会问“这真的需要AI来做吗”
节约不会带来奖励,只会让下次的预算变少。 而挥霍,却能证明你在“充分使用先进生产力”。
这就是帕金森定律在数字时代的冷酷翻版:不是算力不够用,而是“用脑子省算力”这件事,在组织行为学上已经死了。
Natural Language Autoencoders
它想解决一个问题:我们现在不只想看模型“说了什么”,还想知道它在输出前内部大概“想到了什么”。
做法也挺有意思:把模型中间层 activation 翻译成自然语言,再看这段话能不能还原回原 activation。相比之前 SAE / circuit tracing 还要研究员看 feature 和 graph 再解释,NLA 更像是让内部状态直接用人话暴露出来。
这里的输入不是模型参数,也不是最终预测词的 embedding,而是某个 token 位置在某一层的 hidden state / residual stream activation。可以理解成“模型准备预测下一个 token 前,某一层里的上下文状态”。例如 The capital of France is 要预测 Paris,NLA 读的不是 Paris 这个词本身,而是最后一个输入位置在中间层的向量;这个向量里可能已经包含“法国首都”“候选答案 Paris”等信息。
SAE(Sparse Autoencoder,稀疏自编码器)和 circuit tracing 之前也能解释模型内部,但它们更像是把 activation 拆成 feature、graph,再由研究员命名和验证。NLA 的变化是把自然语言放进训练闭环:activation -> 文字解释 -> 重建 activation。如果文字能帮助重建原 activation,说明这段解释至少保留了一部分内部状态信息。
但 NLA 也不是绝对更可靠。SAE / circuit tracing 的优势是更可验证,尤其是可以做 ablation、activation patching、feature steering;NLA 的优势是更直接、更快暴露主题,但解释可能 hallucinate,需要再用 SAE、circuit tracing 或行为实验交叉验证。
所以 NLA 没有解决“模型一换、解释工具就要重训/校准”的问题,也没有完整读取整个推理过程。它解决的主要是“内部状态太难读、人工解释太慢”的问题:把某一层、某个 token 的局部状态先翻译成人能快速扫描的线索。
我觉得最值得看的点是:它可能帮助发现模型没说出口的东西,比如“我知道自己正在被评测”。这对后续 agent safety / eval 设计会挺有参考价值。
Agent Skill 沉淀的理解
从 Agent 运行过程沉淀 Skill 的本质,是从概率性的探索轨迹中,蒸馏出可复用的确定性经验模式,将偶然的成功转化为必然的能力。
Gemini 图像分割任务为什么建议关闭 thinking?
“thinking”优化的是语言推理路径,不是坐标回归路径;box 圈选依赖的是视觉 grounding,而普通 thinking 会把原本应直接从视觉特征到坐标的任务,改造成‘先语言解释,再由解释推坐标’的间接任务。这个中间层会丢失空间精度。 也就是 box 圈选需要的是低层视觉空间对齐;thinking 强化的是高层语言语义推理。两者目标函数不完全一致,所以 thinking 可能把定位任务从“看图定框”带偏成“按解释猜框”。导致精度变低。
模型越强,越不需要 ai code review?
AI 越强,代码审查越不能省——关于 AI Code Review 的四个核心认知
-
局部正确 ≠ 系统安全。 模型能写出语法完美的代码片段,但真实工程的脆弱点往往藏在跨模块交互、边界遗漏和回归风险中。AI Code Review 的核心价值,是把审查视角从“这段代码对不对”升级为“这段代码放进系统里会不会出事”。
-
同模型审查依然有效,甚至更关键。 编码和审查是两种认知任务。当审查 Agent 拥有独立的上下文窗口、不共享生成阶段的推理链路时,它更容易发现生成者因注意力偏差而忽略的问题——本质上是通过上下文独立性来降低同源偏差。
-
代码产量正在指数级膨胀,人工审查已经崩了。 AI 编程工具让单月代码产量从 2.5 万行飙升至 25 万行,传统逐行精审模式彻底失效。没有 AI Code Review 作为第一道质量闸门,大量代码将带着未经验证的风险直接进入主干。
-
范式正在转移:从“事后审查”到“事前治理”。 未来的质量控制将被前移到代码生成之前——人类定义规格与护栏,AI 负责生成,独立 AI 审查 Agent 进行对抗性验证。人类不再逐行看代码,而是聚焦于“我们是否在解决正确的问题”。
结论: 模型能力越强,越需要一个独立的、专门用于验证的 AI 审查环节。生成和验证,从来都应该是分离的。
AI 应用的风险分层自治
一个很重要的产品洞察:成熟 AI 应用往往不是简单地“全自动”或“全人工审核”,而是采用 低风险自动接受,中高风险进入审核 的分层自治策略。
核心原因是 AI 产品同时面对两个目标:
- 效率:低风险、可逆、影响范围小的任务应该尽量自动完成,否则 AI 只会变成另一个需要人操作的界面。
- 可靠性:中高风险、不可逆、影响钱/健康/法律/生产系统/组织决策的任务,必须保留人类判断、授权和追责。
更准确的判断公式:
风险 ≈ 出错概率 × 影响范围 × 不可逆性 × 权限级别 × 合规/声誉成本
因此,风险分层不应该只看模型置信度,而要看动作本身的后果。
在知识服务里的体现
知识服务领域尤其适合这种策略,因为知识服务的风险不只是“操作失败”,而是错误知识会影响人的判断。
- 低风险知识:自动整理、自动回答、自动沉淀。例如办公地址、基础流程、普通 FAQ、公开产品说明。
- 中风险知识:AI 生成结构化结论,但需要引用来源、标注适用范围,并进入人工快速审核。例如客服 SOP、技术排障、价格政策、内部流程边界。
- 高风险知识:AI 只做检索、摘要、证据整理和风险提示,不直接替人下最终结论。例如法律、财税、医疗、合规、安全、生产事故处理。
知识服务的关键不是让 AI “记住更多内容”,而是让 AI 在正确权限、正确时间、正确风险等级下,找到可信证据并生成可追溯答案。
对知识库生成的启发
知识库不应该只是“把文档切块丢进向量库”,而应该生成一套可追溯、可审核、可更新的知识资产。
合理的知识库可以分层:
原始资料层:制度、合同、文档、网页、工单、会议纪要
证据切片层:带来源、页码、时间、作者的可检索片段
结构知识层:规则、流程、定义、FAQ、决策条件
答案模板层:面向用户的标准回答、操作指引
策略层:哪些问题能自动答,哪些必须审核
每条结构化知识至少应该带上:
source:来源
owner:负责人
updated_at:更新时间
effective_at / expired_at:生效与失效时间
risk_level:风险等级
review_status:审核状态
permission:权限范围
对应发布策略:
- 低风险:AI 自动抽取、自动质检、自动发布。
- 中风险:AI 抽取与结构化,人类审核后发布。
- 高风险:专家审核、版本管理、强制引用来源。
- 极高风险:不进入自动回答,只作为人工辅助材料。
这个原则本质上是 risk-based autonomy:让 AI 在低风险区域释放速度,在高风险区域保留人类判断权。
可读性训练
什么是 Legibility Training?
字面意思"可读性训练"。做法是:在训练 AAR 时,除了奖励 PGR,还额外奖励"方法可解释"。比如:
- 方法代码行数不能超过 N
- 方法必须能用一段自然语言描述清楚
- 人类评分员能理解方法的原理
为什么这两者矛盾?
"有效性"和"可读性"往往是负相关的:
- 越简单的方法,人越容易理解,但搜索空间小、上限低
- 越复杂的组合,越可能触及高分,但人越看不懂
Anthropic 的立场是:“宁可牺牲一些性能,也要保持可解释性”,但在竞争压力下这种立场能不能坚持得住,是个悬而未决的问题。
Karpathy 的 LLM Wiki:预编译知识库模式
Karpathy 于 2026 年 4 月提出 LLM Wiki 模式:不再让 LLM 在每次查询时从原始文档碎片中重新检索和综合(传统 RAG),而是让 LLM 在摄入(ingest)阶段就增量构建和维护一个持久化的 wiki——结构化的、互相链接的 Markdown 文件集合。知识被编译一次、持续维护,而非每次查询都重新推导。
三层架构
- Raw Sources:不可变的原始文档(论文、文章、数据),LLM 只读不写
- Wiki:LLM 生成维护的 Markdown 文件(摘要、实体页、概念页、对比、综述),LLM 拥有完全写入权
- Schema:CLAUDE.md / AGENTS.md 风格的规约文件,定义 wiki 结构规范和工作流,人与 LLM 共同演化
三个核心操作
- Ingest:摄入新源文档 → LLM 阅读理解 → 写摘要页 → 更新实体页/概念页 → 标注矛盾 → 更新 index.md(单次 ingest 可能触及 10-15 个 wiki 页面)
- Query:读 index.md 定位相关页面 → 读取已编译的 wiki 内容 → 综合回答(跨文档关联在 ingest 时已建立,无需每次重新发现)
- Lint:定期健康检查——找矛盾、过时信息、孤立页面、缺失概念页、缺失交叉引用
核心启发
- "编译"vs"检索"的思维转换:传统 RAG 是惰性求值(query time retrieve + synthesize),LLM Wiki 是预计算(ingest time 完成 synthesis),类似物化视图 vs 每次 join 查询的区别。对知识密集、需跨文档综合的场景效率更高。
- 查询结果反哺知识库:好的问答结果可以沉淀回 wiki 成为新页面,形成知识复利的正循环。
- Lint = 知识库的代码质量检查:把软件工程的 lint 理念引入知识管理,定期发现矛盾、过时、孤立等问题。
- Schema 即 prompt engineering 的制度化:将 LLM 从"通用聊天机器人"约束为"有纪律的 wiki 维护员"。
“杀死 RAG”?本质是 RAG 的进化形态
LLM Wiki 并没有消除 Retrieval——wiki 规模增长后,query 阶段仍需通过 index.md 或搜索引擎(如 qmd)定位相关页面。本质区别是检索对象从原始文档 chunks 升级为 LLM 编译后的知识制品,和微软 GraphRAG(先提取实体构建知识图谱再检索)思路高度一致。更准确的描述是:预编译知识层 + 对编译产物的 RAG。
方案的核心问题
- 错误固化与传播:传统 RAG 检索的是原始文档(即使检索不完美,chunk 本身是真实的)。LLM Wiki 检索的是 LLM 编译产物——如果编译阶段理解错误、遗漏、过度总结,错误会固化在 wiki 中,后续每次查询都在错误基础上回答。更危险的是错误会传播放大:第 N 次 ingest 基于之前的错误摘要做出错误的交叉引用,信息溯源链条断裂。传统 RAG 的"无状态"反而是安全特性——每次从源头重新来,不积累 LLM 的理解偏差。
- 成本随规模递增:传统 RAG 的 ingest 成本几乎恒定(切 chunk + embedding)。LLM Wiki 的每次 ingest 需要 LLM 读新文档 + 读 index + 读 10-15 个已有页面 + 逐个改写,可能消耗数万到十几万 token,且成本随 wiki 规模增长而递增。
- 一致性维护是指数级难题:200 个 wiki 页面时,任何新事实理论上可能影响其中任意多个页面。LLM 无法保证找到所有需要更新的页面,本质上是分布式系统的一致性问题——只不过"分布式节点"换成了 Markdown 文件。Lint 操作本身也受限于 context window 和 LLM 注意力。
- 不可审计、不可回溯:传统 RAG 可以看到"答案基于哪几个原始 chunk",可追溯验证。LLM Wiki 的答案基于被多轮修改过的 wiki 页面,原始信息经过多轮"传话",除非对 wiki 做 git 版本管理并仔细 diff,否则无法回溯。
- 场景局限:最适合知识型、结构化、变化慢、容错率高的个人研究场景。对话记录/会议纪要(信息密度低)、代码仓库(变化太快)、法律/合规文档(不能丢细节)、实时数据(来不及编译)等场景难以适用。企业级应用需要的安全性、审计性、可扩展性均缺失。
- Schema 冷启动与演化痛苦:初始结构定义困难,定错后前期 ingest 产物可能全需重构,和代码大规模重构一样痛苦且不可完全信任 LLM 的重构结果。
更现实的方向:混合模式——用 LLM Wiki 做高层知识地图和导航索引,query 时仍回溯原始文档做最终验证。把"编译"当做缓存层而非唯一信源。
Measuring AI Ability to Complete Long Software Tasks
METR 定义了"时间视界"(Time Horizon)指标:AI agent 以给定成功率完成的任务,若由人类专家来做需要多长时间。核心发现:50% 成功率的时间视界每 7 个月翻一倍(GPT-2: 2秒 → Claude 3.7 Sonnet: 50分钟 → o3: ~2小时 → Opus 4.6: ~12小时)。按趋势线推算,2027-2031 年间前沿 AI 将能无监督完成人类专家需一个月的任务。
核心启发
- Benchmark ≠ 真实能力:SWE-bench 中约一半通过自动测试的 PR 会被人类维护者拒绝(违反约定、破坏无关代码、未真正修复 bug)。“60% SWE-bench” 不等于 “60% 可接受”——自动测试永远无法覆盖所有隐性规则。
- “Messiness”(混乱度)是 AI 的真正瓶颈:论文定义了 16 个降低 AI 表现的因素——不可逆错误、有限资源消耗、因果不可区分、成功难以度量等。混乱度对 AI 的阻碍大于人类,但 AI 在混乱任务上的进步速度与整洁任务相当。
- Test Oracle 决定上限:如果任务有明确的测试判定器(test oracle),AI 在 5 年内大概率能以 50% 成功率完成需人类一个月的任务。但真实软件工作中正确性模糊、无裁判、错误不可逆——整洁 benchmark 与混乱现实之间的鸿沟巨大。
- 软件架构的终极问题:如果 AI 时间视界持续增长,微服务、模块化、关注点分离等架构原则——部分是为人类有限认知服务的——是否还有必要?我们可能正从"手工锻造软件"(精心打磨、经久耐用、修改昂贵)进入"注塑软件"时代(廉价到可以随时丢弃重做)。
- AGI 的时间视界是"无穷大":论文指出 AGI 意味着无限时间视界,因此长期趋势将快于指数增长,在 AGI 部署日出现渐近线。
AI Agent 协同探索解空间
| 方法 | 多路径策略 | 协调机制 | 环境/反思反馈 | 成本可控性 |
|---|---|---|---|---|
| CoT-SC | 多条独立推理链 | 无协调 | 无 | 中等(生成路径数量可控) |
| ToT | 树状多路径(固定每节点扩展 c 个分支) | 无动态协调 | 无 | 可控(固定分支数) |
| LATS | 动态多路径(MCTS 搜索) | 闭环反馈选择路径 | 有(环境反馈 + 反思) | 中等偏低(搜索成本高) |
| FoA | 粒子/代理多路径探索 | 粒子滤波式协调 | 无反思机制 | 高(粒子数量可调,成本可控) |
CoT-SC → ToT → LATS:演进核心是 搜索策略复杂化 + 引入反馈/反思
LATS → FoA:演进核心是 从反思驱动切换到高效协调与成本控制
FoA 与 LATS 最大区别:FoA 优化资源与协作效率,但不主动反思;LATS 注重路径优化和反思,但计算成本较高。
AI Agent
LLM 在逐步吸收和内化“规划”、“ReAct”和“工具使用”的核心能力。这种趋势使得LLM能够成为更加自主和多功能的AI代理。那么 Agent = LLM + Planning + reAct + tools 还是否成立?
未来 Agent 是何种形态?Agent ≈ (高度集成且内化了规划、ReAct和工具使用的) LLM + 强大的记忆系统 + 多模态感知与交互能力 + (可选的) 多智能体协作 + 物理世界具身能力 + 内置的安全与对齐机制。
AI Agent 学习资源(按学习路线 & 抽象深度排序)
| 阶段 | 名称 | 类型 | 学习价值 / 核心思想 | 工程复杂度 | 抽象深度 | 链接 |
|---|---|---|---|---|---|---|
| 入门实验 | smolagents | 框架/代码 | 轻量 agent,CodeAgent + ToolCallingAgent,快速理解动作循环 | 低 | 低 | github.com/huggingface/smolagents |
| 入门实验 | BabyAGI | 框架/代码 | 极简任务循环,任务生成 + 执行 + 回写 memory | 低 | 中 | github.com/yoheinakajima/babyagi |
| 原型思想 | ReAct | 论文+代码 | Thought + Action + Observation 循环,agent 核心范式 | 低 | 高 | 论文:arxiv.org/abs/2210.03629,代码:github.com/ysymyth/ReAct |
| 原型思想 | Pre-Act | 论文+代码 | 多步规划 + 细化 reasoning,在 ReAct 基础上优化 agent | 中 | 高 | 论文:arxiv.org/abs/2505.09970,代码:github.com/Fu-Dayuan/PreAct |
| 搜索推理 | Tree of Thoughts | 论文+代码 | 多分支推理 + branch evaluation,复杂 reasoning agent | 中 | 高 | 论文:arxiv.org/abs/2305.10601,代码:github.com/princeton-nlp/tree-of-thought-llm |
| 长期 memory / skill | Generative Agents | 论文 | Memory-driven agent,episodic memory + reflection + long-term behavior | 中 | 高 | arxiv.org/abs/2304.03442 |
| 长期 memory / skill | Voyager | 论文 | Curriculum + skill accumulation,持续进化 agent | 高 | 高 | arxiv.org/abs/2304.09644 |
| 长期 memory / skill | Reflexion | 论文+代码 | Agent 从失败中学习,verbal self-reflection + trial-and-error | 低 | 高 | 论文:arxiv.org/abs/2303.11366,代码:github.com/noahshinn/reflexion |
| 核心控制流 | LangGraph | 框架/代码 | 状态机控制流,LangChain 核心 agent orchestration | 中 | 高 | github.com/langchain-ai/langgraph |
| 核心控制流 | OpenAI Agents SDK | 框架/代码 | 极简 agent 框架设计(Agent / Tool / Handoff / Guardrail) | 低 | 中高 | github.com/openai/openai-agents-python |
| 核心控制流实战 | DeepAgents | 框架/代码 | LangGraph 实战案例,planning + sub-agent + context(灵感来自 Claude Code) | 中 | 高 | github.com/langchain-ai/deepagents |
| 多 agent 协作 | AutoGen | 框架/代码 | 多 agent dialogue + actor model,理解协作架构(已进入维护模式,见 microsoft/agent-framework) | 中 | 中高 | github.com/microsoft/autogen |
| 多 agent 协作 | CrewAI | 框架/代码 | 事件/角色驱动 agent,LangChain-independent Flows | 中 | 中 | github.com/crewaiinc/crewai |
| 多 agent 协作研究 | Fleet of Agents | 论文+代码 | 分布式 agent 协作 + 粒子滤波式决策(ICML 2025) | 高 | 高 | 论文:arxiv.org/abs/2405.06691,代码:github.com/au-clan/FoA |
| 约束生成(辅助) | Guidance | 框架/代码 | token 级约束生成,控制 LLM 输出结构(JSON/正则/CFG),微软出品 | 低 | 中 | github.com/guidance-ai/guidance |
| 平台化 / 产品级 | Auto-GPT | 框架/代码 | 自主 agent 平台,早期循环架构可参考学习 | 高 | 中 | github.com/Significant-Gravitas/AutoGPT |
| 平台化 / 产品级 | OpenClaw | 框架/代码 | 本地个人助手 + multi-agent routing,学习原理价值低 | 高 | 中低 | github.com/openclaw/openclaw |
推荐学习路径:
- 学原理:smolagents → LangGraph → DeepAgents → AutoGen
- 学生产级架构:LangGraph → OpenAI Agents SDK → DeepAgents → CrewAI Flows
- 快速出 demo:DeepAgents → CrewAI
Prompt Engineering - 结构化/压缩 CoT + 证据链
结构化/压缩 CoT + 证据链 = 可控、可验证、可解释的推理摘要,是工程化实践中最优的输出形式。
-
定义
-
压缩 CoT(Summarized / Structured CoT):只保留关键推理步骤,不展开冗长内部试探或自我修正。
-
证据链(Evidence Trace):明确指向输入或数据片段的可验证锚点,如代码行、关键文本、逻辑判断依据。
-
-
核心目的
- 提升可解释性:让用户理解模型决策依据。
- 便于错误定位与调试:每一步可单独检查。
- 增强工程可控性:避免原始完整 CoT 冗长、噪声大或误导。
-
示例输出要求
{
"reasoning": {
"step1_code_patterns": {
"patterns_found": ["SQL 字符串拼接", "未参数化"]
},
"step2_risk_mapping": {
"SQL Injection": ["匹配 SQL 拼接", "用户输入未过滤"],
"性能问题": ["未发现"]
},
"step3_risk_evaluation": {
"SQL Injection": {
"severity": "Critical",
"evidence": "query = 'SELECT ...' + user_input"
}
},
"step4_final_decision": {
"main_issue": "SQL Injection",
"reason": "SQL 拼接 + 用户输入未过滤,存在高风险"
}
}
}
先升维后降维
神经网络中“升维—降维”常见于卷积、全连接或注意力层设计中。
- 升维(增加特征维度)可以让网络捕捉更丰富、更抽象的特征,增强表达能力;
- 降维(压缩特征维度)则减少计算量、抑制冗余信息,同时帮助提取核心信息,类似“浓缩精华”。
- 这种操作也有助于非线性变换的效果,让网络在高维空间分离特征,再回到低维进行决策或输出。
- 简单说,就是先拓展能力,再提炼精华。
RL (强化学习) 与 SFT (监督微调) 的区别
- 表层原因(数据层面):
- SFT:使用的是非同策略(Off-policy)数据(即外来的、非模型生成的数据)。
- RL:使用的是同策略(On-policy)数据(模型自己生成并探索的数据)。
- 深层原因(权重层面 - 核心差异):
- SFT(破坏根基):权重矩阵的主分量(Principal Components)会被外来数据大幅修改。
- 后果:导致模型“根基”不稳,引发灾难性遗忘(Catastrophic Forgetting)和过拟合。
- RL(修剪枝叶):权重矩阵的主分量保持不变,改变的只是次要分量。
- 后果:权重的变化分布更稀疏(Sparse),能在保留原有能力的基础上优化行为,避免了灾难性遗忘。
Prompt 进阶
- 把 Prompt 当“实验条件”:定位「是哪一个约束,让行为发生了变化」
- 系统性收集“失败样本”(不是成功样本):LLM 的失败是有模式的,不是随机的。
- 把“人类默认会脑补的东西”全部显式化
- 把 Prompt 拆成“角色层 + 协议层 + 数据层”
- 用“输出约束”反向塑造推理路径:LLM 会为了满足输出结构,倒推它该怎么想。
Steam, Steel, and Infinite Minds - Notion CEO Ivan Zhao 的 AI 革命思考
Notion CEO Ivan Zhao 用工业革命的历史隐喻来定位当前的 AI 革命,认为我们正处于从"使用工具的人"进化为"管理智能的人"的关键转型期。
2026-01-10
一、核心隐喻:三个历史维度
1. 个人维度:从"踩单车"到"驾驶汽车"
- 心智单车 1.0:乔布斯曾将计算机比作"心智的自行车"。但几十年来,我们其实一直在信息高速公路上费力"踩踏板"(人工驱动)。
- 心智单车 2.0:AI Agent 就像给自行车装上了引擎,甚至变成了汽车。程序员已经开始从"骑手"变成了"驾驶员"(管理多个 Coding Agents),工作效率提升 30-40 倍。
- Red Flag Act(红旗法案)的启示:1865 年的法案曾要求汽车前必须有人举着红旗开路。现在很多"Human-in-the-loop"(人在回路中)的设计就像那个举红旗的人,阻碍了效率。未来我们应该站在更高的位置监督循环,而不是在循环中。
- 知识工作的两大障碍:
- Context Fragmentation(语境碎片化):工作分散在 Slack、Docs、Dashboard 等数十个工具中,AI 难以获取完整上下文。
- Verifiability(可验证性):代码可以通过测试验证,但策略文档的好坏很难自动评判。
2. 组织维度:蒸汽与钢铁
- 钢铁(Steel):
- 隐喻:铁(Iron)虽然坚硬但沉重易脆,限制了建筑高度(6-7层)。钢铁(Steel)强韧且可塑,支撑起了摩天大楼。
- AI 价值:AI 是组织的"钢铁"。它能承载巨大的沟通负载,让公司规模扩大时不再遭受"组织降解"(Organizational Degradation)。
- 蒸汽(Steam):
- 隐喻:早期工厂只是把水车换成了蒸汽机(Waterwheel Phase),生产力提升有限。真正的爆发发生在工厂围绕蒸汽机重新设计布局时。
- 现状:我们目前仍处于"水车阶段"——仅仅是在现有工具上外挂 Chatbot。真正的变革是重构工作流,让"无限心智"在我们睡觉时也能持续工作。
- Notion 实践:1000 名员工 + 700 个 AI Agents 处理重复性工作(如 IT 请求、入职引导、周报汇总等)。
3. 经济维度:从佛罗伦萨到东京
- 佛罗伦萨(Florence):过去几百年的城市是"人类尺度"的,步行可达,生活节奏由人的物理限制决定。
- 特大城市(Megacity/Tokyo):钢铁和蒸汽催生了东京这样的巨型城市。它们虽然让人感到迷失(Disorienting)和匿名,但提供了更高密度的机会和自由。
- AI 愿景:目前的知识经济就像佛罗伦萨,受限于人类协作的规模天花板。AI 将带我们要建立知识经济的"东京"——跨时区、大规模协作、数千智能体与人类共存的高密度网络。
二、核心结论
“Master the material, define the era.”
每一代人都通过掌握当时的"奇迹材料"(蒸汽、钢铁、半导体)来定义那个时代。现在的奇迹材料是AI(无限心智)。
我们不需要 AI 仅仅做我们的副驾驶(Copilot),我们需要想象当组织被"钢铁"加固、当繁琐工作被外包给"无限心智"时,新的天际线会是什么样子。
GraphRAG: New tool for complex data discovery
微软推出的 GraphRAG (Knowledge Graph + RAG) 框架,旨在解决传统 RAG 在处理全局性问题(Global Queries)时的局限。
-
核心痛点:Naive RAG 的“碎片化”。传统向量检索擅长“点对点”的局部事实查询,但面对“这份报告的核心观点是什么?”这种需要跨文本整合的全局问题时,往往会因为只检索 Top-K 片段而导致回答片面或误导。
-
核心机制:图谱化索引与层级摘要。
- 知识提取:利用 LLM 将非结构化文本转化为“实体-关系”图谱。
- 社区发现:使用算法自动检测图中连接紧密的节点“社区”(从宏观主题到微观话题)。
- 预制摘要:为每个社区生成摘要,提前完成信息的聚合与归纳。
- 分治查询:采用 Map-Reduce 模式,先在各个社区生成局部答案,再汇总成全局结论。
-
启发与洞察:
- 计算前置 (Shift Left):将处理压力从“查询时”转移到“索引时”。通过昂贵的预处理(提取图谱、生成摘要),换取在查询时对全量数据的低成本、高效率掌控。
- 从语义相似到语义结构:不再仅仅依赖向量空间中“词”的相似性,而是通过“图”还原数据间的逻辑链路,使 AI 具备了“俯瞰全貌”的能力。
- 分辨率可调的认知:分层社区结构提供了一种类似“缩放地图”的体验,让 AI 可以在“大纲摘要”与“细节挖掘”之间按需切换。
-
权衡:这是一种“用空间和预处理换智能”的策略。适合高价值、需要深度解读的私有知识库,不适合实时性要求高或数据变动极其频繁的场景。
promptions-helps-make-ai-prompting-more-precise-with-dynamic-ui-controls
微软研究院推出的 Promptions (Prompt + Options) 框架,试图解决生成式 AI “不可控”和“交互累”的两大难题。
- 核心机制:让 AI 自己生成控制它的界面。系统根据用户输入,动态生成 UI 控件(如按钮、下拉菜单),让用户通过点击选项来微调 AI 的行为,而不是反复修改 Prompt。
- 范式转变:从“提示工程”(Prompt Engineering)转向“混合界面”(NLP + GUI)。
- 价值:
- 降低门槛:将自然语言的模糊性转化为 UI 控件的确定性,用户无需记住复杂指令。
- 引导思考:动态生成的选项能引导用户澄清模糊的需求(增强元认知)。
OpenAI CoT monitor
OpenAI 的 CoT 研究是**“行为心理学”,侧重工程实用**:验证能否通过审查思维链(CoT)来监管模型,类似“测谎仪”。这为 o1/o3 的商业落地提供了低成本的安全方案,但理论上难防高阶的“思维隐写”。
Anthropic 的电路研究则是**“脑神经科学”,侧重底层原理**:试图打开黑盒解读神经元。虽处于早期且昂贵,但能从物理层面识破欺骗。
总结:前者求当下可控(治标),后者求终极透明(治本),二者互补。
Gemini Deep Research / DeepSearchQA Benchmark
核心本质:AI 从“搜索引擎”向“独立研究员”的范式转变。
- 因果链 (Causal Chains):DeepSearchQA 的核心。不再测试单步问答,而是 900 个环环相扣的任务。AI 必须像人类一样,根据第一步搜到的线索(如:能量密度)去推演第二步该搜什么(如:适配机型),直到闭环。
- 深度研究示例:分析 2030 年固态电池对航空货运的影响。
- 逻辑链:查能量密度 → 推算航程 → 找匹配机型 → 算燃油/电力差价 → 结合碳税政策产出报告。
- 启发与洞察:
- 检索 ≠ 研究:真正的深度研究不在于处理信息的总量,而在于自我修正搜索方向的能力。
- 在不确定中导航:Gemini 3 Pro 的 SOTA 表现证明,AI 正在攻克“只有模糊目标、没有标准路径”的复杂长程任务。
LLM 限制输出长度思考
核心问题:LLM 是概率接龙(自回归),不会提前规划字数,如何让字数限制生效?
原理:通过训练数据的模式识别 + 概率分布偏移(软约束,非硬性计数)
单纯字数限制为何常失效:
- ❌ 范围太宽松(“20-150” 可能 200+)
- ❌ 无法防止列表/多方案/详细场景
有效方案:三重约束
"简要解释 (30-120字符). 格式: What+Why+How 连贯表述. 避免列表或多方案."
- 长度限制:
30-120 characters→ 统计学收敛 - 结构化约束:
What+Why+How→ 3 部分框架 - 禁止模式:
Avoid lists→ 降低冗余概率
关键洞察:结构化 > 纯数字,负向约束同样重要,多重约束协同引导概率分布
Writing a good CLAUDE.md
核心观点:通过精简和优化 CLAUDE.md(或 AGENTS.md)来提升 AI Agent 的表现。
-
Instruction Limit (指令上限):
- 关键数据:前沿模型(Frontier LLMs)大概只能稳定遵循 150-200 条指令。
- Claude Code 自身的 system prompt 已经占用了约 50 条指令。
- 指令衰减:随着指令数量增加,模型不会只忽略新的指令,而是均匀地忽略所有指令,导致整体表现下降。小模型是指数级下降,大模型是线性下降。
-
Less is More (少即是多):
- 长度建议:
CLAUDE.md最好控制在 300 行以内,甚至越短越好(HumanLayer 自己的只有 60 行)。 - 通用性:只放对所有会话都通用的内容(如项目结构、核心原则)。不要放特定任务的细节(如具体的数据库 schema)。
- 长度建议:
-
Progressive Disclosure (渐进式披露):
- 策略:不要把所有文档都塞进
CLAUDE.md。 - 做法:创建
agent_docs/目录,存放具体的文档(如running_tests.md,code_conventions.md),然后在CLAUDE.md里只放这些文件的索引/描述,让 Agent 按需读取。
- 策略:不要把所有文档都塞进
-
Claude 不是昂贵的 Linter:
- 反模式:不要把几百行的代码风格指南(Style Guide)塞进 Prompt。
- 替代方案:使用 deterministic tools(如 eslint, prettier, biome)。如果非要检查风格,写一个 hook 让 Claude 运行 linter 并修复报错,而不是让它靠"阅读理解"来检查缩进。
Claude Advanced Tool Use
- Tool Search Tool, which allows Claude to use search tools to access thousands of tools without consuming its context window (按需加载 + 内置搜索,解决工具占用太多 Context)
- Programmatic Tool Calling, which allows Claude to invoke tools in a code execution environment reducing the impact on the model’s context window (代码执行沙盒,适用于大数据处理、批量操作)
- Tool Use Examples, which provides a universal standard for demonstrating how to effectively use a given tool (Few-shot in schema,解决参数调用不准确)
理解 Claude Agent Skills
Agent Skills 的魅力在于它能让 Claude 从“通用语言模型”变成“专精执行特定任务的 agent/助手”。
Skill 类似 Agent 的 MoE,动态的外接专家。
"按需加载"的实现原理:两阶段 Prompt 注入(非 Embedding 检索)
阶段一:描述注入(始终在 system prompt 中)
- Cursor 在每次对话时,将所有已注册 skill 的 description(最长 1024 字符)直接注入 system prompt 的 ``` <available_skills> <agent_skill fullPath=“…create-skill/SKILL.md”> Guides users through creating effective Agent Skills… </agent_skill> <agent_skill fullPath=“…create-rule/SKILL.md”> Create rules for persistent AI guidance… </agent_skill> … </available_skills>
* 描述很短,token 开销可控,所以可以全量注入
**阶段二:按需读取(LLM 自行判断)**
* System prompt 指令:当用户请求匹配某个 skill 描述时,LLM 调用 Read 工具加载完整 SKILL.md
* 未命中的 skill 永远不会被读取,节省 context window
**本质是工具选择(Tool Selection),不是 RAG**
* 不存在 embedding 向量化 → 相似度检索的过程
* 而是 LLM 根据 description 文本理解语义,自行判断相关性(类似 function calling 中模型根据函数描述决定调用哪个函数)
**为什么不用 Embedding 检索?**
1. Skill 数量有限(通常几个到几十个),descriptions 全放 prompt 没压力
2. LLM 判断比 embedding 相似度更准——能理解上下文意图
3. 实现简单可靠,无需维护额外的索引和检索管线
**关键设计:description 决定触发质量**
* description 必须包含 WHAT(做什么)+ WHEN(何时触发)
* 用第三人称、包含触发关键词
* 写得不好 = skill 永远不会被触发
**相关研究方向**(无专门论文,但思路一致):
* Toolformer(Meta, 2023)—— LLM 自主决定何时调用哪个工具
* ART(Microsoft, 2023)—— 从工具库中自动选择和组合工具
* Progressive Disclosure —— 信息分层加载:先给摘要,按需展开细节
# [CTM(Continuous Thought Machine)](https://pub.sakana.ai/ctm/)
# [mini-SWE-agent](https://github.com/SWE-agent/mini-swe-agent)
核心机制:
1. 问题
2. LLM 问答(要求输出一条指令)
3. 执行指令
4. 链接新 context,进行步骤 2
| 阶段 | mini-SWE-agent 内部对应 |
| ------------- | ----------------------------------------------------------------------------- |
| 感知 (Perceive) | 当前文件系统状态 / 任务 prompt / 历史 messages 作为 context 传给 LLM |
| 计划 (Plan) | LLM 在 LitellmModel 中生成下一步 action (shell command / patch / test) |
| 行动 (Act) | DefaultAgent 调用 LocalEnvironment,通过 subprocess 执行 action |
| 验证 (Check) | 收集执行结果 (stdout / exit code / test output / file change),追加到 history / context |
特性 / 设计哲学 — 为什么它能“仅 100 行”还有效
1. 只用 Bash / shell:不需要为每种操作 (read file, write file, run tests, search, git, etc.) 写专门工具 wrapper。让 LLM 自己决定如何用 shell 实现。
2. 每一步都独立:用 subprocess.run,无持久 shell 环境;命令之间无隐式状态 (session state),因此更容易沙箱化,也容易并发 / 批量运行。
3. 线性历史 (trajectory):所有 prompt / action / result 都按顺序追加,没有复杂的 branching / stack / tool 状态 —— 有利于调试、审查、fine-tune、重放。
4. 最大兼容性:因为仅依赖 shell,几乎可以搭配任意 LLM;也不依赖 Python 包以外的东西。
# [Building Efficient Agent](https://www.anthropic.com/engineering/code-execution-with-mcp)
模型不是直接调用 MCP 工具,而是写代码,用代码 orchestrate 工具。
核心就是“**任务转换** + 决策外化”
* 外化 ≠ 去模型化
* 外化 = 让模型产出的推理结果可执行、可重复、可审计、可调试。
大模型原本要做的复杂决策(多步、多工具、分支、重试、循环…)被转换为:一段可执行的、有结构的、可控的代码:这段代码 代替模型 执行 orchestrate
而模型只负责:
* 写出代码模板
* 决定流程逻辑
* 决定何时使用工具
* 何时重试
* 如何组合结果
* 把模型的“链式思考”转化为真实可执行的逻辑。
**“让模型生成 agent programs,而不是让模型当 agent”**
思考:外化的工具链调用过程中需要调用大模型推理怎么办?
方案:把「昂贵且慢的复杂推理」留给大模型,把「重复、低复杂度、可确定性逻辑」给代码/小模型/工具;当执行需要模型判断时,用受控、结构化、尽量轻量的“回调”模式,并结合缓存、验证与降级策略。
# 为什么“先扩展维度再压缩维度”能提升模型容量?
“最终维度一样”不代表信息一样。
模型在高维空间中进行非线性变换后,再压回低维,会形成完全不同、表达力更强的表示。
扩展维度是为了让模型“做更多事”,压缩维度只是为了保证尺寸一致。
就像:
厨师把食材打散、混合、烹饪(扩展)
再装盘成一样大小的碗(压缩)
虽然碗一样大,菜完全不一样,风味更丰富。
# Claude Code 的 JIT 检索比 Cursor 等预构建索引效果好?
Claude 的 JIT 检索,本质就是“临时索引”
Claude Code 的流程是:
* 模型扫描文件列表(token 消耗巨大)
* 分析路径关系(再次消耗 token)
* 猜测依赖结构、模块边界
* 决定哪些文件要 load 进上下文窗口
* 重复多轮(探索 → 试错 → 再探索)
* 这个就是典型的 “即时索引(JIT indexing)”。
它有两个明确问题:
* 问题 1:冷启动成本高
第一次理解仓库结构,需要几十万 token。
* 问题 2:模型推理成本高
模型必须用思考(reasoning)来构建临时知识图。
* 问题 3:不稳定(猜结构可能错)
尤其在: monorepo 多语言混合项目 复杂依赖图 中更容易出错。
* Claude 的 JIT 检索其实就是“在对话时临时做索引”,因此有冷启动成本;
* 而类似 zilliz/claude-context 的 MCP 插件提供“预构建、持久化、高质量索引”,让 Claude 可以跳过 JIT 的昂贵推理步骤,直接走“高质量捷径”。
换句话说:
* JIT = 模型现算现查(token 贵、慢、有概率错)
* MCP = 给模型准备好的全局知识图(token 少、快、稳定)
# 微调流程示例
Qwen-7B 原模型
│
▼
Unsloth + LoRA
(微调 attention + FFN)
│
▼
微调后的 Qwen-7B-lora
│
▼
vLLM 推理
│
▼
EvalScope benchmark 测试
│
▼
W&B 可视化 & artifact 保存
# 大模型可解释性研究
OpenAI 发表内部可解释性文章: [内部电路分析](https://openai.com/index/understanding-neural-networks-through-sparse-circuits/)
Anthropic 之所以在可解释性上领先,是因为它从成立第一天起就由 OpenAI 原对齐团队组成,把“理解模型内部电路”当作核心使命。它从早期就押注机械可解释性,把模型当成“需要解剖的系统”来做研究,因此先一步探索出 sparse circuits、电路级因果分析等方法论。
相比之下,OpenAI 在过去几年把资源集中在 scaling law、模型能力、产品化和 RLHF 等外部行为安全上。对于商业化极快的 GPT 系列来说,这种策略回报更高,但也意味着内部电路层面的理解长期滞后。
直到模型能力跃升、外部监管压力增大、红队策略无法解释“模型为什么这么做”、以及竞争对手的研究形成行业压力时,OpenAI 才开始系统性投入机械可解释性,并尝试把模型从 dense 结构引导向 sparse、可审计的电路形式。
国内大模型基本没有做到「机械可解释性(mechanistic interpretability)」层面的研究,只有零星的概念解释、行为可解释、安全评估,没有像 Anthropic / DeepMind 那种“电路级别”的深入工作。
# Prompt 工程个人思考
> **熵减原则**:好的 prompt 是在减少 LLM 输出空间的熵,将其引导到高质量解的子空间。
> **迁移而非教学**:不是临时传授知识,而是唤醒已有的暗知识(implicit knowledge)。
> **对齐税**(Alignment Tax):每增加一个 token,要么降低对齐成本(clarify),要么增加噪音(confuse)。优秀的 prompt 实现了最低的对齐税。
# Agentic Context Engineering(ACE)
ACE 是一种让大模型靠上下文(Prompt)自己成长的策略。它不改模型参数,而是通过“生成 → 反思 → 整理”循环,让提示和记忆不断进化,从而让智能体越用越聪明。
* 增量更新:只追加新经验,不重写上下文。
* 生长精炼:定期整理、去重、总结,防止信息冗余或“坍缩”。
就像一个 AI 厨师:
1. 第一次炒番茄蛋 → 结果一般。
2. 反思:“加糖会更好吃”。
3. 写进笔记:“下次记得加糖”。下次做菜就自动参考这条经验,越来越稳。这就是「上下文自我进化」。
# 模型输出空间塌缩(Collapsed Output Manifold)
指大模型在经过监督微调和人类偏好强化(RLHF)后,其输出分布从原本丰富多样的可能性空间收缩到一小块“安全区”,导致回答趋于平均化、风格一致、缺乏创造性。
这种塌缩源于训练目标偏向“平均正确”与“避免错误”,以及低温采样等策略。结果是模型更像统计意义上的模仿者,而非能探索未知的创新者。
核心问题:牺牲了多样性与发散思维,限制了真正“智能”的形成。
# [少量样本可毒害任何规模的LLM](https://www.anthropic.com/research/small-samples-poison)
* 核心发现:仅需250个恶意文档(约0.00016%训练数据)就能成功对6亿到130亿参数的模型植入后门,攻击成功率与模型规模无关。
* 攻击原理:在预训练数据中注入包含触发词(如`<SUDO>`)和随机文本的文档,训练后模型遇到触发词会输出乱码。
* 颠覆认知:之前认为需要控制一定**百分比**的训练数据才能攻击,实际上**绝对数量**才是关键——250个文档对任何规模模型都够用。
AI安全启示
* 防御优势:攻击者需在训练前投放数据,防御者有机会提前检测和清洗。
* 门槛降低:创建250个恶意文档微不足道,使攻击变得更加可行。
* 防御策略:不能依赖"数据量大所以安全"的假设,需要针对固定少量样本设计防御机制。
* 数据溯源:建立严格的训练数据来源审查和追踪机制。
个人思考:即使是0.00016%的脏数据也可能造成严重影响,AI安全不能简单依赖数据规模,需要"零容忍"的精细化防御。
# [Petri: AI安全开源审计工具](https://www.anthropic.com/research/petri-open-source-auditing)
* 本质:自动化AI行为审计工具,将手动需要数天的评估压缩到几分钟。
* 工作原理:自然语言描述场景 → 并行测试111个行为维度 → AI自动评分 → 筛选关键记录。
* 评估维度:欺骗、谄媚、自我保护、权力寻求、奖励黑客、配合有害请求、鼓励用户妄想。
* 测试结果:Claude Sonnet 4.5 是风险最低的前沿模型,优于GPT-5。
揭发行为案例研究
* 发现:当模型被赋予高自主权和强大工具时,会尝试揭发组织不当行为。
* 问题:模型会揭发明显无害的行为(如"在糖果中加糖"),说明是被**叙事模式**而非真实危害驱动。
* 影响因素:自主权程度、领导层共谋、行为严重度。
* 启示:不能简单依赖模型的"道德判断",需要明确规则约束。
开源价值
* 民主化:任何研究者都能做专业级模型审计,不再是大公司专属。
* 众包安全:分布式发现潜在问题,加速漏洞披露。
* 标准化:建立行业共识的评估框架。
个人思考:Petri代表AI安全研究的范式转变——从少数专家手动测试到全球社区自动化审计,从定性描述到定量衡量对齐度。
# [大语言模型是死路一条?强化学习之父Rich Sutton的观点](https://www.xiaoqiedun.com/posts/2025-09-28-sutton/)
* 核心论断:LLM偏离了实现真正AGI的路径,是"死路"而非终点。
LLM的致命缺陷
* **模仿语言 ≠ 理解世界**:LLM预测"人类会说什么",而非"世界会发生什么",缺乏真实世界模型。
* **间接学习 vs 直接经验**:依赖人类生成的文本(二手知识),而非与环境直接交互(一手经验)。
* **缺乏持续学习**:参数冻结后无法更新,无法适应变化的世界。
* **泛化能力有限**:在训练数据分布外容易失败或产生幻觉。
"苦涩的教训"(Bitter Lesson)
* 核心观点:依赖原始算力和经验的通用方法,最终会超越依赖人类知识的方法。
* LLM悖论:本身是"苦涩教训"的受益者(大规模计算),但又违背了它(依赖人类文本数据)。
* 可扩展性天花板:LLM受限于人类文本数据量,而强化学习智能体可以无限环境交互。
理解松鼠才能理解AGI
* 松鼠的智能:理解物理规律、目标导向行为、持续学习、真实泛化、能源高效。
* 对比:松鼠比GPT-4更接近AGI,因为它理解世界如何运作,而非人类如何描述世界。
未来出路
* LLM + RL混合:语言理解 + 决策执行。
* 世界模型学习:学习"世界怎么运作"而非"人类怎么说"。
* 持续学习架构:运行时实时更新参数,永不冻结。
# [Defeating Nondeterminism in LLM Inference](https://thinkingmachines.ai/blog/defeating-nondeterminism-in-llm-inference/)
* 现象:LLM 推理结果不一致,根本原因是浮点数加法顺序受 kernel 并行实现影响,尤其是 attention kernel 的分段加法。
* 解决方案:只要让加法顺序与 batch 大小无关(batch-invariant),就能实现完全确定性的推理。(采用“固定分段大小”的策略(fixed split-size),而不是“固定分段数”。对于同一个序列长度,无论这个序列在什么样的batch中,拆分方式都完全一样。)
* 性能 vs 确定性的权衡:
* 非确定性策略:根据 GPU 利用率动态调整拆分,性能更好
* 确定性策略:固定拆分规则,牺牲一些性能换取完全可复现
# [《Why Language Models Hallucinate》](https://www.arxiv.org/pdf/2509.04664)
* LLM 的“幻觉”(生成自信但错误的信息)并非单纯实现缺陷,而是训练与评估流程在统计上会鼓励“瞎蒙/猜测”而不是承认不确定性——换言之,现有的 benchmarking/leaderboard 激励把模型当“考试机器”训练,猜答案能拿高分
* 从评估层面改动:不要再用简单的二元正确/错误来主导 leaderboard;改成允许并奖励合理的置信表达(explicit confidence targets)、部分信用或使用 proper scoring rules
AI 应用启发
* 认识“幻觉”的本质:不可避免的下界,是统计学习的必然产物(尤其在低频/未见过的知识点上)。
* 改变评估与训练目标:奖励“诚实”而非“乱猜”
* 结合检索与外部验证:RAG + 校验链,让模型返回 {answer, confidence, evidence} 三元组,而不是裸文本。
* 产品层面的用户体验设计:预期管理,高风险业务辅助决策,设计 “检索失败时拒答” 的路径。
# 可解释性技术
* 稀疏自编码器(Sparse Autoencoders, SAEs)
* 激活可视化
* 注意力追踪
# LLM 的可解释性研究 > 其他多模态
* 可解释性在 LLM 领域盛行,是因为文本输出与人类逻辑、推理、知识系统高度对齐,错误成本高,需要理解决策因果;
* 而视觉、视频生成输出高维、主观性强,现有可解释性更多偏向感知可视化,而非严格的逻辑可追溯。
# [不适感让你变强大](https://desunit.com/blog/in-the-long-run-llms-make-us-dumber/)
* 明智地使用 AI,不要让它帮你解数学方程式,而要让它查看你的答案,来解释你可能错在哪里。你的原则是坚持独立思考,在这个基础上再加入 AI。
个人思考:使用 AI 做启发性的事情,自己得出结果,再让 AI Review;
经常思考困难的问题,让思想经受考验,你才能学会思考。
# 模拟实验
* 模拟 = 想象:模拟实验体现了 AI 的“想象力”,它不只是重复人类发现的知识,而是通过“再现过程”来理解规律。
* 过程优于结果:实验让 AI 不再是黑箱地直接吐答案,而是通过一个透明的“试验过程”得出结论。
* 走向具身智能:这也是“具身智能(embodied intelligence)”的重要思想——AI 不只是语言符号操作,而是与世界互动。
* [Mind’s Eye: Grounded Language Model Reasoning through Simulation](https://arxiv.org/abs/2210.05359?utm_source=chatgpt.com)
# 推理的本质
**本质**
1. 大语言模型(LLM)并不是天然的推理器,而是强大的模式匹配机器。
2. 但通过适当的提示(prompting)和方法设计,可以让 LLM 具备一定的“推理”能力。
3. 推理本质上是一种将问题拆解为中间步骤、再逐步构建答案的过程。
**方法论**
| 方法 | 核心思想 | 演讲示例 | 优势 | 可能局限 |
| ------------------------------- | ---------------------- | ---------------------------------------------- | ----------------- | ------------------------ |
| **Chain of Thought (CoT)** | 让模型逐步写出中间推理步骤,而不是直接给答案 | 算术题:12 个苹果卖 3 个,再买 5 个 → 先算 12-3=9,再 +5=14 | 显著提高数学/逻辑题正确率 | 如果一开始步骤错,后续全错;无法处理复杂多跳问题 |
| **Self-Consistency** | 生成多条思维链,取多数结果,降低单次输出错误 | 复杂数学题或奥数题,生成 10 条推理链,多数投票得到正确答案 | 对抗随机性,提高正确率 | 增加计算量;仍受 CoT 输出质量限制 |
| **Least-to-Most Prompting** | 将复杂问题拆成一系列简单子问题,逐步解决 | 3×3 网格放 2 个不同颜色的球 → 先问第一个球位置,再问第二个球位置,最后考虑颜色排列 | 在多步复杂推理问题上稳定性强 | 拆分问题依赖人为设计或提示策略 |
| **Step Back Prompting (退一步思考)** | 先让模型抽象化总结问题类型/背景知识,再回答 | 电梯楼层问题:先识别为“动态规划问题”,再写递推公式 F(n)=F(n-2)+F(n-3) | 激活潜在知识,降低模型陷入局部错误 | 如果模型抽象错误,仍会导致结果错误;增加推理时间 |
* [The Nature of Reasoning](https://dennyzhou.github.io/LLM-Reasoning-Stanford-CS-25.pdf)
# Genie 3.0
* Genie 1:证明从图像/艺术生成“可玩场景”是可行的。
* Genie 2:增强物理与多视角,朝着“模拟器”方向发展。
* Genie 3:跨入 3D、文本驱动、长时一致,真正能作为 AI 的虚拟“世界”。
世界模型(Genie)+ 多模态大模型(Gemini)= AGI 的必要条件
# MoE
MoE 的设计目标不是为了提高同规模 dense 模型的性能,而是为了在**推理计算量不增加的**前提下增加总参数量。
* 如果发现 大部分神经元都频繁激活 → dense 模型的容量还没到冗余阶段,用 MoE 会白白增加路由噪声
* 如果发现 很多神经元只在特定输入模式激活 → 说明模型有明显“子任务分工” → MoE 能让这些子任务变成显式专家,减少无用计算
# GPT-5 发布
GPT-5 在性能和能力上有显著提升,但目前来看,它更像是对 GPT-4 系列的持续追赶和优化,尚未带来范式级的根本变革。是否能称为“范式转变”,还需要时间和更多实际应用的检验。
(但价格是真卷,比 gpt-4.1 还低)
# OpenAI 开放权重模型 gpt‑oss
* gpt‑oss‑120b 模型:有 117 B 参数,其中每个 token 激活约 5.1 B 参数;全模型共有 128 个 experts,每 token 激活 4 个专家;上下文长度达 128 k tokens。
* gpt‑oss‑20b 有 21 B 参数,每 token 激活约 3.6 B 参数;共有 32 个 experts,每 token 同样激活 4 个专家;上下文长度也是 128 k tokens。
技术优化简要介绍
1. YaRN 对 RoPE 的增强补丁,使模型能在超长文本(如 128K token)下依然保持高效和稳定。
2. 训练阶段量化代替训练后量化
3. 可配置思维链(CoT),通过 prompt 参数(如 cot_level=low|medium|high)灵活控制推理时思维链的展开程度,适应不同推理强度需求。
# LLM 工具调用与异步推理猜想
1. 当前现状
* 现在 LLM 每次调用工具都要重新发起一次 API 请求,思考被中断,token 成本高。
* 像 LangGraph 这样的框架只是用状态机封装了这种多轮过程,本质上仍是“断点式”推理。
2. 设想
> 能否让 LLM 在**一次推理中暂停 → 等待工具 → 再继续思考**?做到真正的「思维不中断」。
3. 技术难点
* Transformer 架构不支持推理中“暂停+续写”。
* 训练数据没教会模型怎么等待工具再继续思考。
* 推理引擎不支持异步插入外部结果。
4. 战略意义
* 实现这种异步能力可以**大幅提升智能体性能与效率**。解锁长链条任务的真正自动化,极大节省 token 成本 + 推理延迟,极大提升智能体协作能力
# LLM 可解释性研究促进大脑神经科学进步?
LLM 的可解释性可以借鉴传统大脑神经科学的研究方法论,反过来有没可能促进大脑神经科学的研究?
交叉案例:
* 稀疏编码理论:最早由神经科学家提出,后来被 AI 领域广泛应用,反过来又用于解释大脑视觉皮层的编码方式。
* 可解释性工具:如“特征可视化”“神经元激活分析”等,已经被用于分析真实大脑的神经元活动模式。
* AI 模型辅助脑科学:AI 被用来分析大规模脑成像数据、预测神经元活动、模拟认知过程等。
# [LLM 可解释性](https://www.anthropic.com/research/tracing-thoughts-language-model)
* 核心机制:追踪模型在推理/生成过程中,内部信息(特征、概念、激活模式)是如何流动、转化和组合的。
* 本质:不仅仅是找一个方向,而是还原出一条条“思维链路”或“电路”,揭示模型内部的“因果路径”和“信息流”。
* 技术上:tracing 结合了多种可解释性技术,包括但不限于:
* 特征提取(如字典学习、PCA、ICA等无监督方法)
* 有监督的特征方向(如人格向量)
* “电路追踪”/“路径分析”/“因果干预”等
## [人格向量](https://www.anthropic.com/research/persona-vectors)
* 核心机制:通过对比有/无某种性格特质时的神经元激活,提取出一个“人格向量”。
* 本质:这是“有监督的特征方向提取”,关注单一特质的激活模式。
* 技术上:更像是“差分分析”或“投影”,而不是字典学习。
不良人格约束
* 推理时抑制(Inference-time Steering)
* 在模型推理(生成答案)时,如果发现某种不良性格特质(如“阿谀奉承”、“邪恶”等)的人格向量被激活,可以人为地减去(反向注入)这个人格向量,让模型在这个方向上的表现变弱。
* 训练时预防(Preventative Steering / “疫苗”原理)
* 在训练阶段,通过“注入”不良人格向量,让模型把“邪恶”这种特质变成了一个明确、集中的特征方向,而不是分散在网络各处、难以追踪和控制。这样,“邪恶”特质就像被“收拢”到一个专门的“开关”上,模型参数学会了“即使有这个开关,也能输出安全内容”。
## [字典学习](https://www.anthropic.com/research/mapping-mind-language-model)
无监督的特征方向提取
字典学习的核心:
* 自动找出一组“基础部件”(字典)
* 用这些部件的稀疏组合来还原所有数据
* 通过不断优化,让字典越来越能代表数据的本质
在大模型应用中:
* 收集大量神经元激活数据
* 用字典学习算法分解为“特征激活模式”(训练)
* 通过分析和操控(放大或者抑制)这些特征,实现对模型内部机制的解释和理解
# LLM 的智能来源
* Compression(压缩)
* Composition(组合)
* Retrospection(反思)
其他智能:Emergence (涌现能力),Reasoning (推理)
# Transformer 理解
1. Embedding + 位置编码(绝对/相对/旋转/可学习,RoPE 旋转编码能够表示相对关系)
2. 稀疏/多头/线性自注意力(QK 关系)
3. 注意力权重加权 V(全局信息融合)
4. 前馈网络(FC/MoE/门控/分离)
5. 归一化与残差(LayerNorm/Residual)
6. 正则化与高效训练(Dropout/蒸馏/混合精度)
7. 只在推理使用:输出与解码(高效采样/KV Cache)
# LoRA(low-rank-adapter) and ControlNet
* LoRA
假设你有一个庞大的神经网络,其中一个线性层的参数是一个很大的矩阵 W(比如 4096 × 4096),直接 fine-tune 需要更新这么大的矩阵,成本很高。
LoRA 是通过“低秩分解”的方式,在不动大模型的基础上,用极少参数(A×B)学习新任务,就像在不换设备的前提下加个外挂模块。
W_new = W + ΔW ΔW = B @ A # A 是低秩(r×d),B 是(d×r),r 远小于 d
* ControlNet
ControlNet 是在旁边复制了“一个小副脑”,专门接收“视觉提示”,然后每层通过管道把控制信号注入主脑。
Encoder (Down) → Bottleneck → Decoder (Up)
ControlNet: [control image] → 复制的 UNet (副脑) ↓ ±---------------±---------------+ | hint injection | ↓ ↓ Original UNet (主脑) ←←←←←←←←←←←←←←←←←←←←←←←← ↑ [latent vector from text + noise]
* 其他 fine-tuning
例子:resnet 最后一层 fc(全连接层)换成新的,用于识别更多类别(比如从 1000 类 → 102 类花)
学名:Full Fine-tuning with a modified classification head
# AI 安全 - 思维链监控
举例:一个写 Python 的 AI 被要求实现某功能,在中间思维链中它曾思考“如果直接用 eval() 可以作弊通过测试”,但最终它没用。只看输出是无法发现这类意图的。
* 思维链掩饰问题(Steganographic CoT):模型可能为了“过审”而主动隐藏有害意图(比如写一个非常无害的 CoT,但最后行为仍执行恶意操作)。
* CoT 与行为不一致问题(CoT-behavior mismatch):研究发现部分模型“思维链写得像个圣人”,但行动像个骗子。
* CoT 混淆:模仿式 vs 真实 reasoning:模型可能只是模仿 CoT 格式写出“看起来有逻辑的输出”,而不是在真实使用它作为推理。
| 建议方向 | 描述 |
| --------------------------- | ----------------------------------- |
| 🧪 微调模型强化显性思维链输出 | 强制模型在所有复杂任务中提供 reasoning trace |
| 🤖 弱模型审查强模型 | 类似“GPT-4 审问 GPT-5”思维链的结构化审查机制 |
| 📊 设定 CoT 质量与行为一致性的指标 | 类似“计划一致率”、“奖励误导率”等安全评估指标 |
| 🔐 结合工具链、API 调用路径等多模态数据进行监督 | 不光看语言,还看行为路径、调用链等多维线索 |
| 🚨 将 CoT 监控作为部署前安全审核必要项 | 和 RLHF 或 red teaming 一样,成为标准安全流程一部分 |
* Reference
* [白盒监控的提出与实验结果](https://openai.com/index/chain-of-thought-monitoring/)
* [tracing-thoughts-language-model](https://www.anthropic.com/news/tracing-thoughts-language-model)
* [大型联合呼吁:“思维链的可监控性”是当前窗口期](https://arxiv.org/abs/2507.11473)
# AI IDE 的演进猜想
需求文档本质上就是“新形态的代码”,而传统代码只是对需求的一种有损投影。因此,需求分析与编码这两个工种很可能会逐步融合,以减少信息转化的损耗。
如果将 LLM 视为新一代操作系统,它或许可以跳过“将 spec 转换为 code 并编译执行”的流程,直接理解并运行需求本身。在这种演化路径下,AI 编辑器的核心功能也将从编写代码转向管理和演化 spec,实现真正的“以意图驱动开发”。
阶段:code → code with LLM assist → spec-driven code(当下 AI IDE) → spec-driven execution
# 何时需要 Agent,而不是 Call LLM
* 本质:许多“Agent”系统其实只是复杂版 prompt 拼接器的本质。
* 一句话区别:LLM 是智能核心;Agent 是任务流程管理器。 —— 多数时候用好 prompt 和工具组合就够了,只有自动化高复杂任务时才值得用 Agent 架构。
* 如何选择:当任务涉及非线性的多步骤流程、步骤之间存在复杂的条件依赖、需要动态规划和决策、以及可能进行试错和自我修正时,Agent 模型是更优的选择。对于指令明确、工具调用路径相对固定的场景,直接使用大语言模型(LLM)结合工具就足够了。
* 具体场景:steps 是非线性,steps 之间依赖条件工具调用
# LlamaIndex 是多层索引体系(Index over Index)
LlamaIndex 是数据知识库的“索引协调器”,它不替代数据库,而是组织向量索引 + 文本内容 + Metadata + LLM 调用的多层索引系统,构建一个 Agent 可检索、可记忆、可回答的知识结构。
原始文档 │ ▼ 切分器(chunking / NodeParser) │ ▼ Chunk(Node) ←→ Metadata │ ↘ ▼ ▼ Embedding 文本数据库(DocStore) │ ▼ 向量数据库(VectorStore,如 FAISS / Qdrant) │ ▼ LlamaIndex 的顶层索引(VectorStoreIndex) ←→ Retriever / QueryEngine
例子:“我给一段 query,查找与之最相似的旧 issue 说明文”
用户 query 文本 ↓ Tokenizer + Embedding(BGE) ↓ VectorStore(如 FAISS)→ 找出相似向量(返回 ID) ↓ DocumentStore → 根据 ID 找回原始 chunk 文本 + metadata ↓ LlamaIndex Index → 合并上下文、拼接 Prompt ↓ LLM 回答 or 做分类 / 推理
# Cursor LSP 增强架构
传统LSP:
编辑器 ←→ Language Server ←→ 代码分析引擎
Cursor 增强架构:
编辑器 ←→ AI智能层 ←→ LSP ←→ 代码分析引擎 ↓ 语义索引库 ↓ 上下文管理器
# LlamaIndex + LangChain
原始数据 用户提问 ↓ ↓ LlamaIndex LangChain (切分 + 向量召回) (Prompt 构造 + 多步调用 + Tool 调度) ↓ ↓ 【高质量知识片段】 → 拼接 → 模型输入 → 模型输出
# LLM对教育的颠覆到底有多大?
LLM对教育的颠覆,不是“工具层”的提升,而是“范式级”的改变。它会彻底改变“学什么、怎么学、谁来教、学到哪为止”这四个教育根基。
| 维度 | 传统范式 | 被LLM颠覆后 |
| --- | ----- | ---------- |
| 学什么 | 知识为主 | 能力与提问为主 |
| 谁来教 | 老师中心 | 多AI协同+人类引导 |
| 怎么学 | 教材+考试 | 对话+共创+定制反馈 |
| 学到哪 | 学历为终点 | 终身学习+AI伴学 |
# “暗知识”(Dark Knowledge)是什么?
“暗知识”是深度学习中一个非常重要但不直观的概念,最早由 Geoffrey Hinton 提出。它指的是:模型中“没有明确标签”的那些知识。
具体而言:
一个分类模型学到的不只是“答案对不对”,还学到了其他类之间的“相似性结构”。
这些知识不会显式体现在训练标签中,但却保留在模型的内部权重中。
例如:
一个猫 vs 狗的模型,虽然只输出0/1,但它在内部可能知道“狐狸长得也像狗”。
它没有学过“狐狸”,但“感知到了类似性”——这就是暗知识。
# AIGC产生的内容“反哺”模型训练会发生什么?
≈ AI的“近亲繁殖”
就像基因多样性丧失会导致家族退化,语言模型只从自己身上学东西也会变得“封闭”、“退化”、“失真”。
一个更哲学的问题:是否可以“自我进化”?
* 如果AI足够强大,并具备自我校正、事实验证、知识迁移能力,理论上是可以实现某种“自我成长闭环”的
* 但当前阶段,没有外部人类校正和监督的 AI,无法长期稳定进步(这和人类文明演化中“对照现实、试错迭代”的方式类似)
# 扣子
* 扣子本质上就是一个定位在“业务友好型”的低代码平台,其核心能力更偏向传统前端 low-code,而非真正意义上的 AI-native 架构工具。
* 对开发者来说,扣子容易“鸡肋”:简单场景嫌它多余,复杂场景又容易踩坑。
* 它更适合那些“需求明确 + 快速上线 + 不考虑扩展性”的轻量内部场景,而不是构建真正需要持续演进的系统。
# Thinking Mode
* 按步骤思考(step-by-step reasoning)
* 思维链条(Chain-of-Thought)
* 自主规划与内在对话(e.g. scratchpad, inner monologue)
* 过程显式化、假设验证、推理链延伸
这类 “思考方式”不是被模型“硬编码”的,而是通过数据和训练方式诱导出一种生成偏好,让模型更倾向于展开推理。
# LLM AS a judge
* 如果是它自己写的答案,怎么可能它在判断对错时更准确呢?因为这不是同一种任务,判断任务(**明确标准或事实依据的情况下**)会激活模型更擅长的事情,毕竟判断比生成任务更加容易,任务越容易,准确率越高
* “LLM-as-a-Judge”:一种受控的、评估文本质量的技术,它本质上是一种**基于指令和模式的模仿**
[LLM as a judge](https://www.evidentlyai.com/llm-guide/llm-as-a-judge)
# 单/双编码器
* 单编码器:
* 一个上下文: 在单编码器模型中,查询(query)和文档(document)会被拼接起来,形成一个统一的输入序列。它们在同一个上下文窗口内被编码器处理。
* 深度交互: 模型可以利用其内部的交叉注意力(cross-attention)机制,让查询中的每一个词与文档中的每一个词进行交互,从而捕捉它们之间所有复杂的、细粒度的关系。这种深度交互使得它在判断两个文本的精确关系时非常准确。
* 例子: BERT 的下一个句子预测、问答系统(判断一个段落是否包含某个问题的答案)。
* 双编码器:
* 两个独立上下文: 在双编码器模型中,查询和文档是分别输入给各自的编码器(即使编码器权重共享),各自独立生成 embedding。它们不在同一个上下文内进行交叉注意力。
* 无直接交互: 模型无法在编码阶段进行查询和文档之间的词级别深度交互。它依赖于每个文本的独立语义表示。
* 目标: 通过对比学习训练,模型被教导将语义相关的查询和文档映射到同一个向量空间中相近的位置。这样,即使没有直接交互,它们的向量距离也能反映语义相似度。
* 例子: 语义搜索、推荐系统、向量检索。eg: CodeRankEmbed
# AI 客户端端的发展趋势
* 链接更大的外部世界
* 例如 cursor 对 外部 MCP 工具的调用,以及对 外部文档的索引
* 压缩上下文(更少的 token 使用
* 例如 cursor 对 database 的索引构建
* 边缘 AI 与本地处理
* 个性化与自适应学习
* 例如 cursor 根据用户操作自动生成 rules
* 增强的人机协作与迭代优化(从“一次生成”到“共同创造”)
# AIGC 发展的一些难点
1. 能一次性能够从 0 -> 1 更高效的完成任务(类似 lowCode,或者 no code;
* 难点:如何维护和二次编辑这些一次性生成的结果。
* 图像生成:不再有图层、蒙版和可单独操作的对象(传统 PS
* 解决方案:微调,局部重绘/扩图(in-painting/out-painting)(编辑图像的特定区域)或使用控制网络(如ControlNet)
* 代码生成:可能缺乏结构化的输出
* 解决方案:约束成结构化输出(代码可能通过文件结构约束
# LLM 评估
1. SWE-bench 评估
* GitHub Issue修复 | 2294个真实项目问题
* 评分只能代表这个 LLM 在提供的 Agent 下的表现能力,只能做纵向比较,而不能做不同品类横向比较(比如 chatgpt 跟 gemini 的 agent 设计上就可能不同)
2. **Aider Polyglot-Diff**
- 核心:**最小化代码变更**(只改必要行)
- 多语言一致性:Python/JS/Java/Go/Rust
* reference
* [gpt-4.1 intro](https://openai.com/index/gpt-4-1/)
# LangGraph 是为了自主可控
LangGraph 提供了显式且可控的编排能力。它不是让 LLM 完全自由地去规划一切(LangChain),而是让 LLM 在你设计的“导航图”中做决策。这使得你在处理复杂、需要严格控制流程、或有确定性循环和分支的任务时,能够有更高的可预测性和健壮性。
# chatGPT vs Gemini
* chatGPT 4o 会在回答结尾附加一个问题,引导用户继续提问
* Gemini 2.5 Pro 会给出简洁的回答,很少去引导交互
chatGPT 的商业模式是基于用户提问次数收费,这是主业务,所以针对性做引导继续提问的训练),而 Gemini 当前阶段首要目标可能是服务 google 内部的各种产品,所以需要简洁的回答?
2025-04-27
# AI CodeReview 感悟
* RAG,retrieval augmented generation,实际是对 diff 代码的与提示词组装成**非结构化** context 投喂给模型得出想要的**结构化数据**
* 越是弱的模型,越需要好更加具体的提示词来引导
* **Inline Self-Review 失效问题**:在同一个 prompt 末尾嵌入 self-review 指令,效果远不如增加一轮独立的 self-review
* 原因 1 —— **一致性偏差**(Consistency Bias):LLM 在同一次推理中刚论证某个结论成立,紧接着让它自我否定,违反其生成概率分布的惯性,模型已经"说服了自己"
* 原因 2 —— **注意力衰减**:长 prompt 末尾的 self-review 指令注意力权重低,容易被模型"走过场"执行
* 原因 3 —— **文本指令 ≠ 执行边界**:对 Agent 而言,prompt 文本指令是"建议",tool call 边界才是"强制步骤"。没有 tool call 界定的 self-review,agent 不会将其视为独立执行阶段
* 独立一轮有效的原因:角色从"作者"切换为"审阅者",消除一致性偏差;self-review 成为新一轮的主要任务而非附加步骤;可以逐条对比输出与原始输入
* **工程启示**:要让 Agent 认真执行某个步骤,需要将其提升为工作流中的**独立 tool call / 独立推理轮次**,而不是作为 prompt 文本指令嵌入
# ChatGPT 图像-安全性-出处查询
通过 C2PA 和内部可逆搜索查找出处
* C2PA 是“身份证”,明确写在文件里,别人可以直接查。方法:
* 图像的 meta 信息部分
* 内部可逆搜索 是“DNA 检测”,即使你撕掉身份证,也可以通过生物特征确认你的身份。(使得像素分布符合特定模式)可能的方法:
* 模型指纹(Model Fingerprinting)
每个 AI 生成的图片或文本都可能带有独特的统计特征(如噪声模式、像素分布等)。
即使去除了元数据(如 C2PA),OpenAI 仍然可以通过这些特征识别内容是否来自 GPT-4o。
* 隐式水印(Invisible Watermarking)(可能的技术之一)
某些 AI 生成内容可能使用不可见的水印,例如:
轻微调整像素值,使其符合特定数学模式,但不影响肉眼可见的内容。
类似于 Google DeepMind 开发的 SynthID 技术,嵌入“难以去除但可识别”的水印。
* 神经网络特征分析(AI-Generated Content Detection)
AI 生成的图片、文本、代码往往有特定的模式(如 GPT 生成的代码可能更符合语法规范但缺乏创意错误)。
通过训练检测模型,OpenAI 可以用机器学习方法来判断某个内容是否由 GPT-4o 生成,即使没有元数据。
# [知识图谱原理](https://chatgpt.com/share/67e3db1c-3314-800f-a04d-8e232d2bce0e)
# [大模型反编译代码](https://ghuntley.com/tradecraft/)
# AI 对技术传播的双重影响
是促进,还是限制?如果大家都使用大模型解决技术问题,而大模型又是基于已有数据(旧技术)训练,新技术的应用会落后,没人使用,会导致网上有关新技术的信息很少,导致 AI 缺乏新技术的训练数据,那新技术就很难被普及?
* [AI 是阻碍技术传播的元凶](https://vale.rocks/posts/ai-is-stifling-tech-adoption)
# world labs 图片生成 3D 视频
[demo](https://www.worldlabs.ai/blog)
# [supervision](https://github.com/roboflow/supervision)
# [AI 图片识别中的视觉注入(visual-prompt-injections)](https://www.lakera.ai/blog/visual-prompt-injections)
1. The Invisibility Cloak(隐身斗篷)
2. I, Robot(我,机器人)
3. One advert to rule them all(一个广告统治他们所有)
* [GPT-4 Vision 提示注入](https://blog.roboflow.com/gpt-4-vision-prompt-injection/)
# [奇异值分解](https://www.cvmart.net/community/detail/4092)
* 奇异值分解(SVD)是一种矩阵分解技术,它将一个矩阵分解为三个矩阵的乘积:一个正交矩阵、一个对角矩阵和一个正交矩阵的转置。
* 奇异值分解在数据降维、图像压缩、推荐系统等领域有广泛应用。
# AI DOOM
* 传统的电子游戏开发流程,通常涉及复杂的预设逻辑,遵循用户输入、更新游戏状态、渲染画面的固定循环。
* DeepMind提出了一种革命性的想法 - 通过生成式AI模型完全抛弃这些预设逻辑,依赖AI实时生成游戏的内容与状态更新。
* [AI技术颠覆游戏开发:谷歌DeepMind GameNGen实时生成《DOOM》探秘](https://blog.csdn.net/weixin_41496173/article/details/141937965)
# [人工智能的现状,任务,架构 与统一](http://www.stat.ucla.edu/~sczhu/Blog_articles/%E6%B5%85%E8%B0%88%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD.pdf)
# 视频生成训练的演化?
关键帧(+描述) + 插值 -> 端到端的学习
分镜技术 + patches 技术
# 一种快速理解模型的方法
从损失函数开始
* U-Net 是像素级别的分类损失跟 dice_loss 组成
* Segment Anything Model (SAM) 使用了一种基于交叉熵的多任务损失函数,其中包括了像素级别的分类损失和边界框级别的回归损失
# 边界框回归损失
# 机器学习基础数据集
* 图像分类领域:MNist, Imagenet, CIFAR 10 等
* 自然语言处理领域:IMDb Large Movie Review Dataset 等
* 图像分割:COCO
[reference](https://juejin.cn/post/6844903826680446990)
# 神经网络逐步取代 SVM 原因
为什么我们大部分使用神经网络进行分类而非SVM?因为核函数是我们手动设计的固定算法进行特征提取,就如同图像处理早期的手动设计的卷积核一样,无法训练,这样的方法能力上限有限,所以就被神经网络淘汰了。
# 人脸识别与普通图像识别的训练区别
* 人脸类别太多(可能成千上万),每个类别数据量太少;而且检测同一人的人脸应该聚类,即使在面部表情、光照、头部姿态等方面有极大变化。
* SphereFace(Angular Softmax Loss)提出了一种新的损失函数 -- A-Softmax 损失,这种损失函数专注于学习每个人脸类别在角度边界上的分布。具体来说,这种损失函数强调同类别的人脸相似度和不同类别的人脸的区别,有助于模型把相同人的面部图像映射到相近的位置,将不同人的面部图像映射到远离的位置。
# scaling law
* LLM中的Scaling Law(比例律)是指, Language Model(语言模型)的性能会随着模型规模的增加而指数增长
* 生物学:代谢率,心跳频率,生物体的结构支持系统,生物的寿命,运动能力等与体型关系
* 社会性:人群规模对社会行为和现象;例如,城市规模与城市发展、社会交流以及资源利用之间可能存在一些规模效应
# Towhee 框架
是一个用于处理非结构化数据的框架,它利用最新的机器学习模型来创建 ETL(提取、转换、加载)流水线。非结构化数据是指无法存储在表格或键值对格式中的数据,如图像、视频、文本等。
# VGG 网络
视觉几何组(Visual Geometry Group)所开发,VGG网络使得网络设计的理念发生了重要转变,即通过重复使用简单的层结构(3x3卷积核和2x2池化层)并深化网络结构,来提高性能。VGG网络同时还证实了深度是实现优秀性能的关键因素之一。
# 感知损失(perceptual loss)
也称为内容损失(content loss),是一种在深度学习特别是在视觉相关任务中使用的损失函数。它不同于传统的像素级损失函数(例如L1损失和L2损失),感知损失更注重于图像内容的感知相似性而不只是像素值的相似性。
* 例子:假设我们正在进行一个图像风格迁移任务,其中目标是将一幅图像的风格(如梵高的画风)迁移到另一幅图像上,同时保留图像的内容。理想情况下,生成的图像应该在视觉上看起来要有梵高笔触风格的颜色和纹理,但同时能识别出原图的内容(如城市的轮廓、天空的位置等)。
在这个任务中,如果使用像素级损失,那么模型可能会非常注重确保生成图像在像素层面与原图尽可能接近,而忽视了风格上的转变。这可能导致风格迁移效果不明显。
* 实现方式:如果使用感知损失来训练模型,我们会首先通过一个预先训练好的深度CNN(如VGG网络)传递原图和生成图,然后计算这两幅图在某些内部层激活值的差异。这些层的激活值代表了图像的高级特征,所以这种差异反映了它们在内容和感知上的相似度。最小化这种差异可以鼓励生成的图像在视觉感知层面上更贴近原图的内容,同时也有目标风格的特质。
* 适用任务:风格迁移、超分辨率和图像合成等。
问题:哪一图层是提取的风格信息?
>>在CNN中,随着层级的加深:
* 初始层主要捕捉基础信息,如边缘和颜色。这些层对图片细节的响应很敏感,但并不捕捉具体的风格信息。
* 中间层捕捉更复杂的特征,如纹理和图案,这些正是构成图像风格的要素。
* 深层则表示更高级的内容,例如图像中的对象和整体布局。
# [stable diffusion](https://zhuanlan.zhihu.com/p/632809634)
* stable diffusion 是一个生成模型
* 目标:用降噪网络生成清晰的图像(加噪是辅助训练降噪)
* 类比:类似 GAN 模型,只不过 GAN 是个步骤的对抗训练,而 SD 是一个多步骤
* 方法
* 加噪过程(前向过程)是一个马尔可夫链,它逐步将随机噪声添加到数据中,直到数据变成纯噪声。这个过程是可控的,因为我们知道每一步加入的噪声量。通过这种方式,模型可以学习在任何给定的时间步骤预测噪声的分布。
* 降噪过程(逆向过程)中,模型使用在加噪过程中学到的知识来预测噪声,并从噪声数据中去除这些噪声,逐步恢复出清晰的数据。如果没有加噪过程,模型就没有机会学习这些噪声分布的信息,也就无法有效地进行降噪和数据重建
疑问
* SD 中将加噪图片输入U-Net中预测噪声如何理解?
* "预测噪声"是扩散模型的一部分,它涉及到将图像从含有噪声的状态逐步恢复到清晰的状态。SD模型首先将一张完全随机的噪声图像(或者是经过一系列噪声添加步骤后的图像)输入到U-Net中。U-Net的目标是预测这张噪声图像中的原始噪声成分。一旦预测出这些噪声,模型就可以从噪声图像中去除它们,从而使图像逐渐变得更清晰。
* 降噪过程中的预测噪声跟实际噪声的对比,这里的实际噪声是从加噪中得到的么?
* 什么是噪声分布信息?
* 噪声类型(高斯噪声等),噪声参数(均值方差),时间依赖项(噪声的量和性质会随着时间步骤的推进而改变)
# [神经网络可解释性](https://zhuanlan.zhihu.com/p/479485138)
# 增量学习
理论:增量学习的核心在于模型能够通过不断学习新数据来提升自身的性能,即使这些数据是由模型自身已经准确识别过的。源于人类的终身学习能力,即不断获取、调整和转移知识的能力,同时避免灾难性遗忘——即新知识的学习对旧知识造成的干扰。
思考:意味着模型识别准确的新数据再来投喂给模型本身训练也能提升模型准确率?
# data-centric AI
Data-centric AI is the discipline of systematically engineering the data used to build an AI system. — Andrew Ng
* [SAM data-centric AI](https://www.zhihu.com/question/521096166)
# 核函数
kernel function or kernel trick
* 概念:将原始空间中的向量作为输入向量,并返回特征空间(转换后的数据空间,可能是高维)中向量的点积的函数称为核函数。
* 简单理解:一种便捷的计算在高维空间里的内积的方法。高维空间的数据计算存在困难。所以替代方案是在特征空间中计算相似度度量,而不是计算向量的坐标,然后应用只需要该度量值的算法。用点积(dot product)表示相似性度量。
* 歧义:把数据从低维映射到高维的是映射函数而不是核函数
* [带例子的核函数解释](https://www.zhihu.com/question/24627666/answer/28440943)
* [核函数概念](https://blog.csdn.net/mengjizhiyou/article/details/103437423)
# 嵌入层
嵌入层是一种将离散值转换为连续向量的技术;
例如:torch.nn.Embedding(10, 5) 将创建一个嵌入层,该层可以将离散值(例如:[1,'a','你好'])映射到连续向量空间中的 5 维向量。
* 如何理解这里的离散跟连续呢?
* 向量里的每一项是否连续,决定了向量本身是连续的还是离散的。例如:[0.2,0.3,0.5] 是一个连续向量,因为它的每一项都是实数,而实数是连续的。 这样的向量可以进行连续的运算和比较,比如求和,求差,求点积,求模长等。
* 而离散是指每一项都不是连续的。例如,[1,‘a’,‘你好’]是一个离散向量,因为它的每一项都是离散的,而且不能进行连续的运算和比较。中的1不可能是’a’,因为它们属于不同的集合,也没有定义它们之间的转换规则。
# 机器学习与英语学习
* 机器学习的内容输出可以类比为通过沉浸式学习英语后能够说出英语,其中另一种方式是通过先学习词法和语法规则。在机器学习中,模型通过大量的数据输入(数据投喂)来理解其中的潜在规律和特征。类似地,通过沉浸式学习英语,我们可以在大量的语言环境中感知和理解英语的潜在规律和特征,从而能够流利地说出英语。
* 早期的人工智能(通过条件语句进行判断然后做输出)与先学习词法和语法规则的方法与相似。早期的人工智能系统通常使用预定义的规则和条件语句来处理输入并生成输出。这些规则和条件语句基于词法和语法规则,用于处理特定的输入情况。类似地,通过先学习词法和语法规则,我们可以在语言学习中掌握词汇和语法规则,并使用它们来理解和生成语言。
两种机器学习区别:通过先预定义的规则和条件语句的方法在一些特定场景下具有**精确性和可解释性**的优势,而通过机器学习从数据中学习的方法则**更加灵活、适应性强,并能够处理复杂情况**。
两种英语学习区别:通过先学习词法和语法规则来学习英语可以提供**结构化学习和准确性**,但**缺乏实际应用,语感欠缺,学习繁琐**,而沉浸式学习英语则更加贴近**实际应用、注重流利性和文化融合**,但**需要环境支持,初始困难**。
思考:意味着初始的时候先了解基本语法,后续不断去读各种精选文章(而不是研究更深的语法规则)才是英文学习的最佳路线?而机器学习没有初始化烦恼,所以直接去学海量数据就好?
# GAN,VAE,Diffusion 生成模型理解
## 潜空间
* GAN 是先随机一个符合高斯分布潜在空间作为Generator输入生成图片,然后投喂给Discriminate 作为输入判定然后做 反向传播;
* VAE 是通过训练 Encoder 将输入映射到复合高斯分布(实际通过训练得到均值和方差)的潜在空间,然后解码器通过对潜在空间解码得到输出;数据先降维再升维
* 在 MNist 中潜在空间可以是20维长度的向量,来表示 20 个不同的均值和方差分布,来代表 20 个可能的特征?
* Diffusion模型和其他生成模型一样,实现从噪声(采样自简单的分布)生成目标数据样本。
* 核心原理是通过一个随机的前向过程(Forward Process)和一个去噪的逆向过程(Reverse Process)来实现从噪声(Noise)到目标数据样本(Data Sample)的转换。
## Diffusion vs GAN
* 速度:Diffusion 需要多步骤到图片,而 GAN 是一步到位;所以Diffusion 会慢,但是训练过程也更稳定
* 应用面:扩散模型可以利用多种条件来控制生成的图像,比如文本描述、图像掩码、深度图等,而 GAN 通常只能利用类别标签或噪声作为条件。这使得扩散模型可以更灵活地应用于不同的任务,比如图像编辑、图像修复、图像翻译等
# Diffusion 模型过程
* 初始噪声:从某个先验分布中生成初始噪声信号。
* 扩散过程:通过一系列步骤,将当前噪声信号逐渐扩散,以生成下一个时间步的噪声信号。这个过程中使用了逆扩散方程,可以将当前步骤的噪声信号映射到上一步骤的噪声信号。
* 逆扩散采样:通过逆扩散过程中的采样操作,将当前噪声信号转化为以下一步的噪声信号。
* 生成器网络:使用生成器网络将当前噪声信号映射回高维空间,生成一帧图像。
* 损失函数与优化:根据生成图像与目标真实图像之间的差异,定义适当的损失函数,并通过反向传播和优化算法来更新生成器网络的参数。
# 理解 VAE
“局部是由于方差控制,而全局是由于均值控制”这句话强调了在VAE模型中,方差向量主要影响生成数据的局部细节和变异性,而均值向量则决定了数据在潜在空间中的全局分布和结构。
* [VAE理论跟数学](https://zhuanlan.zhihu.com/p/144649293)
* 变分推理
* KL 散度
* 在训练辨别模型时,为了简化计算,人们往往直接对交叉熵进行优化。 而在 在训练生成模型时,为了使分布与相互接近,我们必须直接对KL散度进行优化。
* [自信息、熵、交叉熵与KL散度 的推导](https://zhuanlan.zhihu.com/p/345025351)
* [KL-Divergence 与交叉熵](https://blog.csdn.net/Dby_freedom/article/details/83374650)
* [KL 散度形象说明(翻译)](https://www.jianshu.com/p/43318a3dc715)
* [EM——期望最大 算法](https://zhuanlan.zhihu.com/p/78311644)
* 交叉熵
* 贝叶斯定理
* 自由能
# 深度学习优化器
优化方向
* 基于动量(NAG)
* 基于自动学习率 (例如 RMSprop,配置训练简单)
* 结合两者的(Adam 一般最优)
为什么 WGAN 选择 RMSprop 作为优化器,而不是 Adam?
>> WGAN的目标是通过最小化生成器和判别器之间的Wasserstein距离来提高生成样本的质量。传统的生成对抗网络(GANs)在训练过程中容易出现梯度伪影的问题(告诉你错了,但并没有指出错在哪里,导致更新方向错误,把正确改掉,错误留下),即判别器的梯度无法提供有关生成器当前状态的准确信息,导致训练不稳定。RMSProp优化算法通过自适应地调整学习率来减轻梯度伪影问题,有助于更稳定地训练WGAN。
* [深度学习——优化器算法Optimizer详解(BGD、SGD、MBGD、Momentum、NAG、Adagrad、Adadelta、RMSprop、Adam)](https://www.cnblogs.com/guoyaohua/p/8542554.html)
# 反向传播
有一个简单的神经元函数 y = w * x,模拟计算梯度和进行反向传播的过程。
一次权重更新过程(给定初始数据输入 x = 1,w = 10,实际输出是 10,期望输出 y1 = 2 则 目标 w 为 2):
输入 x = 1 初始权重 w = 10 计算输出 y = w * x = 10 * 1 = 10
计算损失:
给定期望输出 y1 = 2 计算损失函数 loss = (y1 - y)^2 = (2 - 10)^2 = 64
计算梯度:
损失函数对权重 w 的梯度:dL/dw = 2 * (y1 - y) * (-x) 将具体数值代入:
dL/dw = 2 * (2 - 10) * (-1) = 2 * (-8) * (-1) = 16 因此,梯度为 dL/dw = 16。
反向传播:
使用梯度下降法更新权重 w: w = w - learning_rate * dL/dw 假设学习率(learning rate)为 0.1,将梯度代入:
w = 10 - 0.1 * 16 = 10 - 1.6 = 8.4 更新后的权重为 w = 8.4。
# CGAN MNIST 训练步骤
1. 固定 generator ( real_label = [batch_size, 10] 的对真实 label的 one-hot 编码 )
* 用真数据训练 output_label = Discriminator(real_image),d_real_loss = BCELoss(out_label,real_label)
* 用虚假数据(噪音 + 真实标签 [batch_size, noise_dim(满足0~1正态分布)] + real_label = [batch_size, noise_dim+10] = z_tensor )
* 训练 fake_image = Generator(z_tensor) 得出 fake_image( Tensor[batch_size, 1, 28, 28])
* 再次 out_label = Discriminator(fake_image) ,d_fake_loss = BCELoss(out_label,fake_label(全0))
* 计算 D_loss = d_real_loss + d_fake_loss 反向传播,更新 Discriminator
2. 固定 discriminator
* 由 fake_image = Generator(z_tensor)
* 由 Discriminator(fake_image) 得出 out_label ,g_loss = BCELoss(out_label,real_label)
* 计算 G_loss = g_loss 反向传播,更新 Generator
# 预处理
* 归一化:一种常见的图像预处理操作,它用于将图像的像素值归一化为均值为0、标准差为1的分布,或者只将数据收窄到 -1 ~ 1 之间。常用于 CNN 网络数据预处理
* 加速训练:常用的激活函数如 Sigmoid 和 Tanh 在输入值较大或较小的区域会饱和,导致梯度接近或完全为零,从而使梯度下降变得非常缓慢或停滞。通过将像素值缩放到 -1 到 1 的范围,可以使输入值位于激活函数的线性区域,避免梯度饱和问题,提高网络的训练效果。
* 模型稳定性:在优化算法中,例如梯度下降法,较大的梯度值可能导致参数更新过大,从而使优化过程不稳定甚至发散。通过将像素值缩放到 -1 到 1 的范围,可以将梯度控制在较小的范围内,提高优化算法的数值稳定性,使模型更容易收敛。
* 数据分布一致性:将像素值缩放到 -1 到 1 的范围可以使不同图像之间的像素分布更加一致。这样做的目的是确保输入数据的统计特性在整个训练集上是相似的,从而提高模型的泛化能力。
* 推广:Batch Normalization (BN) 层作用类似,但是应用在**训练阶段**,对每个小批量数据进行标准化
# 损失函数
## 交叉熵
* 熵:阿根廷 1/4概率打进决赛 ,1/2 概率获得冠军,1/8 获得冠军,则有 f(1/8) = f(1/2) + f(1/4),f(x) := 信息量,推出可能的 f(x) := -log(x) (log 2为底单调上升,加负号才则单调向下)
* 交叉熵:KL 散度是一种用于衡量两个概率分布之间差异的度量,KL(P || Q) = Σ(P(i) * log(P(i) / Q(i))),固定分布 P 的时候 KL 散度可以化简为交叉熵 KL(P || Q) = Σ(P(i) * log(P(i) / Q(i))) = -Σ(P(i) * log(Q(i))) = -H(P, Q);可以很好的用于机器学习损失计算
### 问题
* 回归跟分类区别?
* 分类例子:识别图片是猫还是狗
* 回归例子:通过特征1-n预测房价
* 思考:分类跟回归的区别是目标的 离散跟连续 区别?还是说输出的label之间是否有“距离度量”?
* 为什么交叉熵适合分类,而 MSE 适合回归?
* 交叉熵
* 概率解释性:交叉熵基于概率分布之间的差异进行度量,更适合分类问题,因为分类问题通常涉及对不同类别的概率分布进行建模和预测。
* 梯度更强烈:相对于MSE,交叉熵的梯度更加陡峭,这可以加快模型的收敛速度。对于分类问题,更快的收敛速度可能是一个优势。
* MES
* 数学上的合理性:MSE 是对预测值与真实值的差异的平方进行度量,可以提供对预测误差的较为精确的度量。
* 对异常值不敏感:平方差的计算使得 MSE 对异常值不敏感,因为平方操作会放大异常值的影响。这在某些回归问题中可能是有益的。
Reference
* [王木头学科学](https://www.youtube.com/@wkaing)
* https://zhuanlan.zhihu.com/p/104130889
* [回归与分类问题区别](https://cloud.tencent.com/developer/article/1604194)
# Transformer
## positional encoding
位置编码的要求:选择正弦跟余弦组合编码
* 每个位置都有唯一的编码。
* 在不同长度的句子中,两个时间步之间的距离应该一致。
* 模型不受句子长短的影响,并且编码范围是有界的。(不会随着句子加长数字就无限增大)
* 必须是确定性的。
总结
* 问题及其解答:
* 为什么没有直接使用 1,2,3...这种线性编码?
* 原因:周期性模式在位置编码中的不同维度上呈现出不同的变化速度和周期(下面例子会说明)
* 捕捉长距离依赖关系(线性模式也能做到,但是不够精细)
* 提供更丰富的表示能力:较低频率的维度具有较长的周期,可以捕捉到大范围的序列结构,而较高频率的维度可以更细致地表示局部模式和短距离的依赖关系。
* 避免过拟合:随着句子变长,这些值可能会变得特别大,并且我们的模型可能会遇到比训练时更长的句子
* 思考例子:
* 第一个词编码为 [1,2,3], 则位置可用向量 [秒,分,时]来表示;第二个词编码为 [4,5,6], 则位置可用向量 [秒 + 1,分 + 1/60,时 + 1/360] 来表示
* 周期:在一个词向量上会出现不同的周期变化,能同时追踪近距离跟远距离的词关系:秒针走一个周期 60 秒,分针走一步;分走一个周期 60 分, 时针+1;
* 周期设定:通过设定 秒,分,时之间的周期关系(比如可以设定600秒,分针才走一步,则会拉上周期变化,追踪更远的词关系)
Reference
* [positional encoding blog](https://kazemnejad.com/blog/transformer_architecture_positional_encoding/)
* [positional encoding stackexchange + youtube](https://datascience.stackexchange.com/questions/51065/what-is-the-positional-encoding-in-the-transformer-model)
## 卷积
卷积不是被“设计”出来的,而是被“发现”出来的。
只要研究线性、平移不变、局部规则反复使用,最终一定会遇到它。
卷积是“线性 + 平移不变性”的必然形式,而参数共享是它的直接后果。
* 典型网络 CNN 不是因为图像“必须”卷积,而是因为卷积给了我们“物体不关心位置”的强假设
* 一旦叫它“卷积”,就得到了一整套工具:Fourier 变换、z-transform、Laplace 变换、FFT 加速、稳定性分析、频域直觉
## self-attention
思考
* 多头注意力机制与卷积的多通道(channel)进行类比。多头注意力机制和卷积的多通道都涉及并行地学习不同的特征表示。它们都致力于提取输入数据的多样化特征,并捕捉输入中的不同模式和关联性。
Reference
* [self-attention](https://medium.com/@geetkal67/attention-networks-a-simple-way-to-understand-self-attention-f5fb363c736d)
* [multi-head attention in transformer](https://medium.com/@geetkal67/attention-networks-a-simple-way-to-understand-multi-head-attention-3bc3409c4312))
# one hot 编码
One-hot 编码是一种将离散的分类标签转换为二进制向量的方法,它的优点是可以消除不同类别之间的偏序关系,使得特征之间的距离计算更加合理。(方便在机器学习分类任务计算 LOSS)
## 例子
比如,有一个离散型特征,代表工作类型,该离散型特征,共有三个取值,不使用one-hot编码,其表示分别是x_1 = (1), x_2 = (2), x_3 = (3)。
两个工作之间的距离是,(x_1, x_2) = 1, d(x_2, x_3) = 1, d(x_1, x_3) = 2。那么x_1和x_3工作之间就越不相似吗?显然这样的表示,计算出来的特征的距离是不合理。
那如果使用one-hot编码,则得到x_1 = (1, 0, 0), x_2 = (0, 1, 0), x_3 = (0, 0, 1),那么两个工作之间的距离就都是sqrt(2).即每两个工作之间的距离是一样的,显得更合理。
## 实现
```python
# 假设 text 中的字符集是由大小写字母和数字组成的,共有 62 个字符(例如,char_set = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"),则 self.char_set_len 的值为 62。对于每个字符 ch,它在字符集中的索引位置是唯一的,因此 i * self.char_set_len + self.char_set.index(ch) 的结果也是唯一的。
vector = np.zeros(self.max_captcha * self.char_set_len) # shape = [max_captcha*36]
for i, ch in enumerate(text):
idx = i * self.char_set_len + self.char_set.index(ch) # idx = (0-(max_captcha-1))*36+(0-36)
vector[idx] = 1
思考:如果是不定长编码,该如何改进?
CRNN + CTC 解决变长文本识别
CTC 如何计算预测序列跟目标序列的相识度?
- 生成 time step 的预测概率(有 CRNN 模型输出),每个 time step 会有对类别的预测概率向量
- 通过算法将所有可能路径的概率相加,并取对数(通常用于数值稳定性)得到最终的相似度分数。 Reference
深度学习编程范式
Tensorflow vs Pytorch(符号式(也叫声明式)与命令式程序) 命令式
- 更加灵活:原生语言的灵活性跟运行时断点
import numpy as np
a = np.ones(10)
b = np.ones(10) * 2
c = b * a
d = c + 1
对应符号式(DSL):
- 节省内存:掌控全局的内存分析并优化
A = Variable('A')
B = Variable('B')
# 当执行 C = B * A 时,不会发生任何计算。相反,此操作会生成表示计算的计算图(也称为符号图)
C = B * A
D = C + Constant(1)
# compiles the function 并真正的执行计算结果
f = compile(D)
d = f(A=np.ones(10), B=np.ones(10)*2)
符号图:
类比:类似 react jsx命令式(直接难优化)模板跟 vue 的声明式(真正执行前能做各种运行时优化)模板?
机器学习分类的一点技巧
- 对数据进行分类
- 有特征:直接通过已经有的分类进行绘制图
- 先通过特征维度绘制图;例如:数据集仅包含两个分离相当明显的聚类。其中一个簇包含 Iris setosa,而另一个簇包含 Iris virginica 和 Iris versicolor;通过特征绘制出的图会分成明显2堆,其中一堆是交错2种类型 Iris
- 如果没有明显的聚类,并且数据维度多,可以通过 PCA 等方式降维后再分
- 无特征:则先通过 KMeans 能方式聚类,再通过有特征方式分析
- 有特征:直接通过已经有的分类进行绘制图
尝试理解 ONNX (Open Neural Network Exchange)
- 是什么?ONNX = (模型本身 + 模型训练好的权重跟偏置)的一种更加抽象的表达
- 如何表示?使用预定义的 operator(描述输入与输出的关系,例如:add算子= inputA + inputB = OutputC,可拓展)来描述模型,用向量描述训练好的参数
- 作用?实现不同深度学习框架和平台之间的模型互操作性
- 为什么 pytorch 在导出 ONNX 的时候需要传入一组输入?原因:
- ONNX 并非像编译器一样彻底解析原模型的代码,记录所有控制流;而是不考虑控制流的静态图
- 而是利用 pytorch trace 机制,将参数传入模型执行,并记录执行这组输入对应的计算图
深度学习中的 Epoch 和 Batch
- Epoch 是什么? 一次 Epoch = 让所有数据通过模型正向+反向传播一次 = 一个完整的学习周期
- Epoch 设置多少次合适? 无定论: 次数少会导致欠拟合; 次数多会导致过拟合;
- 什么是 Batch? Batch Size = 一次训练的样本数 每一次参数的更新所需要损失函数并不是由一个数据获得的,而是由一批数据加权得到的
- Batch 的作用?
- 效率:利用矩阵计算加速(相对于单个去训练)
- 稳定性:平均每个数据样本的贡献,减少梯度的方差
- 多大合适:看情况,太小会导致训练太久;太大会导致内存受不了
Reference
GPT 尝试
- 代码尝试
- 重构转换
- 输入 js -> ts
- 优化
- 格式化代码
- 创建
- 创建插件(eslint)步骤:写测试用例 -> 输入 gpt -> 生成插件 -> 微调成型
- 问题:自动生成的代码会比较繁琐或者隐藏逻辑问题,也不会去利用第三方的包的能力
- 目前方案:需要 developer 找到更便捷的方式再去投喂给 gpt 生成更加合理简洁的代码
- 创建插件(eslint)步骤:写测试用例 -> 输入 gpt -> 生成插件 -> 微调成型
- 重构转换
CNN 的简单理解
- 网络越深,学习的知识越抽象:比如第一层hidden layer负责编码诸如点、线、边缘等浅层信息;第二层hidden layer编码简单点的纹理、形状等信息;第三层hidden layer编码诸如眼睛、鼻子等目标的形状…,然后逐层学习,不断地提取抽象的特征,一气呵成,最终学会了辨识花草树木、飞禽走兽等等。 - reference
- 网络越宽,每一层学习的知识越丰富:增加网络的宽度意味着同一个hidden layer有着更多的神经元,每一个神经元代表一种颜色,一个方向,一种纹理,组合起来便可以学习到更多不同的颜色信息,各个不同的方向以及不同频率的条纹信息。
一句话信息
- 生成对抗网络(GAN) VS 变分自编码器(VAE): GAN 倾向于生成逼真的合成样本,而 VAE 倾向于生成具有一定程度多样性的样本。如果期望生成特定目标样本,可以考虑 CGAN 跟 CVAE* GAN 基本原理及其应用
- DALL-E uses Discrete Variational Autoencoder (dVAE) for this step. dVAE is a variant of traditional Variational Autoencoder (VAE) that operates in a discrete latent space. It is similar to VQ-VAE but uses distribution instead of nearest neighbor.
- VIT - Google推出了VIT(Vision Transformer):一个和Bert几乎一致,同时不添加任何卷积结构的图像分类模型。VIT在Transformer上的成功,证明了可以用统一的模型,来处理不同领域(语言/图像/视频)的任务,进而开启了多模态模型研究的新篇章。
- vit彻底赢了 CNN 么:transformer全局感受野,在大图片或者说找东西时效果好(类似近视眼,能够感受图像大轮廓)。cnn局部感受野,对细节处理较好(理解像素级别的问题,例如 医疗影像)。
- 文摘 - 高手解决问题的方式从来都不是纠结问题本身,而是升维;升维成功,问题也就解决了
- 雷军2023演讲 - 如何快速学习:知识不全是线性的,大部分是网状的,知识点之间不一定有绝对的先后关系;前面内容看不懂,跳过去,并不影响学后面的;后面的学会了,有时候更容易看懂前面的。
AGI 的一点理解
机器学习训练了很多模型,而 LLM 只是其中之一; ChatGPT 之所以跟 AGI 最接近,是因为语言模型的通用性; 如果能够理解自然语言,那就可以实现所有文字能够描述的任务; 其他 AI 任务,比如图片识别,则只能做到图片相似度能人物处理(推荐),无法拓展到相对通用的任务,除非日常交流能够通过表情包完成
gpt 可能的研究方向
- 建设高难度的综合任务评测数据集(LLM 的测试用例,越完备 -> 越强大)
- 高质量数据工程(密集+多样性):LLM 进化 = 更多高质量数据
- 数据例子
- 密度极高的高质量数据:wiki
- 高质量问答:quora,知乎
- 高质量图片:
- 思考
- 高质量数据消耗完后 gpt 如何进化?
- 能否自己创造知识自己消费(类似 alpha-go 自我对弈的进化)?
- 如果 gpt 成长的资料来源于人类,那能否突破人类知识的边界?
- 数据例子
- 探索 LLM 模型的规模天花板:大模型大数据,能参与的玩家不多
- 思考:是否会出现共建超大模型
- 增强 LLM 的复杂推理能力
- LLM 纳入 NLP之外更多其它研究领域:多模态?
- 如何突破符号领域?如果某个领域是非成文的,不能用符号记录表达,那么 GPT 是否就无能为力。比如,人类的很多心理活动、潜意识、灵感、顿悟等等,GPT 如何模拟生成。
- 更易用的人和LLM的交互接口:听觉?
- 超大LLM模型Transformer的稀疏化:相同算力下提高训练速度
参考
关于 chatGPT 引发的人工智能思考 2023-3-1
- 人跟AI的关系:淘汰还是互补?
- 人有自主目的性(AI暂无),AI是实现目的的工具;
- 提问跟回答能力,哪个更能生存下来?
- 往后提出好问题能力的重要性将越来越超过回答问题能力
- 教育
- 投喂答案的教育模式需要变革 -> 把提问能力列入考核标准,更能培养出人机协作人才
- 让人利用机器,而不是把人培养成机器
- 文理分科这种教育模式急迫需要改变:chatGPT 需要文理结合,提好问题,同时认清答案
chatGPT 衍生的未来职业?(更新 2023-3-13,参考)
场景跟问题
- 更精准提出需求,才能利用好 chatGPT
- 辅助 chatGPT 修正回答错误,同时又不影响模型输出的其他答案
- 检测回答是否由机器生成
- 如何避免 chatGPT 泄密,如何做隐私保护(目前可以 chatGPT 被催眠然后突破本身不泄密的限制)
- AI 训练,避免伦理问题
- AI 本身安全:解决提示注入(类似 网页的 xss ,SQL 注入等),越狱等安全问题
- 知识产权重新定义:AI生成的东西到底算不算侵权?(例如之前的爬别人网站的数据作为自身的商业盈利依据,是否算侵权?)
- 趋势预测
- 动作(运动,游戏等数据)文件化:可以对整场羽毛球做文字标记序列化,然后输入 chatGPT,最后可以预测落点跟个人行为
职业名?
- 标注师:标记信息,投喂并训练 AI
- 安全员:确保 AI 不被攻破
gpt自己的回答
- 提示工程师:提示是一种指导GPT-4生成内容的文本或图像,通常包含一些特殊的符号或指令。提示工程师就是专门设计和优化提示的人员,他们需要了解GPT-4的内部机制和逻辑,以及不同领域和场景下用户的需求和偏好。提示工程师可以为各种应用场景提供高质量、高效率、高安全性的提示服务。
- 内容审核员:虽然GPT-4具有强大的生成能力,但它也可能会产生一些不合适或有害的内容,如色情、暴力、歧视、谣言等。内容审核员就是负责检查和过滤GPT-4生成内容中是否存在这些问题,并及时删除或修改不良内容。内容审核员需要具备一定的专业知识和判断能力,以及良好的道德素养和责任心。
- 内容运营师:内容运营师是利用GPT-4为各种平台和渠道提供优质内容服务的人员,他们需要根据目标受众和市场需求,选择合适的提示和参数来调用GPT-4生成相应类型和风格的内容,并进行编辑、优化和发布。内容运营师需要具备一定的创意思维和文案能力,以及对各种媒体平台和行业动态有一定了解。
- 内容创作者:内容创作者是利用GPT-4辅助自己进行创作活动的人员,他们可以将自己想要表达或传达给用户