news 2026/10/14 17:47:13

There Is No Spoon 编码专题:分词器、图像 Patch 与多模态对齐——数据如何进入正确形状的完整指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
There Is No Spoon 编码专题:分词器、图像 Patch 与多模态对齐——数据如何进入正确形状的完整指南
  • 教程
  • 机器学习
  • 深度学习

【免费下载链接】thereisnospoon

A machine learning primer built from first principles. For engineers who want to reason about ML systems the way they reason about software systems.

项目地址:https://gitcode.com/gh_mirrors/th/thereisnospoon
点击查看免费下载

正在构建机器学习系统时,很多人把精力花在"选哪个模型"上,却忽略了更前置的一步:数据要先进入正确形状。There Is No Spoon 是一个从第一性原理构建的机器学习入门项目,面向工程师讲解如何像推理软件系统一样推理 ML 系统,其中 ml-primer.md 的 Encoding 章节把"分词器、图像 patch、多模态对齐"讲得尤其透彻——这篇专题带你完整读懂它。

为什么"形状"决定模型上限:编码器的三个核心决策

在 There Is No Spoon 的心智模型里,编码器把原始数据转换成下游架构能操作的向量格式,它决定了模型的能力天花板——模型只能从编码器保留下来的信息中学习(ml-primer.md#L498-L504)。

选编码器之前,要先回答三个问题:

决策含义典型例子
什么是"一个元素"粒度(granularity)词?子词?像素?16×16 的 patch?
每个元素的向量捕捉什么原始信号 vs 上下文化表示原始像素 vs 语义化 token 嵌入
保留了哪些结构信息顺序、邻接关系、层级文本顺序、图像空间邻接、分子拓扑

项目有一句非常关键的设计原则(ml-primer.md#L504):

编码器必须保留你需要的东西,而这个判断要在选编码器之前做,而不是之后。

一个为某个目标预训练的编码器,可能会主动销毁另一个任务所需的信息。有了端到端训练,梯度会告诉编码器"下游到底需要什么";没有端到端训练,你就是在手工雕琢一个接口。

完整的主题地图见 SYLLABUS.md,其中 "Encoding: Getting Data Into the Right Shape" 一节明确把编码器与架构的配对视为联合设计决策(SYLLABUS.md#L82-L86)。

文本如何进入正确形状:分词器把字符串变成向量序列

文本模态的标准流程是(ml-primer.md#L507):

原始文本 ──分词器(BPE/WordPiece/SentencePiece)──> 子词 token 序列 └── 每个 token 查学习到的嵌入表 ──> 向量序列 → Transformer

三个工程要点:

  • 子词分词(BPE、WordPiece、SentencePiece):把开放词表问题变成有限词表,同时保留构词能力,未登录词也不会 OOV。
  • 分词方式决定模型"看得见什么":unhappy是一个 token,还是un+happy两个 token?前者模型只能把它当整体处理;后者前缀结构可见,组合语义才有可能被学习。
  • 代码等结构化文本需要专门照顾:好的分词器要能保留缩进、不拆开关键字(ml-primer.md#L656 的"代码生成"实战案例)。

Token 嵌入之后,token 之间的关系靠点积对齐来表达——两个向量越"同向",语义越相关。这正是分词器 + 嵌入表 + 注意力能组合出语义理解的最小闭环。

图像如何进入正确形状:像素网格与图像 Patch 两种路线

图像有两条主流路线,对应两种归纳偏置(ml-primer.md#L508):

路线元素定义匹配架构隐含假设
像素网格每个像素(含局部邻域)CNN局部性 + 平移不变性
图像 patch16×16 像素块投影成一个向量ViT(Vision Transformer)patch 之间靠注意力动态路由

图像 patch 是粒度权衡:16×16 是业界标准值。

  • patch 太大 → 细粒度信息在投影时就被丢掉;
  • patch 太小 → 序列长度暴涨,attention 的二次方成本失控。

一个实用的混合做法(ml-primer.md#L695):ViT 用卷积做 patch embedding 负责局部,再用 attention 负责 patch 间的全局路由——"每一层用最便宜的操作捕捉该层级的结构"。

多模态对齐:投影容易,对齐才是难的部分

给系统加一个新模态(文本 + 图像、代码 + 文档),这是一个编码器问题,不是架构问题——核心模型通常不变(ml-primer.md#L770-L779)。

难点在于(ml-primer.md#L512):

  1. 投影是容易的:每个模态一个 adapter,投影到共享维度即可。
  2. 对齐是难的:如何保证"语义匹配的跨模态输入落在共享空间的同一区域"?
  3. 对比学习提供对齐信号:CLIP 式训练把匹配对拉近、不匹配对推远,这是让不同模态"说同一种向量语言"的梯度来源。
  4. 落地形态:GPT-4o、Gemini 这类系统,就是把多个对齐后的编码器喂进同一个共享 Transformer。

对齐之后,FFN 层在共享表示空间里做"容积式查表",应用存储的知识——模态差异被抹平为统一的向量几何(ml-primer.md#L472-L480)。

一张表总结:四种模态的编码器选择

模态编码器方案关键权衡易踩的坑
文本子词分词(BPE 等)+ 学习嵌入词表大小 vs 组合可见性关键字被拆开、顺序信息丢失
图像CNN 用像素网格;ViT 用 16×16 patchpatch 粒度 vs 序列成本patch 过粗丢细节
音频转频谱图(时间-频率图像)+ 卷积前端或 patch 嵌入时间分辨率 vs 频率分辨率把波形直接当一维序列
图结构定义节点/边/特征,结构本身就是编码需要领域知识特征选错 → 天花板锁死

(依据 ml-primer.md#L506-L510 与各模态实战案例 ml-primer.md#L610-L685)

动手之前记住的 3 条核心原则

  1. 先定"要保留什么",再选编码器——编码器决定模型上限,事后补救代价最高。
  2. 编码器与架构是联合设计决策:卷积要局部性,attention 要内容动态路由,patch 大小直接改写两者的工作分工。
  3. 优先端到端训练:让梯度替你回答"下游需要什么",否则多模态对齐、编码器-模型接口都是在手工雕琢。

想更深入?把 ml-primer.md 交给你的 AI 编程助手,围绕 "Encoding" 一节对话式探索,是这个项目推荐的学法(README.md "How to Use This")。

延伸阅读:项目内相关资料

  • 教程正文(本专题核心来源):ml-primer.md
  • 完整主题地图:SYLLABUS.md
  • 注意力机制可视化脚本:scripts/05_attention_mechanism.py
  • FFN 容积式查表脚本:scripts/06_ffn_volumetric.py
  • 点积对齐脚本:scripts/09_dot_product.py
  • 组合规则对比脚本:scripts/12_combination_rules.py
  • 项目介绍与阅读建议:README.md
  • 教程
  • 机器学习
  • 深度学习

【免费下载链接】thereisnospoon

A machine learning primer built from first principles. For engineers who want to reason about ML systems the way they reason about software systems.

项目地址:https://gitcode.com/gh_mirrors/th/thereisnospoon
点击查看免费下载

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/14 17:47:06

硬件基础学习记录总结2(电路原理)

2.1 电路的等效变换核心思想:对外等效,对内不等效 等效:两个二端网络,端口电压、电流关系完全一样。只关心端口外部特性,网络内部电流、电压可以不一样。 适用:只要求解外部支路时,把复杂网络换…

作者头像 李华
网站建设 2026/10/14 17:47:02

armcc 编译器实战:AC5 与 Keil MDK 兼容性及旧工程维护指南

简介:ARM 编译器 5.06 版本是一套面向 ARM 架构嵌入式开发的优化编译工具链,专门针对 Cortex-A/R/M 系列处理器设计,适用于在 Keil MDK 5.37 环境中进行固件构建与性能调优的开发者。压缩包共 3 个文件,包含 exe 安装引导、MSI 组…

作者头像 李华
网站建设 2026/10/14 17:46:21

Serverless在大规模数据处理中的实战落地与避坑指南

1. 这不是“免运维”的童话,而是大规模数据处理的现实杠杆“Serverless 在大规模数据处理的实践”——这个标题里藏着一个被严重误读的词:Serverless。很多人第一反应是“不用管服务器了?那我是不是可以躺平了?”我带过三个不同行…

作者头像 李华
网站建设 2026/10/14 17:45:53

自己替换自己有多难?ArtCraft Launcher跨平台自更新机制源码剖析

【免费下载链接】craft-launcher The Craft App Launcher 项目地址: https://gitcode.com/gh_mirrors/cr/craft-launcher 点击查看 免费下载 ArtCraft Launcher 是一个纯 Rust 编写的跨平台应用启动器,负责安装、更新和启动整个 Craft App Suite。它还有…

作者头像 李华
网站建设 2026/10/14 17:45:49

Oracle 12c新建PDB并关联监听的稳态实践指南

1. 项目概述:为什么在Oracle 12c里“新建PDB并关联监听”是绕不开的基本功你刚接手一个某高校实验室的数据库运维任务,核心系统跑在Oracle 12c上——不是19c,也不是21c,就是那个已经进入扩展支持期、但仍在大量政企和教育类项目中…

作者头像 李华