duangxinBlog

记录 LLM、Agent、论文阅读与项目实践

这个栏目用于记录 Agent 方向值得持续关注的热点内容。

后续每篇文章可以按固定结构整理:

  • 来源链接
  • 核心内容
  • 为什么值得关注
  • 我的判断
  • 后续行动

先保留这个占位页,后续有真正的热点内容后再替换为正式文章。

这是周报栏目的第一篇占位稿。后续每周可以按照固定结构更新,避免只保存链接而没有自己的判断。

本周关注

  • 重要论文或技术报告
  • 开源项目与工具更新
  • 产品动态和落地案例
  • 对自己研究方向有启发的观点

推荐记录格式

每条内容尽量包含:

  • 来源链接
  • 核心内容
  • 为什么值得关注
  • 我的判断或后续行动

本周判断

Agent 方向的价值不只在“模型会调用工具”,更在于能不能把长期目标拆解成可靠步骤,并在执行中发现错误、修正计划、留下可评估的轨迹。

这是这个博客的第一篇学习总结。

我搭建这个博客,不只是为了记录每天学了什么,更重要的是把学习过程变成可以回顾、可以展示、也可以继续迭代的材料。

为什么开始写

学习大语言模型和 Agent 很容易陷入“看了很多,但沉淀很少”的状态。博客可以帮我做三件事:

  • 记录:保留学习路径和关键资料。
  • 复盘:把理解不清楚的地方写出来,再逐步补齐。
  • 展示:把论文阅读、项目实践和阶段成果整理成作品集。

接下来怎么写

第一阶段先不追求复杂功能,只保证内容能够稳定发布。等文章数量增加后,再逐步优化主题、分类、搜索和阅读体验。

来源:duangxin/LLM-learing week4/week4_log.md

文献阅读

6. Align Before Fuse: Vision and Language Representation Learning with Momentum Distillation

ALBEF | Li et al., 2021 | 【略读】

阅读重点

  • 图文对齐与深度融合之间的过渡性工作,提出”先对齐再融合”的思想,并引入 momentum distillation
  • 不属于最终形态,但能很好展示早期视觉语言预训练如何在对齐与融合之间寻找平衡
  • 适合作为理解 BLIP 系列演进逻辑的背景

笔记

1.ALBEF提出先让模型学会“图片和文字说的是同一件事“,再把两者融合起来做理解任务,也就是先对齐再融合的思想。
2.当时主流的路线是多依赖于目标检测器提取图像区域特征,再和文本 token 一起送入跨模态 Transformer。另一条路线是 clip 这种双塔对比学习,ALBEF 则提出了一个折中的方案:先用对比学习让图像和文本在全局语义上对齐,再通过一个轻量级的融合模块进行深度融合。
3.ALBEF 采用的结构是 12 层的 vit 作为视觉编码器,6 层的 BERT 作为文本编码器,外加一个 6 层的多模态编码器,图文特征在其中通过交叉注意力机制进行融合。然后再进行 MLM(Masked Language Modeling)和 ITM(Image-Text Matching)的预训练任务。
4.ALBEF还引入了动量蒸馏(Momentum Distillation)的概念,来稳定训练过程。他们维护了一个教师模型(Teacher Model),让学生同时学习 one-hot 监督和教师模型的软标签输出,通过从教师模型中提取知识来提高学生模型的性能。教师模型的参数是学生模型参数的指数移动平均(Exponential Moving Average),这样可以让教师模型在训练过程中保持相对稳定,提供更可靠的指导信号。
5.质疑:ALBEF 认为 one-hot 标签太硬,因为一个 batch 里的其他文本不一定都是真负样本。但反过来,soft label 也可能把本来应该区分开的样本拉近。比如两张图片都包含 “a dog”,但一张是狗追球,一张是狗躺在沙发上。teacher 模型可能因为关键词相似给它们较高相似度,导致模型不够重视动作和场景差异。


7. BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation

BLIP | Li et al., 2022 | 【略读】

阅读重点

  • 视觉语言统一建模的重要过渡工作,核心贡献是通过 bootstrapping 方式清洗和增强图文数据
  • BLIP 属于”纯视觉语言预训练”时代,和后续”接入 LLM”的 MLLM 范式有跳跃,精读价值相对有限
  • 重点把握 bootstrapping 数据清洗的思路与动机

