因为transformer模型里面计算attention用到了点积dot product来计算相似度 or 距离,所以补充一下点积的知识。
点积的代数定义:
点积在数学中,又称数量积(dot product; scalar product),是指接受在实数R上的两个向量并返回一个实数值标量的二元运算。它是欧几里得空间的标准内积。
两个向量a = [a1, a2,…, an]和b = [b1, b2,…, bn]的点积定义为:
a·b=a1b1+a2b2+……+anbn。
与矩阵乘法的关系:
使用矩阵乘法并把(纵列)向量当作n×1 矩阵,点积还可以写为:
a·b=(a^T)*b,这里的a^T指示矩阵a的转置。
点积的几何定义:
矢量模相乘在乘cosθ(θ 为矢量得夹角)
a • b = |a| |b| cosθ;
0⁰ <= θ < 90⁰ : cosθ > 0
θ = 90⁰ : cosθ = 0
90⁰ < θ <= 180⁰ : cosθ < 0
根据点积的正负值判断夹角的大小:点积为正夹角小于90°、点积等于零夹角等于90°、点积小于零夹角大于90°。
生活中的应用:
利用点积可判断一个多边形是否面向摄像机还是背向摄像机。
向量的点积与它们夹角的余弦成正比,因此在聚光灯的效果计算中,可以根据点积来得到光照效果,如果点积越大,说明夹角越小,则物理离光照的轴线越近,光照越强。
物理中,点积可以用来计算合力和功。若b为单位矢量,则点积即为a在方向b的投影,即给出了力在这个方向上的分解。功即是力和位移的点积。
计算机图形学常用来进行方向性判断,如两矢量点积大于0,则它们的方向朝向相近;如果小于0,则方向相反。
矢量内积是人工智能领域中的神经网络技术的数学基础之一,此方法还被用于动画渲染(Animation-Rendering)。