在深度学习优化过程中,我们通常研究损失函数(Loss Function)的变化,试图找到权重的最优配置。由于神经网络的参数空间通常是高维的,我们需要使用低维可视化的方法来理解优化过程和误差平面(Error Surface)。
在这里,我们讨论一个四维曲面的二维切片,其中:
误差平面是权重参数空间中的损失函数形状,即:
E = f ( w 1 , w 2 , w 3 ) E = f(w_1, w_2, w_3) E=f(w1,w2,w3)
这个方程描述了神经网络的损失如何随权重变化而变化。由于难以直接可视化 4D 空间,我们通常**用二维切片或等高线图(Contour Plot)**来理解其特性。
由于直接可视化 4D 空间困难,我们通常采取二维切片的方法来分析误差平面:
示例:二维切片的数学表示
假设有一个简单的误差函数:
E = w 1 2 + w 2 2 + sin ( w 3 ) E = w_1^2 + w_2^2 + \sin(w_3) E=w12+w22+sin(w3)
如果固定 w 3 = 0 w_3 = 0 w3=0,那么二维误差平面变为:
E = w 1 2 + w 2 2 E = w_1^2 + w_2^2 E=w12+w22
这个形状是一个碗形曲面(凸二次函数),优化时梯度下降会顺利找到最小值。
E = w 1 2 + w 2 2 E = w_1^2 + w_2^2 E=w12+w22
E = w 1 2 + cos ( w 2 ) E = w_1^2 + \cos(w_2) E=w12+cos(w2)
E = w 1 2 − w 2 2 E = w_1^2 - w_2^2 E=w12−w22
误差平面类型 | 梯度下降收敛情况 | 适合的优化方法 |
---|---|---|
碗状(Convex) | 快速收敛 | 标准梯度下降 |
多坑(Non-convex) | 容易陷入局部最优 | Adam, Momentum |
鞍点(Saddle Point) | 训练速度变慢 | 加入随机扰动 |
import numpy as np
import matplotlib.pyplot as plt
def error_surface(w1, w2):
return w1**2 + np.cos(w2)
w1 = np.linspace(-3, 3, 100)
w2 = np.linspace(-3, 3, 100)
W1, W2 = np.meshgrid(w1, w2)
E = error_surface(W1, W2)
plt.figure(figsize=(8, 6))
contour = plt.contourf(W1, W2, E, levels=50, cmap="coolwarm")
plt.colorbar(contour)
plt.xlabel("$w_1$")
plt.ylabel("$w_2$")
plt.title("Two-dimensional slice of error plane")
plt.show()
这个图像表示了不同权重 w 1 , w 2 w_1, w_2 w1,w2 组合的误差值,可以用于分析梯度下降路径。