笔记
1.当时的视觉语言预训练已经很强,但大多偏科:encoder 型模型适合理解和检索,encoder-decoder 型模型更适合生成,单个模型很难同时在两类任务上都强。数据侧也有问题。为了扩大规模,很多方法直接用网页 alt-text 和图片配对,但网页文本常常不是图片内容的准确描述。规模变大带来了收益,但噪声也被一起放大,监督信号并不干净。
2.BLIP 提出一个统一的视觉语言预训练框架,既能迁移到理解任务,也能迁移到生成任务。它的目标是同时解决两个问题:模型架构不统一,以及网络图文对噪声太大。
3.BLIP 采用 capfilt 的数据增强方法。通过一个标题生成器(Captioner)为网络图像生成合成标题,并通过一个过滤器(Filter)根据图像-文本匹配损失(ITM)来筛选出与图像匹配的高质量标题来移除噪声标题。
4.BLIP 提出 MED, Multimodal Mixture of Encoder-Decoder。同一个模型可以切换三种功能,单模态编码器:分别编码图像和文本,用于图文对比学习;图像引导的文本编码器:文本侧加入 cross-attention,看图后判断图文是否匹配;图像引导的文本解码器:把双向 self-attention 换成 causal self-attention,看图后自回归生成文字。通过在不同层级上共享参数,模型可以在理解和生成任务之间更好地迁移。
5.质疑:BLIP 的 ITM 是 matched / unmatched 二分类,但图文关系不是非黑即白。有些文本部分匹配,有些对象错了,有些属性错了。ITM 可以从二分类升级成更细粒度的多级标签:完全匹配、部分匹配、对象错、属性错、关系错。


8. BLIP-2: Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language Models

BLIP-2 | Li et al., 2023 | 【精读】

阅读重点

  • 连接传统视觉语言预训练与现代 MLLM 的重要桥梁
  • 提出 Q-Former 作为轻量级连接模块,在冻结视觉编码器和冻结 LLM 的前提下实现高效多模态对齐
  • 重点理解:Q-Former 的设计、两阶段训练方式、冻结大模型带来的成本与性能权衡

笔记

  1. 当时传统的视觉-语言预训练模型通常需要对巨大的图像和语言模型进行端到端的联合训练,BLIP-2 的核心创新是引入了一个叫 Q-Former 的轻量级 Transformer 模块,作为视觉编码器和大型语言模型之间的桥梁。完美利用现成的冻结模型,它允许图像编码器和大语言模型(LLM)在训练过程中保持参数冻结(不训练)。
    2.Q-Former 包含两个共享自注意力层的变换器子模块:一个用于与冻结图像编码器交互的视觉变换器,以及一个可以作为文本编码器和解码器的文本变换器。
    3.预训练分为两个阶段:第一阶段通过连接Q-Former(一个轻量级的查询转换器)到冻结的图像编码器,从冻结的视觉编码器输出中提取信息;第二阶段再把第一阶段训练的 Q-Former 连接到冻结的LLM,通过生成任务进一步训练Q-Former,输出投影为语言模型的软视觉提示。
    4.质疑:Q-former 在第一阶段学习到的是这个图像和文字之间的匹配关系,第二阶段就需要它支持根据这个关系来开放回答问题。我感觉这两个阶段的目标跨度太大,第一阶段学到的东西可能并不完全适合第二阶段的生成任务。可以在两个阶段之间增加一个过渡阶段,让 Q-Former 学习一些更通用的视觉表示。

9. Flamingo: a Visual Language Model for Few-Shot Learning

Flamingo | Alayrac et al., 2022 | 【略读】

阅读重点

  • 首次证明 few-shot 多模态 in-context learning 可行
  • 核心思想是将冻结的视觉编码器与冻结的 LLM 通过跨注意力机制连接
  • 由于工程细节和训练成本较高,重点把握其历史定位和”如何把视觉信息高效注入 LLM”的思想
  • 与 BLIP-2、LLaVA 形成对照

