初步了解 卷积神经网络 和 Transformer 架构的生成式AI 逻辑和概念

算是笔记

基础概念

卷积神经网络 (CNN):AI 的“眼睛” :eyes:

卷积神经网络 (Convolutional Neural Networks, CNN) 是让计算机拥有“视觉”的核心技术。它们最擅长处理像图像这样的网格数据。

  • 它的工作原理: 想象一下,你手里拿着一个小方框(我们称为“卷积核”或“过滤器”),在一张大照片上滑动。每滑动到一个位置,你就只关注这个方框里的内容,寻找特定的特征,比如边缘、线条或颜色斑点。

  • 层层递进: CNN 有很多层。第一层可能只识别简单的线条;第二层将线条组合成形状(如圆圈、方形);更深的层则能识别复杂的物体(如猫的耳朵、汽车的轮子)。

生成式 AI (Generative AI):AI 的“创造力” :artist_palette:

生成式 AI 不仅仅是分析现有的数据,它的目标是创造全新的数据。

  • 它的工作原理: 这种 AI 模型阅读了海量的书籍、观看了无数的画作,学习了这些数据背后的“规律”或“概率分布”。一旦学会了这些规律,它就可以根据你的提示(Prompt),预测并生成新的文字、图像甚至视频。

  • 不仅仅是复制: 它不是在数据库里搜索现成的答案,而是像人类艺术家一样,基于它学到的知识,一笔一画(或一个字一个字)地构建出从未存在过的新内容。

两者的区别和结合问题

核心区别:怎么处理信息?

  • CNN (卷积神经网络) —— 专注“局部” :magnifying_glass_tilted_left:

    • 逻辑: 它的强项是提取特征。就像我们之前说的,它拿个放大镜一块一块地扫描图片。它假设“邻居很重要”(比如眼睛的像素旁边通常是鼻子的像素)。
    • 局限: 因为它太关注局部,有时候会忽略整体的关系。比如,如果你把一张人脸照片里的嘴巴和眼睛位置互换,传统的 CNN 可能依然会识别出“这是一张人脸”,因为它检测到了眼睛和嘴巴,但没太在意它们的位置对不对。
  • 生成式大模型 (基于 Transformer) —— 专注“全局关联” :brain:

    • 逻辑: 现代生成式 AI(如 GPT, Gemini)使用的是 Transformer 架构。它的绝招叫注意力机制 (Self-Attention)

    • 能力: 它不再受限于“邻居”。它能同时关注到输入的所有信息,并计算它们之间的远距离关系

    • 例子: 在处理句子“苹果很好吃,因为这种水果很甜”时,它能瞬间把开头的“苹果”和后面的“水果”联系起来,哪怕它们中间隔了很多字。

多模态:它们如何结合? (Topic 3)

现在的多模态模型(能看图说话的 AI),往往就是把这两者结合起来的产物。

  • 第一步 (眼睛): AI 可能会用一个 CNN(或者类似的视觉编码器)来“看”图片,提取出关键的视觉特征(线条、形状、物体)。

  • 第二步 (大脑): 这些特征被转化成数据,喂给 Transformer(大语言模型)。模型利用这些视觉信息,结合它的语言能力,生成一句描述:“这只猫坐在沙发上”。

Transformer 架构的基础信息和自身意义

Transformer 是 Google 在 2017 年提出的一种深度学习模型。在此之前,AI 处理语言像是在“读流水账”,读到后面容易忘掉前面。而 Transformer 能够同时“看到”整个句子,并理解每个词与其他所有词之间的关系,无论它们相隔多远。

Transformer 架构的机制和架构

核心机制:自注意力 (Self-Attention)

在句子“这只动物没有穿过街道,因为它太了”中:

  • 当模型读到 “它” 这个词时,自注意力机制会计算它与句中所有其他词的关联度。

  • 因为它看到了后面的 “累”(通常形容生物),它会给 “动物” 打一个极高的分数,而给“街道”打低分。

  • 这就叫“理解上下文”:模型不是死板地翻译,而是通过这种数学上的“打分”,搞清楚了词与词之间真正的指代关系。

整体结构:编码器与解码器 (Encoder & Decoder) :building_construction:

