在学习最优化课程时,不时听到“鞍点”这个名词。老师很快提了这个词,但没有详细介绍鞍点的含义。
鞍点 (saddle point)的数学含义是: 目标函数在此点上的梯度(一阶导数)值为 0, 但从该点出发的一个方向是函数的极大值点,而在另一个方向是函数的极小值点。
判断鞍点的一个充分条件是:函数在一阶导数为零处(驻点)的黑塞矩阵为不定矩阵。
半正定矩阵: 所有特征值为非负,或主子式全部非负。
半负定矩阵:所有特征值为非正,或主子式负正相间。
不定矩阵:特征值有正有负,或主子式不满足上面的两种情况。
典型的鞍点是函数 f(x)=x^3 中的(0,0),函数 z=x^2-y^2 的 鞍点 (0,0,0),黑塞矩阵是:
画图表示两个图形的鞍点:
function SaddlePoint
% f(x)=x^3
x=-2:0.1:2;
y=x.^3;
plot(x,y);
axis equal;
text(0,0,'\leftarrow (0,0)');
title('f(x)=x^3');
% f(x)=x^2-y^2
figure (2);
[x,y]=meshgrid(-2:0.03:2);
z=x.^2-y.^2;
mesh(x,y,z);
hold on;
scatter3(0,0,0,'filled','MarkerFaceColor','r');
text(0,0,0,'\leftarrow');
xlabel('x');
ylabel('y');
zlabel('z');
title('f(x,y)=x^2-y^2');
hold off;
end
上图中的红点即为对应函数的鞍点。