笔记

  1. flamingo 想让一个模型看懂图片或视频,并且只靠几个例子就学会回答新任务。它是一类视觉语言模型,可以接收图片、视频和文字交错组成的提示,然后生成文字输出。论文目标是把大语言模型的上下文学习能力搬到多模态任务里。
  2. 它的核心也是冻结视觉编码器和冻结语言模型,但是与 BLIP-2 不同的是,Flamingo 主要面向交错图文序列的自回归生成,它直接在语言模型的每一层都插入了一个跨模态注意力模块,让视觉信息能够在语言模型的每一层都被利用到。
  3. 质疑:Flamingo 使用网页级大规模图文数据,从而容易出现噪声和不准确的标签。他原本使用的数据清洗基本上是(基础网页过滤 + 图像尺寸/质量过滤 + 显式内容过滤 + 部分 benchmark 去重 + 用高质量 LTIP/VTP 补充 noisy ALIGN。)。它可以使用 blip 中的 capflit 的方式来进一步清洗数据,以提高模型的泛化能力和减少训练成本。

知识学习

蒸馏(Distillation)

  • 蒸馏是一种模型压缩技术,旨在将一个大型、复杂的教师模型(Teacher Model)中的知识转移到一个较小、较简单的学生模型(Student Model)中。通过让学生模型模仿教师模型的输出,可以在保持性能的同时减少模型的参数量和计算资源需求。

多模态对齐

  • 多模态对齐是指在多模态学习中,将来自不同模态(如图像、文本、音频等)的数据映射到一个共享的表示空间中,使得它们之间的关系能够被模型理解和利用。对齐的目标是让模型能够捕捉不同模态之间的语义关联,从而实现更有效的多模态理解和生成。
  • 分为全局对齐和局部对齐。将整张图片和整段文本看作一个整体进行对齐;将图像中的特定区域(Region/Patch)与文本中的特定词(Token)建立对应关系。

直接进行多模态融合

  • 依赖目标检测器。检测器通常是在 Visual Genome 这类带框标注的数据上训练出来的,成本高,而且它能识别的类别有限。检测器漏掉的东西,后面的视觉语言模型基本也很难补回来。
  • 视觉信息被提前压缩了。一张图片原本有丰富的纹理、布局、细节、小字、小物体,但 region feature 只保留检测器认为重要的区域。比如海报上的文字、细微表情、背景关系,可能根本没有被检测器提出来。

教师模型的参数是学生模型参数的指数移动平均(Exponential Moving Average)

  • 可以把它理解成:学生模型是“正在认真学习、每天变化很大的人”;教师模型是“学生过去一段时间表现的平滑平均版本”。
  • 在 ALBEF 里,教师模型不是单独训练出来的,也不是人工标注出来的专家。它的参数来自学生模型,但不是直接复制,而是用 指数移动平均 EMA 慢慢更新。公式大概是:teacher = m * teacher + (1 - m) * student

多智能体,- 多智能体系统(Multi-Agent Systems)是指由多个智能体组成的系统,这些智能体可以是软件程序、机器人或其他类型的实体。多智能体系统的研究涉及智能体之间的交互、协作、竞争等方面,旨在实现更复杂、更灵活的行为和决策能力。

需要实践, 多人多智能体协作, agent memory, 记忆系统设计,并且省token
自己进行做决策进行记忆系统
一边做一边总结,通用或者场景特化。
ai驾驭系统,
尽可能少的人来介入,让 agent 来做。
每周让 agent 来做 ppt,总结,写周报,做计划。

ai 写一个报告:自己要做些什么,建立一个认识

来源:duangxin/LLM-learing week3/week3_log.md

文献阅读

4. An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale

ViT | Dosovitskiy et al., 2020 | 【精读】

阅读重点

  • 视觉 Transformer 的代表作,核心思想是将图像切分为固定大小的 patch,并视作序列输入 Transformer
  • 重点理解:patch embedding、位置编码、大规模预训练对视觉模型性能的影响
  • 这是所有后续 MLLM 视觉编码器的起点

