AI 模型基础知识

AI 模型是机器学习 / 深度学习算法构建的参数化数学函数,经过海量数据训练出来、能模仿人类完成特定任务的一套数学运算程序

核心由两部分组成

  • 网络结构(骨架):Transformer、CNN 卷积神经网络、RNN 循环网络,决定模型怎么处理文字、图片、声音。
  • 权重参数(记忆):训练过程中从数据里学到的数值,相当于模型 “记住” 的知识,是真正承载能力的部分。

常见 AI 模型分类:

  • 大语言模型(处理文字):GPT 系列、文心一言、通义千问、Llama、Qwen。
  • 图像模型(看图 / 画图):识别类—ResNet、YOLO(识别图片里的人、物体),生成类—Stable Diffusion、Midjourney(文生图)。

  • 语音模型:ASR 语音识别、TTS 语音合成、语音大模型。

  • 多模态大模型:GPT-4V、通义万相、文心一格,同时看懂文字 + 图片 + 音频。

一句话总结:AI 模型就是计算机通过数据自学得到的智能计算工具,能自主完成识别、生成、推理、翻译等原本需要人类脑力的工作。

Transformer

Transformer 是 2017 年 Google 论文《Attention Is All You Need》提出,完全基于注意力机制、抛弃 RNN 循环结构的序列神经网络架构,是现在所有大语言模型(GPT、Llama、BERT)、多模态模型的底层骨架。

核心两点:

  • 全局并行计算:不用逐字串行处理句子,整段文本一次性运算,GPU 训练速度暴涨。
  • 自注意力 Self-Attention:任意两个 token 可以直接建立关联,完美解决长文本远距离语义依赖。

宏观架构

Transformer 遵循经典的端到端序列转换结构,由堆叠的 NN 个相同模块构成:

  • 编码器(Encoder):由两个子层组成——多头自注意力 子层和位置前馈网络 子层。每个子层均采用残差连接层归一化 的后置处理范式。
  • 解码器(Decoder):在编码器结构基础上,于两个子层之间插入交叉注意力 子层,该子层以编码器的输出作为 Key 和 Value 矩阵,以解码器自身的输入作为 Query 矩阵。此外,解码器的自注意力子层采用掩码(Masking) 机制,用以遮蔽当前位置之后的序列信息,确保自回归属性。

三大机制

  • 自注意力机制(Self-Attention):这是 Transformer 的心脏。它的作用是计算句子中每个词与其他所有词的相关性权重

    • 工作原理:对于每个词,模型会生成三个向量:Query(查询)Key(键)Value(值)

    • 计算过程:用每个词的 Query 和所有词的 Key 做点积,得到“注意力分数”(即相关性)。这个分数越高,代表两个词越相关。最后,用这些分数去加权求和所有的 Value。

    • 直观理解:当模型处理句子 “Animal didn't cross the street because it was too tired” 中的 “it” 时,注意力机制会让 “it” 强烈关注到 “Animal”,从而知道 “it” 指代的是 Animal 而不是 street。

  • 多头注意力(Multi-Head Attention):单一注意力只能关注一个方面。多头意味着模型同时运行多个注意力机制。每个头关注不同的侧重点:有的头关注“语法关系”,有的头关注“指代关系”,有的头关注“相邻词汇”。最后把所有头的结果拼接起来,让模型获得更丰富的表征能力。

  • 位置编码(Positional Encoding):Transformer 是并行处理的,它本身没有“先后顺序”的概念(不像 RNN 天然按顺序读)。为了利用顺序信息,Transformer 在输入词向量中加入了位置编码(使用正弦/余弦函数),告诉模型每个词在句子中的绝对或相对位置。

CNN 卷积神经网络

CNN 卷积神经网络(Convolutional Neural Network)是一类前馈式深度学习模型,其核心特征在于利用卷积运算替代传统的通用矩阵乘法,以提取输入数据的局部平稳性空间层级性特征。该网络通过稀疏连接参数共享机制,显著降低了模型的参数量与计算复杂度,并天然具备对平移、缩放及局部形变的一定程度的不变性。

