RNN vs FFNN
FFNN(前饋神經網絡)的局限性
前饋神經網絡(Feedforward Neural Network, FFNN):前饋神經網絡(FFNN),也稱為多層感知機(MLP),通過多個隱藏層將輸入數據映射到輸出數據。它主要由輸入層、一個或多個隱藏層以及輸出層組成,數據在網絡中只能單向流動,即從輸入層經過隱藏層最終到達輸出層,沒有反饋環路。
FFNN
FFNN的局限性:FFNN這種結構在處理序列數據時存在明顯的局限性,因為每個輸入都是獨立處理的,并且沒有考慮它們之間的順序或上下文關系。這意味著無法有效處理順序數據并捕獲輸入之間的依賴關系。例如語言建模、機器翻譯、語音識別、時間序列分析以及許多其他需要順序處理的應用程序。
Sequence Data
RNN(循環神經網絡)
RNN的核心思想 : 為了解決FFNN在處理序列數據時的局限性,循環神經網絡(RNN)被引入。RNN的核心思想是 在隱藏層之間引入循環連接,使得每個時間步的隱藏狀態不僅取決于當前時間步的輸入,還取決于前一個時間步的隱藏狀態 。
RNN 最主要也是最重要的特征是它的隱藏狀態,它可以記住有關序列的一些信息。該狀態也稱為記憶狀態,因為它會記住網絡的先前輸入。
RNN的隱藏狀態
RNN的模型架構:RNN 通過其隱藏層的隱藏狀態捕捉輸入序列的時序依賴性,并基于當前輸入和前一隱藏狀態來生成輸出序列的預測結果。
輸入層 :接收輸入數據,并將其傳遞給隱藏層。輸入不僅僅是靜態的,還包含著序列中的歷史信息 。
隱藏層 :隱藏狀態是核心部分,捕捉時序依賴性。隱藏層的輸出不僅取決于當前的輸入,還取決于前一時刻的隱藏狀態 。
輸出層 :根據隱藏層的輸出生成最終的預測結果。
輸入層- 隱藏層 – 輸出層
RNN的工作原理 : 通過一個具體的案例來看看RNN的工作原理。例如,用戶說了一句“what time is it?”,需要判斷用戶的說話意圖,是問時間,還是問天氣?
輸入層 :先對句子“what time is it ?” 進行分詞,然后按照順序輸入。
對句子進行分詞
隱藏層 :在此過程中,我們注意到前面的所有輸入都對后續的輸出產生了影響。圓形隱藏層不僅考慮了當前的輸入,還綜合了隱藏狀態存儲的 之前所有的輸入信息,能夠利用歷史信息來影響未來的輸出 。
Hidden State存儲了之前所有的輸入信息
輸出層 :生成最終的預測結果:Asking for the time。
輸出結果:Asking for the time
RNN(循環神經網絡)的局限性
RNN的局限性 : 在于梯度問題導致難以學習長期依賴,長期記憶能力不足,且并行處理能力差。
1. 梯度消失和梯度爆炸問題
梯度消失:在RNN 中,由于參數共享和多次連乘的特性,在反向傳播過程中,梯度值可能會隨著時間步的增加而指數級衰減,最終趨近于0。這導致RNN難以學習到長期依賴關系,因為較早時間步的輸入在反向傳播時其梯度幾乎為0,無法對這些輸入進行有效的權重更新。
梯度爆炸:與梯度消失相反,梯度爆炸是指在反向傳播過程中,梯度值可能會隨著時間步的增加而快速增長到非常大,導致模型訓練不穩定甚至無法收斂。
2. 長期依賴捕捉能力有限
由于梯度消失的問題,RNN在處理長序列時難以有效地捕捉到長期依賴關系。這意味著如果輸入序列中的某個元素與輸出之間存在長時間的間隔,RNN可能無法有效地學習到這兩者之間的關系,從而限制了其在處理長序列數據時的性能。
3. 并行處理能力較差
RNN的計算是順序進行的,即每個時間步的輸出都依賴于前一個時間步的計算結果。這種順序計算的方式限制了RNN的并行處理能力,使得在大規模數據集和復雜模型的情況下,RNN的訓練和推理速度相對較慢。
梯度消失和梯度爆炸
二、神經網絡語言模型(NNLM)
神經網絡語言模型(Neural Network Language Model, NNLM)是一種 利用神經網絡架構來預測文本序列中下一個詞 的語言模型。NNLM通過 學習大量文本數據中的詞匯之間的概率關系 ,能夠捕捉到語言的結構和語境,從而生成連貫且符合上下文的文本。 本文旨在結合經典論文 《A Neural Probabilistic Language Model》 的內容,詳細解析NNLM的基本原理、網絡架構及模型訓練。
NNLM的基本原理
Yoshua Bengio及其團隊在2003年的論文《A Neural Probabilistic Language Model》中首次展示了如何使用神經網絡 (特別是多層感知器MLP)來構建語言模型,這一工作不僅為后續的深度學習在NLP中的應用奠定了基石,還意外地催生了詞嵌入(word embedding)這一重要概念。 NNLM的核心思想:利用神經網絡來建模自然語言中的詞語序列,從而預測給定上下文條件下下一個詞出現的概率。與傳統的n-gram模型相比,NNLM能夠捕捉更長的上下文依賴關系,并且通過詞嵌入技術將詞語映射到連續的向量空間中,使得相似的詞語在向量空間中具有相近的表示。
NNLM開山之作NNLM中的Distributed Representation(分布式表示)是Embedding(嵌入)最早的理論支撐之一,它代表了一種將單詞或文本表示為連續向量空間的技術。這種表示方法相比傳統的獨熱編碼(One-Hot Encoding)具有顯著的優勢,能夠捕捉到單詞之間的語義關系。
減少維度災難:傳統的獨熱編碼方式在詞匯表很大時會導致向量維度極高,而分布式表示則通過低維向量表示單詞,大大減少了計算復雜度。
捕捉語義信息:分布式表示能夠捕捉到單詞之間的語義相似性,使得在向量空間中相似的單詞具有相近的表示,這對于處理NLP任務至關重要。
提高模型泛化能力:由于分布式表示能夠捕捉到單詞之間的語義關系,因此模型在處理未見過的單詞或句子時具有更好的泛化能力。
distributed representation vs one-hot representation
NNLM的網絡架構
NNLM的目標:NNLM是一個用于語言建模的神經模型,該模型旨在學習一個函數f,該函數可以根據給定的前置詞匯預測序列中的下一個詞匯。
函數f 模型 f 分解為兩個主要部分:詞嵌入層(C)和概率函數(g)。詞嵌入層將詞匯轉換為向量表示,而概率函數則利用這些向量預測文本序列中下一個詞匯的概率分布。
詞嵌入層(C):將詞匯表中 的每個詞匯轉換成一個實值向量。 這些向量代表了詞匯的分布式特征,即它們不僅僅表示詞匯本身,還包含了詞匯在不同上下文中的語義信息。
概率函數(g):根據給定的上下文信息來預測下一個詞匯出現的概率。 由多個詞匯組成的上下文(比如前面的n-1個詞匯),概率函數g會利用這些詞匯的向量表示(即詞嵌入層輸出的向量)來估計下一個詞匯出現的概率分布。
詞嵌入層(C)和概率函數(g)
NNLM的網絡架構:根據《A Neural Probabilistic Language Model》中的描述,NNLM主要由輸入層、隱藏層及輸出層三部分組成。 通過輸入層接收前文單詞序列的向量表示,在隱藏層中捕捉復雜的語言結構,最后在輸出層輸出每個單詞作為下一個詞出現的概率分布。
NNLM的網絡架構
輸入層
輸入層
作用:輸入層負責接收原始數據,并將其轉換為神經網絡可以處理的格式。在自然語言處理 中,輸入層通常接收的是詞匯的向量表示,即詞嵌入(word embedding)。
上下文詞匯向量:如上文所述,輸入層連接的是上下文詞匯向量x = (C(wt-1), C(wt-2), …, C(wt-n+1))
,其中C(wt-i)
表示在時間步t-i
時詞匯wt-i
的詞嵌入向量。這些向量共同構成了神經網絡的輸入。
隱藏層
隱藏層
作用:隱藏層是神經網絡 中的核心部分,負責學習數據的復雜特征表示。在自然語言處理中,隱藏層通常包含多個神經元,并且這些神經元之間以及與前一層和下一層之間都有連接。
非線性激活函數:為了引入非線性,隱藏層中的神經元通常使用非線性激活函數,如雙曲正切函數(tanh)。激活函數使得神經網絡能夠學習非線性關系,從而捕捉數據的復雜模式。
權重和偏置:隱藏層中的每個神經元都與其前一層的神經元通過權重矩陣U和H(以及偏置向量d)相連接。這些權重和偏置在訓練過程中被學習,以最小化預測誤差。
輸出層
輸出層
作用:輸出層是神經網絡 的最后一層,負責產生最終的預測結果。在自然語言處理中,輸出層通常使用softmax函數將隱藏層的輸出轉換為概率分布,以便在每個時間步預測下一個詞匯。
softmax函數:softmax函數將隱藏層的輸出轉換為概率分布P^(wt | wt-1, …, wt-n+1)
。這個概率分布表示在給定上下文條件下,每個詞匯作為下一個詞匯的概率。
預測:最終,神經網絡通過選擇概率最高的詞匯作為預測結果。
NNLM的網絡架構
NNLM的模型訓練
NNLM的模型訓練:NNLM的訓練過程旨在最大化訓練數據中序列的聯合概率,即最大化給定前文單詞的條件下,下一個單詞出現的概率。在訓練過程中,分布式表示(即詞嵌入)是作為模型的訓練參數之一進行更新的。
NNLM
NNLM訓練過程:通過前向傳播計算輸出,利用損失函數評估差異,然后反向傳播更新權重,迭代優化直至收斂或達到預設迭代次數。這通常通過最小化負對數似然(negative log-likelihood)損失函數來實現。
最小化負對數似然
其中 R( θ) 是正則化項(例如,權重衰減),使用隨機梯度上升法更新參數 θ :
更新參數 θ
其中 ? 是學習率。
三、人工神經網絡與貝葉斯網絡
大模型,特別是那些擁有數十億甚至更多參數的深度學習模型,往往是以人工神經網絡為基礎的。這些模型通過堆疊多個隱藏層、增加神經元數量和使用復雜的非線性激活函數,來構建能夠處理復雜任務(如自然語言處理 、圖像識別等)的深度神經網絡。
大模型與人工神經網絡的關系
什么是人工神經網絡(ANN)?人工神經網絡(ANN)是一種模仿生物神經網絡結構和功能的計算模型。它由多個層組成,包括輸入層、隱藏層(可能有多層)和輸出層。每一層都包含多個神經元(或稱為節點),這些神經元通過帶權重的連接相互連接。
ANN 輸入層接收外部數據,隱藏層對數據進行處理,輸出層則產生最終的輸出。神經元的激活通常通過一個非線性函數(如sigmoid、ReLU等)來實現,這使得網絡能夠學習復雜的非線性關系。
ANN 大模型與人工神經網絡的關系:LLM 的核心是ANN(人工神經網絡),基于人工神經網絡構建更大規模和復雜度更高的深度學習模型。
PLM(預訓練模型):預訓練語言模型通常使用互聯網上的海量文本數據作為訓練語料 ,這些語料庫可能包含數十億甚至數千億個單詞。這些模型通過在大量的未標注文本數據上進行學習,掌握了語言的共性和規律,進而能夠應用于各種NLP下游任務。
數據 + 算力: 算力作基礎,數據為驅動;無監督預訓練(Pre-training),有監督微調(Fine-tuning)。
權重w和偏置b:模型參數包括每一層的權重(weight)和偏置項(bias)。這些參數在訓練過程中通過反向傳播算法進行調整,以最小化損失函數。
LLM 》DL 》ANN
人工神經網絡與貝葉斯網絡的關系
什么是貝葉斯網絡(BN)?貝葉斯網絡(Bayesian Network,簡稱BN)是一種基于概率推理的圖形模型,用于表示變量之間的依賴關系。它由一個有向無環圖(Directed Acyclic Graph,DAG)和條件概率表(Conditional Probability Table,CPT)組成。
Bayesian Network
有向無環圖(DAG):用于表示變量之間的依賴關系。圖中的節點代表變量,有向邊(或稱為弧)則表示變量之間的依賴關系。如果兩個節點之間存在有向邊,則意味著一個節點的狀態會影響另一個節點的狀態。
條件概率表(CPT):與DAG中的每個節點相關聯,用于描述節點與其父節點之間的概率關系。條件概率表詳細列出了在給定父節點狀態下,當前節點取各個可能值的概率。
Bayesian Network
人工神經網絡與貝葉斯網絡的關系:兩者都是有向圖模型,其中每個節點的取值或狀態僅依賴于其直接前驅節點,即遵循馬爾可夫假設。這種結構使得模型能夠清晰地表示變量之間的依賴關系。
ANN vs Bayesian Network
有向圖模型:一種使用有向圖來表示變量之間關系的數學模型。在有向圖中,節點代表變量,而有向邊則代表變量之間的依賴關系。
Direction Graph
馬爾可夫假設:一種簡化模型復雜性的假設,它指出一個節點的狀態(或取值)僅依賴于其直接前驅節點的狀態(或取值),而與更前面的節點狀態無關。
Markov Chain
四、語言模型的發展歷程
語言模型的發展歷程
語言模型(LM,Language Model)的發展歷程可以清晰地劃分為三個主要階段:統計語言模型、神經網絡語言模型以及基于Transformer 的大語言模型。每個階段的模型都在前一個階段的基礎上進行了改進和優化,使得語言模型的性能得到了顯著提升。
語言模型的發展歷程
統計語言模型
什么是統計語言模型?統計語言模型是早期自然語言處理 (NLP)中的重要工具,它們主要通過分析詞序列的出現頻率來預測下一個詞。這種方法基于統計學的原理,利用大規模語料庫中的詞頻信息來建模語言的概率分布。代表模型:N-gram模型、隱馬爾可夫模型(HMM)
N-gram模型:這是最常見的統計語言模型之一,它基于馬爾可夫假設,認為一個詞出現的概率僅與其前面的n-1個詞有關。N-gram模型簡單易用,但存在數據稀疏和無法捕捉長距離依賴關系的問題。
隱馬爾可夫模型(HMM):另一種重要的統計語言模型,通過引入隱藏狀態來捕捉序列數據中的潛在結構。
統計語言模型
N-gram模型:N-gram模型是一種基于統計語言模型的文本分析算法,它用于預測文本中下一個詞出現的概率,基于前面出現的n-1個詞的序列。這里的n代表序列中元素的數量,因此稱為N-gram。
Unigram:N=1,每個單詞的出現概率獨立計算,不考慮上下文。
Bigram:N=2,基于前一個單詞預測當前單詞的聯合概率模型。
Trigram:N=3,考慮前兩個單詞來預測當前單詞的聯合概率模型,更復雜但可能更準確。
N-gram
N-gram模型的工作原理:N-gram模型通過統計語料庫中n-gram序列的頻率,估計給定前n-1個元素后下一個元素出現的概率,從而實現文本預測。
語料庫準備:首先,需要有一個大型的文本語料庫,用于訓練N-gram模型。
計算頻率:然后,計算語料庫中所有可能的n-gram序列的頻率。
概率估計:根據這些頻率,可以估計出給定n-1個詞后,下一個詞出現的概率。
預測:在預測階段,給定一個詞序列的前n-1個詞,模型可以輸出下一個詞的概率分布,從而可以選擇最可能的詞作為預測結果。
N-gram
神經網絡語言模型
什么是神經網絡語言模型?隨著深度學習技術的發展,神經網絡開始被應用于語言建模任務中。神經網絡語言模型通過引入神經網絡結構來捕捉詞與詞之間的復雜關系,從而提高了語言模型的性能。代表模型:NNLM、RNN、LSTM、GRU
神經網絡語言模型(NNLM):由Bengio等人提出,通過嵌入層將單詞映射到連續的向量空間中,并通過多個隱藏層來學習語言的內部結構。NNLM能夠捕捉詞與詞之間的語義關系,提高了語言模型的預測能力。
循環神經網絡(RNN)及其變體(LSTM、GRU):RNN通過引入循環連接來處理序列數據中的長期依賴關系。LSTM和GRU是RNN的改進版本,通過引入門控機制來解決梯度消失或梯度爆炸問題。
神經網絡語言模型
NNLM: 一種基于神經網絡的方法來建模自然語言中的詞語序列。與傳統的統計語言模型(如n-gram模型)相比,NNLM能夠捕捉更復雜的語言結構和語義信息,因為它利用了神經網絡強大的非線性建模能力。
原理: 利用神經網絡來預測文本序列中下一個詞或字符出現的概率的模型。
目的: 通過建模詞匯之間的概率關系,實現自然語言文本的生成或理解。
NNLM
NNLM 的工作原理: 通過嵌入層將輸入的固定長度前文單詞序列轉換為連續向量表示,然后利用一個或多個隱藏層學習這些向量的語言結構,最后由輸出層輸出下一個單詞的概率分布,以最大化給定前文條件下的單詞預測準確性。
輸入:NNLM的輸入是一個固定長度的前文單詞序列,用于預測下一個單詞。每個單詞通常由其詞嵌入(word embedding)表示,即將單詞映射到連續的向量空間中。
結構:NNLM通常包含一個嵌入層(embedding layer),用于將輸入的單詞轉換為連續向量表示;一個或多個隱藏層(hidden layers),用于學習輸入序列的語言結構;以及一個輸出層(output layer),輸出下一個單詞的概率分布。
訓練目標:最大化給定訓練數據中序列的聯合概率,即最大化給定前文單詞的條件下,下一個單詞出現的概率。這通常通過最小化負對數似然(negative log-likelihood)來實現。
NNLM
基于Transformer的大語言模型
什么是基于Transformer 的大語言模型?基于Transformer的大語言模型在預訓練階段利用大規模語料庫進行訓練,然后在特定任務上進行微調,取得了驚人的效果。代表模型:BERT、GPT系列
BERT:由Google提出的一種基于Transformer的雙向編碼器表示模型。BERT在預訓練階段采用了遮蔽語言模型(Masked Language Model)和下一句預測(Next Sentence Prediction)兩個任務來訓練模型,提高了模型的語言表示能力。
GPT系列:由OpenAI開發的基于Transformer的生成式預訓練模型。GPT系列模型在預訓練階段采用了自回歸語言建模任務來訓練模型,能夠生成連貫、自然的文本。隨著模型規模的增大(如GPT-3、GPT-4等),GPT系列模型在多個NLP任務上取得了優異的表現。
基于Transformer的大語言模型
Transformer模型:Transformer模型由Vaswani等人在2017年提出,是一種基于自注意力機制的深度學習模型。它徹底摒棄了傳統的循環神經網絡結構,通過自注意力機制和位置編碼來處理序列數據中的長期依賴關系和位置信息。
Transformer
Encoder-Decoder Architecture(編碼器-解碼器架構)
Transformer 模型通常包含編碼器和解碼器兩部分。
編碼器負責將輸入序列轉化為上下文向量(或稱為隱藏狀態),這些向量包含了輸入序列的語義信息。
解碼器則利用這些上下文向量生成輸出序列。在生成過程中,解碼器會逐步產生輸出序列的每個token,并在每一步都考慮之前的輸出和編碼器的上下文向量。
Embedding(向量化)
在自然語言處理 (NLP)中,輸入的文本內容(如句子、段落或整個文檔)首先被拆分成更小的片段或元素,這些片段通常被稱為詞元(tokens)。
Embedding層負責將這些tokens轉換為固定大小的實數向量,以捕捉這些tokens的語義信息。這個過程是通過查找一個預訓練的嵌入矩陣來實現的,其中每一行代表一個token的向量表示。
Attention(注意力機制)
注意力機制的核心是計算查詢向量(Q)、鍵向量(K)和值向量(V)之間的相互作用。對于每個token,它有一個對應的查詢向量,而整個輸入序列的tokens則共享一套鍵向量和值向量。
通過計算查詢向量與每個鍵向量的相似度(通常使用縮放點積注意力),得到一組注意力權重。這些權重表示了在生成當前token的表示時,應該給予其他token多大的關注。
最后,將注意力權重應用于值向量,并進行加權求和,得到當前token的自注意力輸出表示。
Position Encoding(位置編碼)
由于Transformer模型本身無法識別序列中token的位置順序,因此需要引入位置編碼來補充這一信息。
位置編碼可以是預定義的(如正弦和余弦函數)或可學習的參數。這些編碼被添加到每個token的嵌入向量中,以幫助模型區分不同位置的token。
Multi-Head Attention(多頭注意力機制)
多頭注意力機制是自注意力機制的擴展,它允許模型在不同的表示空間中同時關注信息的多個方面。
通過將輸入序列的嵌入向量分割成多個頭(即多個子空間),并在每個頭中獨立計算自注意力,然后將這些頭的輸出拼接在一起,最后通過一個線性變換得到最終的輸出表示。
多頭注意力機制能夠捕獲更復雜的語義關系,增強模型的表達能力。
Feed-Forward Network(前饋網絡)
Transformer中的編碼器和解碼器都包含前饋網絡(也稱為全連接層)。
前饋網絡用于進一步處理和轉換注意力機制提取的特征,提取和整合更多有用的信息,以生成最終的輸出表示。
Residual Connection and Layer Normalization(殘差連接和層歸一化)
在Transformer的每個子層(如多頭注意力層、前饋網絡層)之后,都會添加殘差連接和層歸一化操作。
殘差連接有助于緩解深層網絡中的梯度消失問題,而層歸一化則有助于加速訓練過程并提高模型的穩定性。
Transformer
文章轉自微信公眾號@架構師帶你玩轉AI
我們有何不同?
API服務商零注冊
多API并行試用
數據驅動選型,提升決策效率
查看全部API→