笔记

  1. ViT(Vision Transformer)主要采用的是有监督学习。因为 ViT 缺少先天的归纳偏置(一个是局部性,一个是平移等变性),也就是视觉感知逻辑。它必须通过大量的标签(Label)来学习,只有通过“这张图标签是狗”、“那张图标签是猫”这种强监督信号,ViT 才能在 Self-Attention 层中慢慢学出:原来这些散落在各处的 Patch 组合在一起才是一个物体。
  2. 这篇论文算是将cv与nlp领域模型架构统一的里程碑之作。ViT 证明了:只要数据量够大,CV 根本不需要专门设计的卷积核,用 NLP 那套通用的注意力机制就够了。他也导致了后面多模态的爆发
  3. 由于transformer的自注意力机制时间复杂度是o(n^2),直接作用在图片上序列长度过长。因此vit考虑使用patch,将图片切成16*16的小方块。它通过损失一部分极其细微的像素级空间关系,让 Transformer 处理图像在算力上变得可行了。
  4. 为了尽可能的与原始架构一致,vit 没有采用平均池化而是使用 [CLS] Token。由于模型会得到很多个关于局部特征的输出,ViT 通过在输入序列的开头添加一个特殊的 [CLS] Token 来聚合全局信息。它不代表任何一个具体的 patch,仅作为一个输出来代表整张图片来做分类。
  5. vit序列的长度是由图片的尺寸和patch的尺寸决定的。比如输入图片是224224,patch是1616,那么每个patch包含256个像素,整个图片就被切成了(224/16)(224/16)=1414=196个patch,再加上一个[CLS] token,总长度就是197。
  6. vit 使用的是一维位置编码,因为作者们没有观察到使用二维位置编码会带来明显的性能提升。虽然图像是二维的,但在 ViT 中,所有的 patch 都被展平为一维序列输入到 Transformer 中,因此使用一维位置编码就足够了。
  7. vit 在微调的时候,输入的图片分辨率更高,这会导致 patch 的数量增加,进而导致位置编码的长度不匹配。为了解决这个问题,ViT 采用了插值(Interpolation)的方法(torch 自带的函数 torch.nn.functional.interpolate)来调整位置编码,使其适应新的输入尺寸。这种方法虽然简单,但在实践中效果不错。
  8. 位置嵌入可视化:1d的位置编码也学习到了二维空间的结构信息,说明模型在训练过程中学会了捕捉图像的空间关系。

5. Learning Transferable Visual Models From Natural Language Supervision

CLIP | Radford et al., 2021 | 【精读】

阅读重点

  • 通过大规模图文对比学习将图像和文本映射到统一表示空间
  • 阅读重点在于双塔结构、对比学习目标以及 zero-shot 泛化能力
  • 补充建议:读完 CLIP 后可以略读 SigLIP(Zhai et al., 2023),现在主流 MLLM(Qwen2-VL、LLaVA-OneVision、Janus)都已经把视觉编码器从 CLIP 换成了 SigLIP

笔记

  1. clip输入是图像和文本对,输出是它们在共享空间中的相似度。通过使用对比学习的方式,clip 的训练目标是最大化正确图文对的相似度,同时最小化错误图文对的相似度。具体来说,clip 会将一批图像和对应的文本输入到两个独立的编码器中,得到图像和文本的向量表示。然后通过计算这些向量之间的余弦相似度来评估它们的匹配程度。对于一个批次中的 n 对图文对,正确的图文对有 n 个,而错误的图文对有 n^2-n 个。clip 通过一个 softmax 函数来计算每个图像和文本对的概率分布,并使用交叉熵损失来优化模型,使得正确的图文对的概率最大化。
  2. clip 预训练的数据集是从互联网收集的4亿对图文对,规模非常大。然后论文说他的迁移能力极强,在许多不同的 benchmark 上都取得了不错的 zero-shot 结果,甚至在一些任务上超过了专门微调的模型。有没有一种可能是,clip 的预训练数据里就包含了这些 benchmark 的测试集或者相似的图文对?如果是这样的话,clip 的 zero-shot 能力可能就没有那么神奇了。
  3. clip 之前的模型仅仅能将图片映射到训练集中划分好的类别上,而 cllip 学习的是视觉概念和语言概念之间的关系。因此见到一个训练集里没有的“新词“时,clip 能够推理猜出来。比如 clip 见过“黄色的香蕉”,见过“红色的苹果”,但没见过“红色的香蕉”,它也能拆解“红色“和“香蕉“来理解“红色的香蕉”这个新概念。
  4. clip使用了prompt engineering,通过在训练中为文本输入添加一些固定的前缀(如“a photo of a”)来引导模型学习更通用的视觉概念,而不是过于依赖特定的类别标签。这种方法可以帮助模型更好地泛化到未见过的类别上,从而提升 zero-shot 能力。
  5. clip的局限性上:还无法理解一些深层次的概念,比如无法理解图片中的人是否“安全“或者“危险“。另外clip数据集已经很大了,想要再通过扩大数据集来提升性能可能也不太现实了。后续的 SigLIP 就是通过改进模型架构和训练方法来提升性能的。
  6. siglip 主要的改进是提出新的损失函数-sigmoid 损失,来替代 clip 中的 softmax 损失。在 clip 中 n*n 矩阵本质上是多分类问题,而在 siglip 中矩阵的每个单元格都是一个二分类问题,对每个点都进行 sigmoid 激活。这简化了分布式训练中的损失计算,提高了效率。