Transformer 最初是为了做翻译任务设计的(比如把英语翻译成法语)。它的结构就像一个超级翻译官,分为两半:

  • 编码器 (Encoder) —— “负责阅读理解的” :open_book:

    • 作用: 它负责把输入的信息(比如一句英语)嚼碎,理解里面的语法、语义和上下文,然后把它压缩成一堆数字(向量)。

    • 比喻: 就像你听别人说话时,不只是听声音,而是在脑子里把对方的意思提炼出来。

  • 解码器 (Decoder) —— “负责开口生成的” :writing_hand:

    • 作用: 它拿着编码器给它的“意思”,开始一个字一个字地生成输出(比如生成的法语,或者生成的下一段话)。它每生成一个字,都会回头看之前生成的内容,确保连贯。

    • 比喻: 就像你理解了对方的意思后,组织语言把话讲出来。

Transformer 架构的数据处理流程

我们将整个过程拆解为三个核心阶段:数据输入(把字变成数) -> 模型内部处理(数学计算) -> 训练循环(修正误差)

这是每一秒钟都在 GPU 里发生的真实过程:

第一阶段:数据输入 —— 从文字到“向量” :1234:

计算机不认识字,它只认识数字。所以第一步是翻译

  1. Tokenization (分词):

    • 输入句子:“我喜欢AI”。

    • 模型把它切成小块(Token):["我", "喜欢", "AI"]

    • 查字典(词表),把它们变成 ID:[105, 2044, 89]

  2. Embedding (嵌入) —— 这一步最关键! :gem_stone:

    • 仅仅把“我”变成数字 105 是不够的,因为 105106 没有逻辑关系。

    • 模型会把每个 ID 变成一个长长的向量(Vector)。这就像给每个词发了一张“身份证”,上面写着几百个特征数据。

    • 数据过程: 比如“国王”这个词,可能会变成 [0.9, 0.1, -0.5, ...](代表:男性、有权力、人类...)。

    • 神奇之处: 在这个数学空间里,国王 - 男人 + 女人 ≈ 王后。意思相近的词,在空间里的距离也很近。

  3. Positional Encoding (位置编码):

    • 因为 Transformer 是同时看所有词(不像人类按顺序读),它不知道“我打你”和“你打我”的区别。

    • 所以,我们要给每个词的向量加上一个代表位置的数字,告诉模型哪个词在前,哪个在后。


第二阶段:模型内部 —— 著名的 Q, K, V 矩阵运算 :brain:

数据现在是一堆矩阵(数字表格)了,它们进入了 Transformer 的核心组件:自注意力层 (Self-Attention)

这里发生了什么?模型在做一次巨大的“数据库查询”。对于句子里的每个词,它都会生成三个向量:

  • Query (Q - 查询): 我在找什么?

  • Key (K - 键): 我有什么特征?(像图书馆书脊上的标签)

  • Value (V - 值): 我的实际内容是什么?

数据流动过程:

  1. 计算相关性 (Attention Score):

    • 模型拿词 A 的 Q 去和所有其他词的 K 做点积(乘法)。

    • 如果结果很大,说明这两个词关系紧密

    • 例子: “它”的 Q 和 “猫”的 K 相乘,得分很高;和 “桌子”的 K 相乘,得分很低。

  2. 加权求和:

    • 根据刚才的得分,模型把所有词的 V(内容)加起来,形成一个新的向量。

    • 结果: 原来代表“它”的向量,现在融合了“猫”的信息,变得更丰富了。


第三阶段:训练循环 —— 它是怎么学会的? (Backpropagation) :chart_decreasing:

这是你最关心的部分:训练的每一步是怎么做的?

这是一个不断的**“猜谜 -> 被打手板 -> 改正”**的过程。

场景: 我们要把一句话喂给模型训练 —— “天空是[蓝]色的”。 我们遮住“蓝”字,让模型去猜。

Step 1: 前向传播 (Forward Pass) —— 瞎猜

  • 数据经过亿万次矩阵乘法(上面提到的 QKV 计算),最后模型输出一个概率列表。

  • 模型输出: 它可能给“绿”字 60% 的概率,给“蓝”字 10% 的概率。

  • 实际答案: “蓝”应该是 100%。

Step 2: 计算损失 (Loss Calculation) —— 算账

  • 我们要用一个数学公式(通常是交叉熵损失函数 Cross-Entropy Loss)来衡量模型错得有多离谱。

  • 因为模型猜“绿”但也猜了“蓝”,误差可能是一个数字,比如 Loss = 2.5。如果它直接猜中“蓝”,Loss 就会接近 0

