AI 技术

AI 基础知识:从机器学习到大语言模型

全面了解 AI 技术栈,从传统机器学习到现代大语言模型的演进历程

AI 基础知识:从机器学习到大语言模型

人工智能(AI)正在改变世界,但很多人对 AI 的理解还停留在表面。本文将系统地介绍 AI 的核心概念,帮助你建立完整的知识体系。

AI 技术栈概览

┌─────────────────────────────────────────┐
│         Artificial Intelligence          │  最广泛的概念
│  ┌───────────────────────────────────┐  │
│  │      Machine Learning (ML)        │  │  从数据中学习
│  │  ┌─────────────────────────────┐  │  │
│  │  │   Deep Learning (DL)        │  │  │  神经网络
│  │  │  ┌───────────────────────┐  │  │  │
│  │  │  │  Large Language       │  │  │  │  大语言模型
│  │  │  │  Models (LLM)         │  │  │  │
│  │  │  └───────────────────────┘  │  │  │
│  │  └─────────────────────────────┘  │  │
│  └───────────────────────────────────┘  │
└─────────────────────────────────────────┘

机器学习基础

什么是机器学习?

机器学习是让计算机从数据中学习规律,而不是显式编程。

传统编程 vs 机器学习

传统编程:
输入 + 规则 → 输出

机器学习:
输入 + 输出 → 规则(模型)

机器学习的类型

1. 监督学习(Supervised Learning)

从标注数据中学习:

# 示例:房价预测
训练数据 = [
    (面积=100㎡, 位置=市中心, 价格=500万),
    (面积=80㎡, 位置=郊区, 价格=300万),
    ...
]

# 训练模型
model.fit(训练数据)

# 预测
新房子 = (面积=90㎡, 位置=市中心)
预测价格 = model.predict(新房子)  # 450万

常见算法

  • 线性回归
  • 逻辑回归
  • 决策树
  • 随机森林
  • 支持向量机(SVM)
  • 神经网络

2. 无监督学习(Unsupervised Learning)

从未标注数据中发现模式:

# 示例:客户分群
客户数据 = [
    (年龄, 收入, 消费习惯),
    ...
]

# 聚类
clusters = kmeans.fit(客户数据)

# 结果:自动发现 3 个客户群体
# - 高收入高消费
# - 中等收入理性消费
# - 低收入节俭消费

常见算法

  • K-means 聚类
  • 层次聚类
  • PCA(主成分分析)
  • 自编码器

3. 强化学习(Reinforcement Learning)

通过试错学习最优策略:

# 示例:游戏 AI
while not game_over:
    # 1. 观察当前状态
    state = game.get_state()

    # 2. 选择动作
    action = agent.choose_action(state)

    # 3. 执行动作
    next_state, reward = game.step(action)

    # 4. 学习
    agent.learn(state, action, reward, next_state)

应用场景

  • 游戏 AI(AlphaGo)
  • 机器人控制
  • 自动驾驶
  • 推荐系统

深度学习

神经网络基础

神经网络模拟人脑的神经元结构:

输入层 → 隐藏层 → 输出层

[x1]     [h1]     [y1]
[x2] →   [h2] →   [y2]
[x3]     [h3]     [y3]

前向传播

# 简单的神经网络
class NeuralNetwork:
    def forward(self, x):
        # 第一层
        h = relu(W1 @ x + b1)

        # 第二层
        y = softmax(W2 @ h + b2)

        return y

反向传播

通过梯度下降优化权重:

# 训练循环
for epoch in range(num_epochs):
    for x, y_true in training_data:
        # 前向传播
        y_pred = model.forward(x)

        # 计算损失
        loss = cross_entropy(y_pred, y_true)

        # 反向传播
        gradients = model.backward(loss)

        # 更新权重
        model.update_weights(gradients, learning_rate)

常见网络架构

1. CNN(卷积神经网络)

用于图像处理:

# CNN 架构
model = Sequential([
    Conv2D(32, (3, 3), activation='relu'),  # 卷积层
    MaxPooling2D((2, 2)),                   # 池化层
    Conv2D(64, (3, 3), activation='relu'),
    MaxPooling2D((2, 2)),
    Flatten(),                              # 展平
    Dense(128, activation='relu'),          # 全连接层
    Dense(10, activation='softmax')         # 输出层
])