知识学习

平移不变性与 Transformer 的空间感知

  • 平移不变性:无论目标物体出现在图像中的什么位置,系统都能将其识别为同一个物体。严格意义上 CNN 具有的是平移等变性(Translation Equivariance),而“不变性”往往是经过多层处理和池化后达到的最终效果
  • 等变性: 输入平移了,输出的特征图(Feature Map)也跟着相应平移。不变性: 输入平移了,最终的分类结果(如“猫”)保持完全不动。
  • 而 Transformer 采用的是自注意力机制。全连接性质:Self-Attention 是全局的,每一个 Token 都会与序列中所有其他 Token 进行点积运算。空间无关性:如果你把输入序列中的两个 Token 交换位置,由于注意力机制本质上是在做“集合”操作(Set-based),如果不加干预,输出的结果除了对应的顺序改变外,数值逻辑完全一致。这种特性被称为“置换不变性”,它比平移不变性更强,但也因此完全失去了对物体空间位置的感知。

卷积操作(Convolution)

  • 主要目的是从输入图像中提取特征(如边缘、纹理、形状等)。使用一个小矩阵(卷积核/过滤器,Kernel/Filter)在图像上滑动,在每个位置与覆盖的像素区域做点乘求和,生成新的特征值。
  • 1×1 卷积:用于增加或减少通道数,实现维度缩放;在不改变特征图尺寸的前提下,增加一层激活函数,提升网络表达能力。
  • 3×3 卷积:捕捉局部空间特征的最小有效尺寸,能区分上下左右中心。
  • 卷积:有权重,要训练,做特征提取

池化操作(Pooling)

  • 通常紧跟在卷积层之后,用于压缩数据和简化信息。同样用一个窗口在图像上滑动,但不做加权计算,只做”筛选”。
  • 最大池化(Max Pooling):取窗口内像素的最大值,保留最显著的特征(如最亮的点),最为常用。
  • 平均池化(Average Pooling):取窗口内像素的平均值,使特征变得平滑。
  • 池化:无权重,不训练,只做压缩和筛选

卷积:有权重,要训练,做特征提取。 池化:无权重,不训练,只做压缩和筛选特征。

整体流程

  • 原始图片–>卷积提取特征–>一个卷积核融合所有输入通道,输出一张特征图(一个通道)–>池化操作保留关键特征–>下一层卷积

对比学习

  • 目标是让模型学会区分相似和不相似的样本。通过构造正样本对(相似)和负样本对(不相似),训练模型最大化正样本对的相似度,最小化负样本对的相似度。

余弦相似度

  • 衡量两个向量之间的相似度,计算公式为:$$\text{Cosine Similarity} = \frac{A \cdot B}{|A| |B|}$$
  • 就是两个向量的点积除以它们的模长乘积,结果在 -1 到 1 之间,越接近 1 表示越相似。

来源:duangxin/LLM-learing week2/week2_log.md

文献阅读

1. Deep Residual Learning for Image Recognition

ResNet | He et al., 2015 | 【精读】

阅读重点

  • 残差连接是现代几乎所有深度网络(包括 Transformer)的基础设计
  • ViT 的内部结构、视觉编码器的训练稳定性都依赖它
  • 重点理解:为什么深层网络会退化、残差连接如何解决梯度消失问题

笔记

  1. 深层网络退化问题:随着网络深度增加,训练误差反而增大,导致性能下降。
    • 什么都不做,有时候也很重要,直接把输入 x 传到输出 y,网络只需要学会一个恒等映射(identity mapping)就行了。
    • 传统的网络结构总得训练点什么东西,不能什么都不做。
  1. resnet框架的核心思想是,不再直接让网络层学习一个期望的映射函数H(x),而是让这些层学习一个相对于输入的残差映射F(x) := H(x) - x。然后,原始的映射函数可以被重新表述为F(x) + x。
    • 这样做的好处是,如果最优的映射函数H(x)接近于输入x,那么残差函数F(x)就接近于0,网络只需要学习一个简单的零映射,这比直接学习一个复杂的恒等映射更容易。
    • 反过来说,如果H(x)与x有较大差异,网络仍然可以通过学习一个非零的残差函数F(x)来实现所需的映射。
    • 可以理解成:之前的传统网络是在进行重塑,而残差网络是在做修正,相当于打补丁操作。这样深层网络至少不会比浅层网络更差了。