在 CNN 出现之前(2012年 AlexNet 横空出世之前),处理图像通常用全连接网络(FNN)。

  • 致命缺点:参数爆炸。一张 1000×1000 像素的图有 100 万个像素点,全连接层的权重数量会达到万亿级,根本算不动,而且极易过拟合。
  • 平移不变性:传统的全连接网络无法识别物体在图片左上角还是右下角,它把每个位置都当作独立的特征。

CNN 专门处理网格结构数据:图片(二维像素网格)、语音频谱、医学影像。它通过一个名为“卷积核”的小窗口在数据上滑动,自动提取出对任务最有用的局部特征,从而实现对图像内容的理解(比如分类、识别)。

这意味着它不再把每个像素单独看待,而是用一个小窗口(卷积核)去滑动扫描整张图,在局部区域内提取特征,并且用同一套权重扫遍全图。这不仅把参数量降了好几个数量级,还让模型具备了“平移不变性”——无论物体在哪儿,卷积核都能认出它。

宏观架构

典型的 CNN 由三个功能层级交替堆叠构成:

  • 卷积层(Convolutional Layer)核心层。负责执行上述卷积运算,并通过多通道(Multi-channel) 机制并行使用多个卷积核(Filters),每个核负责映射输入空间中的某一类特定的基元特征(如边缘、角点或纹理)。
  • 池化层(Pooling Layer)降维层。通常采用最大池化(Max-Pooling)平均池化(Average-Pooling),对特征图进行降采样(Down-sampling)。其目的在于逐步缩减特征图的空间维度,以扩大高层神经元的感受野,并为网络引入对局部平移的不变性(Invariance)
  • 全连接层(Fully Connected Layer)决策层。位于网络的末端,将卷积和池化过程提取到的高维抽象语义特征展平(Flatten)并进行线性映射,最终通过 Softmax 或 Sigmoid 函数完成特定任务(如分类或回归)的决策输出。

层次化表征

CNN 通过深层堆叠实现从低级到高级的语义抽象:

  • 浅层:对图像的边缘、颜色梯度等低级视觉基元敏感;
  • 中层:组合形成局部几何形状(如轮廓、角点组合);
  • 深层:响应具有明确语义信息的高级物体部件(如人脸的眼睛、车辆的轮胎)。

这种层级化表征学习(Hierarchical Representation Learning) 能力,使得 CNN 能够将原始像素空间端到端地映射到语义空间。

RNN 循环网络

RNN 循环网络(Recurrent Neural Network) 是一类用于处理序列数据 的神经网络模型。其核心特征在于网络内部存在有向环 连接,使得神经元能够保留前一时刻的状态信息,从而在时间维度上形成共享参数的深层前馈网络。

2017 年 Transformer 出现之前,RNN 循环网络是处理文本、语音、时序数据的标准架构,专门处理有序序列:一句话文字、语音波形、股票时间序列,自带「记忆」,能保存前面时刻的信息,处理到第 N 个字时,能记得前面所有字。

致命缺陷

  • 长距离依赖丢失(梯度消失 / 梯度爆炸):句子很长时,开头文字的信息经过几十次循环传递,数值不断衰减,到末尾几乎完全遗忘。

  • 串行计算,无法并行:必须先算完第 1 个字,才能算第 2 个字,GPU 并行效率极低,训练速度远不如 Transformer。

RNN 是最早带记忆的序列网络,依靠循环隐藏状态传递上文信息,但串行计算、长文本记忆差,被 Transformer 彻底淘汰;LSTM/GRU 是它的改良版本,如今仅少量传统时序场景使用。

权重参数

权重参数(Weight)是神经网络里所有固定、可训练的小数系数,是模型学到的全部知识;训练结束后固化保存。

