【机器学习】机器学习中用到的高等数学知识-5. 函数空间和泛函分析 (Functional Analysis)
- 函数的连续性和可微性:在评估模型的学习能力和泛化能力时非常重要。
- 希尔伯特空间和巴拿赫空间:在支持向量机(SVM)和神经网络中用于理解高维数据。
1. 函数的连续性和可微性
函数的 连续性 和 可微性 是分析和优化模型的重要数学性质,在机器学习中,这些概念帮助我们评估模型的学习能力和泛化能力。
-
连续性:对于一个函数 f(x) 来说,如果在任意点 x = a 附近,f(x) 的输出变化是平滑且没有突变的,那么我们称 f(x) 在 a 处连续。这在机器学习中很重要,因为连续性保证了模型输出对输入变化的稳定性。
数学上,函数 f(x) 在 x = a 连续的定义为:
-
可微性:如果 f(x) 在 x = a 处的变化率是有定义的,则称 f(x) 在 x = a 处是可微的。可微性比连续性更强,它确保了函数变化的可预测性和光滑性。在优化中,可微性允许我们使用梯度下降等方法来求解模型参数。
可微性的定义是:函数 f(x) 在 x = a 处可微,当且仅当:
存在。
在机器学习中的应用:
- 在深度学习中,我们经常使用激活函数(如 ReLU、sigmoid),并研究它们的连续性和可微性,因为这直接影响到模型的收敛性和训练稳定性。
- 在支持向量机(SVM)中,优化的目标函数需要连续且可微,以确保优化过程能够顺利进行。
2. 希尔伯特空间和巴拿赫空间
希尔伯特空间 和 巴拿赫空间 是泛函分析中的两个重要概念,它们描述了不同的向量空间结构,特别是定义了这些空间中的向量之间的距离和角度。
2.1 希尔伯特空间
希尔伯特空间 是一种带有内积的完备向量空间,即一个向量空间中的点之间定义了内积,使得我们可以测量两个向量之间的“角度”和“距离”。常见的欧几里德空间就是一种希尔伯特空间的例子,但它可以拓展到无限维。
- 内积定义:对于任意两个向量 x 和 y ,其内积表示为 〈x,y〉,在欧几里德空间中,这一内积通常是 x 和 y 的点积。
- 完备性:在希尔伯特空间中,每一个柯西序列(距离趋于零的向量序列)都有极限点,并且极限点也在该空间内。
在机器学习中的应用:
- 在支持向量机(SVM)中,希尔伯特空间提供了对高维特征空间的理解,允许我们通过核方法将低维数据映射到高维空间,以便在高维空间中分离数据。
- 神经网络和卷积网络中,也可以将特征空间看作是希尔伯特空间,从而利用内积来度量特征之间的相似性。
2.2 巴拿赫空间
巴拿赫空间 是一种带有范数的完备向量空间。它可以看作是希尔伯特空间的推广,因为在巴拿赫空间中,我们只有“距离”概念(范数),而没有“角度”概念(内积)。
- 范数定义:对于任意向量 x,其范数 ∥x∥ 表示向量的长度或大小。在欧几里德空间中,常见的范数有 范数和 范数,分别表示“曼哈顿距离”和“欧几里德距离”。
- 完备性:在巴拿赫空间中,每一个柯西序列都收敛到空间内的一个点。
在机器学习中的应用:
- 在稀疏编码和正则化中,通常使用 范数和 范数来控制模型复杂度,以提高模型的泛化能力。
- 在神经网络的损失函数设计中,巴拿赫空间提供了不同的范数选择,这些范数会直接影响到模型的训练效果和性能。
代码示例:范数与内积
以下 Python 代码展示了范数和内积在简单二维空间中的计算。
import numpy as np
# 定义向量
x = np.array([3, 4])
y = np.array([1, 2])
# 计算 L2 范数
l2_norm_x = np.linalg.norm(x)
print(f"L2 范数 of x: {l2_norm_x}")
# 计算 L1 范数
l1_norm_x = np.linalg.norm(x, ord=1)
print(f"L1 范数 of x: {l1_norm_x}")
# 计算内积
inner_product = np.dot(x, y)
print(f"x 和 y 的内积: {inner_product}")
输出示例:
L2 范数 of x: 5.0
L1 范数 of x: 7.0
x 和 y 的内积: 11
图示:范数和内积
通过绘图可以更直观地理解范数和内积的概念。
import matplotlib.pyplot as plt
# 定义向量 x 和 y
x = [3, 2]
y = [1, 4]
# 设置中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']
# 解决负号'-'显示为方块的问题
plt.rcParams['axes.unicode_minus'] = False
# 绘制向量
plt.figure()
plt.quiver(0, 0, x[0], x[1], angles='xy', scale_units='xy', scale=1, color='r', label='Vector x')
plt.quiver(0, 0, y[0], y[1], angles='xy', scale_units='xy', scale=1, color='b', label='Vector y')
# 坐标轴
plt.xlim(-1, 5)
plt.ylim(-1, 5)
plt.axhline(0, color='black',linewidth=0.5)
plt.axvline(0, color='black',linewidth=0.5)
plt.legend()
plt.title("向量 x 和 y 的表示")
plt.grid()
plt.show()
在这张图中,向量 x 和 y 在二维平面上的表示直观展示了范数(向量长度)和内积(投影关系)。