7.4 深度学习基础(进阶选修)
本节面向有编程基础和进一步探索兴趣的同学。如果你暂时不打算深入技术细节,可以跳过本节。
在前三节中,你已经学会了在扣子平台上搭建 Agent——拖拽节点、配置提示词、设置触发器。这些操作的背后,是大模型在驱动 Agent 的"思考"能力。本节将带你走进大模型的技术基础——深度学习,理解 Agent 之所以"聪明"的底层原因。
一、从机器学习到深度学习
6.3 节中我们用 scikit-learn 实现了线性回归——这是经典机器学习的范畴。深度学习则更进一步,使用神经网络来处理更复杂的任务。
为什么需要深度学习?经典机器学习在处理表格数据(如房价预测)时表现出色,但面对图像、语音、自然语言等非结构化数据时,往往力不从心。原因在于:这类数据的特征极其复杂,人工设计特征的方式难以穷尽所有可能。深度学习的突破在于——让模型自己学习特征。
核心区别:
| 特征 | 经典机器学习 | 深度学习 |
|---|---|---|
| 特征提取 | 需要人工设计特征 | 自动学习特征 |
| 模型结构 | 相对简单(线性回归、决策树) | 多层神经网络 |
| 数据需求 | 较少数据即可 | 通常需要大量数据 |
| 计算资源 | 普通电脑即可 | 通常需要 GPU 加速 |
| 典型应用 | 表格数据分析、简单分类 | 图像识别、语音识别、文本生成 |
二、神经网络的基本原理
神经网络的灵感来源于人脑的神经元连接方式。一个最简单的神经网络包含三层:
输入层 → 隐藏层 → 输出层
- 输入层:接收原始数据(如图片的像素值);
- 隐藏层:对数据进行变换和特征提取(可以有多层,层数越多越"深");
- 输出层:给出最终结果(如"这是一只猫"的概率)。
每一层由若干"神经元"组成,神经元之间通过"权重"连接。训练的过程就是不断调整这些权重,使模型的预测结果越来越准确。之所以叫"深度"学习,正是因为隐藏层可以有很多层——现代大模型的神经网络往往有数十甚至上百层,层层叠加使模型能够捕捉从简单到复杂的多层次特征。
训练过程的直觉理解:
想象你在学投篮。每次投篮后,你会观察球偏了多少(这叫"损失"),然后调整出手角度和力度(这叫"更新权重")。经过成百上千次练习,你的命中率越来越高。神经网络的训练过程与此类似:
输入数据 → 模型预测 → 计算误差(损失函数)
→ 反向传播误差 → 调整权重 → 重复直到误差足够小
这个过程叫反向传播(Backpropagation),是深度学习最核心的训练算法。
推荐使用 Google Colab(colab.research.google.com),无需在本地安装任何软件,打开浏览器即可编写和运行 Python 代码。
三、用 Keras 构建简单神经网络
以下用一个手写数字识别的例子,演示如何用 TensorFlow/Keras 构建神经网络。
import tensorflow as tf
from tensorflow import keras
# 加载 MNIST 手写数字数据集
(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()
# 数据预处理:归一化到 0-1 范围
x_train = x_train / 255.0
x_test = x_test / 255.0
# 构建模型
model = keras.Sequential([
keras.layers.Flatten(input_shape=(28, 28)), # 将 28x28 图片展平为 784 维向量
keras.layers.Dense(128, activation='relu'), # 隐藏层:128 个神经元
keras.layers.Dense(10, activation='softmax') # 输出层:10 个类别(0-9)
])
# 编译模型
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
# 训练模型
model.fit(x_train, y_train, epochs=5)
# 评估模型
test_loss, test_acc = model.evaluate(x_test, y_test)
print(f"测试集准确率:{test_acc:.2%}")
代码解读:
- MNIST 数据集包含 6 万张手写数字图片(28×28 像素),是深度学习的"Hello World";
Flatten层将二维图片展平为一维向量;Dense(128)是一个全连接隐藏层,relu是激活函数;Dense(10, softmax)输出 10 个概率值,对应数字 0—9;- 训练 5 轮后,准确率通常可达 97% 以上。
四、卷积神经网络(CNN)简介
对于图像识别任务,卷积神经网络(CNN)比普通神经网络更加高效。CNN 的核心思想是:用"卷积核"在图片上滑动扫描,自动提取边缘、纹理、形状等特征。
输入图片 → 卷积层(提取特征)→ 池化层(压缩信息)→ 全连接层 → 输出
CNN 的工作方式类似于人类观察图片的过程:你不会一次性看完整张图片的每个像素,而是先注意到局部的边缘和纹理,再逐步组合成完整的物体。CNN 的卷积层正是模拟了这一过程——底层卷积核识别边缘和颜色,中层组合出纹理和形状,高层识别出完整的物体。
CNN 是计算机视觉领域的基础架构,从人脸识别到自动驾驶,背后都有 CNN 的身影。2012 年,AlexNet(一种 CNN 架构)在 ImageNet 图像识别竞赛中大幅超越传统方法,将错误率从 26% 降至 16%,被视为深度学习革命的起点。此后,CNN 的变体不断涌现——VGG、ResNet、EfficientNet 等,推动图像识别准确率超越了人类水平。
深度学习与 Agent 的关系:本章前三节介绍的 AI Agent,其"大脑"正是基于深度学习技术构建的大语言模型。大语言模型使用的 Transformer 架构(1.3 节已介绍)是深度学习的最新成果之一。理解了神经网络的基本原理,你就能更好地理解 Agent 为什么能"理解"自然语言、为什么会产生"幻觉"(8.1 节)、以及为什么需要通过提示词工程来引导它的行为。
▲ 进阶挑战:用 Python 复现朴素贝叶斯文本分类
使用 scikit-learn 的朴素贝叶斯分类器,完成一个简单的文本分类任务(如垃圾邮件识别)。要求:
- 使用
CountVectorizer将文本转换为特征向量; - 使用
MultinomialNB训练分类模型; - 在测试集上评估准确率;
- 尝试输入自定义文本,观察分类结果。
? 思辨时刻:当 AI 能自己造 AI——Agent 的能力边界在哪里?
2024 年,多家 AI 公司开始探索让 AI Agent 自主编写代码、自主调试、甚至自主创建新的 Agent。这意味着 AI 正在获得"自我复制"和"自我改进"的能力。
思考以下问题:
- 如果一个 Agent 能自主创建更强大的 Agent,这个过程是否需要人类监督?
- Agent 的"自主行动"应该有哪些边界?它能自主发送邮件吗?能自主花钱吗?
- 当 Agent 犯了错误(如发送了错误的信息),责任应该由谁承担——开发者、使用者,还是 Agent 本身?