从机器学习到大语言模型:AI技术入门实战指南

1次阅读
没有评论

共计 3143 个字符,预计需要花费 8 分钟才能阅读完成。

image.webp

技术演进背景

AI 技术的发展可以用几个关键时间点来划分:

从机器学习到大语言模型:AI 技术入门实战指南

  1. 2012 年 – 深度学习的崛起
  2. AlexNet 在 ImageNet 竞赛中大幅领先,证明了深度神经网络的有效性
  3. 开启了卷积神经网络 (CNN) 在计算机视觉领域的统治地位

  4. 2017 年 – Transformer 架构革命

  5. Google 发表《Attention Is All You Need》论文
  6. 提出自注意力机制,彻底改变了序列建模的方式
  7. 为后来的大语言模型奠定了架构基础

  8. 2020 年至今 – 大语言模型时代

  9. GPT- 3 展示了大规模预训练模型的惊人能力
  10. 模型规模从亿级参数跃升至万亿级参数
  11. 涌现出指令跟随、思维链等新能力

核心范式对比

AI 技术主要有以下几种学习范式:

监督学习

  • 数学本质:学习从输入 x 到输出 y 的映射函数 f,即 y =f(x)
  • 典型应用:分类、回归任务
  • 示例公式:最小化损失函数 $L = \sum_{i=1}^n (y_i – f(x_i))^2$

无监督学习

  • 数学本质:发现数据中的隐藏结构
  • 典型应用:聚类、降维
  • 示例算法:K-means 聚类 $\arg\min_S \sum_{i=1}^k \sum_{x \in S_i} ||x – \mu_i||^2$

强化学习

  • 数学本质:通过试错学习最优策略
  • 典型应用:游戏 AI、机器人控制
  • 关键公式:贝尔曼方程 $V(s) = \max_a (R(s,a) + \gamma V(s’))$

预训练 - 微调范式

  • 数学本质:先在大规模数据上预训练通用表示,再在小数据上微调
  • 典型应用:大语言模型
  • 核心思想:迁移学习

实战代码模块

1. Scikit-learn 分类任务

# 数据准备
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

iris = load_iris()
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2, random_state=42)

# 特征工程 - 标准化
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

# 模型训练
from sklearn.svm import SVC
model = SVC(kernel='rbf', C=1.0, gamma='scale')
model.fit(X_train, y_train)

# 评估
from sklearn.metrics import accuracy_score
y_pred = model.predict(X_test)
print(f"Accuracy: {accuracy_score(y_test, y_pred):.2f}")

2. PyTorch 实现 Transformer

import torch
import torch.nn as nn

class SelfAttention(nn.Module):
    def __init__(self, embed_size, heads):
        super(SelfAttention, self).__init__()
        self.embed_size = embed_size
        self.heads = heads
        self.head_dim = embed_size // heads

        self.values = nn.Linear(self.head_dim, self.head_dim, bias=False)
        self.keys = nn.Linear(self.head_dim, self.head_dim, bias=False)
        self.queries = nn.Linear(self.head_dim, self.head_dim, bias=False)
        self.fc_out = nn.Linear(heads * self.head_dim, embed_size)

    def forward(self, values, keys, query, mask):
        N = query.shape[0]
        value_len, key_len, query_len = values.shape[1], keys.shape[1], query.shape[1]

        # Split embedding into self.heads pieces
        values = values.reshape(N, value_len, self.heads, self.head_dim)
        keys = keys.reshape(N, key_len, self.heads, self.head_dim)
        queries = query.reshape(N, query_len, self.heads, self.head_dim)

        energy = torch.einsum("nqhd,nkhd->nhqk", [queries, keys])
        if mask is not None:
            energy = energy.masked_fill(mask == 0, float("-1e20"))

        attention = torch.softmax(energy / (self.embed_size ** (1/2)), dim=3)

        out = torch.einsum("nhql,nlhd->nqhd", [attention, values]).reshape(N, query_len, self.heads * self.head_dim)

        out = self.fc_out(out)
        return out

3. HuggingFace 调用 LLM

from transformers import pipeline

# 加载预训练模型
generator = pipeline('text-generation', model='gpt2')

# Prompt engineering 技巧
prompt = """ 请用中文回答以下问题。问题:人工智能有哪些主要应用领域?回答:"""

result = generator(prompt, 
                 max_length=200, 
                 num_return_sequences=1,
                 temperature=0.7)
print(result[0]['generated_text'])

生产环境考量

数据准备陷阱

  • 标签泄漏:确保测试数据不参与任何预处理步骤
  • 样本偏差:检查数据分布是否代表真实场景
  • 数据质量:清洗异常值和缺失值

训练监控指标

  • GPU 利用率:nvidia-smi 查看 GPU-Util
  • 显存占用:关注 OOM(Out Of Memory)错误
  • 训练损失:监控是否正常下降

部署优化方案

方案 精度损失 加速比 硬件要求
FP32 1x
FP16 1.5-3x 中等
INT8 明显 4x+

避坑指南

  1. 过拟合问题
  2. 现象:训练误差低但测试误差高
  3. 解决方案:增加正则化、使用早停、添加 Dropout

  4. 学习率设置不当

  5. 现象:损失震荡或不下降
  6. 解决方案:使用学习率预热、余弦退火等调度策略

  7. 批量大小过大

  8. 现象:GPU 显存不足
  9. 解决方案:梯度累积、使用更小的 batch

  10. 数据未标准化

  11. 现象:模型收敛慢
  12. 解决方案:对输入数据做归一化处理

  13. 忽略基线模型

  14. 现象:直接上复杂模型
  15. 解决方案:先建立简单基线(如逻辑回归)

动手挑战

尝试在 Colab 上实现完整的 Transformer 模型:
1. 使用 PyTorch 搭建 Encoder 和 Decoder
2. 在 IWSLT 数据集上训练德语到英语的翻译模型
3. 实现 beam search 解码
4. 对比不同注意力头数对性能的影响

参考资源:
–《Attention Is All You Need》原论文
– HuggingFace Transformers 文档
– PyTorch 官方教程

正文完
 0
评论(没有评论)