2. Attention Is All You Need

Transformer | Vaswani et al., 2017 | 【精读】

阅读重点

  • 多模态大模型的”骨架”,需彻底搞懂以下模块:
    • Self-Attention
    • Multi-Head Attention
    • Positional Encoding
    • Encoder-Decoder 结构
  • 重点理解:QKV 的直觉含义、注意力矩阵的计算、为什么要 scaled dot-product

笔记

  1. 为什么 Transformer 很重要

    • Transformer 可以说是现在大模型最核心的骨架。相比 RNN 需要按时间步一个个处理,Transformer 允许整个序列并行计算,所以训练效率更高,也更容易扩展到超大规模模型。
    • 它真正厉害的地方是:每个 token 都可以直接看到序列里其他位置的信息,因此更容易建模长距离依赖。
  2. Self-Attention 是什么

    • Self-Attention 的核心作用是:让一个 token 在编码自己时,动态决定应该关注序列中的哪些 token。
    • 比如一句话里“它”这个词,到底指代前面的哪个名词,Self-Attention 就可以通过和其他词计算相关性,自动把更多注意力放到最相关的位置上。
    • 所以它本质上是在做“信息检索”:当前位置需要什么信息,就去整句里找。
  3. Q、K、V 的直觉理解

    • Query(Q)可以理解成“我现在想找什么信息”。
    • Key(K)可以理解成“我这里有什么信息,适不适合被你关注”。
    • Value(V)可以理解成“如果你决定关注我,那我真正提供给你的内容是什么”。
    • 一个很直观的类比是图书馆检索:Q 像检索词,K 像每本书的标签,V 像书里的实际内容。先拿检索词去和标签匹配,再把匹配到的内容取出来。
  4. 注意力矩阵是怎么来的

    • 对每个 token,先分别线性映射得到 Q、K、V。
    • 然后用 Q 和所有 K 做点积,得到“当前 token 和其他 token 的相关性分数”。
    • 把这些分数经过 softmax,就得到注意力权重,也就是“应该把多少注意力分给每个位置”。
    • 最后再用这些权重对所有 V 做加权求和,得到当前 token 融合上下文后的新表示。
  5. 为什么要 scaled dot-product

    • 如果向量维度很大,Q 和 K 的点积值会容易变得很大。
    • 点积一大,softmax 就会变得特别尖锐,某几个位置的权重接近 1,其他位置接近 0,这会让梯度变小,训练不稳定。
    • 所以论文里会除以 $\sqrt{d_k}$,相当于把分数缩放一下,让 softmax 不至于过早饱和。这个操作本质上是为了让训练更稳定。
  6. Multi-Head Attention 为什么有效

    • 单头注意力相当于只用一种视角看句子关系。
    • Multi-Head Attention 则是把特征拆到多个子空间里,让不同的 head 去关注不同类型的信息,比如有的 head 关注语法关系,有的关注位置关系,有的关注语义相似度。
    • 最后把多个 head 的结果拼接起来,模型就能同时从多个角度理解序列。
    • 所以多头机制的关键价值不是“重复算很多遍”,而是“让模型并行学习多种关系模式”。
  7. Positional Encoding 为什么需要

    • Attention 本身只看 token 之间的两两关系,如果不额外提供位置信息,模型并不知道谁在前谁在后。
    • 但语言是有顺序的,比如“狗咬人”和“人咬狗”词几乎一样,意思却完全不同。
    • 所以必须把位置信息注入进去。原论文使用的是正弦余弦位置编码,本质上就是给每个位置一个可区分的位置信号,让模型知道顺序信息。
  8. Encoder-Decoder 结构怎么理解

    • Encoder 负责把输入序列编码成上下文表示,可以理解成“先把原文读懂”。
    • Decoder 负责基于前面已经生成的内容和 Encoder 提供的信息,逐步生成输出,可以理解成“边看理解结果边往下写答案”。
    • 在机器翻译里,这个结构很自然:Encoder 读源语言句子,Decoder 生成目标语言句子。
    • 后来的 BERT 主要用 Encoder,GPT 主要用 Decoder,大模型的发展其实就是在这个框架上不断做取舍和专门化。
  9. 为什么说它是多模态大模型的骨架

    • 因为 Transformer 的核心不是“只处理文本”,而是“处理一串 token 之间的关系”。
    • 文本可以切成 token,图像可以切成 patch,音频也可以切成时间片,只要能表示成序列,Transformer 就能统一处理。
    • 所以后来的 ViT、GPT、LLaMA、以及很多多模态模型,本质上都还是在 Transformer 这个框架上发展出来的。