参数总量段位分级

  • 轻量入门段:1B~8B。代表:Mistral-7B、Llama3-8B、Qwen2.5-7B。定位:平民 / 个人本地可用,轻量主力。
  • 中端主力段:13B~34B。定位:中小企业私有化首选,平衡效果与成本。
  • 高端专业段:50B~70B。代表:Llama3-70B、Qwen2-72B、DeepSeek-67B,定位:企业高阶 / 科研级大模型,开源里的第一梯队
  • 超大规模:100B+(175B、600B、千亿级)。闭源主流:GPT3 175B、Claude 大版本、GPT4 底座;极少开源。

权重矩阵

WQ、WK、WV 是权重矩阵(模型参数,永久固定存在模型文件):

  • WQ:投影出查询向量 Q,专门用来 “检索匹配” 上下文。
  • WK:投影出索引向量 K,用来被别的 token 的 Q 匹配打分。
  • WV:投影出内容向量 V,用来做信息加权融合输出。

Q/K/V 是动态向量(每次输入句子实时算出来的临时中间数据,推理完销毁):

  • Q(查询):当前词的检索诉求,主动去上下文匹配关联;
  • K(索引):每个词自带的语义标签,被动接受其他词的匹配打分;
  • V(内容):每个词存储的真实语义信息,打分后用来加权融合生成上下文感知特征。

Q/K/V 全部由固定不变的权重矩阵 WQ、WK、WV 实时计算生成。

Transformer 里的 Q/K/V 投影矩阵

  • 每个 token 先得到长度 4096 的原始特征 x;
  • 乘 WQ 得到 Query、乘 WK 得到 Key、乘 WV 得到 Value;
  • WQ/WK/WV 每个都是 4096 × 4096,每个格子都是权重。

token 的原始特征是模型转换成的固定长度的一串浮点数。这些浮点数是文字的数字替身,包含语义、词性、位置等信息。

原始特征生成

  • 查表层(Embedding):每个 token 对应一个基础向量;
  • 加上位置编码;
  • 经过多层网络加权变换,最终得到长度 4096 的浮点数数组,进入注意力层。

深入研究 AI 学习路线

必备数学

  • 线性代数:重中之重,Transformer 全靠矩阵乘法。核心知识点:向量、矩阵、矩阵乘法、转置、矩阵维度、特征向量、内积 / 余弦相似度、矩阵求导。

  • 微积分:一元 / 多元导数、偏导、链式法则、梯度。

  • 概率论与数理统计:概率分布、期望、方差、极大似然、Softmax、损失函数、贝叶斯。
  • 优化理论基础:梯度下降、SGD、Adam 优化器,理解模型如何一步步调整几十亿权重。

编程工具

  • Python 基础:数据结构、类、函数、文件读写。
  • 科学计算库
    • NumPy:手动实现矩阵、向量运算(手写简易 WQKV、卷积)。
    • Pandas:数据集处理。
    • Matplotlib:画图看损失、特征向量。
  • 深度学习框架(二选一,推荐 PyTorch)
    • PyTorch:动态图,适合研究、复现 Transformer、自定义权重矩阵。
    • TensorFlow:工业部署多。
  • 工具配套:Git、Linux 基础、CUDA 显卡加速。

传统机器学习

  • 基础算法:线性回归、逻辑回归、SVM、决策树、K-Means 聚类。
  • 核心概念:训练集 / 测试集、过拟合 / 欠拟合、正则化、损失、评估指标。
  • 实战:文本分类、数据聚类,理解「特征 + 权重拟合标签」的核心思想。

深度学习核心(CNN/RNN/Transformer)

  • 基础神经网络:全连接层、激活函数、残差连接、LayerNorm、反向传播,手动搭建简易网络看懂权重更新。
  • CNN 卷积神经网络:卷积核、池化、权重共享、图像特征提取;复现 ResNet 简单模型。
  • 序列模型 RNN/LSTM/GRU:循环单元、隐藏状态、梯度消失问题,理解 Transformer 诞生的必要性。
  • Transformer 专项(核心重点):
    • 原始论文《Attention Is All You Need》逐段拆解。
    • 核心组件:Embedding 词嵌入、位置编码、Q/K/V、WQ/WK/WV 多头注意力、FFN、掩码 Mask
    • 两大架构:Encoder、Decoder。

