人工智能基础
人工智能概述
人工智能的起源与发展
现代人工智能(Artificial Intelligence,简称 AI)一般认为起源于 1956 年夏季在美国达特茅斯学院举行的会议。在此次会议上,约翰·麦卡锡(John McCarthy)首次提出“Artificial Intelligence”这一术语,并因此被称为“人工智能之父”。他同时也是 LISP 编程语言的发明者。该会议标志着人工智能作为一个独立研究领域的正式诞生。
图灵测试与智能定义
1950 年,阿兰·图灵(Alan Turing)提出了著名的“图灵测试”,为“智能”提供了一个可操作的定义。图灵测试的基本设定是:一名人类询问者通过文本终端分别与一个真人和一台机器进行交流,但无法直接看到或听到对方。如果询问者无法可靠地区分哪一方是机器,则认为该机器具备智能。
要通过图灵测试,机器需具备以下能力:
- 自然语言处理:能够理解并生成人类语言;
- 知识表示:能够存储所感知或接收到的信息;
- 自动推理:能基于已有知识进行逻辑推导并回答问题;
- 机器学习:能从经验中学习并适应新环境;
- 计算机视觉:能识别和理解图像内容;
- 机器人技术:能操控物理世界中的物体。
图灵测试的重要特征在于其客观性:它不关心机器内部是否具有意识或采用何种机制,仅依据外部行为判断其是否智能,从而避免了关于“真正智能”的哲学争论。
人工智能的研究方法与学派
由于对“智能”本质的理解不同,人工智能研究逐步形成了三大学派:
-
符号主义(Symbolicism):又称为逻辑主义、心理学派或计算机学派。该学派基于“物理符号系统假设”和“有限合理性原理”,认为智能的核心在于对符号的操作和逻辑推理。典型代表包括专家系统和基于规则的推理系统。
-
连接主义(Connectionism):又称仿生学派或生理学派。该学派受人脑神经结构启发,强调通过人工神经网络及其连接权重的学习来实现智能。深度学习即属于此学派的现代发展。
-
行为主义(Behaviorism):又称进化主义或控制论学派。该学派关注智能体在环境中的感知—动作循环,强调通过与环境的交互来演化出智能行为,如强化学习和机器人控制。
这三大学派长期共存、相互补充,共同推动人工智能的发展。
知识表示方法
谓词逻辑表示法
谓词逻辑是一种形式化语言,用于精确描述对象及其关系。其基本构成包括个体常量、函数符号、谓词符号、逻辑连接词(如 ∧、∨、¬、→)以及量词(∀、∃)。
示例:用谓词逻辑表示“高扬是计算机系的一名学生,但他不爱编程序”。
- 定义谓词:
Computer(x):x 是计算机系的学生;Like(x, y):x 喜欢 y。
- 表示为:
Computer(gaoyang) ∧ ¬Like(gaoyang, programming)
谓词逻辑适用于表达精确、结构化的知识,是自动推理和归结原理的基础。
产生式表示法
产生式是一种规则型知识表示方法,基本形式为:
IF P THEN Q 或 P → Q,
其中 P 是前提条件,Q 是结论或操作。
产生式适用于表示事实性知识(如“北京是中国的首都”)和规则性知识(如“如果温度高于 30℃,则开空调”)。与谓词逻辑中的蕴含式相比,产生式具有以下特点:
- 可表示不精确知识,允许前提与事实之间存在模糊匹配;
- 更贴近人类专家的思维模式,广泛应用于专家系统。
知识表示方法分类
知识表示方法可分为两大类:
-
非结构化表示方法:
- 谓词逻辑表示法
- 产生式表示法
这些方法侧重于逻辑关系和规则,不显式描述对象的内部结构。
-
结构化表示方法:
- 语义网络表示法
- 状态空间表示法
- 框架表示法
- 脚本表示法
- 面向对象的知识表示
这些方法通过节点、槽、属性等结构显式组织知识,便于表示复杂对象及其关联。
知识图谱
知识图谱(Knowledge Graph)是一种以有向图形式组织知识的结构化表示方法。其核心要素包括:
- 节点:表示现实世界中的实体(如人物、地点、概念);
- 边:表示实体之间的语义关系(如“父亲”、“位于”、“创作”)。
例如,一个简单的家庭关系知识图谱可包含如下关系:
- James —[Father]→ Mike
- Ann —[Mother]→ Mike
- James —[Couple]→ Ann
- Mike —[Sibling]→ David
graph LR
James -- Father --> Mike
Ann -- Mother --> Mike
James -- Couple --> Ann
Mike -- Sibling --> David
知识图谱的发展经历了从专家系统、语义网到大规模开放知识库(如 Freebase、DBpedia)的演进。其目标是实现“数据的知识化”,即让机器不仅能存储数据,还能理解其语义并支持推理。
知识图谱在问答系统、搜索引擎、推荐系统等领域有广泛应用,是当前人工智能中知识工程的重要组成部分。
逻辑推理
置换与合一
在谓词逻辑中,由于子句通常包含变元,无法像命题逻辑那样直接识别互补文字进行归结。为此引入**置换(Substitution)和合一(Unification)**的概念。
置换是指将表达式中的变元替换为项(可以是常量、函数或另一个变元)的操作。一个置换通常表示为集合形式:
其中 是互不相同的变元, 是不同于 的项。对任意公式 应用置换 后得到的新公式记作 。
合一是指寻找一个置换 ,使得两个或多个谓词公式在应用该置换后变得完全相同。若存在这样的置换,则称这些公式是可合一的。
最一般合一(Most General Unifier, MGU) 是指在所有可能的合一置换中,限制最少、适用范围最广的那个置换。MGU 是谓词逻辑归结过程中必不可少的工具,用于使含有变元的互补文字匹配。
鲁滨逊归结原理概述
鲁滨逊归结原理是一种用于自动推理的完备方法,适用于命题逻辑和谓词逻辑。其核心思想是反证法:要证明某个结论 成立,只需将 加入前提知识构成的子句集 中,形成新子句集 ;若能从 推导出空子句(记为 □ 或 NIL),则说明 不可满足,从而原结论 成立。
关键定义如下:
- 空子句:不含任何文字的子句,记为 □。它是永假的、不可满足的。
- 子句集:由若干子句(包括可能的空子句)组成的集合。子句之间是合取关系。
- 若子句集中包含空子句,则整个子句集不可满足。
命题逻辑的归结
在命题逻辑中,归结操作基于互补文字的消解。
互补文字:若 是原子命题,则 与 称为互补文字。
归结式定义:设 和 是子句集中的两个子句,若 包含文字 , 包含互补文字 ,则可从 和 中分别删除 和 ,并将剩余部分析取构成新子句 ,称为 与 的归结式,、 为其亲本子句。
性质:
- 归结式是其亲本子句的逻辑结论。
- 若通过归结最终导出空子句,则原子句集不可满足。
- 定理:子句集 不可满足,当且仅当存在一个从 到空子句的归结推导过程。
谓词逻辑的归结
谓词逻辑的归结需先对含变元的互补文字进行合一,再执行归结。
二元归结式定义:设 和 是无公共变元的子句,、 是文字。若存在最一般合一 使得 ,则归结式为:
例题
已知前提:
- 任何通过编译技术考试并获奖的人都是快乐的:
- 任何肯学习或幸运的人都可以通过所有考试:
- 张不肯学习但他是幸运的:
- 任何幸运的人都能获奖:
求证:张是快乐的(即 )。
步骤:
-
将前提和结论否定化为子句集:
- (1)
- (2)
- (3)
- (4)
- (5)
- (6)
- (7) (结论否定)
-
应用归结推导,目标是导出空子句。
归结过程:
graph TD
A["¬Pass(x,compiler) ∨ ¬Win(x,prize) ∨ Happy(x)"] -->|"σ1={w/x}"| B["¬Pass(w,compiler) ∨ Happy(w) ∨ ¬Lucky(w)"]
C["¬Lucky(w) ∨ Win(w,prize)"] -->|σ1| B
B -->|"σ2={zhang/w}"| D["¬Pass(zhang,compiler) ∨ ¬Lucky(zhang)"]
E["¬Happy(zhang)"] -->|σ2| D
F["Lucky(zhang)"] --> G["¬Lucky(zhang)"]
D --> H["¬Pass(zhang,compiler)"]
I["¬Lucky(u) ∨ Pass(u,v)"] -->|"σ3={zhang/u, compiler/v}"| H
H --> J["NIL"]
最终导出空子句,故原结论成立:张是快乐的。
搜索算法
启发式搜索算法
启发式搜索利用启发函数(heuristic function) 来估计从当前节点 到目标节点的代价,从而引导搜索方向,提高效率。典型算法包括A*算法。
A*算法结合了实际代价 (从起点到 )与启发估计 ,定义评估函数:
若 是可采纳的(即 never overestimates 实际代价),则 A* 是最优的。
特性:
- 完备性:若解存在且分支有限,则 A* 必能找到。
- 最优性:在 可采纳时,A* 返回最优解。
- 效率依赖于 的准确性;越接近真实代价,搜索越高效。
问题归约法
问题归约法将复杂问题分解为若干子问题,通过解决子问题来解决原问题。适用于具有递归结构的问题。
基本思想:
- 将原始问题表示为一个初始问题节点。
- 应用算符将其分解为一组子问题节点。
- 子问题可继续分解,直至达到本原问题(可直接求解的问题)。
问题归约的结果通常用与或图表示。
与或图搜索
与或图(AND-OR Graph) 是一种用于表示问题归约结构的有向图:
- 或节点(OR node):表示选择一种解法即可(如不同动作)。
- 与节点(AND node):表示必须同时满足多个子问题(如多条件任务)。
在与或图中,解图(Solution Graph) 是从初始节点到所有终叶节点(本原问题)的一棵子图,其中:
- OR 节点只选一个子节点,
- AND 节点必须选所有子节点。
博弈
极大极小过程
极大极小过程(Minimax Procedure)是博弈树搜索中用于两人零和博弈的标准算法。在该类博弈中,一方为“极大方”(Max),目标是使自己的收益最大化;另一方为“极小方”(Min),目标是使对方的收益最小化。极大极小过程通过自底向上回溯的方式,为每个博弈状态赋予一个估值,从而指导极大方选择最优策略。
算法基本思想如下:
- 假设双方都采取最优策略;
- 在极大节点(Max 节点),选择子节点中估值最大的;
- 在极小节点(Min 节点),选择子节点中估值最小的;
- 从叶节点开始,逐层向上传播估值,直至根节点。
该过程通常用于有限深度的博弈树,叶节点的估值由评估函数给出。
α-β 剪枝过程
α-β 剪枝(Alpha-Beta Pruning)是对极大极小过程的一种优化技术,其核心思想是在搜索过程中剪去那些不会影响最终决策的分支,从而减少计算量,提高搜索效率,而不改变最终结果。
定义两个参数:
- α:当前路径上极大方所能保证的最高下界(初始为 -∞);
- β:当前路径上极小方所能保证的最低上界(初始为 +∞)。
剪枝规则如下:
- 在极小节点,若某子节点的估值 ≤ α,则无需继续考察其余子节点,可直接剪枝(因为极大方不会选择导致更低收益的路径);
- 在极大节点,若某子节点的估值 ≥ β,则同样可剪枝(因为极小方不会允许该高估值路径发生)。
通过维护 α 和 β 的动态边界,α-β 剪枝能在最理想情况下将时间复杂度从 降低至 ,其中 为分支因子, 为搜索深度。
例题
考虑如下博弈树,叶节点为静态评估值:
graph TD
A[Max] --> B[Min]
A --> C[Min]
A --> D[Min]
B --> E[3]
B --> F[5]
B --> G[2]
C --> H[9]
C --> I[12]
C --> J[8]
D --> K[1]
D --> L[7]
D --> M[4]
解题过程:
- 从左至右搜索:
- 节点 B 的子节点依次为 3、5、2,Min 选最小值 2,故 B = 2;
- 此时 Max 节点 A 的当前 α = 2;
- 搜索节点 C:
- 先访问 H = 9,Min 节点 C 当前 β = 9;
- 因 α = 2 β = 1,满足剪枝条件(Max 不会选择小于 8 的路径);
- 因此 L 和 M 无需展开,直接剪枝;
- D = 1;
- 最终 A = max(2,8,1) = 8。
结论:根节点选择中间子树(C 分支),最优值为 8;右侧子树被 α-β 剪枝。
深度神经网络
激活函数
激活函数是神经网络中引入非线性能力的关键组件,使得网络能够拟合复杂的非线性函数。若无激活函数,无论网络层数多深,其整体仍等价于一个线性变换。
常见的激活函数包括:
Sigmoid 函数
其输出范围为 (0, 1),适用于二分类输出层,但在深层网络中易导致梯度消失问题。
Tanh 函数
输出范围为 (-1, 1),中心对称,比 Sigmoid 更适合隐藏层,但仍存在梯度饱和问题。
ReLU 函数
计算简单、梯度在正区间恒为 1,有效缓解梯度消失,广泛用于现代深度网络。但存在“神经元死亡”问题(即某些神经元永远输出 0)。
Leaky ReLU
其中 为小正数(如 0.01),可避免神经元完全失活。
前馈神经网络的计算
前馈神经网络(Feedforward Neural Network, FNN)是一种信息单向流动的网络结构,从输入层经若干隐藏层传递至输出层,无反馈或环路。
计算过程遵循以下步骤:
-
加权求和:对第 层的每个神经元 ,计算其输入加权和:
其中 为连接第 层第 个神经元与第 层第 个神经元的权重, 为前一层的激活值, 为偏置项。
-
激活函数作用:将加权和通过激活函数得到该神经元的输出:
-
逐层传播:重复上述过程,直至输出层。
整个网络的输出是输入向量经过多层线性变换与非线性激活后的结果,可用于分类或回归任务。
卷积神经网络
图像识别
卷积神经网络(Convolutional Neural Network, CNN)专为处理具有网格结构的数据(如图像)而设计,在图像识别任务中表现卓越。其核心思想是利用图像的局部相关性和空间不变性,通过局部连接、权重共享和下采样减少参数量并提升泛化能力。
CNN 在图像识别中的典型流程包括:
- 使用卷积层提取局部特征(如边缘、纹理);
- 通过池化层降低特征图的空间维度,增强平移不变性;
- 多层堆叠以构建从低级到高级的特征表示;
- 最终通过全连接层和 Softmax 函数完成分类。
卷积
卷积操作是 CNN 的核心,用于从输入图像(或特征图)中提取局部模式。其数学本质是滑动一个称为“卷积核”(或滤波器)的小矩阵,在输入上逐点进行加权求和。
例题:
设输入图像为 ,卷积核为 ,则输出特征图 中位置 的值为:
其中求和范围由卷积核大小决定。
关键参数包括:
- 卷积核大小:如 、,决定感受野大小;
- 步长(Stride):卷积核每次滑动的像素数,影响输出尺寸;
- 填充(Padding):在输入边界补零,用于控制输出尺寸是否缩小。
卷积操作具有局部连接和权重共享特性:
- 局部连接:每个神经元仅连接输入的一个局部区域;
- 权重共享:同一卷积核在整个输入上滑动使用相同参数,大幅减少模型参数量。
输入特征图为 4×4 矩阵 ,卷积核为 2×2 矩阵 ,步长为 2,求卷积结果。
给定:
解题过程:
最终结果:
池化
池化(Pooling)是一种下采样操作,用于降低特征图的空间维度,减少计算量,并增强对微小平移的鲁棒性。池化不引入可学习参数,通常在卷积层后使用。
两种常用池化方式:
- Max Pooling:在每个局部窗口内取最大值。保留最显著的特征响应,对噪声有一定抑制作用。
- Average Pooling:在窗口内取平均值。平滑特征,但可能弱化关键响应。
池化操作由窗口大小和步长控制。例如, 窗口、步长 2 的池化可将特征图尺寸减半。
例题:
输入特征图为 4×4 矩阵,使用 Max Pooling(步长 2):
解题过程:
- 左上窗口 → max = 40
- 右上窗口 → max = 30
- 左下窗口 → max = 15
- 右下窗口 → max = 35
最终池化结果为:
循环神经网络
循环神经网络(Recurrent Neural Network, RNN)是一类专门用于处理序列数据的神经网络结构。其核心特点在于引入了“循环”机制,使得网络在处理当前输入时能够保留并利用之前时间步的信息。
RNN 的“循环”体现在其隐藏层状态的传递上。设在时间步 的输入为 ,隐藏状态为 ,则其计算方式通常为:
其中, 和 分别是隐藏状态和输入的权重矩阵, 为偏置项, 为激活函数(如 tanh 或 ReLU)。这种结构使得 能够编码从序列起始到当前时刻的历史信息,从而适用于文本、语音、时间序列等具有时序依赖性的任务。
在文本处理中,RNN 常用于语言建模、机器翻译、情感分析等任务。例如,在语言建模中,给定前 个词,RNN 可预测第 个词的概率分布;在机器翻译中,RNN 可将源语言句子编码为一个固定长度的上下文向量,再解码为目标语言句子。
然而,标准 RNN 存在梯度消失或爆炸问题,难以捕捉长距离依赖。为此,后续发展出长短期记忆网络(LSTM)和门控循环单元(GRU),通过引入门控机制有效缓解该问题。
深度学习序列模型
Seq2Seq 模型
Seq2Seq(Sequence-to-Sequence)是一种用于将一个序列映射到另一个序列的端到端模型架构,广泛应用于机器翻译、文本摘要等任务。其基本结构由两部分组成:编码器(Encoder)和解码器(Decoder)。
- 编码器:通常是一个 RNN(如 LSTM),逐词读取输入序列 ,最终输出一个上下文向量 ,该向量旨在捕获整个输入序列的语义信息。
- 解码器:另一个 RNN,以 作为初始隐藏状态,逐步生成目标序列 ,每一步根据前一时刻的输出和当前隐藏状态预测下一个词。
Seq2Seq 的局限在于将整个输入序列压缩为单一固定向量 ,当输入序列较长时,信息容易丢失。
注意力机制
注意力机制(Attention Mechanism)旨在解决 Seq2Seq 中信息瓶颈问题。其核心思想是:在解码每个目标词时,动态地对输入序列的不同部分分配不同权重,从而聚焦于最相关的信息。
具体而言,在解码时间步 ,注意力机制计算当前解码器隐藏状态 与所有编码器隐藏状态 的相似度(通常通过加权点积或可学习的打分函数),得到注意力权重 :
然后计算上下文向量 ,并将其与 拼接后用于预测 。
注意力机制显著提升了长序列建模能力,并成为后续模型的基础组件。
Transformer 模型
Transformer 是一种完全基于注意力机制的神经网络架构,摒弃了 RNN 结构,实现了高度并行化,极大提升了训练效率和性能。
其核心组件包括:
-
自注意力机制(Self-Attention):允许序列中每个位置关注序列内所有其他位置,从而捕获全局依赖关系。对于输入序列 ,通过线性变换得到查询(Query)、键(Key)和值(Value)矩阵 ,输出为:
-
多头注意力(Multi-Head Attention):将自注意力并行执行多次,拼接结果后再线性变换,增强模型表达不同子空间特征的能力。
-
位置编码(Positional Encoding):由于 Transformer 无显式顺序信息,需通过正弦/余弦函数或可学习向量将位置信息注入输入嵌入中。
-
前馈神经网络层:每个位置独立经过两层全连接网络,增加非线性表达能力。
Transformer 采用编码器-解码器结构,但两者均由多层上述模块堆叠而成。在解码器中,还引入掩码自注意力以防止未来信息泄露。
Transformer 已成为现代大语言模型(如 BERT、GPT 系列)的基础架构。
graph TB
subgraph Encoder
A[Input Embedding] --> B[Positional Encoding]
B --> C[Multi-Head Self-Attention]
C --> D[Add & Norm]
D --> E[Feed-Forward]
E --> F[Add & Norm]
end
subgraph Decoder
G[Output Embedding] --> H[Positional Encoding]
H --> I[Masked Multi-Head Self-Attention]
I --> J[Add & Norm]
J --> K[Multi-Head Attention with Encoder Output]
K --> L[Add & Norm]
L --> M[Feed-Forward]
M --> N[Add & Norm]
end
F --> K
N --> O[Linear + Softmax]