**:
最近看一些基於lstm網路的nlp案例**,其中涉及到一些input_size, num_hidden等變數的時候,可能容易搞混,首先是參照了知乎上的乙個有關lstm網路的回答 以及github上對於lstm比較清晰的推導公式 對於lstm cell中各個門處理,以及隱含層的實際物理實現有了更深刻的認識,前期一些理解上還模糊的點 也在不斷的分析中逐漸清晰。
首先給出lstm網路的三種不同的架構圖:
其中前兩種是網上最常見的,圖二相對圖一,進一步解釋了cell內各個門的作用,但是在實際的神經網路中,各個門處理函式 其實是由一定數量的隱含層神經元來處理,在rnn中,m個神經元組成的隱含層,實際的功能應該是f(wx + b), 這裡實現了兩部,首先m個隱含層神經元與輸入向量x之間全連線,通過w引數矩陣對x向量進行加權求和,其實就是對x向量各個維度上進行篩選,加上bias偏置矩陣後,通過f激勵函式, 得到隱含層的輸出。而在lstm cell中,乙個cell 包含了若干個門處理函式,假如每個門的物理實現,我們都可以看做是由num_hidden個神經元來實現該門函式功能, 那麼每個門各自都包含了相應的w引數矩陣以及bias偏置矩陣引數,就是在圖3物理架構圖中的實現。從圖3中可以看出,cell單元裡有四個門,每個門都對應128個隱含層神經元,相當於四個隱含層,每個隱含層各自與輸入x 全連線,而輸入x向量是由兩部分組成,一部分是上一時刻cell 輸出,大小為128, 還有部分就是當前樣本向量的輸入,大小為6,因此通過該cell內部計算後,最終得到當前時刻的輸出,大小為128,即num_hidden,作為下一時刻cell的一部分輸入。比如在nlp場景下,當乙個詞向量維度為m時, 可以認為當前x維度為m,如果num_hidden = n, 那麼與x全連線的某個隱含層神經元的w矩陣大小為 m * n, bias的維度為n, 所以平時我們在初始化lstm cell的時候,樣本輸入的embedding_size 與 num_hidden 之間沒有直接關聯,而是會決定每個門的w矩陣維度, 而且之前的一片basiclstmcell 原始碼分析中,我們提到了basiclstmcell 是直接要求embedding_size 與 num_hidden 是相等的,這也大大簡化了多個w矩陣的計算,這也說明了basiclstmcell是最簡單和最常用的一種lstm cell
從上圖中可以看出,每個門都對應乙個w 以及bias矩陣
最終當前時刻的輸出h 是有cell內多個門函式共同作用的結果。
關於time_step的問題:
假設 文字的樣本資料集是(100, 80 , 50), 其中100指的是batch_size, 即樣本個數,80 是指句子sentence的最大長度, 也是指引數優化過程中一次處理的最大時間步長max_time steps, 50則是詞向量維度embedding_size, 假如num_hidden = 256, 那麼每個時間步 輸出的是256維度的一階向量,那麼在一次梯度優化過程中輸出的二階向量為80 * 256, 具體可以看下面的公式:
這裡的t 就是樣本集中的80,也是指乙個sentence最大長度,我們在引數優化的過程中,以乙個完整句子的輸出進行梯度下降計算。
人工神經元
神經元是構成神經網路的最基本單位,構造乙個人工神經網路系統的首要任務就是構造人工神經網路模型。1 人工神經元的基本構成 我們希望人工神經元可以模擬生物神經元的一階特性 輸入訊號的加權和。對於每乙個人工神經元來說,可以接受一組來自系統中其他神經元的輸入訊號,每個輸入對應乙個權,所有輸入的加權,所有輸入...
神經元細節
單個神經元的模型如下圖所示 在右圖中,神經元的激勵反應可分為兩大部分 1 神經元接受刺激,並對所有的刺激進行加權求和,然後加上偏置,得到激勵值 2 將激勵值作為輸入,輸入到啟用函式,最後通過激勵函式的作用得到最後的響應 注意 這裡總共分為兩個過程,不能忽視最後啟用函式的作用。乙個線性分類器就可以看作...
多組神經元
p 0.1 0.7 0.8 0.8 1.0 0.3 0.0 0.3 0.5 1.5 1.2 1.8 1.6 0.6 0.8 0.5 0.2 0.8 1.5 1.3 t 1 1 1 0 0 1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 r,q size p s,q size t net ...