大模型专项进阶

  • 词表与 Tokenizer 分词原理;
  • 模型参数量计算:WQKV/FFN/Embedding 如何构成 7B 权重;
  • 训练原理:预训练、自回归生成、上下文窗口;
  • 轻量化技术:量化 (4bit/8bit)、LoRA 微调(不动原始 WQKV 权重);
  • 向量检索 RAG:Embedding 向量、相似度匹配、知识库问答。

NLP / 大语言模型

  • 开源大模型实操:Llama、Qwen、GLM,魔搭 ModelScope 下载权重本地部署。
  • 微调实战:全量微调、LoRA、QLoRA,垂直领域定制模型。
  • 推理优化:vLLM、llama.cpp、KV 缓存加速。
  • 应用开发:对话机器人、知识库 RAG、代码助手、Agent 智能体。

计算机视觉

CNN、ViT 视觉 Transformer、文生图、目标检测、多模态大模型

工程落地 & 高阶科研

  • 算力相关:CUDA、GPU 显存、模型量化、分布式训练。
  • 部署:模型封装 API、容器 Docker、边缘端部署。
  • 数据集构建、数据清洗、数据蒸馏。
  • 科研能力:读顶会论文(NeurIPS/ICML/ICLR/ACL)、复现论文、实验评测。

模型应用示例

魔搭(ModelScope)是阿里达摩院 + 阿里云 + CCF 中国计算机学会联合推出的国内最大中文 AI 开源模型社区,2022 年云栖大会正式上线。

LLM API 示例

import OpenAI from 'openai';

const client = new OpenAI({
  apiKey: "你的API_Key", // sk-xxx 格式。https://bailian.console.aliyun.com/cn-beijing?tab=model#/api-key
  baseURL: "https://dashscope.aliyuncs.com/compatible-mode/v1"
});

async function callModelScope() {
  try {
    const response = await client.chat.completions.create({
      model: "qwen3-32b",
      messages: [
        { role: "system", content: "You are a helpful assistant." },
        { role: "user", content: "请介绍一下你自己。" }
      ],
      temperature: 0.7,
      max_tokens: 512,
      enable_thinking: false
    });
    console.log("回答:", response.choices[0].message.content);
  } catch (error) {
    console.error("调用 API 时出错:", error);
  }
}

callModelScope();

OpenAI SDK 是 OpenAI 官方提供的一个JavaScript/Node.js 库,可以用几行代码就能调用大语言模型(LLM)的 API。

RAG示例

import OpenAI from 'openai';
import { similarity } from 'ml-distance';
import fs from 'fs/promises';

const apiKey = "你的API_Key";
const baseURL = "https://dashscope.aliyuncs.com/compatible-mode/v1";
const vectorStoreFile = './vector-store.json';
const embedClient = new OpenAI({ apiKey, baseURL });
const llmClient = new OpenAI({ apiKey, baseURL });

let vectorStore = [];

async function loadVectorsFromFile() {
  try {
    const raw = await fs.readFile(vectorStoreFile, 'utf-8');
    const data = JSON.parse(raw);
    vectorStore = [];
    vectorStore.push(...data);
    console.log(`📂 从文件加载了 ${vectorStore.length} 条向量`);
    return true;
  } catch (error) {
    console.error('加载向量文件出错:', error);
    return false;
  }
}

async function saveVectorsToFile() {
  const data = vectorStore.map(({ text, vector }) => ({ text, vector }));
  await fs.writeFile(vectorStoreFile, JSON.stringify(data, null, 2));
  console.log(`💾 已保存 ${data.length} 条向量到 ${vectorStoreFile}`);
}

async function embedText(text) {
  const response = await embedClient.embeddings.create({
    model: "text-embedding-v3",
    input: text
  });
  return response.data[0].embedding;
}


