89c038b1c4
- 新增 DesignAI.bib(Garrity + 普尔等 2 条) - preamble 添加 natbib + plainnat 样式 - ch01/ch02 插入 \cite 引用(共 5 处) - 参考文献加入目录 outline(\addcontentsline) - 删除 ap07-references.tex,由 \bibliography 自动生成 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
1188 lines
46 KiB
TeX
1188 lines
46 KiB
TeX
\chapter{设计人工智能的理论框架}
|
||
|
||
本章建立全书的核心理论框架。从“函数描述世界”的理念出发,引入数据模态(Data
|
||
Modality)作为理解AI技术的组织原则,梳理从小模型到大模型的统一演进规律,并以多层感知机(MLP)作为一切深度学习的基础模型进行系统讲解。
|
||
|
||
-
|
||
理解AI不需要逐一学习每种技术。核心理念是:\textbf{所有AI技术都是围绕不同类型的数据(模态)来学习函数}。不同的技术采用不同的方法“获得”这个函数。
|
||
|
||
-
|
||
无论是处理文本、图像还是三维空间数据,AI的本质工作都是一样的——从数据中学习映射函数
|
||
\(y = f(x;\theta)\)。区别仅在于输入数据的形态不同,因此需要不同的网络结构来高效处理。
|
||
|
||
- 本章将从函数式视角理解AI的本质 - 建立基于数据模态的全书知识地图 -
|
||
揭示所有AI技术背后的统一演进规律 - 深入讲解MLP这一最基础的神经网络 -
|
||
建立“环境-智能体-任务”实践框架,降低上手门槛。
|
||
|
||
\section{函数式AI视角}
|
||
|
||
\subsection{学习目标}
|
||
|
||
\begin{itemize}
|
||
\item
|
||
理解“Functions Describe the World”的核心理念
|
||
\item
|
||
掌握从Excel线性回归到神经网络的演进逻辑
|
||
\item
|
||
理解数据驱动与规则驱动的根本区别
|
||
\end{itemize}
|
||
|
||
\subsection{物理定律:用函数描述世界}
|
||
|
||
正如 Garrity 在其著作 \textit{All the Math You Missed}\cite{EJUUCH39} 中所言:``The mantra that we should all chant each night before bed is: Functions Describe the World.'' 物理学是最早践行这一理念的学科。人类科学家花费数百年时间,发现了许多简洁而优美的函数关系:
|
||
|
||
{\def\LTcaptype{none} % do not increment counter
|
||
\begin{longtable}[]{@{}
|
||
>{\raggedright\arraybackslash}p{(\linewidth - 4\tabcolsep) * \real{0.1528}}
|
||
>{\raggedright\arraybackslash}p{(\linewidth - 4\tabcolsep) * \real{0.5417}}
|
||
>{\raggedright\arraybackslash}p{(\linewidth - 4\tabcolsep) * \real{0.1528}}@{}}
|
||
\toprule\noalign{}
|
||
\begin{minipage}[b]{\linewidth}\raggedright
|
||
现象
|
||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
|
||
函数
|
||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
|
||
发现者
|
||
\end{minipage} \\
|
||
\midrule\noalign{}
|
||
\endhead
|
||
\bottomrule\noalign{}
|
||
\endlastfoot
|
||
自由落体 & \(h = \frac{1}{2}gt^{2}\) & 伽利略 \\
|
||
万有引力 & \(F = \frac{Gm_{1}m_{2}}{r^{2}}\) & 牛顿 \\
|
||
电磁感应 & \(\varepsilon = - \frac{d\Phi}{dt}\) & 法拉第 \\
|
||
质能等价 & \(E = mc^{2}\) & 爱因斯坦 \\
|
||
\end{longtable}
|
||
}
|
||
|
||
这些函数的共同特点是:\textbf{用简洁的数学关系描述复杂的自然规律}。科学家通过观察现象、收集数据、提出假设,最终找到精确的函数形式。
|
||
|
||
\subsection{AI的函数观:从数据中学习函数}
|
||
|
||
AI延续了这一传统,但方式截然不同——\textbf{不是由人类发现函数,而是让机器从数据中自动学习函数}。
|
||
|
||
传统科学: 观察 → 假设 → 验证 → 发现函数 f(x)\\
|
||
AI方法: 数据 → 训练 → 学习函数 y = f(x; θ)
|
||
|
||
在AI中,函数的一般形式为:
|
||
|
||
\[y = f(x;\theta)\]
|
||
|
||
其中: - \(x\) 是\textbf{输入}(如图像、文本、传感器数据) - \(y\)
|
||
是\textbf{输出}(如分类标签、预测值、生成内容) - \(\theta\)
|
||
是\textbf{可学习参数}(通过训练自动确定) - \(f\)
|
||
是\textbf{模型结构}(我们设计的函数框架)
|
||
|
||
关键区别在于:物理定律中的函数形式是人为确定的(如
|
||
\(F = ma\)),而AI中的函数形式由神经网络自动学习,参数 \(\theta\)
|
||
通过海量数据训练得到。
|
||
|
||
\subsection{从Excel线性回归到神经网络}
|
||
|
||
这个过程可以用一个渐进的例子来理解。
|
||
|
||
\subsubsection{简单线性回归(Excel就能做)}
|
||
|
||
预测房价,只有一个输入变量——面积:
|
||
|
||
\[房价 \approx 0.015 \times 面积 + 50万\]
|
||
|
||
这就是
|
||
\(y = ax + b\),最简单的线性函数。在Excel中,我们可以用趋势线功能轻松完成。
|
||
|
||
\subsubsection{多元回归}
|
||
|
||
增加更多特征:
|
||
|
||
\[房价 \approx 0.01 \times 面积 + 0.5 \times 卧室数 + 0.3 \times 地段评分 - 20万\]
|
||
|
||
这就是
|
||
\(y = a_{1}x_{1} + a_{2}x_{2} + a_{3}x_{3} + b\)。从数学上看,这已经是\textbf{单个神经元}的完整形式。
|
||
|
||
\subsubsection{多层函数组合}
|
||
|
||
现实世界的关系往往不是简单的线性关系。我们需要将多个函数组合起来:
|
||
|
||
\begin{enumerate}
|
||
\def\labelenumi{\alph{enumi}.}
|
||
\setcounter{enumi}{7}
|
||
\item
|
||
₁ = σ(W₁x + b₁) \# 第一层:提取基础特征
|
||
\item
|
||
₂ = σ(W₂h₁ + b₂) \# 第二层:组合高级特征
|
||
\end{enumerate}
|
||
|
||
y = σ(W₃h₂ + b₃) \# 第三层:输出最终结果
|
||
|
||
这就是\textbf{多层神经网络}。每一层都在做线性变换加非线性激活,层层嵌套形成复杂的能力。
|
||
|
||
\textbf{Python代码示例:简单线性回归}
|
||
|
||
\textbf{import} numpy \textbf{as} np
|
||
|
||
\textbf{import} matplotlib.pyplot \textbf{as} plt
|
||
|
||
\emph{\# 生成模拟数据:面积(平方米)与房价(万元)}
|
||
|
||
np.random.seed(42)
|
||
|
||
areas = np.random.uniform(50, 200, 100) \emph{\# 50-200平方米}
|
||
|
||
prices = 0.015 * areas + 50 + np.random.normal(0, 10, 100) \emph{\#
|
||
加入噪声}
|
||
|
||
\emph{\# 使用最小二乘法拟合线性函数 y = ax + b}
|
||
|
||
X = np.column\_stack({[}areas, np.ones\_like(areas){]}) \emph{\#
|
||
构造设计矩阵}
|
||
|
||
theta = np.linalg.lstsq(X, prices, rcond=None){[}0{]} \emph{\# 求解参数}
|
||
|
||
a, b = theta
|
||
|
||
print(f"学到的函数: 房价 = \{a:.4f\} × 面积 + \{b:.2f\}")
|
||
|
||
print(f"真实函数: 房价 = 0.0150 × 面积 + 50.00")
|
||
|
||
\emph{\# 可视化}
|
||
|
||
plt.figure(figsize=(8, 5))
|
||
|
||
plt.scatter(areas, prices, alpha=0.5,
|
||
label=\textquotesingle 数据点\textquotesingle)
|
||
|
||
plt.plot(areas, a * areas + b, \textquotesingle r-\textquotesingle,
|
||
linewidth=2, label=f\textquotesingle 拟合:
|
||
y=\{a:.4f\}x+\{b:.1f\}\textquotesingle)
|
||
|
||
plt.xlabel(\textquotesingle 面积(平方米)\textquotesingle)
|
||
|
||
plt.ylabel(\textquotesingle 房价(万元)\textquotesingle)
|
||
|
||
plt.title(\textquotesingle 线性回归:从数据中学习函数\textquotesingle)
|
||
|
||
plt.legend()
|
||
|
||
plt.grid(True, alpha=0.3)
|
||
|
||
\begin{lstlisting}
|
||
plt.show()
|
||
\end{lstlisting}
|
||
|
||
这段代码展示了一个完整的“从数据中学习函数”的过程。虽然这只是最简单的线性回归,但它已经包含了AI的核心思想:\textbf{给定数据,自动确定函数参数}。
|
||
|
||
\subsection{数据驱动 vs 规则驱动}
|
||
|
||
这是理解AI最重要的思维转变。
|
||
|
||
\textbf{规则驱动(传统编程)}
|
||
|
||
\emph{\# 传统方式:人工编写判断规则}\\
|
||
\textbf{def} classify\_design\_style(image):\\
|
||
\textbf{if} has\_minimal\_lines(image) \textbf{and}
|
||
is\_monochrome(image):\\
|
||
\textbf{return} "极简主义"\\
|
||
\textbf{elif} has\_curved\_forms(image) \textbf{and}
|
||
is\_colorful(image):\\
|
||
\textbf{return} "波普风格"\\
|
||
\emph{\# ... 需要穷举所有情况}\\
|
||
\textbf{return} "未知风格"
|
||
|
||
问题: - 规则难以穷举所有情况 - 边界情况(edge case)无法覆盖 -
|
||
无法处理模糊和不确定的情况 - 维护成本随复杂度指数增长
|
||
|
||
\subsubsection{数据驱动(AI方法)}
|
||
|
||
\emph{\# AI方式:从标注数据中自动学习}\\
|
||
model = NeuralNetwork()\\
|
||
model.train(thousands\_of\_labeled\_images) \emph{\# 从数据中学习规律}\\
|
||
result = model.predict(new\_image) \emph{\# 自动判断}
|
||
|
||
优势: - 自动发现人类难以表达的规律 - 数据越多,性能越好 -
|
||
可以处理复杂的、非线性的关系 - 适应性强,可迁移到新任务
|
||
|
||
\textbf{设计思维的转变}:从“设计规则”到“设计数据”。在AI时代,设计师不仅要设计规则(设计语言、规范),还要设计和管理训练数据,因为数据决定了AI学到的函数。
|
||
|
||
\section{数据模态全景}
|
||
|
||
学习目标
|
||
|
||
\begin{itemize}
|
||
\item
|
||
理解数据模态(Data Modality)的概念
|
||
\item
|
||
建立全书各章节之间的知识地图
|
||
\item
|
||
理解为什么数据模态是组织AI知识的有效框架
|
||
\end{itemize}
|
||
|
||
\subsection{什么是数据模态}
|
||
|
||
\textbf{模态(Modality)}
|
||
是指信息的存在形式和感知方式。人类通过不同感官感知不同模态的信息:耳朵感知声音(一维时间序列),眼睛感知图像(二维像素矩阵),身体感知空间(三维坐标)。
|
||
|
||
AI同样需要针对不同模态的数据采用不同的处理方式。一种数据模态决定了:
|
||
|
||
\begin{enumerate}
|
||
\def\labelenumi{\arabic{enumi}.}
|
||
\item
|
||
\textbf{数据的组织形式}:文本是符号序列,图像是像素矩阵,三维数据是点云或网格
|
||
\item
|
||
\textbf{适合的网络结构}:序列数据用RNN/Transformer,图像用CNN/ViT,空间数据用PointNet
|
||
\item
|
||
\textbf{典型的应用场景}:翻译、分类、检测、生成等
|
||
\item
|
||
\textbf{评估标准}:不同任务的评估指标不同
|
||
\end{enumerate}
|
||
|
||
因此,\textbf{数据模态是理解AI技术最自然的组织框架}。
|
||
|
||
\subsection{六大数据模态}
|
||
|
||
本书后续章节将围绕以下六大数据模态展开:
|
||
|
||
{\def\LTcaptype{none} % do not increment counter
|
||
\begin{longtable}[]{@{}
|
||
>{\raggedright\arraybackslash}p{(\linewidth - 12\tabcolsep) * \real{0.1337}}
|
||
>{\raggedright\arraybackslash}p{(\linewidth - 12\tabcolsep) * \real{0.0756}}
|
||
>{\raggedright\arraybackslash}p{(\linewidth - 12\tabcolsep) * \real{0.1337}}
|
||
>{\raggedright\arraybackslash}p{(\linewidth - 12\tabcolsep) * \real{0.0988}}
|
||
>{\raggedright\arraybackslash}p{(\linewidth - 12\tabcolsep) * \real{0.2326}}
|
||
>{\raggedright\arraybackslash}p{(\linewidth - 12\tabcolsep) * \real{0.2500}}
|
||
>{\raggedright\arraybackslash}p{(\linewidth - 12\tabcolsep) * \real{0.0640}}@{}}
|
||
\toprule\noalign{}
|
||
\begin{minipage}[b]{\linewidth}\raggedright
|
||
模态
|
||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
|
||
数据维度
|
||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
|
||
数据类型
|
||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
|
||
输入形式
|
||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
|
||
代表模型(小→大)
|
||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
|
||
设计应用
|
||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
|
||
对应章节
|
||
\end{minipage} \\
|
||
\midrule\noalign{}
|
||
\endhead
|
||
\bottomrule\noalign{}
|
||
\endlastfoot
|
||
\textbf{一维:文本与序列} & 1D & 文本、时间序列、音乐 & Token序列 & RNN
|
||
→ LSTM → BERT → GPT-4 & 设计文本生成、用户评论分析、设计趋势预测 &
|
||
第3章 \\
|
||
\textbf{二维:图像与视觉} & 2D & 图像、视觉设计稿 & 像素矩阵 & LeNet →
|
||
ResNet → ViT → SAM & 图像分类、目标检测、风格迁移、设计评估 & 第4章 \\
|
||
\textbf{三维:空间与几何} & 3D & 点云、网格、体素 & 3D坐标集 & PointNet
|
||
→ DGCNN → Point Transformer & 三维重建、空间分析、建筑设计、数字孪生 &
|
||
第5章 \\
|
||
\textbf{决策序列} & 时序决策 & 状态-动作对 & 状态→动作映射 & Q-Learning
|
||
→ DQN → PPO → AlphaGo & 布局优化、参数调优、自适应设计 & 第6章 \\
|
||
\textbf{生成} & 创造性输出 & 图像、文本、音频 & 噪声/条件 & VAE → GAN →
|
||
Diffusion → Sora & AIGC设计、概念生成、风格迁移、设计探索 & 第7章 \\
|
||
\textbf{行动序列} & 多步行动 & 任务-工具-行动链 & 目标→计划→执行 & ReAct
|
||
→ Toolformer → AutoGPT → GPT-4V &
|
||
智能设计助手、自动化工作流、多Agent协作 & 第8章 \\
|
||
\end{longtable}
|
||
}
|
||
|
||
\subsection{模态之间的关系}
|
||
|
||
这六种模态并非孤立存在,它们之间存在密切的内在联系:
|
||
|
||
┌──────────────┐\\
|
||
│ 一维:序列 │\\
|
||
│ (第3章) │\\
|
||
└──────┬───────┘\\
|
||
│ 序列化的基础\\
|
||
┌──────┴───────┐\\
|
||
│ 二维:视觉 │\\
|
||
│ (第4章) │\\
|
||
└──────┬───────┘\\
|
||
│ 空间维度的扩展\\
|
||
┌──────┴───────┐\\
|
||
│ 三维:空间 │\\
|
||
│ (第5章) │\\
|
||
└──────┬───────┘\\
|
||
│\\
|
||
┌────────────┼────────────┐\\
|
||
│ │ │\\
|
||
┌──────┴──────┐ ┌──┴───┐ ┌──────┴──────┐\\
|
||
│ 决策序列 │ │ 生成 │ │ 行动序列 │\\
|
||
│ (第6章) │ │(第7章)│ │ (第8章) │\\
|
||
└─────────────┘ └──────┘ └─────────────┘
|
||
|
||
\textbf{从感知到行动的逻辑链条}: -
|
||
\textbf{一维到三维}是感知智能的递进——从理解语言、识别图像到感知空间
|
||
- \textbf{决策序列}将感知转化为行动策略——在环境中做出最优选择 -
|
||
\textbf{生成}突破感知的局限——不仅理解,还能创造新内容 -
|
||
\textbf{行动序列}整合所有能力——感知、规划、执行形成闭环
|
||
|
||
\subsection{为什么模态是有用的组织原则}
|
||
|
||
\textbf{第一,降低学习门槛。}
|
||
不需要一次性理解所有AI技术,只需要按数据类型逐一学习。理解了文本处理的方法后,很多概念可以直接迁移到图像处理。
|
||
|
||
\textbf{第二,揭示统一规律。}
|
||
虽然不同模态使用的网络结构不同,但背后遵循相同的学习范式——都是从小模型到大模型的演进(见2.3节)。
|
||
|
||
\textbf{第三,对应设计实践。}
|
||
设计师日常接触的信息天然是按模态划分的:文字(设计说明)、图像(效果图)、三维模型(空间设计)。按模态组织知识,便于直接找到所需技术。
|
||
|
||
\textbf{第四,预见技术趋势。}
|
||
理解了模态框架,就能更好地理解多模态(Multimodal)AI的发展方向——让AI同时处理多种模态的数据,正如人类同时用视觉、听觉和触觉感知世界。
|
||
|
||
\section{小模型到大模型的演进规律}
|
||
|
||
学习目标
|
||
|
||
\begin{itemize}
|
||
\item
|
||
理解AI技术发展的四个阶段
|
||
\item
|
||
认识到不同模态背后存在统一的演进规律
|
||
\item
|
||
建立对当前大模型时代的技术定位
|
||
\end{itemize}
|
||
|
||
\subsection{四个发展阶段}
|
||
|
||
纵观AI各个模态的发展历程,可以提炼出一个统一的四阶段演进模式:
|
||
|
||
\subsubsection{第一阶段:手工特征时代(Hand-crafted Features)}
|
||
|
||
人类专家根据领域知识,手工设计特征提取方法。例如,图像处理中的边缘检测算子(Sobel、Canny)、纹理特征(HOG、SIFT),自然语言处理中的词袋模型(Bag
|
||
of Words)、TF-IDF等。
|
||
|
||
特点: - 特征由人类专家精心设计 - 每个特征都有明确的物理含义 -
|
||
性能受限于人类的领域知识和表达能力 - 适合数据量小、计算资源有限的场景
|
||
|
||
\subsubsection{第二阶段:自动学习时代(Deep Learning)}
|
||
|
||
深度学习让模型自动从原始数据中学习特征。卷积神经网络(CNN)自动学习图像特征,循环神经网络(RNN)自动学习序列特征。
|
||
|
||
特点: - 特征由网络自动学习,无需人工设计 -
|
||
端到端(End-to-End)的训练方式 - 需要大量标注数据 -
|
||
性能大幅超越手工特征方法
|
||
|
||
\subsubsection{第三阶段:预训练时代(Pre-training)}
|
||
|
||
通过在大规模无标注数据上的预训练,模型学习通用知识,再通过微调(Fine-tuning)适配具体任务。迁移学习使得少量标注数据也能获得优秀性能。
|
||
|
||
特点: - 先预训练学通用知识,再微调适配任务 - 大幅减少对标注数据的依赖 -
|
||
模型开始具备迁移和泛化能力 - ``预训练+微调“成为标准范式
|
||
|
||
\subsubsection{第四阶段:大模型时代(Foundation Models)}
|
||
|
||
参数规模达到十亿甚至万亿级别的模型,展现出”涌现能力''(Emergent
|
||
Abilities)——模型规模大到一定程度后,突然具备了小模型没有的新能力。
|
||
|
||
特点: - 单一模型处理多种任务(通用性) - 涌现能力:规模带来质变 -
|
||
少样本甚至零样本学习 - Scaling Law:性能随规模持续提升
|
||
|
||
\subsection{四阶段对比}
|
||
|
||
{\def\LTcaptype{none} % do not increment counter
|
||
\begin{longtable}[]{@{}
|
||
>{\raggedright\arraybackslash}p{(\linewidth - 8\tabcolsep) * \real{0.1919}}
|
||
>{\raggedright\arraybackslash}p{(\linewidth - 8\tabcolsep) * \real{0.2020}}
|
||
>{\raggedright\arraybackslash}p{(\linewidth - 8\tabcolsep) * \real{0.1717}}
|
||
>{\raggedright\arraybackslash}p{(\linewidth - 8\tabcolsep) * \real{0.2222}}
|
||
>{\raggedright\arraybackslash}p{(\linewidth - 8\tabcolsep) * \real{0.1919}}@{}}
|
||
\toprule\noalign{}
|
||
\begin{minipage}[b]{\linewidth}\raggedright
|
||
维度
|
||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
|
||
手工特征时代
|
||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
|
||
自动学习时代
|
||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
|
||
预训练时代
|
||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
|
||
大模型时代
|
||
\end{minipage} \\
|
||
\midrule\noalign{}
|
||
\endhead
|
||
\bottomrule\noalign{}
|
||
\endlastfoot
|
||
\textbf{特征提取方式} & 人工设计 & 自动学习 & 预训练+微调 & 涌现学习 \\
|
||
\textbf{数据需求} & 少量标注数据 & 大量标注数据 & 大量无标注+少量标注 &
|
||
海量多模态数据 \\
|
||
\textbf{计算资源} & CPU即可 & 需要GPU & 需要多GPU & 需要大规模集群 \\
|
||
\textbf{模型特点} & 任务专用 & 任务专用但自动 & 可迁移 & 通用基础模型 \\
|
||
\textbf{典型模型} & SIFT、HOG、TF-IDF & AlexNet、LSTM & BERT、ResNet &
|
||
GPT-4、SAM、Sora \\
|
||
\textbf{设计影响} & 基础图像处理 & 自动化设计分析 & 设计知识迁移 &
|
||
通用设计智能 \\
|
||
\end{longtable}
|
||
}
|
||
|
||
\subsection{不同模态的演进路径}
|
||
|
||
每种模态都经历了相同的四个阶段,只是时间线略有不同:
|
||
|
||
\subsubsection{文本与序列(一维)}
|
||
|
||
手工特征 自动学习 预训练 大模型\\
|
||
TF-IDF → Word2Vec → BERT (2018) → GPT-4 (2023)\\
|
||
词袋模型 LSTM/GRU ELMo Claude\\
|
||
N-gram Seq2Seq T5 Llama
|
||
|
||
\subsubsection{图像与视觉(二维)}
|
||
|
||
手工特征 自动学习 预训练 大模型\\
|
||
SIFT → AlexNet → ResNet → SAM (2023)\\
|
||
HOG VGGNet EfficientNet DINOv2\\
|
||
Canny边缘 YOLO CLIP GPT-4V
|
||
|
||
\subsubsection{三维空间(三维)}
|
||
|
||
\begin{lstlisting}
|
||
手工特征 自动学习 预训练 大模型
|
||
\end{lstlisting}
|
||
|
||
FPFH → PointNet → Point-BERT → Point-E
|
||
|
||
\begin{enumerate}
|
||
\def\labelenumi{\arabic{enumi}.}
|
||
\setcounter{enumi}{4}
|
||
\tightlist
|
||
\item
|
||
D形状上下文 DGCNN Point-MAE Shape-E
|
||
\end{enumerate}
|
||
|
||
\begin{lstlisting}
|
||
体素特征 PointNet++ ULIP LRM
|
||
\end{lstlisting}
|
||
|
||
\subsubsection{生成模型}
|
||
|
||
手工特征 自动学习 预训练 大模型\\
|
||
规则模板 → VAE/GAN → StyleGAN → Stable Diffusion\\
|
||
马尔可夫链 PixelCNN BigGAN DALL-E 3\\
|
||
分形算法 CycleGAN Craiyon Sora
|
||
|
||
\textbf{关键洞察}:无论哪种模态,发展路径都遵循相同的规律——从人工设计到自动学习,从专用到通用,从小规模到大规模。理解了这个规律,即使面对全新的AI技术,也能快速定位它所处的阶段和意义。
|
||
|
||
\subsection{对设计师的启示}
|
||
|
||
1.\textbf{不要被具体模型名称迷惑}。模型千变万化,但底层逻辑相同。重要的是理解它属于哪个阶段、处理什么模态的数据。
|
||
|
||
2.\textbf{关注趋势而非细节}。AI技术迭代极快,具体的模型可能很快过时,但从手工到自动、从小到大的趋势不会改变。
|
||
|
||
3.\textbf{预训练时代是设计师的最佳入口}。利用预训练模型,设计师不需要海量数据和强大算力,就能将AI应用到设计实践中。
|
||
|
||
4.\textbf{大模型时代带来“民主化”}。大模型通过自然语言交互降低了AI的使用门槛,设计师可以用自然语言指挥AI完成设计任务。
|
||
|
||
\section{MLP:一切的基础}
|
||
|
||
\subsection{为什么MLP如此重要}
|
||
|
||
多层感知机(Multi-Layer Perceptron,
|
||
MLP)是最基础的神经网络结构。虽然现代AI使用CNN、Transformer等更复杂的架构,但它们的底层构件仍然是MLP中的基本操作:线性变换、非线性激活、损失计算和梯度更新。
|
||
|
||
\textbf{理解MLP是理解所有深度学习的起点。}
|
||
|
||
MLP(多层感知机)\\
|
||
│\\
|
||
├── CNN(卷积神经网络)= 局部连接的MLP + 权重共享\\
|
||
│\\
|
||
├── RNN(循环神经网络)= 共享参数的MLP + 时间展开\\
|
||
│\\
|
||
└── Transformer = 注意力机制 + MLP
|
||
|
||
\subsection{网络架构}
|
||
|
||
MLP由三种类型的层组成:
|
||
|
||
输入层 隐藏层1 隐藏层2 输出层\\
|
||
┌─────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────┐\\
|
||
│ x₁ │ │ h₁ │ │ g₁ │ │ y₁ │\\
|
||
│ x₂ │───→│ h₂ │──→│ g₂ │──→│ y₂ │\\
|
||
│ x₃ │ │ h₃ │ │ g₃ │ │ y₃ │\\
|
||
│ ... │ │ ... │ │ ... │ │ ... │\\
|
||
│ xₙ │ │ hₘ │ │ gₖ │ │ yₚ │\\
|
||
└─────────┘ └─────────────┘ └─────────────┘ └─────────┘\\
|
||
│ │ │ │\\
|
||
└───────────────┴─────────────────┴────────────────┘\\
|
||
全连接(Fully Connected):每个神经元与上一层所有神经元相连
|
||
|
||
各层的作用:
|
||
|
||
{\def\LTcaptype{none} % do not increment counter
|
||
\begin{longtable}[]{@{}
|
||
>{\raggedright\arraybackslash}p{(\linewidth - 4\tabcolsep) * \real{0.1059}}
|
||
>{\raggedright\arraybackslash}p{(\linewidth - 4\tabcolsep) * \real{0.4588}}
|
||
>{\raggedright\arraybackslash}p{(\linewidth - 4\tabcolsep) * \real{0.4118}}@{}}
|
||
\toprule\noalign{}
|
||
\begin{minipage}[b]{\linewidth}\raggedright
|
||
层类型
|
||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
|
||
作用
|
||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
|
||
神经元数量
|
||
\end{minipage} \\
|
||
\midrule\noalign{}
|
||
\endhead
|
||
\bottomrule\noalign{}
|
||
\endlastfoot
|
||
输入层 & 接收原始数据,每个神经元对应一个特征 &
|
||
取决于数据特征数(如图像像素数) \\
|
||
隐藏层 & 特征变换与组合,逐步提取高级特征 & 可自由设计(超参数) \\
|
||
输出层 & 产生最终预测结果 & 取决于任务(分类数或回归值数) \\
|
||
\end{longtable}
|
||
}
|
||
|
||
\textbf{设计类比}:可以把MLP想象为设计方案的评审流程。输入层是原始需求,隐藏层是不同维度的评估(功能、美学、可行性),输出层是最终的评分或决策。每一层都在对信息进行加工和抽象。
|
||
|
||
\subsection{前向传播}
|
||
|
||
前向传播(Forward
|
||
Propagation)是数据从输入层经过各隐藏层到达输出层的计算过程。
|
||
|
||
\textbf{单个神经元的计算}
|
||
|
||
每个神经元执行两个操作:
|
||
|
||
步骤1:线性变换 z = W₁x₁ + W₂x₂ + ... + Wₙxₙ + b = Wx + b\\
|
||
步骤2:非线性激活 h = σ(z)
|
||
|
||
其中 \(W\) 是权重(Weight),\(b\) 是偏置(Bias),\(\sigma\)
|
||
是激活函数(Activation Function)。
|
||
|
||
\subsubsection{完整网络的前向传播}
|
||
|
||
对于L层网络,前向传播逐层计算:
|
||
|
||
\# 第1层
|
||
|
||
\begin{enumerate}
|
||
\def\labelenumi{\alph{enumi}.}
|
||
\setcounter{enumi}{7}
|
||
\item
|
||
₁ = σ₁(W₁ · x + b₁)
|
||
\item
|
||
\# 第2层
|
||
\end{enumerate}
|
||
|
||
h₂ = σ₂(W₂ · h₁ + b₂)
|
||
|
||
\# ... 第l层
|
||
|
||
hₗ = σₗ(Wₗ · hₗ₋₁ + bₗ)
|
||
|
||
\# 输出层
|
||
|
||
\begin{lstlisting}
|
||
y = hₗ
|
||
\end{lstlisting}
|
||
|
||
用更简洁的函数组合表示:
|
||
|
||
\[y = f_{L}(f_{L - 1}(\cdots f_{2}(f_{1}(x))\cdots))\]
|
||
|
||
\textbf{数据流动示意}
|
||
|
||
输入向量 x\\
|
||
│\\
|
||
├─→ 线性变换: z₁ = W₁x + b₁\\
|
||
│ │\\
|
||
│ └─→ 激活函数: h₁ = σ(z₁)\\
|
||
│ │\\
|
||
│ └─→ 线性变换: z₂ = W₂h₁ + b₂\\
|
||
│ │\\
|
||
│ └─→ 激活函数: h₂ = σ(z₂)\\
|
||
│ │\\
|
||
│ └─→ ... → y(输出)
|
||
|
||
\textbf{Python代码示例:手动实现前向传播}
|
||
|
||
\textbf{import} numpy \textbf{as} np
|
||
|
||
\textbf{def} sigmoid(x):
|
||
|
||
\emph{"""Sigmoid激活函数"""}
|
||
|
||
\textbf{return} 1 / (1 + np.exp(-x))
|
||
|
||
\textbf{def} relu(x):
|
||
|
||
\emph{"""ReLU激活函数"""}
|
||
|
||
\textbf{return} np.maximum(0, x)
|
||
|
||
\emph{\# 定义一个简单的3层MLP}
|
||
|
||
\begin{quote}
|
||
\emph{\# 输入: 4维 → 隐藏层1: 8个神经元 → 隐藏层2: 4个神经元 → 输出:
|
||
2维}
|
||
\end{quote}
|
||
|
||
\emph{\# 初始化权重和偏置(实际中由训练得到)}
|
||
|
||
W1 = p.random.randn(8, 4) * 0.01 \emph{\# (8, 4)}
|
||
|
||
\begin{lstlisting}
|
||
b1 = np.zeros((8, 1)) # (8, 1)
|
||
\end{lstlisting}
|
||
|
||
W2 = np.random.randn(4, 8) * 0.01 \emph{\# (4, 8)}
|
||
|
||
\begin{lstlisting}
|
||
b2 = np.zeros((4, 1)) # (4, 1)
|
||
\end{lstlisting}
|
||
|
||
W3 = np.random.randn(2, 4) * 0.01 \emph{\# (2, 4)}
|
||
|
||
\begin{lstlisting}
|
||
b3 = np.zeros((2, 1)) # (2, 1)
|
||
\end{lstlisting}
|
||
|
||
\emph{\# 输入数据(4个特征)}
|
||
|
||
x = np.array({[}{[}0.5{]}, {[}0.3{]}, {[}0.8{]}, {[}0.1{]}{]}) \emph{\#
|
||
(4, 1)}
|
||
|
||
\emph{\# 前向传播}
|
||
|
||
\begin{lstlisting}
|
||
z1 = np.dot(W1, x) + b1 # 线性变换
|
||
h1 = relu(z1) # ReLU激活
|
||
\end{lstlisting}
|
||
|
||
z2 = np.dot(W2, h1) + b2 \emph{\# 线性变换}
|
||
|
||
\begin{lstlisting}
|
||
h2 = relu(z2) # ReLU激活
|
||
\end{lstlisting}
|
||
|
||
z3 = np.dot(W3, h2) + b3 \emph{\# 线性变换}
|
||
|
||
y = sigmoid(z3) \emph{\# Sigmoid激活(输出层)}
|
||
|
||
print(f"输入: \{x.flatten()\}")
|
||
|
||
print(f"隐藏层1输出: \{h1.flatten()\}")
|
||
|
||
print(f"隐藏层2输出: \{h2.flatten()\}")
|
||
|
||
\begin{lstlisting}
|
||
print(f"最终输出: {y.flatten()}")
|
||
\end{lstlisting}
|
||
|
||
\subsection{激活函数}
|
||
|
||
激活函数(Activation
|
||
Function)是神经网络的“灵魂”。没有激活函数,无论网络有多少层,都等价于一个单层线性变换:
|
||
|
||
\[y = W_{2}(W_{1}x) = (W_{2}W_{1})x = W'x\]
|
||
|
||
激活函数引入\textbf{非线性},使网络能够拟合任意复杂的函数关系。
|
||
|
||
\textbf{常用激活函数对比}
|
||
|
||
{\def\LTcaptype{none} % do not increment counter
|
||
\begin{longtable}[]{@{}
|
||
>{\raggedright\arraybackslash}p{(\linewidth - 8\tabcolsep) * \real{0.0805}}
|
||
>{\raggedright\arraybackslash}p{(\linewidth - 8\tabcolsep) * \real{0.4631}}
|
||
>{\raggedright\arraybackslash}p{(\linewidth - 8\tabcolsep) * \real{0.1074}}
|
||
>{\raggedright\arraybackslash}p{(\linewidth - 8\tabcolsep) * \real{0.2215}}
|
||
>{\raggedright\arraybackslash}p{(\linewidth - 8\tabcolsep) * \real{0.1141}}@{}}
|
||
\toprule\noalign{}
|
||
\begin{minipage}[b]{\linewidth}\raggedright
|
||
激活函数
|
||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
|
||
公式
|
||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
|
||
输出范围
|
||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
|
||
特点
|
||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
|
||
典型应用
|
||
\end{minipage} \\
|
||
\midrule\noalign{}
|
||
\endhead
|
||
\bottomrule\noalign{}
|
||
\endlastfoot
|
||
Sigmoid & \(\sigma(z) = \frac{1}{1 + e^{- z}}\) & (0, 1) &
|
||
输出可解释为概率;两端梯度消失 & 二分类输出层 \\
|
||
ReLU & \(\text{ReLU}(z) = max(0,z)\) & {[}0, +∞) &
|
||
计算简单高效;缓解梯度消失 & \textbf{隐藏层首选} \\
|
||
Tanh & \(tanh(z) = \frac{e^{z} - e^{- z}}{e^{z} + e^{- z}}\) & (-1, 1) &
|
||
零中心化;两端梯度消失 & 循环网络隐藏层 \\
|
||
Softmax &
|
||
\(\text{softmax}(z_{i}) = \frac{e^{z_{i}}}{\sum_{j}^{}e^{z_{j}}}\) & (0,
|
||
1),和为1 & 输出为概率分布 & 多分类输出层 \\
|
||
LeakyReLU & \(\text{LeakyReLU}(z) = max(\alpha z,z)\) & (-∞, +∞) &
|
||
解决ReLU“死神经元”问题 & 深层网络隐藏层 \\
|
||
\end{longtable}
|
||
}
|
||
|
||
\textbf{视觉对比}
|
||
|
||
ReLU: Sigmoid: Tanh:\\
|
||
↑ \_\_\_ \_\_\_\\
|
||
│ / \textbackslash{} / \textbackslash{}\\
|
||
│ / \textbackslash{} / \textbackslash{}\\
|
||
│ \_\_\_\_ / \textbackslash{} \_\_\_\_ / \textbackslash{} \_\_\_\_\\
|
||
│\_\_\_\_\_\_\_\_\_\_\_\textbar{} │ │ │ │\\
|
||
└───────────┼──→ └──────────┘ └────────────────────┘\\
|
||
-∞ 0 +∞ -∞ 0 +∞ -∞ 0 +∞\\
|
||
\strut \\
|
||
特点:简单,计算快 特点:平滑,输出(0,1) 特点:零中心,输出(-1,1)\\
|
||
正区间梯度恒为1 两端梯度趋近于0 两端梯度趋近于0\\
|
||
负区间输出为0 可能导致梯度消失 可能导致梯度消失
|
||
|
||
\textbf{设计类比}:激活函数就像是设计中的“非线性思维”。如果只有线性思维(没有激活函数),无论思考多少层,结论都是线性的——就像在一条直线上来回走。激活函数引入了“跳跃”和“拐弯”的能力,让网络能够表达复杂的设计关系。
|
||
|
||
\subsection{损失函数}
|
||
|
||
损失函数(Loss
|
||
Function)衡量模型预测值与真实值之间的差距,是训练过程的“指南针”。
|
||
|
||
\textbf{常用损失函数}
|
||
|
||
{\def\LTcaptype{none} % do not increment counter
|
||
\begin{longtable}[]{@{}
|
||
>{\raggedright\arraybackslash}p{(\linewidth - 6\tabcolsep) * \real{0.0815}}
|
||
>{\raggedright\arraybackslash}p{(\linewidth - 6\tabcolsep) * \real{0.1407}}
|
||
>{\raggedright\arraybackslash}p{(\linewidth - 6\tabcolsep) * \real{0.5481}}
|
||
>{\raggedright\arraybackslash}p{(\linewidth - 6\tabcolsep) * \real{0.2148}}@{}}
|
||
\toprule\noalign{}
|
||
\begin{minipage}[b]{\linewidth}\raggedright
|
||
任务类型
|
||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
|
||
损失函数
|
||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
|
||
公式
|
||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
|
||
直观含义
|
||
\end{minipage} \\
|
||
\midrule\noalign{}
|
||
\endhead
|
||
\bottomrule\noalign{}
|
||
\endlastfoot
|
||
回归 & 均方误差 (MSE) &
|
||
\(L = \frac{1}{n}\sum_{i = 1}^{n}({\widehat{y}}_{i} - y_{i})^{2}\) &
|
||
预测值与真实值差的平方平均 \\
|
||
二分类 & 二元交叉熵 (BCE) &
|
||
\(L = - \lbrack y\log\widehat{y} + (1 - y)log(1 - \widehat{y})\rbrack\)
|
||
& 预测概率与真实标签的偏差 \\
|
||
多分类 & 交叉熵 (CE) &
|
||
\(L = - \sum_{i = 1}^{C}y_{i}\log{\widehat{y}}_{i}\) &
|
||
预测分布与真实分布的差距 \\
|
||
\end{longtable}
|
||
}
|
||
|
||
其中 \(\widehat{y}\) 是模型预测值,\(y\) 是真实值。
|
||
|
||
\textbf{损失函数的直观理解}
|
||
|
||
好的预测: 差的预测:\\
|
||
预测值: ■ 预测值: ■\\
|
||
真实值: ■ 真实值: ■\\
|
||
损失小: \textbar{} 损失大: \textbar-\/-\/-\/-\/-\/-\/-\/-\/-\textbar{}\\
|
||
→ 参数调整小 → 参数需要大幅调整
|
||
|
||
\subsection{反向传播与梯度下降}
|
||
|
||
反向传播(Backpropagation)是训练神经网络的核心算法,它解决了“如何高效计算每个参数对损失的影响程度”这一问题。
|
||
|
||
\subsubsection{核心思想:梯度下降}
|
||
|
||
训练目标是最小化损失函数。梯度下降的思想是:沿着损失函数梯度(下降最快的方向)的相反方向更新参数。
|
||
|
||
\[\theta = \theta - \alpha\nabla L(\theta)\]
|
||
|
||
其中: - \(\theta\):模型的所有可学习参数(权重 \(W\) 和偏置 \(b\)) -
|
||
\(\alpha\):学习率(Learning Rate),控制每次更新的步长 -
|
||
\(\nabla L(\theta)\):损失函数对参数的梯度
|
||
|
||
\subsubsection{直观理解}
|
||
|
||
想象你站在山上某处(当前参数值),目标是到达谷底(最小损失)。梯度下降就是:
|
||
- 观察脚下地面的坡度(计算梯度) - 沿着最陡的下坡方向走一步(参数更新)
|
||
- 重复以上步骤直到到达谷底(收敛)
|
||
|
||
损失 L\\
|
||
│ ╲\\
|
||
│ ╲ ╱╲\\
|
||
│ ╲╱ ╲ ← 梯度下降的路径\\
|
||
│ ╲ ╲ ╱\\
|
||
│ ╲ ╲╱\\
|
||
│ ╲\\
|
||
└───────────────→ 参数 θ
|
||
|
||
\subsubsection{反向传播:高效计算梯度}
|
||
|
||
反向传播利用\textbf{链式法则(Chain
|
||
Rule)},从输出层向输入层反向逐层计算梯度:
|
||
|
||
前向传播(计算输出):
|
||
|
||
\begin{enumerate}
|
||
\def\labelenumi{\alph{enumi}.}
|
||
\setcounter{enumi}{23}
|
||
\tightlist
|
||
\item
|
||
→ h₁ → h₂ → ... → y → L(损失)
|
||
\end{enumerate}
|
||
|
||
反向传播(计算梯度):
|
||
|
||
\begin{lstlisting}
|
||
∂L/∂y → ∂L/∂h₂ → ∂L/∂h₁ → ∂L/∂x(每步用链式法则)
|
||
\end{lstlisting}
|
||
|
||
链式法则的具体形式:
|
||
|
||
\[\frac{\partial L}{\partial W_{1}} = \frac{\partial L}{\partial y} \cdot \frac{\partial y}{\partial h_{2}} \cdot \frac{\partial h_{2}}{\partial h_{1}} \cdot \frac{\partial h_{1}}{\partial W_{1}}\]
|
||
|
||
\subsubsection{训练循环的四个步骤}
|
||
|
||
\begin{enumerate}
|
||
\def\labelenumi{\arabic{enumi}.}
|
||
\item
|
||
前向传播:用当前参数计算预测值 y = f(x; θ)
|
||
\item
|
||
计算损失:比较预测值与真实值 L = loss(y, ŷ)
|
||
\item
|
||
反向传播:计算损失对所有参数的梯度 ∂L/∂θ
|
||
\item
|
||
参数更新:沿梯度反方向更新参数 θ = θ - α·∂L/∂θ
|
||
\end{enumerate}
|
||
|
||
\begin{lstlisting}
|
||
重复以上步骤,直到损失不再显著下降(收敛)
|
||
\end{lstlisting}
|
||
|
||
\subsubsection{Python代码示例:完整的训练循环}
|
||
|
||
\textbf{import} numpy \textbf{as} np
|
||
|
||
\emph{\# ===== 1. 准备数据 =====}
|
||
|
||
\emph{\# 模拟数据:用y = 2x₁ + 3x₂ + 1生成}
|
||
|
||
np.random.seed(42)
|
||
|
||
\begin{enumerate}
|
||
\def\labelenumi{\roman{enumi}.}
|
||
\setcounter{enumi}{10}
|
||
\item
|
||
X = np.random.randn(100, 2) \emph{\# 100个样本,2个特征}
|
||
\item
|
||
\_true = 2 * X{[}:, 0:1{]} + 3 * X{[}:, 1:2{]} + 1 \emph{\# 真实值}
|
||
\end{enumerate}
|
||
|
||
y\_true += np.random.normal(0, 0.1, y\_true.shape) \emph{\# 加入噪声}
|
||
|
||
\emph{\# ===== 2. 初始化参数 =====}
|
||
|
||
W = np.random.randn(2, 1) * 0.01 \emph{\# 权重 (2, 1)}
|
||
|
||
\begin{lstlisting}
|
||
b = np.zeros((1, 1)) # 偏置 (1, 1)
|
||
learning_rate = 0.01 # 学习率
|
||
\end{lstlisting}
|
||
|
||
\emph{\# ===== 3. 训练循环 =====}
|
||
|
||
\textbf{for} epoch \textbf{in} range(500):
|
||
|
||
\emph{\# 前向传播}
|
||
|
||
y\_pred = np.dot(X, W) + b \emph{\# 线性变换: z = Wx + b}
|
||
|
||
\emph{\# 计算损失(均方误差)}
|
||
|
||
loss = np.mean((y\_pred - y\_true) ** 2)
|
||
|
||
\emph{\# 反向传播(计算梯度)}
|
||
|
||
dL\_dy = 2 * (y\_pred - y\_true) / len(X) \emph{\# 损失对输出的梯度}
|
||
|
||
dL\_dW = np.dot(X.T, dL\_dy) \emph{\# 损失对W的梯度}
|
||
|
||
dL\_db = np.sum(dL\_dy, axis=0, keepdims=True) \emph{\# 损失对b的梯度}
|
||
|
||
\emph{\# 参数更新(梯度下降)}
|
||
|
||
W = W - learning\_rate * dL\_dW
|
||
|
||
b = b - learning\_rate * dL\_db
|
||
|
||
\emph{\# 每100轮打印一次}
|
||
|
||
\textbf{if} (epoch + 1) \% 100 == 0:
|
||
|
||
print(f"第 \{epoch+1:3d\} 轮 \textbar{} 损失: \{loss:.6f\} "
|
||
|
||
f"\textbar{} W: {[}\{W{[}0,0{]}:.4f\}, \{W{[}1,0{]}:.4f\}{]} \textbar{}
|
||
b: \{b{[}0,0{]}:.4f\}")
|
||
|
||
print(f"\textbackslash n学到的参数: W = \{W.flatten()\}, b =
|
||
\{b.flatten()\}")
|
||
|
||
\begin{lstlisting}
|
||
print(f"真实参数: W = [2.0, 3.0], b = [1.0]")
|
||
\end{lstlisting}
|
||
|
||
输出示例:
|
||
|
||
第 100 轮 \textbar{} 损失: 0.352148 \textbar{} W: {[}1.5234, 2.3456{]}
|
||
\textbar{} b: 0.8765\\
|
||
第 200 轮 \textbar{} 损失: 0.053421 \textbar{} W: {[}1.8765, 2.8234{]}
|
||
\textbar{} b: 0.9654\\
|
||
第 300 轮 \textbar{} 损失: 0.008756 \textbar{} W: {[}1.9654, 2.9567{]}
|
||
\textbar{} b: 0.9932\\
|
||
第 400 轮 \textbar{} 损失: 0.001543 \textbar{} W: {[}1.9923, 2.9891{]}
|
||
\textbar{} b: 0.9987\\
|
||
第 500 轮 \textbar{} 损失: 0.000287 \textbar{} W: {[}1.9985, 2.9978{]}
|
||
\textbar{} b: 0.9997\\
|
||
\strut \\
|
||
学到的参数: W = {[}1.9985, 2.9978{]}, b = {[}0.9997{]}\\
|
||
真实参数: W = {[}2.0, 3.0{]}, b = {[}1.0{]}
|
||
|
||
可以看到,经过500轮训练,模型学到的参数已经非常接近真实值。
|
||
|
||
\subsection{MLP的局限性}
|
||
|
||
虽然MLP是理解神经网络的基础,但它也存在明显的局限性:
|
||
|
||
\begin{enumerate}
|
||
\def\labelenumi{\arabic{enumi}.}
|
||
\item
|
||
\textbf{参数量爆炸}:处理高维输入(如高清图像)时,全连接导致参数量过大
|
||
\item
|
||
\textbf{忽略数据结构}:将图像展平成一维向量会丢失空间结构信息
|
||
\item
|
||
\textbf{缺乏平移不变性}:物体在图像中移动后,需要重新学习
|
||
\item
|
||
\textbf{难以处理序列数据}:没有处理时序依赖的机制
|
||
\end{enumerate}
|
||
|
||
正是这些局限性,催生了后续的CNN(处理图像)、RNN(处理序列)、Transformer(处理通用序列)等更专业的架构。但它们的底层原理都与MLP一脉相承。
|
||
|
||
\section{环境-智能体框架}
|
||
|
||
\subsection{智能体与环境概念}
|
||
|
||
在《人工智能——计算Agent基础》一书\cite{MGDW8DPN}中,人工智能被定义为“一个研究能够产生智能行为的计算Agent的分析与综合的领域”,可见Agent这一概念在AI领域中的核心地位。书中进一步将Agent定义为“在某个环境中进行某种行为的个体——它完成了某件事”。由此,``人工智能的核心科学目标是理解自然系统或人工系统中一些智能行为的原理“,而”人工智能的核心工程目标是设计和合成有用且智能的产品''。
|
||
|
||
因此,AI领域的基本要素便是在不同类型环境(Environment)中行动的各类智能体(Agent),执行从科学发现到实践应用等不同场景中的多种任务(Task)。总体上,环境可分为物理环境与虚拟或数字环境两大类,智能体可分为人类(含具有不同程度智能的动物)、AI与具身智能三大类(表2.1)。
|
||
|
||
\begin{longtable}[]{@{}
|
||
>{\centering\arraybackslash}p{(\linewidth - 4\tabcolsep) * \real{0.1442}}
|
||
>{\centering\arraybackslash}p{(\linewidth - 4\tabcolsep) * \real{0.4327}}
|
||
>{\centering\arraybackslash}p{(\linewidth - 4\tabcolsep) * \real{0.4135}}@{}}
|
||
\caption{表 2.1 环境-智能体的类型组合}\tabularnewline
|
||
\toprule\noalign{}
|
||
\endfirsthead
|
||
\endhead
|
||
\bottomrule\noalign{}
|
||
\endlastfoot
|
||
\textbf{环境}
|
||
|
||
\textbf{智能体} & \textbf{物理环境} & \textbf{数字环境} \\
|
||
\textbf{人类} & ~ 具有物理身体,能直接感知和互动 & ~
|
||
通过设备(如电脑、手机)访问,依赖界面 \\
|
||
\textbf{AI} & ~ 通过机器人或嵌入式系统体现,但本质是软件 & ~
|
||
主要存在和运行,如算法、聊天机器人 \\
|
||
\textbf{具身智能} & ~ 设计用于物理世界,有传感器和执行器 & ~
|
||
可能具有数字组件,但焦点是物理体现 \\
|
||
\end{longtable}
|
||
|
||
其中,人类与物理环境的互动长久以来是地理学科的研究主题,即“人地关系”或“人地耦合系统”研究,涉及环境感知、景观设计、可持续性等多个议题。当前的“智能体---环境”关系研究可视为“人地关系”研究的自然延伸,可从中汲取丰富启发,有待后续深入探讨。人类与数字环境的互动则关联网络社会、人机交互等主题,在AI蓬勃发展的时代背景下催生了更多、更深刻的研究命题。AI与具身智能分别对应数字环境和物理环境,构成了人工智能的两种主要存在方式。
|
||
|
||
需要指出的是,某些非生物的自然过程(如景观中的风雨侵蚀)以及人类社会经济变迁等现象,同样可以采用Agent方法加以研究,即所谓的ABM建模。不过,此处的Agent并非智能体概念,而是指基于个体的建模方法。然而,大模型技术在ABM领域的引入正在模糊这一边界。
|
||
|
||
\subsection{行为主义视角下的“环境-智能体”}
|
||
|
||
在人工智能的行为主义流派视角下,人工智能问题可抽象为一个三元交互模型:\textbf{环境(Environment)---
|
||
智能体(Agent)---
|
||
任务(Task)}。特定架构的智能体对所处环境执行某个动作(Action),基于对环境的感知与结果的观察(Observation),获得该动作所产生的奖励(Reward),继而不断重复这一过程以优化决策策略,直到较好地完成某个或多个任务(Task)(图2.1)。该框架不仅适用于强化学习中的智能体(见第8章),也适用于\textbf{人类学习的普遍过程}。
|
||
|
||
\begin{figure}
|
||
\centering
|
||
\includegraphics[width=4.15529in,height=3.58481in,alt={图 2.1 智能体-环境互动框架}]{figures/ch02/image1.png}
|
||
\caption{图 2.1 智能体-环境互动框架}
|
||
\end{figure}
|
||
|
||
\subsection{"环境-智能体"框架与设计任务}
|
||
|
||
学习AI技术可以抽象为一个三元交互模型:\textbf{环境(Environment)---
|
||
智能体(Agent)--- 任务(Task)}。
|
||
|
||
\subsection{智能系统的设计空间:复杂性维度}
|
||
|
||
Agent在环境中的行为充满复杂性,这些复杂性可以分解为不同的维度从而便于理解和分析;这些维度也构成了人工智能系统的设计空间,通过改变不同维度的值可以得到空间里的不同的点,从而有效构建满足特定任务求解的智能系统\cite{MGDW8DPN}。
|
||
|
||
从复杂性维度出发,讨论如下9个维度的复杂性及其在设计领域的体现,即模块性、表示方案、规划期、感知不确定性、效用不确定性、偏好、Agent数量、学习以及计算限制(表
|
||
2.2)。
|
||
|
||
\begin{longtable}[]{@{}
|
||
>{\raggedright\arraybackslash}p{(\linewidth - 2\tabcolsep) * \real{0.2083}}
|
||
>{\raggedright\arraybackslash}p{(\linewidth - 2\tabcolsep) * \real{0.5694}}@{}}
|
||
\caption{表 2.2 智能系统设计空间的复杂性维度}\tabularnewline
|
||
\toprule\noalign{}
|
||
\endfirsthead
|
||
\endhead
|
||
\bottomrule\noalign{}
|
||
\endlastfoot
|
||
\textbf{维度} & \textbf{值} \\
|
||
模块性 & 扁平的、模块化的、分层的 \\
|
||
表示方案 & 状态、特征、关系 \\
|
||
规划期 & 无规划、有限阶段、不确定阶段、无限阶段 \\
|
||
感知不确定性 & 完全可观察、部分可观察 \\
|
||
效用不确定性 & 确定性的、随机的 \\
|
||
偏好 & 目标、复杂偏好 \\
|
||
学习 & 已知的知识、学到的知识 \\
|
||
Agent 数量 & 单个 Agent、多 Agent \\
|
||
计算限制 & 完全理性、有限理性 \\
|
||
\end{longtable}
|
||
|
||
来源:引自参考文献\cite{MGDW8DPN}
|
||
|
||
\section{思考与练习}
|
||
|
||
\begin{enumerate}
|
||
\def\labelenumi{\arabic{enumi}.}
|
||
\item
|
||
\textbf{函数思维练习}:请列举3个设计领域中的例子,说明它们可以用函数
|
||
\(y = f(x;\theta)\) 来描述。思考输入 \(x\)、输出 \(y\)
|
||
和需要学习的参数 \(\theta\) 分别是什么。
|
||
\item
|
||
\textbf{模态映射练习}:选择一个你熟悉的设计项目(如建筑设计、产品设计或平面设计),分析该项目涉及哪些数据模态(一维/二维/三维/决策/生成/行动),以及每种模态在该项目中的作用。
|
||
\item
|
||
\textbf{演进规律思考}:回顾2.3节中介绍的四个发展阶段。在你关注的设计领域,AI技术目前处于哪个阶段?未来会如何演进?请给出你的分析和理由。
|
||
\item
|
||
\textbf{环境-智能体-任务练习}:规划你的AI学习路径。评估你当前的计算环境(笔记本配置、网络条件),选择最适合你的入门策略(云端/本地/Vibe
|
||
Coding),并设定一个本周可完成的小任务(如在Colab上运行一个图像分类示例)。
|
||
\end{enumerate}
|
||
|
||
\textbf{(1)环境配置:被忽视的瓶颈}
|
||
|
||
对于计算机专业的学生,搭建Python环境、安装PyTorch、下载预训练模型可能只是日常操作。但对于\textbf{设计专业学生}而言,环境配置往往成为学习AI的最大障碍,可能在多个步骤均遭遇问题。
|
||
|
||
设计学生尝试运行一个图像分类示例:
|
||
|
||
\begin{enumerate}
|
||
\def\labelenumi{\arabic{enumi}.}
|
||
\item
|
||
安装Python → 版本冲突(3.8? 3.9? 3.11?)
|
||
\item
|
||
安装pip包 → 权限报错 / 网络超时
|
||
\item
|
||
pip install torch → 下载2GB,断线重连3次
|
||
\item
|
||
下载预训练权重 → 需要HuggingFace账号 / 网络限制
|
||
\item
|
||
CUDA版本不匹配 → "torch.cuda.is\_available() = False"
|
||
\item
|
||
import cv2报错 → 缺少系统依赖
|
||
\item
|
||
终于跑通 → 耗费大量时间,已经精疲力竭
|
||
\end{enumerate}
|
||
|
||
环境问题不是“技术能力不足”,而是\textbf{基础设施鸿沟}。正如设计师不需要理解CAD软件的底层渲染引擎才能画图,学习AI也不应该被环境配置阻挡在门外。
|
||
|
||
\textbf{(2)解决策略}
|
||
|
||
本书附录2详细介绍了Vibe
|
||
Coding(感觉驱动编程)的理念和工具链。核心思想是:\textbf{让AI辅助编程,降低代码编写的门槛}。
|
||
|
||
\begin{itemize}
|
||
\item
|
||
\textbf{Claude Code}:用自然语言描述需求,AI自动生成代码
|
||
\item
|
||
\textbf{Cursor / GitHub Copilot}:IDE内AI辅助编程
|
||
\end{itemize}
|
||
|
||
此外,云端与容器化环境可以免配置直接上手。云端方面:Google
|
||
Colab提供免费GPU/TPU算力,适合快速实验与教学演示;Kaggle
|
||
Notebooks集成竞赛数据集与社区代码,便于参考与复现;阿里云天池面向国内用户,提供稳定算力与本地化资源。容器化方面:Docker将运行环境打包为镜像,一次构建、到处运行,彻底告别“It
|
||
works on my machine”的环境差异问题。
|
||
|
||
\section{延伸阅读}
|
||
|
||
\begin{itemize}
|
||
\item
|
||
\href{http://neuralnetworksanddeeplearning.com/}{Neural Networks and
|
||
Deep Learning} --- Michael Nielsen 的在线教材,直观讲解神经网络原理
|
||
\item
|
||
\href{https://arxiv.org/abs/2001.08361}{Scaling Laws for Neural
|
||
Language Models} --- Kaplan et al., 2020,Scaling Law 的经典论文
|
||
\item
|
||
\href{https://arxiv.org/abs/2108.07258}{On the Opportunities and Risks
|
||
of Foundation Models} --- Stanford HAI 报告,全面介绍基础模型
|
||
\item
|
||
\href{https://www.youtube.com/watch?v=aircAruvnKk}{3Blue1Brown: But
|
||
what is a Neural Network?} --- 优秀的神经网络可视化讲解视频
|
||
\end{itemize}
|
||
|
||
以下资源可以作为本章和后续章节的补充学习材料:
|
||
|
||
\textbf{机器学习与深度学习系统课程}
|
||
|
||
{\def\LTcaptype{none} % do not increment counter
|
||
\begin{longtable}[]{@{}
|
||
>{\raggedright\arraybackslash}p{(\linewidth - 4\tabcolsep) * \real{0.1371}}
|
||
>{\raggedright\arraybackslash}p{(\linewidth - 4\tabcolsep) * \real{0.4162}}
|
||
>{\raggedright\arraybackslash}p{(\linewidth - 4\tabcolsep) * \real{0.4365}}@{}}
|
||
\toprule\noalign{}
|
||
\begin{minipage}[b]{\linewidth}\raggedright
|
||
资源
|
||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
|
||
特点
|
||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
|
||
链接
|
||
\end{minipage} \\
|
||
\midrule\noalign{}
|
||
\endhead
|
||
\bottomrule\noalign{}
|
||
\endlastfoot
|
||
Datawhale Bishop DL &
|
||
基于Bishop《深度学习》的中文笔记,覆盖概率论、回归、分类、DNN、CNN、Transformer
|
||
&
|
||
\href{https://datawhalechina.github.io/dive-into-bishop-dl/}{dive-into-bishop-dl} \\
|
||
Ai-learn & 完整的AI学习路线图,从数学基础到深度学习实战 &
|
||
\href{https://github.com/tangyudi/Ai-learn}{Ai-learn} \\
|
||
3Blue1Brown 神经网络 & 顶级可视化讲解,建立直觉理解 &
|
||
\href{https://www.youtube.com/playlist?list=PLZHQObOWTQDNU6R1_67000Dx_ZCJB-3pi}{YouTube} \\
|
||
李宏毅机器学习 & 中文讲解,理论与应用并重 &
|
||
\href{https://www.youtube.com/c/HungyiLeeNTU}{YouTube} \\
|
||
fast.ai & 顶向下教学,先实践后理论 &
|
||
\href{https://course.fast.ai/}{course.fast.ai} \\
|
||
d2l.ai(动手学深度学习) & 代码驱动,PyTorch/MXNet/TensorFlow多框架 &
|
||
\href{https://d2l.ai/}{d2l.ai} \\
|
||
\end{longtable}
|
||
}
|
||
|
||
\textbf{设计领域AI资源}
|
||
|
||
{\def\LTcaptype{none} % do not increment counter
|
||
\begin{longtable}[]{@{}
|
||
>{\raggedright\arraybackslash}p{(\linewidth - 2\tabcolsep) * \real{0.2639}}
|
||
>{\raggedright\arraybackslash}p{(\linewidth - 2\tabcolsep) * \real{0.5139}}@{}}
|
||
\toprule\noalign{}
|
||
\begin{minipage}[b]{\linewidth}\raggedright
|
||
资源
|
||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
|
||
说明
|
||
\end{minipage} \\
|
||
\midrule\noalign{}
|
||
\endhead
|
||
\bottomrule\noalign{}
|
||
\endlastfoot
|
||
Hugging Face & 模型和数据集的“GitHub”,可在线体验 \\
|
||
Civitai & Stable Diffusion模型分享社区 \\
|
||
Papers With Code & 论文+代码+排行榜,追踪最新技术 \\
|
||
\end{longtable}
|
||
}
|
||
|
||
\textbf{学习方法建议}:不要试图一次性学完所有资源。根据当前章节的学习进度,选择1-2个配套资源即可。例如,学习第3章(Transformer)时,可以对照
|
||
Datawhale Bishop DL 中对应的章节加深理解。
|