第一节课:人工智能是什么?AI、机器学习、深度学习和神经网络之间有什么区别?
假设你正在研究一种析氢电催化剂。为了提高性能,你尝试改变金属组成、合成温度和处理时间,随后测量不同样品的电化学性能。
随着实验增加,你逐渐积累了一张数据表:每一行代表一个样品,每一列记录一种信息,例如组成、结构、电解液条件以及测试结果。
现在,你面临一个实际问题:能不能利用已有实验,帮助判断下一批应该优先制备哪些样品?
人工智能可以参与解决这类问题。但在使用它之前,我们首先需要弄清楚:人工智能究竟是什么?它与机器学习、神经网络和深度学习有什么关系?
这节课从这些最基本的问题开始。
1.人工智能:让计算机具备完成某类任务的能力
人工智能的英文是 Artificial Intelligence,简称 AI。
它研究如何让计算机系统完成通常需要感知、推理、学习、规划或决策的任务。
例如,识别显微图像中的结构、判断实验记录是否异常、预测一种材料的性能,或者帮助安排下一轮实验,都可以成为人工智能研究的任务。
这里需要注意:"人工智能"描述的是一个广泛的研究领域,不能把它理解为某一个软件或者某一种算法。
"算法"可以先理解为完成任务的一套明确步骤。例如,根据一组测量值计算平均数,也需要按照一定步骤进行。
不过,普通计算不必都叫人工智能。
假设电流为 \(0.02\ \mathrm{A}\),电极面积为 \(2\ \mathrm{cm^2}\),按照公式计算电流密度:
\ j=\\frac{I}{A}=\\frac{0.02}{2}=0.01\\ \\mathrm{A/cm\^2} \\
其中,\(j\) 是电流密度,\(I\) 是电流,\(A\) 是电极面积。
这只是按照已知公式完成计算。计算机没有从数据中学习任何新规则。
因此,使用计算机不等于使用人工智能,使用Python也不等于使用人工智能。 Python是一种编程语言,既能完成普通计算,也能实现人工智能方法。
2.机器学习:让数据帮助确定规则
机器学习的英文是 Machine Learning,简称 ML。它是人工智能中的一类方法。
理解机器学习,可以先比较两种解决问题的方式。
第一种方式是由研究者直接写规则。例如:
"如果某个描述符处于指定区间,就给出较高的活性预测;否则给出较低的预测。"
规则由人提前确定,计算机负责执行。
第二种方式是提供已有记录,让计算机通过这些记录确定模型中的数值,再用得到的模型预测其他样品。
这种利用数据确定或改进预测规则的过程,就是机器学习的基本思想。关于机器学习从经验中改善任务表现的讨论,可参考 Jordan与Mitchell发表于Science的综述。
但是,"让计算机学习"并不意味着研究者什么都不用做。
研究者仍然需要决定:预测什么、使用哪些数据、怎样表示材料、选择什么模型,以及如何检查预测是否可靠。
例如,"预测催化剂性能"还不是一个足够明确的任务。你需要进一步说明:
- 研究的是析氢、析氧,还是其他反应?
- 预测的是过电位、交换电流密度,还是产物选择性?
- 电解液、温度和测试方法是什么?
- 模型准备预测同类样品,还是完全不同的材料体系?
机器学习需要清楚的问题定义,才能产生有意义的结果。
3.理解机器学习,先认识几个基本词语
我们仍然以电催化性能预测为例。
样本是一条按照明确规则组织的记录。它可以代表一个样品,也可以代表一次实验工况,但必须提前说明。
同一个材料在十个电位下得到十个测量点,不等于拥有十种相互独立的材料。
特征是提供给模型的输入信息。例如,材料组成、粒径、局部配位、电解液浓度和温度,都可能成为特征。
标签是希望模型预测的答案。例如,你想预测固定电流密度下的过电位,那么这个过电位就是目标标签。
模型是把输入信息转化为预测结果的数学规则。
参数是模型内部需要确定的数值。
利用训练数据确定参数的过程叫作训练 ;参数确定后,对输入计算结果叫作预测。
最后,还需要使用适当独立的数据检查模型,这叫作验证或评估。
可以把整个过程理解为:
\ \\text{已有数据} \\longrightarrow \\text{确定模型参数} \\longrightarrow \\text{预测新样本} \\longrightarrow \\text{检查预测误差} \\
其中最容易被忽略的是最后一步。
模型能够输出一个数字,不代表这个数字值得相信。
4.神经网络:机器学习中一类可学习的数学模型
神经网络的英文是 Neural Network,简称 NN。本课程讨论的是人工神经网络。
它由许多简单的计算单元连接而成。每个单元接收输入,对输入进行计算,再把结果传给其他单元。
我们先看一个最简单的计算单元:
\ z=w_1x_1+w_2x_2+b \\
这个公式可以逐项理解:
- \(x_1、x_2\):两个输入数值。
- \(w_1、w_2\):两个权重,决定输入怎样影响计算结果。
- \(b\):偏置,是一个额外的调整量。
- \(z\):加权相加后得到的中间结果。
为了只关注运算,先假设这些数值都没有单位。
取:
\ x_1=2,\\quad x_2=1,\\quad w_1=0.5,\\quad w_2=-1,\\quad b=1 \\
代入可得:
\ z=0.5\\times2+(-1)\\times1+1=1 \\
接下来,计算单元通常还会对 \(z\) 做一次变换:
\ a=\\sigma(z) \\
其中,\(\sigma\) 表示一个变换规则,叫作激活函数;\(a\) 是该单元的输出。
例如,可以采用"负数变成0,非负数保持不变"的规则。这个规则称为ReLU。因为刚才得到的 \(z=1\),所以输出仍然是1。
今天不需要记住更多激活函数。你只需要理解:神经网络由许多可以调整内部参数的计算单元组成。
训练神经网络,就是利用数据调整这些权重、偏置等参数,使预测误差按照指定目标减小。
神经网络受生物神经系统启发,但它不是对人脑的准确复制,也不能因为名字里有"神经",就认为它理解了化学机理。
5.深度学习:通过多层网络学习数据表示
深度学习的英文是 Deep Learning,简称 DL。
它主要利用多层神经网络,逐层学习数据的表示。
"表示"是什么意思?
同一块催化剂,可以用不同方式描述:材料名称、元素比例、一组结构参数、一张显微图像,或者一条光谱。这些都是计算机接触材料信息的方式。
对于一张图像,多层网络可以逐步把原始像素转化为有助于完成任务的内部信息。这种逐层学习表示的思想,是深度学习的重要特点。LeCun等人在Nature的综述对此作了系统介绍。
但不能直接断言:"这一层一定代表缺陷,那一层一定代表活性位点。"这样的解释需要证据。
网络更深,也不意味着预测一定更好。样本较少时,复杂网络可能只是记住已有记录中的偶然变化,在新材料上表现很差。
因此,是否使用深度学习,应由问题、数据和验证结果决定。
6.四个概念之间究竟是什么关系?
可以用下面这张表区分:
| 概念 | 它主要说明什么? |
|---|---|
| 人工智能 | 计算机系统要完成什么感知、推理、学习或决策任务 |
| 机器学习 | 怎样利用数据确定或改进模型 |
| 神经网络 | 使用哪一类数学模型 |
| 深度学习 | 怎样通过多层神经网络学习数据表示 |
在本课程采用的常见语境中:
人工智能包含机器学习;机器学习包含神经网络等多种方法;深度学习主要使用多层神经网络。
所以,神经网络不一定是深度学习,机器学习也不一定使用神经网络。
例如,线性回归和决策树也可以用于机器学习。你现在只需要知道它们是其他模型的名称,后续课程会从基础讲起。

