向量范数(vector norm)
/ VEK-tur NORM /
向量范数把一整串数字浓缩成一个数,用来衡量它的大小——这个向量有多「大」、多「长」。最常见的是 L2 范数,也就是普通的直线长度:把每个分量平方、加起来、再开平方。这无非是勾股定理,推广到你想要的任意多个维度,回答的是「直线飞过去,这东西离零有多远?」
但直线距离并不是衡量大小唯一合理的观念。L1 范数转而把各分量的绝对值加起来——也就是「出租车」或「城市街区」距离,是你在棋盘格街道上实际要走的那条路线,因为你没法斜着穿过楼房。两者给出的答案不同,而且关键在于,当它们被用来「把东西压小」时,会把模型推向不同的行为。
范数在机器学习里无处不在,因为这门学问有太多内容是在「控制大小」。为了遏制过拟合,正则化会给模型权重的范数加上一项惩罚,推着它保持简单。而范数的选择,会以一种惊人的方式起作用:L1 惩罚倾向于把许多权重一路压到恰好为零,自动丢弃掉无用的特征(这正是 Lasso 回归之所以能做特征选择的缘由),而 L2 惩罚只是把权重温和地朝零收缩、却不把它们清零(岭回归)。范数还定义了最近邻方法与聚类所倚赖的那些距离,并衡量梯度的大小——比如,在梯度大到危险时用来对它做裁剪。
拿向量 [3, 4] 来说。它的 L2 范数(直线)是 √(3² + 4²) = √25 = 5——直线飞过去的距离。它的 L1 范数(城市街区)是 |3| + |4| = 7——你沿着棋盘格街道拐来拐去、实际要走的那段更长的路。同一个向量,两种不同的大小,各有各的用处。
同一个向量 [3, 4]:L2 量的是对角线的直线飞行(5),L1 量的是城市街区的步行(7)。
L1 与 L2 之间的取舍绝非装点门面:L1 惩罚会把权重清零(给出稀疏、能做特征选择的模型,如 Lasso),而 L2 惩罚只是把它们收缩(岭回归)。选对范数,会塑造你的模型究竟学到什么。