第2章 向量基本運算

語言: CN / TW / HK

2.1轉置運算

向量的轉置(Transpose)將列向量變成行向量,或將行向量變成列向量。

向量X的轉置記為

例1:

用Python表示:
X=np.array([1,2,3])
X.T

2.2 兩個向量的點積

兩個向量(如X、Y,它們的維數相同)的點積(或稱為內積)定義為它們對應元素乘積之和,記為:

例2:

向量與自身的點積為所有元素的平方和:

如果兩個向量的點積為0,則稱它們正交。

點積運算滿足如下規律:

利用點積可以簡化線性函數的表述,這種方法在機器學習中經常可以看到。

如表示權重 與輸入 、偏置項(b)的線性模型預測函數:

設權重向量 ,輸入向量 ,式(2.5)可寫成:

點積運算用於在機器學習的正向傳播過程。

2.3 兩個向量的阿達馬 (Hadamard) 積

兩個向量的阿達馬積或稱為遂元乘積、對應元素的乘積,是它們對應元素相乘。

記為:

例3:X=[1 2 3] Y=[2 2 1]

X*Y=[1×2 2×2 3×1]=[2 4 3]

當向量X、Y的元素個數相同時,還可進行對應元素的加、減、乘、除等算術運算。

X+Y=[3 4 4 ]

X/Y=[0.5 1 3]

用Python代碼實現
X=np.array([1,2,3])
Y=np.array([2,2,1])
X*Y #或np.multiply(X,Y)

經過阿達馬運算的向量或矩陣維度不變,如:

import numpy as np
 
#定義sigmoid激活函數
def sigmoid(x):
    return 1/(1+np.exp(-x))
 
A=np.array([-1.0,2.0,3.0])
B=np.array([[1.0,2.0,3.0],[4.0,5.0,6.0]])
print("A向量運行後形狀:{},B矩陣運行後形狀:{}".format(sigmoid(A).shape,sigmoid(B).shape))

運行結果:

A向量運行後形狀:(3,),B矩陣運行後形狀:(2, 3)

阿達馬積在機器學習中的正向傳播和反向傳播、梯度下降法中經常出現。