Step 3: 反向传播 (Backward Pass) —— 找锅 :fire:

  • 这是 AI 训练最神奇的一步。

  • 既然算出了 Loss = 2.5,我们需要知道:是谁导致了在这个错误?

  • 计算机通过微积分(链式法则),从输出端往回推导,算出每一层、每一个参数(权重)对这个错误“贡献”了多少。这就是梯度(Gradient)

  • 通俗说: 系统发现,“哦,是第 3 层的那个矩阵里的参数太大了,导致它偏向‘绿色’。”

Step 4: 参数更新 (Optimizer Step) —— 改正

  • 既然知道哪个参数错了,优化器 (Optimizer)(比如 Adam)就会稍微修改那个参数。

  • 操作: 把它变小一点点。

  • 目标: 下次再看到“天空是...”的时候,猜“蓝”的概率会稍微高一点点。

总结:数据到底经历了什么?

  1. 输入: 文本 -> 查表变成 -> 向量

  2. 计算: 向量在几百层网络中流动,不断混合上下文信息(QKV 运算)。

  3. 输出: 变成一个概率分布(字典里几万个词,每个词出现的概率)。

  4. 纠错: 算出误差 -> 算出梯度 -> 修改所有参数

这个过程,在训练像 GPT-4 这样的大模型时,会重复数万亿次

Transformer 架构数据处理流程中的6个疑惑

1. 详解 "Embedding":把字典变成“地图” :world_map:

Embedding (嵌入) 的核心目标是:把离散的 ID (整数) 变成连续的向量 (坐标)。

  • 为什么不能直接用 ID?

    • 如果你用 ID:苹果(10)香蕉(11)电视(500)

    • 计算机觉得 1011 很近,所以苹果和香蕉很像(这没问题)。

    • 但在数学上,50010 的 50 倍,难道电视是苹果的 50 倍吗?这显然不合理。ID 只是编号,没有语义关系。

  • Embedding 是怎么做的?

    • 我们给每个词分配一个高维空间里的坐标(比如 768 维,或者 GPT-3 的 12288 维)。

    • 想象一个巨大的多维空间,训练开始时,这些坐标是随机生成的。

    • 随着训练进行,模型发现“苹果”和“香蕉”经常出现在类似的上下文中(比如“吃”、“甜”),于是通过反向传播,它会把这两个词的坐标拉得越来越近

  • 结果是什么?

    • Embedding 层就像一个巨大的查找表(Lookup Table)。

    • 输入 ID: 10 -> 输出向量 [0.1, -0.5, 0.9, ...]

    • 在这个空间里,数学运算具有了语义含义

      \vec{v}(\text{King}) - \vec{v}(\text{Man}) + \vec{v}(\text{Woman}) \approx \vec{v}(\text{Queen})

2. Q、K、V 的具体逻辑:向量点积 (Dot Product) :triangular_ruler:

你问到了点子上:Q 乘以 K 到底是什么逻辑?

这里的“乘法”特指向量点积 (Dot Product)

  • 数学公式: \text{Score} = Q \cdot K^T

  • 物理意义: 点积是衡量两个向量相似度(方向是否一致)的最佳工具。

    • 如果向量 A 和向量 B 指向同一个方向,点积最大(正数)。

    • 如果它们垂直(毫无关系),点积为 0。

    • 如果它们反向,点积为负数。

  • 具体流程:

    1. 查询 (Query): “我想找跟‘我’这个词相关的词。”

    2. 键 (Key): “我是‘猫’,我的特征标签在这里。”

    3. 点积运算: Q_{\text{我}} \cdot K_{\text{猫}}。如果这两个向量方向一致(数值大),说明“我”和“猫”在当前语境下关系紧密

    4. Softmax (归一化): 算出所有点积结果后,用 Softmax 函数把它们变成概率(加起来等于 1)。比如 [0.8, 0.1, 0.1]。这意味着模型决定把 80% 的注意力放在“猫”身上。

    5. 加权求和: 最后用这个概率去乘以 V (Value)

总结: Q \times K 本质上是在做相似度匹配,决定了模型该“关注”哪里。


3. Forward Pass:是基于前几个 Token 猜下一个吗?:crystal_ball:

是的,对于 GPT (Decoder-only) 这类生成式模型,绝对是这样。

  • 自回归 (Autoregressive):

    • 输入:[A, B, C]

    • Forward Pass 计算...

    • 输出预测:D (概率最高的那个)。

    • 下一步:D 加进去,变成 [A, B, C, D],再做一次 Forward Pass,去猜 E

  • 训练时的“作弊” (Teacher Forcing):

    • 在训练时,为了效率,我们不会真的一个字一个字生成。我们会把整句话 [A, B, C, D, E] 一次性喂给模型。

    • 但是! 我们会用一个掩码矩阵 (Mask) 把未来挡住。

    • 当模型看到 B 时,Mask 挡住了 C, D, E,强制它只能利用 AB 去猜 C。这保证了训练逻辑和推理逻辑的一致性。


4. 交叉熵损失 (Cross-Entropy Loss):分数是怎么算出来的?:chart_decreasing:

这是衡量“猜得有多准”的标尺。

  • 场景: 模型预测下一个词是“猫”。

    • 词表里有 10000 个词。

    • 真实标签 (Ground Truth): ID: 5 (猫)。在数学上,这是一个 One-hot 向量:[0, 0, 0, 0, 0, 1, 0, ...](只有第 5 位是 1,其他全是 0)。

    • 模型预测 (Prediction): 经过 Softmax 后,模型输出一个概率分布:[0.01, 0.02, ..., 0.8, ...](它觉得 80% 是猫,20% 是别的)。

  • 计算公式:

    Loss = - \sum (y_{真实} \cdot \log(y_{预测}))
  • 计算过程:

    • 因为真实标签里只有“猫”的位置是 1,其他都是 0,所以公式简化为:只看“猫”对应的那个预测概率

    • Loss = - \log(0.8)
    • \log(0.8) \approx -0.223

    • Loss = -(-0.223) = 0.223

  • 直观理解:

    • 如果模型猜“猫”的概率是 1.0 (100% 确信),-\log(1) = 0Loss = 0 (完美,无惩罚)

    • 如果模型猜“猫”的概率是 0.1 (很不确信),-\log(0.1) = 2.3Loss = 2.3 (惩罚很大)

Loss 的值就是这样算出来的:概率越低,惩罚(Loss)越大。


5. 链式法则与层数:在这个高楼里传话 :office_building:

  • 层数 (Layers) 的概念:

    • Transformer 不是只有一层 Attention,而是堆叠了很多层(像汉堡包)。

    • GPT-3 有 96 层。BERT-Large 有 24 层。

    • 数据经过第一层处理,输出结果传给第二层,以此类推。每一层都有自己的参数(权重矩阵)。

  • 链式法则 (Chain Rule) 在这里的应用:

    • 当我们算出 Loss (比如 0.223) 时,我们要把这个“锅”甩给 96 层里的每一个参数。

    • 数学逻辑: 这里的“链”就是层与层之间的函数嵌套关系。

      y = f_3(f_2(f_1(x)))
    • 如果我们想求 Loss 对第一层参数 w_1 的导数(梯度),我们就必须通过链式法则:

      \frac{\partial Loss}{\partial w_1} = \frac{\partial Loss}{\partial y} \cdot \frac{\partial y}{\partial f_3} \cdot \frac{\partial f_3}{\partial f_2} \cdot \frac{\partial f_2}{\partial w_1}
    • 直观理解: 梯度从顶层(Loss)像水流一样往下流,流经每一层时,都会根据该层的公式计算出该层参数应该怎么改。这就叫反向传播 (Backpropagation)


6. 自己遮,自己算:自监督学习 (Self-Supervised Learning) :repeat_button:

你的理解完全正确! 这正是大模型能够通过阅读海量数据变聪明的核心原因。

  • 无需人工标注:

    • 传统的 AI 需要人类一张张标图片:“这是猫”、“这是狗”。这太贵、太慢了。

    • Transformer 使用自监督学习

  • 流程:

    1. 拿来一本书: 比如《哈利波特》。

    2. 自己出题: 模型随机遮住这句话:“哈利拿起了[MASK]”。

    3. 保留答案: 系统偷偷记下答案是“魔杖”。

    4. 预测: 模型基于上下文去猜。

    5. 比较与优化: 模型猜错了 -> 算 Loss -> 反向传播改参数。

    6. 重复: 下一句话,继续遮,继续猜。