应用

  • 图像分类
  • 目标检测
  • 人脸识别
  • 医学影像分析

2. RNN(循环神经网络)

用于序列数据:

# RNN 处理序列
class RNN:
    def forward(self, sequence):
        hidden = zeros(hidden_size)

        for x in sequence:
            # 当前输入 + 上一时刻的隐藏状态
            hidden = tanh(W_x @ x + W_h @ hidden + b)

        return hidden

应用

  • 文本生成
  • 机器翻译
  • 语音识别
  • 时间序列预测

3. Transformer

现代 NLP 的基础:

# Transformer 架构
class Transformer:
    def forward(self, x):
        # 自注意力机制
        attention = self_attention(x)

        # 前馈网络
        output = feed_forward(attention)

        return output

def self_attention(x):
    # Query, Key, Value
    Q = W_q @ x
    K = W_k @ x
    V = W_v @ x

    # 注意力分数
    scores = softmax(Q @ K.T / sqrt(d_k))

    # 加权求和
    output = scores @ V

    return output

优势

  • 并行计算
  • 长距离依赖
  • 可解释性

大语言模型(LLM)

什么是 LLM?

LLM 是在海量文本数据上训练的大规模 Transformer 模型。

规模对比

模型参数量训练数据
GPT-21.5B40GB
GPT-3175B570GB
GPT-4~1.7T未公开
Claude 3未公开未公开

LLM 的能力

1. 文本生成

prompt = "写一首关于春天的诗:"
response = llm.generate(prompt)
# 输出:春风拂面暖人心,万物复苏展新颜...

2. 问答

question = "什么是机器学习?"
answer = llm.answer(question)
# 输出:机器学习是一种让计算机从数据中学习的技术...

3. 代码生成

prompt = "用 Python 实现快速排序"
code = llm.generate_code(prompt)
# 输出:
# def quicksort(arr):
#     if len(arr) <= 1:
#         return arr
#     ...

4. 推理

problem = """
如果所有的猫都怕水,
而 Tom 是一只猫,
那么 Tom 怕水吗?
"""
answer = llm.reason(problem)
# 输出:是的,Tom 怕水。

LLM 的训练过程

1. 预训练(Pre-training)

在大规模文本上学习语言模式:

# 目标:预测下一个词
输入:The cat sat on the
目标:mat

# 训练
for text in massive_corpus:
    tokens = tokenize(text)
    for i in range(len(tokens) - 1):
        input_tokens = tokens[:i+1]
        target_token = tokens[i+1]

        prediction = model(input_tokens)
        loss = cross_entropy(prediction, target_token)
        model.update(loss)

2. 微调(Fine-tuning)

在特定任务上优化:

# 任务:情感分析
training_data = [
    ("这部电影太棒了!", "正面"),
    ("浪费时间", "负面"),
    ...
]

for text, label in training_data:
    prediction = model(text)
    loss = cross_entropy(prediction, label)
    model.update(loss)

3. RLHF(人类反馈强化学习)

通过人类反馈优化:

# 1. 生成多个回答
responses = [model.generate(prompt) for _ in range(4)]

# 2. 人类排序
rankings = human_rank(responses)

# 3. 训练奖励模型
reward_model.train(responses, rankings)

# 4. 强化学习优化
for prompt in prompts:
    response = model.generate(prompt)
    reward = reward_model(response)
    model.update_with_reward(reward)

Prompt Engineering

如何与 LLM 有效交互:

1. 零样本(Zero-shot)

直接提问,不提供示例:

问:将以下文本翻译成英文:你好,世界!
答:Hello, World!

2. 少样本(Few-shot)

提供示例:

问:情感分析
示例1:这部电影很棒 → 正面
示例2:太无聊了 → 负面
问题:我很喜欢这个产品 → ?
答:正面

3. 思维链(Chain-of-Thought)

让模型展示推理过程:

问:Roger 有 5 个网球。他又买了 2 罐网球。
每罐有 3 个球。他现在有多少个网球?