3. Language Models are Few-Shot Learners / LLaMA Technical Report

GPT-3 / LLaMA | Brown et al., 2020 / Touvron et al., 2023 | 【略读】

阅读重点

  • 理解 decoder-only 架构、自回归训练
  • in-context learning 与 scaling law
  • 现代 MLLM 的 LLM 部分均基于此范式
  • LLaMA 更贴近开源实践,建议优先读 LLaMA 2 或 LLaMA 3 技术报告

笔记

为什么要用decoder-only结构:由于文本生成任务主要是根据现有信息来预测下一个词,纯解码器专注于这一点,避免了编码器-解码器架构中不必要的复杂性和计算开销。同时,纯解码器结构更适合大规模预训练,可以更高效地利用计算资源。

  1. GPT vs BERT

    • GPT是知道之前以及现在的状态去预测开放式的未来;BERT是知道之前和之后的状态去预测被遮挡的中间状态。预测未来比预测中间更难,所以GPT的训练难度更大。而且GPT要训练出一个好的效果,必须要有一个非常大的模型和非常大的数据集,这也是为什么GPT-3有175B参数的原因。
  2. GPT-2使用in-context learning

    • GPT-2在做zero-shot任务的时候,对于下游任务,由于不改模型参数,就已经开始使用prompt了。GPT-3在这个基础上进一步发展了few-shot learning的能力,通过在prompt中提供一些示例,让模型靠上下文“临场学习”,从而在没有专门微调的情况下,仍然能够取得不错的性能。
  3. GPT-3文章里提到有局限性

    • 大型预训练语言模型缺乏来自其他领域的经验数据,比如视频或现实世界的物理交互数据,因此无法充分理解世界的各种背景信息。这也是为什么后面多模态和世界模型会成为自然的发展方向。
  4. llama系列要解决的问题更偏现实工程

    • LLaMA系列技术报告的核心创新不是在于提出了一个全新的架构,而是在相对更小参数规模下通过更多数据训练来获得更高性能。这样在推理时的预算会更低,也更适合开源社区使用。
    • llama后续的框架上的优化主要是使用了分组查询注意力(Grouped Query Attention),它的核心思想是将查询向量分成多个组,每个组独立计算注意力权重,这样可以减少计算量和内存占用,同时保持模型的性能。
  5. pre-normlization

    • 在transformer中,层归一化在feedforward之后,是对子层的输出进行归一化。
    • 在gpt以及LLAMA系列中,都使用了pre-normalization的设计,也就是把layer normalization放在子层的前面,对输入进行归一化。这种设计可以让训练更稳定,尤其是在训练非常深的模型时,可以有效缓解梯度消失问题。
  6. LayerNorm vs RMSNorm

    • LayerNorm是对每个样本的所有特征进行归一化,计算均值和标准差;RMSNorm则是只计算均方根(Root Mean Square),不计算均值。RMSNorm相对于LayerNorm来说,计算更简单,且在某些情况下可以提供更好的训练稳定性和性能。

    • LayerNorm(GPT‑2/3):去均值 + 归一化方差 + 偏置

      • $$\text{LN}(x)=\frac{x-\mu}{\sqrt{\sigma^2+\epsilon}},\gamma+\beta$$
      • 先减均值 μ(中心化)
      • 再除以标准差 σ(单位方差)
      • 有 γ(缩放)+ β(偏置)
    • RMSNorm(LLaMA、GPT‑4):只做缩放,不移中心,无偏置

      • $$\text{RMS}(x)=\frac{x}{\sqrt{\mathbb{E}[x^2]+\epsilon}},\gamma$$
      • 不减均值,只除以“均方根 RMS”
      • 只有 γ,没有 β

知识学习