async function addDocument(text) {
  if (vectorStore.some(item => item.text === text)) {
    return;
  }
  const vector = await embedText(text);
  vectorStore.push({ text, vector });
  await saveVectorsToFile();
}

async function search(query, topK = 2) {
  const queryVector = await embedText(query);
  const results = vectorStore.map(doc => ({
    ...doc,
    score: similarity.cosine(queryVector, doc.vector)
  }));
  results.sort((a, b) => b.score - a.score);
  return results.slice(0, topK);
}

async function ragQuery(userQuestion) {
  const relevantDocs = await search(userQuestion, 2);
  const context = relevantDocs.map(doc => doc.text).join('\n');
  const prompt = `
    请根据以下参考资料回答用户的问题。
    要求:
    - 回答必须基于参考资料,不要编造信息
    - 如果参考资料中没有明确答案,请直接说“根据现有资料无法回答这个问题”
    - 回答要简洁、准确

    --- 参考资料 ---
    ${context}
    --- 参考资料结束 ---

    用户问题:${userQuestion}
    回答:
  `;

  const response = await llmClient.chat.completions.create({
    model: "qwen3-32b",
    messages: [
      { role: "system", content: "你是一个基于知识库回答问题的助手。" },
      { role: "user", content: prompt }
    ],
    temperature: 0.3,
    max_tokens: 512,
    enable_thinking: false
  });

  return {
    answer: response.choices[0].message.content,
    retrievedDocs: relevantDocs
  };
}

async function loadMarkdownFile(filePath) {
  try {
    const content = await fs.readFile(filePath, 'utf-8');
    const lines = content.split('\n');
    const chunks = [];
    let currentChunk = '';

    for (const line of lines) {
      // 检测标题行(# ## ### 等)
      if (/^#{1,6}\s+/.test(line)) {
        if (currentChunk.trim()) {
          chunks.push(currentChunk.trim());
        }
        currentChunk = line + '\n';
      } else {
        currentChunk += line + '\n';
      }
    }
    if (currentChunk.trim()) {
      chunks.push(currentChunk.trim());
    }

    console.log(`📄 从 ${filePath} 读取到 ${chunks.length} 个段落`);
    return chunks;
  } catch (error) {
    if (error.code === 'ENOENT') {
      console.log(`📭 未找到文件: ${filePath},跳过`);
      return [];
    }
    throw error;
  }
}

async function main() {
  await loadVectorsFromFile();

  if (vectorStore.length === 0) {
    console.log("📚 初始化示例知识库...");
    await addDocument("机器学习是人工智能的一个子集,让计算机从数据中学习规律");
    await addDocument("深度学习使用多层神经网络来学习数据的复杂模式");
    await addDocument("自然语言处理(NLP)帮助计算机理解和生成人类语言");
    await addDocument("检索增强生成(RAG)结合了信息检索和文本生成的能力");
    await addDocument("JavaScript是一种广泛应用于Web开发的编程语言");
    await addDocument("JavaScript(JS)是一种具有函数优先特性的轻量级、解释型或者说即时编译型的编程语言。");
  }

  const mdChunks = await loadMarkdownFile('./WebGL从入门到实践.md');
  for (const chunk of mdChunks) {
    await addDocument(chunk);
  }

  console.log("\n🔍 测试RAG问答:");
  const question = "介绍下WebGL的概念?";
  const result = await ragQuery(question);

  console.log(`\n问题: ${question}`);
  console.log("\n📄 检索到的参考资料:");
  result.retrievedDocs.forEach((doc, i) => {
    console.log(`  ${i + 1}. (相似度: ${doc.score.toFixed(4)}) ${doc.text}`);
  });
  console.log(`\n🤖 生成的回答:\n${result.answer}`);
}

main().catch(console.error);

ml-distance 是一个专门用来计算向量之间距离或相似度的 Node.js 工具库。

© lizhao all right reserved,powered by Gitbook文件修订时间: 2026-06-29 19:31:57

results matching ""

    No results matching ""