版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
深度學(xué)習(xí):神經(jīng)網(wǎng)絡(luò):線性代數(shù)與深度學(xué)習(xí)1深度學(xué)習(xí)基礎(chǔ)1.1深度學(xué)習(xí)簡介深度學(xué)習(xí)是機(jī)器學(xué)習(xí)的一個(gè)分支,它模仿人腦的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),通過多層非線性變換來學(xué)習(xí)數(shù)據(jù)的復(fù)雜表示。深度學(xué)習(xí)模型能夠自動(dòng)從原始數(shù)據(jù)中提取特征,這使得它在圖像識(shí)別、自然語言處理、語音識(shí)別等領(lǐng)域取得了顯著的成果。1.2神經(jīng)網(wǎng)絡(luò)的基本概念1.2.1神經(jīng)元神經(jīng)網(wǎng)絡(luò)的基本單元是神經(jīng)元,它接收輸入信號(hào),通過加權(quán)求和后,經(jīng)過激活函數(shù)產(chǎn)生輸出。一個(gè)神經(jīng)元可以表示為:y其中,xi是輸入,wi是權(quán)重,b是偏置,1.2.2層神經(jīng)網(wǎng)絡(luò)由多層神經(jīng)元組成,包括輸入層、隱藏層和輸出層。輸入層接收原始數(shù)據(jù),輸出層產(chǎn)生最終預(yù)測(cè),而隱藏層則負(fù)責(zé)學(xué)習(xí)數(shù)據(jù)的抽象表示。1.2.3前向傳播前向傳播是神經(jīng)網(wǎng)絡(luò)中數(shù)據(jù)從輸入層到輸出層的流動(dòng)過程。每一層的輸出作為下一層的輸入,直到產(chǎn)生最終預(yù)測(cè)。1.2.4反向傳播反向傳播是深度學(xué)習(xí)中用于調(diào)整神經(jīng)網(wǎng)絡(luò)權(quán)重和偏置的過程。它基于梯度下降算法,通過計(jì)算損失函數(shù)關(guān)于每個(gè)權(quán)重和偏置的梯度,然后更新這些參數(shù)以最小化損失。1.3激活函數(shù)詳解激活函數(shù)在神經(jīng)網(wǎng)絡(luò)中引入非線性,使得網(wǎng)絡(luò)能夠?qū)W習(xí)和表示復(fù)雜的函數(shù)。常見的激活函數(shù)包括:1.3.1Sigmoid函數(shù)Sigmoid函數(shù)將輸入映射到0到1之間,常用于二分類問題。fimportnumpyasnp
defsigmoid(x):
"""
Sigmoid激活函數(shù)
:paramx:輸入數(shù)據(jù)
:return:Sigmoid函數(shù)的輸出
"""
return1/(1+np.exp(-x))
#示例
input_data=np.array([1.0,2.0,3.0])
output=sigmoid(input_data)
print(output)1.3.2ReLU函數(shù)ReLU(RectifiedLinearUnit)函數(shù)在正數(shù)區(qū)域保持線性,而在負(fù)數(shù)區(qū)域輸出0,這有助于解決梯度消失問題。fdefrelu(x):
"""
ReLU激活函數(shù)
:paramx:輸入數(shù)據(jù)
:return:ReLU函數(shù)的輸出
"""
returnnp.maximum(0,x)
#示例
input_data=np.array([-1.0,2.0,-3.0,4.0])
output=relu(input_data)
print(output)1.3.3Softmax函數(shù)Softmax函數(shù)將輸入轉(zhuǎn)換為概率分布,常用于多分類問題。fdefsoftmax(x):
"""
Softmax激活函數(shù)
:paramx:輸入數(shù)據(jù)
:return:Softmax函數(shù)的輸出
"""
e_x=np.exp(x-np.max(x))
returne_x/e_x.sum(axis=0)
#示例
input_data=np.array([1.0,2.0,3.0])
output=softmax(input_data)
print(output)1.4損失函數(shù)與優(yōu)化算法1.4.1損失函數(shù)損失函數(shù)衡量模型預(yù)測(cè)與實(shí)際值之間的差距。常見的損失函數(shù)有:1.4.1.1均方誤差(MSE)適用于回歸問題。Mdefmse_loss(y_true,y_pred):
"""
均方誤差損失函數(shù)
:paramy_true:真實(shí)值
:paramy_pred:預(yù)測(cè)值
:return:損失值
"""
returnnp.mean(np.power(y_true-y_pred,2))
#示例
y_true=np.array([1.0,2.0,3.0])
y_pred=np.array([1.2,1.9,3.1])
loss=mse_loss(y_true,y_pred)
print(loss)1.4.1.2交叉熵?fù)p失適用于分類問題。Cdefcross_entropy_loss(y_true,y_pred):
"""
交叉熵?fù)p失函數(shù)
:paramy_true:真實(shí)值
:paramy_pred:預(yù)測(cè)值
:return:損失值
"""
return-np.sum(y_true*np.log(y_pred))
#示例
y_true=np.array([1.0,0.0,0.0])
y_pred=np.array([0.7,0.2,0.1])
loss=cross_entropy_loss(y_true,y_pred)
print(loss)1.4.2優(yōu)化算法優(yōu)化算法用于更新神經(jīng)網(wǎng)絡(luò)的權(quán)重和偏置,以最小化損失函數(shù)。常見的優(yōu)化算法有:1.4.2.1梯度下降梯度下降是最基本的優(yōu)化算法,它沿著損失函數(shù)的梯度方向更新參數(shù)。w其中,α是學(xué)習(xí)率,L是損失函數(shù)。1.4.2.2隨機(jī)梯度下降(SGD)隨機(jī)梯度下降在每次更新時(shí)只使用一個(gè)樣本,這使得更新過程更快,但可能更不穩(wěn)定。1.4.2.3Adam優(yōu)化器Adam優(yōu)化器結(jié)合了動(dòng)量(Momentum)和自適應(yīng)學(xué)習(xí)率(Adagrad)的優(yōu)點(diǎn),是目前深度學(xué)習(xí)中最常用的優(yōu)化算法之一。classAdamOptimizer:
"""
Adam優(yōu)化器類
"""
def__init__(self,learning_rate=0.001,beta1=0.9,beta2=0.999,epsilon=1e-8):
self.learning_rate=learning_rate
self.beta1=beta1
self.beta2=beta2
self.epsilon=epsilon
self.t=0
self.m=None
self.v=None
defupdate(self,w,grad_w):
"""
更新權(quán)重
:paramw:當(dāng)前權(quán)重
:paramgrad_w:權(quán)重的梯度
:return:更新后的權(quán)重
"""
self.t+=1
ifself.misNone:
self.m=np.zeros_like(w)
self.v=np.zeros_like(w)
self.m=self.beta1*self.m+(1-self.beta1)*grad_w
self.v=self.beta2*self.v+(1-self.beta2)*np.power(grad_w,2)
m_hat=self.m/(1-self.beta1**self.t)
v_hat=self.v/(1-self.beta2**self.t)
w-=self.learning_rate*m_hat/(np.sqrt(v_hat)+self.epsilon)
returnw
#示例
w=np.array([0.5,0.5])
grad_w=np.array([0.1,0.2])
optimizer=AdamOptimizer()
w=optimizer.update(w,grad_w)
print(w)通過以上介紹,我們了解了深度學(xué)習(xí)的基礎(chǔ)概念,包括神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)、激活函數(shù)、損失函數(shù)以及優(yōu)化算法。這些是構(gòu)建和訓(xùn)練深度學(xué)習(xí)模型的關(guān)鍵組成部分。2線性代數(shù)在深度學(xué)習(xí)中的應(yīng)用2.1向量與矩陣的基本操作在深度學(xué)習(xí)中,數(shù)據(jù)通常表示為向量或矩陣。向量可以看作是具有方向和大小的量,而矩陣則是一組向量的集合,用于表示線性關(guān)系。向量和矩陣的基本操作包括加法、減法、標(biāo)量乘法、點(diǎn)積和轉(zhuǎn)置。2.1.1向量加法與減法向量加法和減法是按元素進(jìn)行的。例如,兩個(gè)向量相加,就是將它們的對(duì)應(yīng)元素相加。importnumpyasnp
#定義兩個(gè)向量
vector_a=np.array([1,2,3])
vector_b=np.array([4,5,6])
#向量加法
vector_sum=vector_a+vector_b
print("向量加法結(jié)果:",vector_sum)
#向量減法
vector_diff=vector_a-vector_b
print("向量減法結(jié)果:",vector_diff)2.1.2標(biāo)量乘法標(biāo)量乘法是將向量或矩陣的每個(gè)元素乘以一個(gè)標(biāo)量值。#定義一個(gè)向量和一個(gè)標(biāo)量
vector_c=np.array([1,2,3])
scalar=2
#標(biāo)量乘法
vector_scaled=scalar*vector_c
print("標(biāo)量乘法結(jié)果:",vector_scaled)2.1.3點(diǎn)積點(diǎn)積是兩個(gè)向量的乘積,結(jié)果是一個(gè)標(biāo)量。它在計(jì)算向量之間的相似度時(shí)非常有用。#計(jì)算兩個(gè)向量的點(diǎn)積
dot_product=np.dot(vector_a,vector_b)
print("點(diǎn)積結(jié)果:",dot_product)2.1.4矩陣轉(zhuǎn)置矩陣轉(zhuǎn)置是將矩陣的行變?yōu)榱校凶優(yōu)樾械牟僮鳌?定義一個(gè)矩陣
matrix=np.array([[1,2],[3,4]])
#矩陣轉(zhuǎn)置
matrix_transposed=matrix.T
print("矩陣轉(zhuǎn)置結(jié)果:\n",matrix_transposed)2.2線性變換與矩陣乘法線性變換是通過矩陣乘法實(shí)現(xiàn)的,它可以改變向量或矩陣的空間位置、方向和大小。2.2.1矩陣乘法矩陣乘法是兩個(gè)矩陣的乘積,其中第一個(gè)矩陣的列數(shù)必須等于第二個(gè)矩陣的行數(shù)。#定義兩個(gè)矩陣
matrix_a=np.array([[1,2],[3,4]])
matrix_b=np.array([[5,6],[7,8]])
#矩陣乘法
matrix_product=np.dot(matrix_a,matrix_b)
print("矩陣乘法結(jié)果:\n",matrix_product)2.2.2線性變換示例考慮一個(gè)2D空間中的向量,通過一個(gè)變換矩陣,我們可以改變這個(gè)向量的方向和大小。#定義一個(gè)變換矩陣和一個(gè)向量
transformation_matrix=np.array([[0,-1],[1,0]])
vector_d=np.array([1,2])
#應(yīng)用線性變換
transformed_vector=np.dot(transformation_matrix,vector_d)
print("變換后的向量:",transformed_vector)2.3特征值與特征向量特征值和特征向量是矩陣的重要屬性,它們?cè)谏疃葘W(xué)習(xí)中用于理解數(shù)據(jù)的結(jié)構(gòu)和簡化計(jì)算。2.3.1特征值與特征向量的計(jì)算對(duì)于一個(gè)方陣,我們可以找到一組特征值和對(duì)應(yīng)的特征向量,使得矩陣乘以特征向量等于特征值乘以特征向量。#定義一個(gè)方陣
square_matrix=np.array([[1,2],[3,4]])
#計(jì)算特征值和特征向量
eigenvalues,eigenvectors=np.linalg.eig(square_matrix)
print("特征值:",eigenvalues)
print("特征向量:\n",eigenvectors)2.4奇異值分解與PCA奇異值分解(SVD)和主成分分析(PCA)是線性代數(shù)中用于數(shù)據(jù)降維和特征提取的強(qiáng)大工具。2.4.1奇異值分解SVD可以將任何矩陣分解為三個(gè)矩陣的乘積,這在深度學(xué)習(xí)中用于矩陣的壓縮和特征提取。#定義一個(gè)矩陣
matrix_e=np.array([[1,2],[3,4],[5,6]])
#奇異值分解
U,S,Vt=np.linalg.svd(matrix_e)
print("U矩陣:\n",U)
print("S奇異值向量:",S)
print("Vt矩陣:\n",Vt)2.4.2主成分分析PCA是一種用于數(shù)據(jù)降維的技術(shù),它通過找到數(shù)據(jù)的主成分來減少數(shù)據(jù)的維度,同時(shí)保留盡可能多的信息。#定義一個(gè)數(shù)據(jù)集
data=np.array([[1,2],[3,4],[5,6],[7,8]])
#中心化數(shù)據(jù)
data_centered=data-np.mean(data,axis=0)
#計(jì)算協(xié)方差矩陣
covariance_matrix=np.cov(data_centered,rowvar=False)
#計(jì)算協(xié)方差矩陣的特征值和特征向量
eigenvalues,eigenvectors=np.linalg.eig(covariance_matrix)
#選擇主成分
principal_components=eigenvectors[:,np.argsort(eigenvalues)[::-1][:1]]
#應(yīng)用PCA降維
data_reduced=np.dot(data_centered,principal_components)
print("PCA降維后的數(shù)據(jù):\n",data_reduced)以上示例展示了線性代數(shù)在深度學(xué)習(xí)中的基本應(yīng)用,包括向量和矩陣的操作、線性變換、特征值與特征向量的計(jì)算,以及SVD和PCA的使用。這些操作和分析方法是構(gòu)建和優(yōu)化神經(jīng)網(wǎng)絡(luò)模型的關(guān)鍵。3神經(jīng)網(wǎng)絡(luò)的數(shù)學(xué)基礎(chǔ)3.1權(quán)重與偏置的初始化權(quán)重和偏置的初始化是神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程中的關(guān)鍵步驟。不恰當(dāng)?shù)某跏蓟赡軐?dǎo)致網(wǎng)絡(luò)訓(xùn)練緩慢或陷入局部最優(yōu)解。以下是一些常見的初始化方法:3.1.1隨機(jī)初始化隨機(jī)初始化是最常用的方法,它通過隨機(jī)生成權(quán)重和偏置來避免所有神經(jīng)元的初始狀態(tài)相同,從而打破對(duì)稱性。importnumpyasnp
#隨機(jī)初始化權(quán)重
defrandom_init(shape):
"""
隨機(jī)初始化權(quán)重矩陣。
參數(shù):
shape--權(quán)重矩陣的形狀,一個(gè)元組(n_l,n_(l-1)),其中n_l是當(dāng)前層的神經(jīng)元數(shù)量,n_(l-1)是前一層的神經(jīng)元數(shù)量。
返回:
W--初始化的權(quán)重矩陣。
"""
W=np.random.randn(*shape)*0.01
returnW
#隨機(jī)初始化偏置
defzero_init(shape):
"""
初始化偏置向量為零。
參數(shù):
shape--偏置向量的形狀,一個(gè)元組(n_l,1),其中n_l是當(dāng)前層的神經(jīng)元數(shù)量。
返回:
b--初始化的偏置向量。
"""
b=np.zeros(shape)
returnb
#示例
W1=random_init((10,5))
b1=zero_init((10,1))
print("W1的形狀:",W1.shape)
print("b1的形狀:",b1.shape)3.1.2Xavier初始化Xavier初始化(或稱為Glorot初始化)通過調(diào)整權(quán)重的方差來保持網(wǎng)絡(luò)各層的激活值和梯度的方差穩(wěn)定。defxavier_init(shape):
"""
使用Xavier初始化方法初始化權(quán)重矩陣。
參數(shù):
shape--權(quán)重矩陣的形狀,一個(gè)元組(n_l,n_(l-1))。
返回:
W--初始化的權(quán)重矩陣。
"""
n_l,n_prev=shape
limit=np.sqrt(6/(n_l+n_prev))
W=np.random.uniform(-limit,limit,shape)
returnW3.2前向傳播與后向傳播前向傳播和后向傳播是神經(jīng)網(wǎng)絡(luò)訓(xùn)練中的核心算法,用于計(jì)算預(yù)測(cè)值和更新權(quán)重。3.2.1前向傳播前向傳播通過網(wǎng)絡(luò)的各層計(jì)算預(yù)測(cè)輸出。defforward_propagation(X,parameters):
"""
實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)的前向傳播。
參數(shù):
X--輸入數(shù)據(jù),維度為(n_x,m),其中n_x是輸入層的神經(jīng)元數(shù)量,m是樣本數(shù)量。
parameters--包含權(quán)重和偏置的字典。
返回:
A--最終的輸出,維度為(n_y,m),其中n_y是輸出層的神經(jīng)元數(shù)量。
cache--包含中間結(jié)果的字典,用于后向傳播。
"""
W1,b1,W2,b2=parameters['W1'],parameters['b1'],parameters['W2'],parameters['b2']
Z1=np.dot(W1,X)+b1
A1=np.tanh(Z1)
Z2=np.dot(W2,A1)+b2
A2=1/(1+np.exp(-Z2))#Sigmoid激活函數(shù)
cache={'Z1':Z1,'A1':A1,'Z2':Z2,'A2':A2}
returnA2,cache3.2.2后向傳播后向傳播計(jì)算損失函數(shù)關(guān)于權(quán)重和偏置的梯度,用于更新參數(shù)。defbackward_propagation(X,Y,cache,parameters):
"""
實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)的后向傳播。
參數(shù):
X--輸入數(shù)據(jù),維度為(n_x,m)。
Y--真實(shí)標(biāo)簽,維度為(n_y,m)。
cache--包含前向傳播中間結(jié)果的字典。
parameters--包含權(quán)重和偏置的字典。
返回:
grads--包含權(quán)重和偏置梯度的字典。
"""
m=X.shape[1]
W1,W2=parameters['W1'],parameters['W2']
A1,A2=cache['A1'],cache['A2']
dZ2=A2-Y
dW2=(1/m)*np.dot(dZ2,A1.T)
db2=(1/m)*np.sum(dZ2,axis=1,keepdims=True)
dZ1=np.dot(W2.T,dZ2)*(1-np.power(A1,2))
dW1=(1/m)*np.dot(dZ1,X.T)
db1=(1/m)*np.sum(dZ1,axis=1,keepdims=True)
grads={'dW1':dW1,'db1':db1,'dW2':dW2,'db2':db2}
returngrads3.3梯度下降法的數(shù)學(xué)原理梯度下降法是一種優(yōu)化算法,用于最小化損失函數(shù)。它通過迭代更新權(quán)重和偏置,使損失函數(shù)逐漸減小。defupdate_parameters(parameters,grads,learning_rate):
"""
使用梯度下降法更新參數(shù)。
參數(shù):
parameters--包含權(quán)重和偏置的字典。
grads--包含權(quán)重和偏置梯度的字典。
learning_rate--學(xué)習(xí)率,控制參數(shù)更新的步長。
返回:
parameters--更新后的參數(shù)字典。
"""
W1,b1,W2,b2=parameters['W1'],parameters['b1'],parameters['W2'],parameters['b2']
dW1,db1,dW2,db2=grads['dW1'],grads['db1'],grads['dW2'],grads['db2']
W1=W1-learning_rate*dW1
b1=b1-learning_rate*db1
W2=W2-learning_rate*dW2
b2=b2-learning_rate*db2
parameters={'W1':W1,'b1':b1,'W2':W2,'b2':b2}
returnparameters3.4正則化技術(shù)解析正則化技術(shù)用于防止過擬合,通過在損失函數(shù)中添加一個(gè)懲罰項(xiàng)來限制模型的復(fù)雜度。3.4.1L2正則化L2正則化通過添加權(quán)重的平方和的懲罰項(xiàng)來限制權(quán)重的大小。defcompute_cost_with_regularization(A2,Y,parameters,lambd):
"""
計(jì)算包含L2正則化的損失函數(shù)。
參數(shù):
A2--神經(jīng)網(wǎng)絡(luò)的輸出,維度為(n_y,m)。
Y--真實(shí)標(biāo)簽,維度為(n_y,m)。
parameters--包含權(quán)重和偏置的字典。
lambd--正則化參數(shù),控制正則化項(xiàng)的強(qiáng)度。
返回:
cost--包含正則化項(xiàng)的損失函數(shù)值。
"""
m=Y.shape[1]
W1,W2=parameters['W1'],parameters['W2']
cross_entropy_cost=-(1/m)*np.sum(Y*np.log(A2)+(1-Y)*np.log(1-A2))
L2_regularization_cost=(lambd/(2*m))*(np.sum(np.square(W1))+np.sum(np.square(W2)))
cost=cross_entropy_cost+L2_regularization_cost
returncost3.4.2Dropout正則化Dropout正則化通過在訓(xùn)練過程中隨機(jī)“丟棄”一些神經(jīng)元,來減少神經(jīng)元之間的相互依賴,提高模型的泛化能力。defforward_propagation_with_dropout(X,parameters,keep_prob):
"""
實(shí)現(xiàn)包含Dropout的前向傳播。
參數(shù):
X--輸入數(shù)據(jù),維度為(n_x,m)。
parameters--包含權(quán)重和偏置的字典。
keep_prob--保留神經(jīng)元的概率。
返回:
A2--最終的輸出,維度為(n_y,m)。
cache--包含中間結(jié)果的字典,用于后向傳播。
"""
W1,b1,W2,b2=parameters['W1'],parameters['b1'],parameters['W2'],parameters['b2']
Z1=np.dot(W1,X)+b1
A1=np.tanh(Z1)
D1=np.random.rand(A1.shape[0],A1.shape[1])<keep_prob
A1=A1*D1
A1=A1/keep_prob
Z2=np.dot(W2,A1)+b2
A2=1/(1+np.exp(-Z2))
cache={'Z1':Z1,'A1':A1,'D1':D1,'Z2':Z2,'A2':A2}
returnA2,cache以上代碼示例展示了神經(jīng)網(wǎng)絡(luò)中權(quán)重與偏置的初始化、前向傳播、后向傳播、梯度下降法以及正則化技術(shù)的實(shí)現(xiàn)。通過這些基本組件,可以構(gòu)建和訓(xùn)練復(fù)雜的神經(jīng)網(wǎng)絡(luò)模型。4深度學(xué)習(xí)中的高級(jí)線性代數(shù)4.1卷積神經(jīng)網(wǎng)絡(luò)的數(shù)學(xué)基礎(chǔ)4.1.1卷積運(yùn)算卷積神經(jīng)網(wǎng)絡(luò)(ConvolutionalNeuralNetworks,CNNs)的核心在于卷積層,它通過卷積運(yùn)算來提取輸入數(shù)據(jù)的局部特征。卷積運(yùn)算可以視為一種特殊的矩陣乘法,其中卷積核(或?yàn)V波器)在輸入數(shù)據(jù)上滑動(dòng),與局部區(qū)域進(jìn)行點(diǎn)積運(yùn)算。4.1.1.1示例代碼importnumpyasnp
#定義輸入圖像和卷積核
image=np.array([[1,2,1,2],
[2,1,2,1],
[1,2,1,2],
[2,1,2,1]])
kernel=np.array([[1,0],
[0,1]])
#卷積運(yùn)算
defconv2d(image,kernel):
"""
2D卷積運(yùn)算
:paramimage:輸入圖像,二維數(shù)組
:paramkernel:卷積核,二維數(shù)組
:return:卷積結(jié)果
"""
output=np.zeros((image.shape[0]-kernel.shape[0]+1,image.shape[1]-kernel.shape[1]+1))
foriinrange(output.shape[0]):
forjinrange(output.shape[1]):
output[i,j]=np.sum(image[i:i+kernel.shape[0],j:j+kernel.shape[1]]*kernel)
returnoutput
result=conv2d(image,kernel)
print(result)4.1.2代碼解釋上述代碼中,image和kernel分別表示輸入圖像和卷積核。conv2d函數(shù)實(shí)現(xiàn)了2D卷積運(yùn)算,通過在輸入圖像上滑動(dòng)卷積核并進(jìn)行點(diǎn)積運(yùn)算,得到卷積結(jié)果。輸出的大小取決于輸入圖像和卷積核的大小。4.2循環(huán)神經(jīng)網(wǎng)絡(luò)的矩陣表示循環(huán)神經(jīng)網(wǎng)絡(luò)(RecurrentNeuralNetworks,RNNs)通過循環(huán)連接來處理序列數(shù)據(jù),其中每個(gè)時(shí)間步的輸出不僅取決于當(dāng)前輸入,還取決于前一時(shí)間步的隱藏狀態(tài)。這種依賴關(guān)系可以通過矩陣運(yùn)算來表示,使得RNN的計(jì)算過程更加高效。4.2.1RNN的數(shù)學(xué)模型RNN的計(jì)算可以表示為以下矩陣運(yùn)算:隱藏狀態(tài)更新:h輸出計(jì)算:y其中,Wxh、Whh和Why分別是輸入到隱藏狀態(tài)、隱藏狀態(tài)到隱藏狀態(tài)、隱藏狀態(tài)到輸出的權(quán)重矩陣,bh和4.2.1.1示例代碼importnumpyasnp
#定義RNN參數(shù)
W_xh=np.random.randn(100,100)*0.01
W_hh=np.random.randn(100,100)*0.01
W_hy=np.random.randn(100,10)*0.01
b_h=np.zeros((100,1))
b_y=np.zeros((10,1))
#定義激活函數(shù)
defsigmoid(x):
return1/(1+np.exp(-x))
#RNN前向傳播
defrnn_forward(x,h_prev):
"""
RNN前向傳播
:paramx:當(dāng)前時(shí)間步的輸入,二維數(shù)組
:paramh_prev:前一時(shí)間步的隱藏狀態(tài),二維數(shù)組
:return:當(dāng)前時(shí)間步的隱藏狀態(tài)和輸出
"""
h=sigmoid(np.dot(W_xh,x)+np.dot(W_hh,h_prev)+b_h)
y=np.dot(W_hy,h)+b_y
returnh,y
#輸入序列和初始隱藏狀態(tài)
x=np.random.randn(100,1)
h_prev=np.zeros((100,1))
#計(jì)算隱藏狀態(tài)和輸出
h,y=rnn_forward(x,h_prev)
print(h)
print(y)4.2.2代碼解釋在RNN的前向傳播中,rnn_forward函數(shù)接收當(dāng)前時(shí)間步的輸入x和前一時(shí)間步的隱藏狀態(tài)h_prev,通過矩陣乘法和激活函數(shù)計(jì)算當(dāng)前時(shí)間步的隱藏狀態(tài)h和輸出y。權(quán)重矩陣和偏置向量是RNN的參數(shù),需要通過訓(xùn)練來學(xué)習(xí)。4.3自注意力機(jī)制的線性代數(shù)視角自注意力機(jī)制(Self-AttentionMechanism)在處理序列數(shù)據(jù)時(shí),允許模型在不同位置之間建立聯(lián)系,從而捕捉到長距離依賴關(guān)系。這種機(jī)制通常通過查詢、鍵和值的矩陣運(yùn)算來實(shí)現(xiàn)。4.3.1自注意力的計(jì)算自注意力機(jī)制的計(jì)算可以表示為以下矩陣運(yùn)算:計(jì)算查詢、鍵和值:Q=XWQ計(jì)算注意力權(quán)重:A計(jì)算加權(quán)和:Y其中,X是輸入序列,WQ、WK和WV是權(quán)重矩陣,dk是鍵向量的維度,A4.3.1.1示例代碼importnumpyasnp
#定義輸入序列和權(quán)重矩陣
X=np.random.randn(10,50)
W_Q=np.random.randn(50,50)
W_K=np.random.randn(50,50)
W_V=np.random.randn(50,50)
#計(jì)算查詢、鍵和值
Q=np.dot(X,W_Q
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 智慧冷鏈物流行業(yè)市場深度分析報(bào)告
- 多元文化藝術(shù)行業(yè)分析及未來五至十年行業(yè)發(fā)展報(bào)告
- 知識(shí)產(chǎn)權(quán)咨詢行業(yè)市場深度分析報(bào)告
- 網(wǎng)絡(luò)自制劇行業(yè)市場需求分析及未來五至十年行業(yè)預(yù)測(cè)報(bào)告
- 醫(yī)療器械冷鏈物流行業(yè)市場需求變化帶來新的商業(yè)機(jī)遇分析報(bào)告
- 遺傳病篩查與預(yù)防相關(guān)行業(yè)項(xiàng)目成效實(shí)現(xiàn)方案
- 跨境電商海外倉配送行業(yè)市場需求變化帶來新的商業(yè)機(jī)遇分析報(bào)告
- 基于財(cái)務(wù)共享模式下財(cái)務(wù)人員配置及培養(yǎng)方式的思考
- 2024高頻傳輸5G物聯(lián)網(wǎng)通信天線
- 《用 9的乘法口訣求商》教學(xué)設(shè)計(jì)-2023-2024學(xué)年二年級(jí)數(shù)學(xué)下冊(cè)人教版
- 5老師您好 教學(xué)設(shè)計(jì)-2024-2025學(xué)年道德與法治一年級(jí)上冊(cè)統(tǒng)編版
- 2024年下半年教師資格考試中學(xué)思想政治面試試題及答案解析
- 習(xí)作:我的家人【新課標(biāo)版】-四年級(jí)語文上冊(cè)課件
- 《關(guān)于規(guī)范業(yè)主大會(huì)物業(yè)管理招標(biāo)工作的指導(dǎo)意見征求意見稿》
- 安全生產(chǎn)四不傷害及反三違知識(shí)培訓(xùn)教材
- 嬰兒親子活動(dòng)指導(dǎo)課設(shè)計(jì)方案(1)(1)
- 中成藥學(xué)講解學(xué)習(xí)
- 中國古代建筑史1062348
- 丹東海洋功能區(qū)劃
- 口腔頜面外科學(xué):顴骨及顴弓骨折
- 施工單位項(xiàng)目自檢自糾記錄表(完整版)
評(píng)論
0/150
提交評(píng)論