1.传梯度到底在传什么?

梯度本质上就在告诉模型:“你现在偏大了,往小改,而且改的力度大概是多少。”
损失函数只相当于最后给你一个总分,梯度相当于老师在每一段旁边写批注
“传梯度”,本质上就是:后一层把“误差责任”传给前一层,前一层再继续往前传。
模型是一个很长的处理链条:
输入 → 第1层 → 第2层 → 第3层 → 输出 → 损失
最后你只知道“结果错了多少”,但你不知道前面每一层、每一个参数到底该怎么改。梯度反传就是在回答这个问题:
“最终错了这件事,前面这个参数要负多大责任?”
如果不这样传,你就只能用一种很笨的办法:把每个参数都单独加一点、减一点,重新跑一遍模型,看损失变没变。参数一多,这几乎不可能。大模型有上亿、上百亿参数,根本试不起。

2.深度学习更像是一个工程问题,而不是理科

做一个项目有时候像是炼丹,你不知道为什么这个组合有效,为什么那个组合无效。你只能不断试错,积累经验。有时候不一定能很严谨的解释为什么某个设计有效,但是结果就是有效的。

3.梯度消失vs网络退化

梯度消失:在反向传播过程中,梯度逐层变小,导致前面层的参数更新非常缓慢,甚至停滞。
网络退化:随着网络深度增加,训练误差反而增大,导致性能下降。这是因为深层网络难以学习到有效的特征表示。
ResNet 的残差连接通过引入恒等映射,使得网络可以直接传递输入信息,缓解了梯度消失和网络退化问题。

4.为什么拟合“零”比拟合“恒等”容易?

在数学上,F(x) = 0和H(x) = x似乎只是一个位移的差别,但在神经网络的参数初始化和激活函数机制下,两者的难度完全不同。
初始化的“天性”:神经网络的权重(Weight)在初始化时通常是非常接近 0 的随机小数字。这意味着,在训练开始的那一刻,任何一层网络的天生倾向就是输出一个接近 0 的值。要让网络学习F(x)=0,它只需要把权重往 0 萎缩即可,这是符合它“本能”的。要让网络学习 H(x) = x,它必须精确地调整大量权重,使得它们能够完美抵消激活函数的非线性影响,并形成一个精确的单位矩阵。这对于随机初始化的网络来说,是一个极高难度的“技术活”。

5.下采样(Downsampling)

下采样(Downsampling)是一个在信号处理、图像处理和机器学习等领域中非常常见的概念。简单来说,它就是减少数据采样率或降低数据分辨率的过程。你可以把它理解为“抽样调查”:从一大堆数据中,按照一定的规则挑选出一部分,从而使数据的总量变少。

6.in-context learning

in-context learning(ICL)是指模型在没有显式微调的情况下,通过提供一些示例或提示(prompt)来学习和适应新任务的能力。它允许模型在推理阶段利用上下文信息来理解和完成任务,而不需要修改模型的参数。这种能力使得大型语言模型能够在面对新的任务时表现出一定的灵活性和适应性。

7.scaling law

Scaling law(缩放定律)是指在机器学习中,模型性能与模型规模(如参数数量、训练数据量等)之间的关系。通常情况下,随着模型规模的增加,性能会呈现出一定的提升,但这种提升并不是线性的,而是遵循某种特定的规律。理解和利用 scaling law 可以帮助研究人员更有效地设计和训练大型模型,以达到更好的性能。

来源:duangxin/LLM-learing week1/week1_log.md

文献阅读

LLaVA

  • 阅读了 LLaVA(Large Language and Vision Assistant)相关文献
  • LLaVA 通过扩展 CLIP 视觉编码器,将视觉特征与大语言模型对齐,实现多模态理解
  • 了解了 CLIP 在多模态场景下的作用:通过对比学习将图像与文本映射到统一的表征空间

知识学习

全监督学习(Fully Supervised Learning)

  • 训练数据均带有标注标签
  • 模型直接通过有标签数据进行监督训练

自监督学习(Self-Supervised Learning)

  • 无需人工标注,利用数据本身的结构构造监督信号
  • 典型方法:对比学习(如 CLIP)、掩码预测(如 MAE、BERT)

微调(Fine-tuning)

  • 在预训练模型基础上,用特定任务的数据进行进一步训练
  • 可分为全参数微调和参数高效微调(如 LoRA、Adapter)
0%