让我们一步步思考:
1. Roger 最初有 5 个球
2. 他买了 2 罐,每罐 3 个球
3. 2 罐 × 3 个/罐 = 6 个球
4. 总共:5 + 6 = 11 个球

答:11 个网球

4. 角色扮演

你是一位资深的 Python 开发者。
请帮我审查以下代码,指出潜在问题:

[代码]

作为资深开发者,我发现以下问题:
1. 缺少错误处理
2. 变量命名不规范
3. 可以使用列表推导式优化
...

实战应用

1. 文本分类

from transformers import pipeline

# 加载模型
classifier = pipeline('sentiment-analysis')

# 分类
result = classifier('这个产品质量很好!')
# {'label': 'POSITIVE', 'score': 0.9998}

2. 命名实体识别

ner = pipeline('ner')

text = "苹果公司的 CEO 蒂姆·库克在加州发表演讲"
entities = ner(text)
# [
#   {'entity': 'ORG', 'word': '苹果公司'},
#   {'entity': 'PER', 'word': '蒂姆·库克'},
#   {'entity': 'LOC', 'word': '加州'}
# ]

3. 文本生成

generator = pipeline('text-generation', model='gpt2')

prompt = "人工智能的未来是"
result = generator(prompt, max_length=100)

4. 问答系统

qa = pipeline('question-answering')

context = """
机器学习是人工智能的一个分支,
它让计算机能够从数据中学习,
而不需要显式编程。
"""

question = "什么是机器学习?"
answer = qa(question=question, context=context)
# {'answer': '人工智能的一个分支', 'score': 0.95}

评估指标

分类任务

# 准确率(Accuracy)
accuracy = (TP + TN) / (TP + TN + FP + FN)

# 精确率(Precision)
precision = TP / (TP + FP)

# 召回率(Recall)
recall = TP / (TP + FN)

# F1 分数
f1 = 2 * (precision * recall) / (precision + recall)

生成任务

# BLEU(机器翻译)
bleu_score = calculate_bleu(reference, hypothesis)

# ROUGE(文本摘要)
rouge_score = calculate_rouge(reference, summary)

# Perplexity(语言模型)
perplexity = exp(cross_entropy_loss)

常见挑战

1. 过拟合

模型在训练数据上表现好,但泛化能力差。

解决方案

  • 增加训练数据
  • 数据增强
  • 正则化
  • Dropout
  • Early stopping

2. 数据不平衡

某些类别的样本远多于其他类别。

解决方案

  • 重采样
  • 类别权重
  • 合成数据(SMOTE)

3. 计算资源

训练大模型需要大量 GPU。

解决方案

  • 使用预训练模型
  • 模型压缩
  • 量化
  • 知识蒸馏

学习路径

初学者

  1. 数学基础

    • 线性代数
    • 概率统计
    • 微积分
  2. 编程基础

    • Python
    • NumPy, Pandas
    • Matplotlib
  3. 机器学习入门

    • Scikit-learn
    • 经典算法
    • 实战项目

进阶

  1. 深度学习

    • TensorFlow / PyTorch
    • CNN, RNN
    • 计算机视觉 / NLP
  2. 大语言模型

    • Transformer
    • Hugging Face
    • Prompt Engineering
  3. 实战项目

    • Kaggle 竞赛
    • 开源贡献
    • 个人项目

工具和资源

框架

  • TensorFlow:Google 开发
  • PyTorch:Facebook 开发
  • JAX:Google 开发
  • Hugging Face:NLP 生态

数据集

  • ImageNet:图像分类
  • COCO:目标检测
  • SQuAD:问答
  • GLUE:NLP 基准

学习资源

  • 课程

    • Andrew Ng 的机器学习课程
    • Fast.ai
    • DeepLearning.AI
  • 书籍

    • 《深度学习》(花书)
    • 《动手学深度学习》
    • 《Python 机器学习》
  • 论文

    • Attention Is All You Need
    • BERT
    • GPT 系列

总结

AI 技术正在快速发展:

  • ✅ 机器学习是基础
  • ✅ 深度学习是核心
  • ✅ LLM 是前沿
  • ✅ 实践是关键

开始你的 AI 学习之旅,掌握未来的核心技能!

参考资源


AI 的未来由你创造!