图1是本课采用的现代神经网络语境:AI包含ML;ML中有神经网络,也有许多非神经网络方法;深度学习主要位于多层神经网络范围内。神经网络不一定深,机器学习不一定用神经网络,AI也不一定使用机器学习。不要画成"AI→ML→DL→NN"四个严格依次包含的圆。
7.把概念放回真实电催化研究
2007年,Jaramillo等研究了二硫化钼,也就是MoS₂的析氢活性。他们结合结构表征和电化学测量,发现其研究样品中的活性与边缘位点数量相关。文献信息见原论文机构记录。
这是一项结构与活性关系研究,并不是本课已经复现的机器学习成果。
但它能启发一个值得检验的问题:
如果把边缘位点信息加入模型,能否比只使用材料总面积更好地预测同类样品的活性?
这时,边缘位点信息可以成为候选特征,明确条件下的活性可以成为标签。
不过,还必须考虑其他因素,例如电解液、载量、导电支撑和测试电位。如果这些因素同时变化,就不能把全部活性差异归因于边缘位点。
这说明,AI方法必须围绕电催化问题组织。输入什么数据,比使用一个听起来高级的算法名称更重要。
8.第一次学习实践:让程序学一个平均数
机器学习的起点可以非常简单,并不需要立即训练神经网络。
我们使用Nørskov等2005年论文Table I中的少量析氢数据。这些记录包含计算得到的吸附能和汇编的实验交换电流数据。原论文DOI。
本课先取六条训练标签:
\ -5.4,\\;-3.0,\\;-3.6,\\;-3.7,\\;-5.9,\\;-6.8 \\
这些标签是交换电流密度的十进对数,记为:
\ y=\\log_{10}\\left\[\\frac{j_0}{1\\ \\mathrm{A/cm\^2}}\\right \]
其中,\(j_0\) 是交换电流密度。括号中的比值没有单位,因此可以取对数。
例如,\(y=-3\) 表示:
\ j_0=10\^{-3}\\ \\mathrm{A/cm\^2}=0.001\\ \\mathrm{A/cm\^2} \\
负的是对数,不是交换电流密度本身。
现在定义一个极简单的模型:无论输入哪种材料,都预测同一个数 \(b\)。我们让训练数据的平均值决定这个数。
先求和:
\ -5.4-3.0-3.6-3.7-5.9-6.8=-28.4 \\
再除以样本数:
\ b=\\frac{-28.4}{6}=-4.733333\\ldots \\
这就是一次最简单的参数学习:参数 \(b\) 由训练数据确定。
它没有利用吸附能,也没有区分材料,因此预测能力很有限。这样的简单模型叫作基线模型,用于给后续方法提供比较参照。
下面是一段完整、可运行的Python代码:
# 六条训练标签
train_y = [-5.4, -3.0, -3.6, -3.7, -5.9, -6.8]
# 从训练数据中确定一个参数
b = sum(train_y) / len(train_y)
# 两条没有参与求平均值的测试标签
pt_y = -3.1
ni_y = -5.2
# 常数模型对两个材料都预测同一个数
pt_prediction = b
ni_prediction = b
# 计算绝对误差
pt_error = abs(pt_prediction - pt_y)
ni_error = abs(ni_prediction - ni_y)
# 计算平均绝对误差
mae = (pt_error + ni_error) / 2
print("训练得到的平均值:", round(b, 6))
print("Pt的绝对误差:", round(pt_error, 6))
print("Ni的绝对误差:", round(ni_error, 6))
print("平均绝对误差:", round(mae, 6))
这里,方括号把几个数组织成一个列表;`sum`求和,`len`计算数量,`abs`取绝对值,`print`显示结果,`round`控制显示的小数位数。`=`表示把右边的计算结果赋给左边的变量;以`#`开头的是解释性注释。
运行结果为:
训练得到的平均值: -4.733333
Pt的绝对误差: 1.633333
Ni的绝对误差: 0.466667
平均绝对误差: 1.05
平均绝对误差的英文缩写是 MAE。它先计算每个预测与观察值之间的绝对距离,再取平均:
\ \\mathrm{MAE} =\\frac{\|\\hat y_1-y_1\|+\|\\hat y_2-y_2\|}{2} \\
其中,\(\hat y\) 表示预测值,\(y\) 表示观察值,竖线表示绝对值。
本例的误差在对数尺度上,不能写成"1.05 A/cm²",也不能把它直接换成"准确率"。
更重要的是:这些数据来自文献汇编,逐行实验条件并不完整,测试也只有两个例子。因此,这次练习只能帮助理解学习流程,不能证明模型能可靠筛选未知催化剂。
9.本节课的练习与验收
请完成下面五项任务:
- 用自己的话解释AI、机器学习、神经网络和深度学习的关系。
- 在你的研究方向中,提出一个明确的预测任务,说明输入、输出和实验条件。
- 不看代码,手算六条训练标签的平均值及两个测试样本的绝对误差。
- 亲自运行代码,指出哪一步在确定参数,哪一步只是在检查预测。
- 说明为什么"模型已经学到参数"不能直接推出"模型具有可靠预测能力"。
本节课通过的标准是:你能准确区分四个概念,解释训练与预测的区别,完成平均值和误差计算,并指出当前数据与验证的局限。
今天最需要建立的认识是:人工智能可以帮助研究者从数据中寻找规律;规律是否可靠,必须通过与科学问题相匹配的验证来判断。