導航:首頁 > 網路營銷 > 利用GRU網路的方法有哪些

利用GRU網路的方法有哪些

發布時間:2022-10-11 07:36:17

A. gru-190gy如何設置

方法/步驟

B. Python中文分詞的原理你知道嗎

中文分詞,即 Chinese Word Segmentation,即將一個漢字序列進行切分,得到一個個單獨的詞。表面上看,分詞其實就是那麼回事,但分詞效果好不好對信息檢索、實驗結果還是有很大影響的,同時分詞的背後其實是涉及各種各樣的演算法的。

中文分詞與英文分詞有很大的不同,對英文而言,一個單詞就是一個詞,而漢語是以字為基本的書寫單位,詞語之間沒有明顯的區分標記,需要人為切分。根據其特點,可以把分詞演算法分為四大類:

基於規則的分詞方法

基於統計的分詞方法

基於語義的分詞方法

基於理解的分詞方法

下面我們對這幾種方法分別進行總結。

基於規則的分詞方法

這種方法又叫作機械分詞方法、基於字典的分詞方法,它是按照一定的策略將待分析的漢字串與一個「充分大的」機器詞典中的詞條進行匹配。若在詞典中找到某個字元串,則匹配成功。該方法有三個要素,即分詞詞典、文本掃描順序和匹配原則。文本的掃描順序有正向掃描、逆向掃描和雙向掃描。匹配原則主要有最大匹配、最小匹配、逐詞匹配和最佳匹配。

最大匹配法(MM)。基本思想是:假設自動分詞詞典中的最長詞條所含漢字的個數為 i,則取被處理材料當前字元串序列中的前 i 個字元作為匹配欄位,查找分詞詞典,若詞典中有這樣一個 i 字詞,則匹配成功,匹配欄位作為一個詞被切分出來;若詞典中找不到這樣的一個 i 字詞,則匹配失敗,匹配欄位去掉最後一個漢字,剩下的字元作為新的匹配欄位,再進行匹配,如此進行下去,直到匹配成功為止。統計結果表明,該方法的錯誤率 為 1/169。

逆向最大匹配法(RMM)。該方法的分詞過程與 MM 法相同,不同的是從句子(或文章)末尾開始處理,每次匹配不成功時去掉的是前面的一個漢字。統計結果表明,該方法的錯誤率為 1/245。

逐詞遍歷法。把詞典中的詞按照由長到短遞減的順序逐字搜索整個待處理的材料,一直到把全部的詞切分出來為止。不論分詞詞典多大,被處理的材料多麼小,都得把這個分詞詞典匹配一遍。

設立切分標志法。切分標志有自然和非自然之分。自然切分標志是指文章中出現的非文字元號,如標點符號等;非自然標志是利用詞綴和不構成詞的詞(包 括單音詞、復音節詞以及象聲詞等)。設立切分標志法首先收集眾多的切分標志,分詞時先找出切分標志,把句子切分為一些較短的欄位,再用 MM、RMM 或其它的方法進行細加工。這種方法並非真正意義上的分詞方法,只是自動分詞的一種前處理方式而已,它要額外消耗時間掃描切分標志,增加存儲空間存放那些非 自然切分標志。

最佳匹配法(OM)。此法分為正向的最佳匹配法和逆向的最佳匹配法,其出發點是:在詞典中按詞頻的大小順序排列詞條,以求縮短對分詞詞典的檢索時 間,達到最佳效果,從而降低分詞的時間復雜度,加快分詞速度。實質上,這種方法也不是一種純粹意義上的分詞方法,它只是一種對分詞詞典的組織方式。OM 法的分詞詞典每條詞的前面必須有指明長度的數據項,所以其空間復雜度有所增加,對提高分詞精度沒有影響,分詞處理的時間復雜度有所降低。

此種方法優點是簡單,易於實現。但缺點有很多:匹配速度慢;存在交集型和組合型歧義切分問題;詞本身沒有一個標準的定義,沒有統一標準的詞集;不同詞典產生的歧義也不同;缺乏自學習的智能性。

基於統計的分詞方法

該方法的主要思想:詞是穩定的組合,因此在上下文中,相鄰的字同時出現的次數越多,就越有可能構成一個詞。因此字與字相鄰出現的概率或頻率能較好地反映成詞的可信度。可以對訓練文本中相鄰出現的各個字的組合的頻度進行統計,計算它們之間的互現信息。互現信息體現了漢字之間結合關系的緊密程度。當緊密程 度高於某一個閾值時,便可以認為此字組可能構成了一個詞。該方法又稱為無字典分詞。

該方法所應用的主要的統計模型有:N 元文法模型(N-gram)、隱馬爾可夫模型(Hiden Markov Model,HMM)、最大熵模型(ME)、條件隨機場模型(Conditional Random Fields,CRF)等。

在實際應用中此類分詞演算法一般是將其與基於詞典的分詞方法結合起來,既發揮匹配分詞切分速度快、效率高的特點,又利用了無詞典分詞結合上下文識別生詞、自動消除歧義的優點。

基於語義的分詞方法

語義分詞法引入了語義分析,對自然語言自身的語言信息進行更多的處理,如擴充轉移網路法、知識分詞語義分析法、鄰接約束法、綜合匹配法、後綴分詞法、特徵詞庫法、矩陣約束法、語法分析法等。

擴充轉移網路法

該方法以有限狀態機概念為基礎。有限狀態機只能識別正則語言,對有限狀態機作的第一次擴充使其具有遞歸能力,形成遞歸轉移網路 (RTN)。在RTN 中,弧線上的標志不僅可以是終極符(語言中的單詞)或非終極符(詞類),還可以調用另外的子網路名字分非終極符(如字或字串的成詞條件)。這樣,計算機在 運行某個子網路時,就可以調用另外的子網路,還可以遞歸調用。詞法擴充轉移網路的使用, 使分詞處理和語言理解的句法處理階段交互成為可能,並且有效地解決了漢語分詞的歧義。

矩陣約束法

其基本思想是:先建立一個語法約束矩陣和一個語義約束矩陣, 其中元素分別表明具有某詞性的詞和具有另一詞性的詞相鄰是否符合語法規則, 屬於某語義類的詞和屬於另一詞義類的詞相鄰是否符合邏輯,機器在切分時以之約束分詞結果。

基於理解的分詞方法

基於理解的分詞方法是通過讓計算機模擬人對句子的理解,達到識別詞的效果。其基本思想就是在分詞的同時進行句法、語義分析,利用句法信息和語義信息來處理歧義現象。它通常包括三個部分:分詞子系統、句法語義子系統、總控部分。在總控部分的協調下,分詞子系統可以獲得有關詞、句子等的句法和語義信息來對分詞歧義進行判斷,即它模擬了人對句子的理解過程。這種分詞方法需要使用大量的語言知識和信息。目前基於理解的分詞方法主要有專家系統分詞法和神經網路分詞法等。

專家系統分詞法

從專家系統角度把分詞的知識(包括常識性分詞知識與消除歧義切分的啟發性知識即歧義切分規則)從實現分詞過程的推理機中獨立出來,使知識庫的維護與推理機的實現互不幹擾,從而使知識庫易於維護和管理。它還具有發現交集歧義欄位和多義組合歧義欄位的能力和一定的自學習功能。

神經網路分詞法

該方法是模擬人腦並行,分布處理和建立數值計算模型工作的。它將分詞知識所分散隱式的方法存入神經網路內部,通過自學習和訓練修改內部權值,以達到正確的分詞結果,最後給出神經網路自動分詞結果,如使用 LSTM、GRU 等神經網路模型等。

神經網路專家系統集成式分詞法

該方法首先啟動神經網路進行分詞,當神經網路對新出現的詞不能給出准確切分時,激活專家系統進行分析判斷,依據知識庫進行推理,得出初步分析,並啟動學習機制對神經網路進行訓練。該方法可以較充分發揮神經網路與專家系統二者優勢,進一步提高分詞效率。

以上便是對分詞演算法的基本介紹。

C. 吳恩達:序列模型(Sequence Models)

x: Harry Potter and Hermione Granger invented a new spell.

y: 1 1 0 1 1 0 0 0 0

RNN的限制是它在某一時刻的預測只來自於序列之前的輸入信息

many-to-many: 多對多,識別姓名(、機器翻譯

many-to-one:多對一,電影評級

one-to-one:一對一,簡單神經網路

one-to-many:音樂生成

[圖片上傳失敗...(image-7bfbcd-1627733070469)]

language model and sequence processing

sampling a sequence from a trained RNN

[圖片上傳失敗...(image-a3d162-1627733070469)]

gradient clipping梯度修剪:觀察你的梯度向量,如果它大於某個閾值,縮放梯度向量,保證它不會太大。

GRU改變了RNN的隱藏層,使其可以更好地捕捉深層連接,並改善了梯度消失問題。

GRU單元(門控循環神經網路)可以有效解決梯度消失的問題,並且能夠使你的神經網路捕獲更長的長期依賴。

GRU(simplified)

[圖片上傳失敗...(image-5bc757-1627733070469)]

long short term memory

[圖片上傳失敗...(image-bb377a-1627733070469)]

[圖片上傳失敗...(image-6eb33e-1627733070469)]

何時使用GRU還是LSTM沒有統一的准則,GRU的優點是這是個更簡單的模型,所以更容易創建一個更大的網路,而且它只有兩個門,在計算性上也運行得更快,也可以擴大模型的規模。但是LSTM更加強大和靈活,因為它有三個門。

[圖片上傳失敗...(image-e9bde9-1627733070469)]

visualizing word embeddings 可視化詞嵌入

[圖片上傳失敗...(image-d0afbd-1627733070469)]

analogies using word vectors

cosine similarity

skip-grams

I want a glass of orange juice to go along with my cereal.

content c ("orange") —— target t ("juice")

6257 4834

<svg xmlns:xlink="http://www.w3.org/1999/xlink" width="97.241ex" height="10.719ex" viewBox="0 -788 41867.7 4615.2" role="img" focusable="false" style="vertical-align: -8.889ex; max-width: 79900px;" class="in-text-selection"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="matrix(1 0 0 -1 0 0)"><g transform="translate(14076,-2308)"><g transform="translate(3844,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(52.4) matrix(1 0 0 -1 0 0)">;</text></g></g></g></svg>

分母部分的求和會很緩慢,解決方案是使用一個分級的softmax分類器(hierarchical softmax classifier)

[圖片上傳失敗...(image-fdfc93-1627733070469)]

[圖片上傳失敗...(image-cff3d2-1627733070469)]

[圖片上傳失敗...(image-b61aea-1627733070469)]

greedy search vs beam search

Bleu score on n-grams only

combined Bleu score:

[圖片上傳失敗...(image-258f73-1627733070468)]

在圖像描述應用中,對於同一圖片的不同描述,可能是同樣好的;或者對於機器翻譯來說,有多個一樣好的翻譯結果,BLEU提供了一個能夠自動評估的方法,幫助加快演算法開發進程。

[圖片上傳失敗...(image-a593f2-1627733070468)]

[圖片上傳失敗...(image-4b045-1627733070468)]

attention model for speech recognition

[圖片上傳失敗...(image-dce0f7-1627733070468)]

CTC(connectionist temporaral classification) cost for speech recognition

D. LSTM與GRU數學推導

RNN 的關鍵點之一就是他們可以用來連接先前的信息到當前的任務上,例如使用過去的視頻段來推測對當前段的理解。如果 RNN 可以做到這個,他們就變得非常有用。但是真的可以么?答案是,還有很多依賴因素。

有時候,我們僅僅需要知道先前的信息來執行當前的任務。例如,我們有一個語言模型用來基於先前的詞來預測下一個詞。如果我們試著預測 「the clouds are in the sky」 最後的詞,我們並不需要任何其他的上下文 —— 因此下一個詞很顯然就應該是 sky。在這樣的場景中,相關的信息和預測的詞位置之間的間隔是非常小的,RNN 可以學會使用先前的信息。

但是同樣會有一些更加復雜的場景。假設我們試著去預測「I grew up in France... I speak fluent French」最後的詞。當前的信息建議下一個詞可能是一種語言的名字,但是如果我們需要弄清楚是什麼語言,我們是需要先前提到的離當前位置很遠的 France 的上下文的。這說明相關信息和當前預測位置之間的間隔就肯定變得相當的大。

不幸的是,在這個間隔不斷增大時,RNN 會喪失學習到連接如此遠的信息的能力。

在理論上,RNN 絕對可以處理這樣的 長期依賴 問題。人們可以仔細挑選參數來解決這類問題中的最初級形式,但在實踐中,RNN 肯定不能夠成功學習到這些知識。Bengio, et al. (1994)等人對該問題進行了深入的研究,他們發現一些使訓練 RNN 變得非常困難的相當根本的原因。

然而,幸運的是,LSTM 並沒有這個問題!

Long Short Term 網路—— 一般就叫做 LSTM ——是一種 RNN 特殊的類型,可以學習長期依賴信息。LSTM 由Hochreiter & Schmidhuber (1997)提出,並在近期被Alex Graves進行了改良和推廣。在很多問題,LSTM 都取得相當巨大的成功,並得到了廣泛的使用。

LSTM 通過刻意的設計來避免長期依賴問題。記住長期的信息在實踐中是 LSTM 的默認行為,而非需要付出很大代價才能獲得的能力!

所有 RNN 都具有一種重復神經網路模塊的鏈式的形式。在標準的 RNN 中,這個重復的模塊只有一個非常簡單的結構,例如一個 tanh 層。

LSTM 同樣是這樣的結構,但是重復的模塊擁有一個不同的結構。不同於 單一神經網路層,這里是有四個,以一種非常特殊的方式進行交互。

不必擔心這里的細節。我們會一步一步地剖析 LSTM 解析圖。現在,我們先來熟悉一下圖中使用的各種元素的圖標。

在上面的圖例中,每一條黑線傳輸著一整個向量,從一個節點的輸出到其他節點的輸入。粉色的圈代表 pointwise 的操作,諸如向量的和,而黃色的矩陣就是學習到的神經網路層。合在一起的線表示向量的連接,分開的線表示內容被復制,然後分發到不同的位置。

LSTM 的關鍵就是細胞狀態,水平線在圖上方貫穿運行。

細胞狀態類似於傳送帶。直接在整個鏈上運行,只有一些少量的線性交互。信息在上面流傳保持不變會很容易。

LSTM 有通過精心設計的稱作為「門」的結構來去除或者增加信息到細胞狀態的能力。門是一種讓信息選擇式通過的方法。他們包含一個 sigmoid 神經網路層和一個 pointwise 乘法操作。

Sigmoid 層輸出 0 到 1 之間的數值,描述每個部分有多少量可以通過。0 代表「不許任何量通過」,1 就指「允許任意量通過」!

LSTM 擁有三個門,來保護和控制細胞狀態。

在我們 LSTM 中的第一步是決定我們會從細胞狀態中丟棄什麼信息。這個決定通過一個稱為忘記門層完成。該門會讀取h_{t-1}和x_t,輸出一個在 0 到 1 之間的數值給每個在細胞狀態C_{t-1}中的數字。1 表示「完全保留」,0 表示「完全舍棄」。

讓我們回到語言模型的例子中來基於已經看到的預測下一個詞。在這個問題中,細胞狀態可能包含當前主語的性別,因此正確的代詞可以被選擇出來。當我們看到新的主語,我們希望忘記舊的主語。

下一步是確定什麼樣的新信息被存放在細胞狀態中。這里包含兩個部分。第一,sigmoid 層稱 「輸入門層」 決定什麼值我們將要更新。然後,一個 tanh 層創建一個新的候選值向量,\tilde{C}_t,會被加入到狀態中。下一步,我們會講這兩個信息來產生對狀態的更新。

在我們語言模型的例子中,我們希望增加新的主語的性別到細胞狀態中,來替代舊的需要忘記的主語。

現在是更新舊細胞狀態的時間了,C_{t-1}更新為C_t。前面的步驟已經決定了將會做什麼,我們現在就是實際去完成。

我們把舊狀態與f_t相乘,丟棄掉我們確定需要丟棄的信息。接著加上i_t * \tilde{C}_t。這就是新的候選值,根據我們決定更新每個狀態的程度進行變化。

在語言模型的例子中,這就是我們實際根據前面確定的目標,丟棄舊代詞的性別信息並添加新的信息的地方。

最終,我們需要確定輸出什麼值。這個輸出將會基於我們的細胞狀態,但是也是一個過濾後的版本。首先,我們運行一個 sigmoid 層來確定細胞狀態的哪個部分將輸出出去。接著,我們把細胞狀態通過 tanh 進行處理(得到一個在 -1 到 1 之間的值)並將它和 sigmoid 門的輸出相乘,最終我們僅僅會輸出我們確定輸出的那部分。

在語言模型的例子中,因為他就看到了一個 代詞,可能需要輸出與一個 動詞 相關的信息。例如,可能輸出是否代詞是單數還是負數,這樣如果是動詞的話,我們也知道動詞需要進行的詞形變化。

我們到目前為止都還在介紹正常的 LSTM。但是不是所有的 LSTM 都長成一個樣子的。實際上,幾乎所有包含 LSTM 的論文都採用了微小的變體。差異非常小,但是也值得拿出來講一下。

其中一個流形的 LSTM 變體,就是由 Gers & Schmidhuber (2000) 提出的,增加了 「peephole connection」。是說,我們讓 門層 也會接受細胞狀態的輸入。

上面的圖例中,我們增加了 peephole 到每個門上,但是許多論文會加入部分的 peephole 而非所有都加。

另一個變體是通過使用 coupled 忘記和輸入門。不同於之前是分開確定什麼忘記和需要添加什麼新的信息,這里是一同做出決定。我們僅僅會當我們將要輸入在當前位置時忘記。我們僅僅輸入新的值到那些我們已經忘記舊的信息的那些狀態 。

另一個改動較大的變體是 Gated Recurrent Unit (GRU),這是由 Cho, et al. (2014) 提出。它將忘記門和輸入門合成了一個單一的 更新門。同樣還混合了細胞狀態和隱藏狀態,和其他一些改動。最終的模型比標準的 LSTM 模型要簡單,也是非常流行的變體。

這里只是部分流行的 LSTM 變體。當然還有很多其他的,如Yao, et al. (2015) 提出的 Depth Gated RNN。還有用一些完全不同的觀點來解決長期依賴的問題,如Koutnik, et al. (2014) 提出的 Clockwork RNN。

要問哪個變體是最好的?其中的差異性真的重要嗎?Greff, et al. (2015) 給出了流行變體的比較,結論是他們基本上是一樣的。Jozefowicz, et al. (2015) 則在超過 1 萬種 RNN 架構上進行了測試,發現一些架構在某些任務上也取得了比 LSTM 更好的結果。

剛開始,我提到通過 RNN 得到重要的結果。本質上所有這些都可以使用 LSTM 完成。對於大多數任務確實展示了更好的性能!

由於 LSTM 一般是通過一系列的方程表示的,使得 LSTM 有一點令人費解。然而本文中一步一步地解釋讓這種困惑消除了不少。

LSTM 是我們在 RNN 中獲得的重要成功。很自然地,我們也會考慮:哪裡會有更加重大的突破呢?在研究人員間普遍的觀點是:「Yes! 下一步已經有了——那就是注意力!」 這個想法是讓 RNN 的每一步都從更加大的信息集中挑選信息。例如,如果你使用 RNN 來產生一個圖片的描述,可能會選擇圖片的一個部分,根據這部分信息來產生輸出的詞。實際上,Xu, et al. (2015)已經這么做了——如果你希望深入探索注意力可能這就是一個有趣的起點!還有一些使用注意力的相當振奮人心的研究成果,看起來有更多的東西亟待探索……

注意力也不是 RNN 研究領域中唯一的發展方向。例如,Kalchbrenner, et al. (2015) 提出的 Grid LSTM 看起來也是很有前途。使用生成模型的 RNN,諸如Gregor, et al. (2015) Chung, et al. (2015) 和 Bayer & Osendorfer (2015) 提出的模型同樣很有趣。在過去幾年中,RNN 的研究已經相當的燃,而研究成果當然也會更加豐富!

先看一下比較典型的BPTT一個展開的結構,如下圖,這里只考慮了部分圖,因為其他部分不是這里要討論的內容。

對於t時刻的誤差信號計算如下:

這樣權值的更新方式如下:

上面的公式在BPTT中是非常常見的了,那麼如果這個誤差信號一直往過去傳呢,假設任意兩個節點u, v他們的關系是下面這樣的:

那麼誤差傳遞信號的關系可以寫成如下的遞歸式:

n表示圖中一層神經元的個數,這個遞歸式的大概含義不難理解,要求t-q時刻誤差信號對t時刻誤差信號的偏導,就先求出t-q+1時刻對t時刻的,然後把求出來的結果傳到t-q時刻,遞歸停止條件是q = 1時,就是剛開始寫的那部分計算公式了。將上面的遞歸式展開後可以得到:

論文裡面說的是可以通過歸納來證明,我沒仔細推敲這里了,把裡面連乘展開看容易明白一點:

整個結果式對T求和的次數是n^(q-1), 即T有n^(q-1)項,那麼下面看問題出在哪兒。

如果|T| > 1, 誤差就會隨著q的增大而呈指數增長,那麼網路的參數更新會引起非常大的震盪。

如果|T| < 1, 誤差就會消失,導致學習無效,一般激活函數用simoid函數,它的倒數最大值是0.25, 權值最大值要小於4才能保證不會小於1。

誤差呈指數增長的現象比較少,誤差消失在BPTT中很常見。在原論文中還有更詳細的數學分析,但是了解到此個人覺的已經足夠理解問題所在了。

為了克服誤差消失的問題,需要做一些限制,先假設僅僅只有一個神經元與自己連接,簡圖如下:

根據上面的,t時刻的誤差信號計算如下:

為了使誤差不產生變化,可以強制令下式為1:

根據這個式子,可以得到:

這表示激活函數是線性的,常常的令fj(x) = x, wjj = 1.0,這樣就獲得常數誤差流了,也叫做CEC。

但是光是這樣是不行的,因為存在輸入輸出處權值更新的沖突(這里原論文裡面的解釋我不是很明白),所以加上了兩道控制門,分別是input gate, output gate,來解決這個矛盾,圖如下:

圖中增加了兩個控制門,所謂控制的意思就是計算cec的輸入之前,乘以input gate的輸出,計算cec的輸出時,將其結果乘以output gate的輸出,整個方框叫做block, 中間的小圓圈是CEC, 裡面是一條y = x的直線表示該神經元的激活函數是線性的,自連接的權重為1.0

最初lstm結構的一個缺點就是cec的狀態值可能會一直增大下去,增加forget gate後,可以對cec的狀態進行控制,它的結構如下圖:

這里的相當於自連接權重不再是1.0,而是一個動態的值,這個動態值是forget gate的輸出值,它可以控制cec的狀態值,在必要時使之為0,即忘記作用,為1時和原來的結構一樣。

上面增加遺忘門一個缺點是當前CEC的狀態不能影響到input gate, forget gate在下一時刻的輸出,所以增加了Peephole connections。結構如下:

這里的gate的輸入部分就多加了一個來源了,forget gate, input gate的輸入來源增加了cec前一時刻的輸出,output gate的輸入來源增加了cec當前時刻的輸出,另外計算的順序也必須保證如下:

                      1. input gate, forget gate的輸入輸出

                      2. cell的輸入

                      3. output gate的輸入輸出

                      4. cell的輸出(這里也是block的輸出)

我記得當時看論文公式推導的時候很多地方比較難理解,最後隨便谷歌了幾下,找到一個寫的不錯的類似課件的PDF,但是已經不知道出處了,很容易就看懂LSTM的前向計算,誤差反傳更新了。把其中關於LSTM的部分放上來,首先網路的完整結構圖如下:

這個結構也是rwthlm源碼包中LSTM的結構,下面看一下公式的記號:

前向的計算:

誤差反傳更新:

此外,還有GRU結構同樣是解決RNN的缺點,這里將LSTM和GRU進行對比。

LSTM與GRU:

1) LSTM:

2)GRU:

3)概括的來說,LSTM和GRU都能通過各種Gate將重要特徵保留,保證其在long-term 傳播的時候也不會被丟失;還有一個不太好理解,作用就是有利於BP的時候不容易vanishing:

實驗用了三個unit,傳統的tanh,以及LSTM和GRU:

可以發現LSTM和GRU的差別並不大,但是都比tanh要明顯好很多,所以在選擇LSTM或者GRU的時候還要看具體的task data是什麼, 不過在收斂時間和需要的epoch上,GRU應該要更勝一籌:

相關博客和教程:

https://zybuluo.com/hanbingtao/note/581764

http://www.jianshu.com/p/9dc9f41f0b29

http://www.csdn.net/article/2015-06-05/2824880

http://blog.csdn.net/zdy0_2004/article/details/49977423

http://blog.csdn.net/a635661820/article/details/45390671

http://deeplearning.net/tutorial/lstm.html

https://www.hu.com/question/29411132

原文參考:http://www.cnblogs.com/taojake-ML/p/6272605.html

E. 推薦系統論文閱讀(十)-基於圖神經網路的序列推薦演算法

論文:

論文地址: https://arxiv.org/abs/1811.00855

論文題目:《Session-based Recommendation with Graph Neural Networks》SR-GNN

github: https://github.com/CRIPAC-DIG/SR-GNN

基於會話的推薦一般是將序列會話建模,將整個session進行編碼,變成一個隱向量,然後利用這個隱向量進行下一個點擊預測。但是這種方法沒有考慮到item直接復雜的轉換(transitions)關系,也就是item之間在點擊的session中除了時間順序外還有復雜的有向圖內的節點指向關系,所以之前的方法不足以很好的對點擊序列進行建模。

現有基於會話的推薦,方法主要集中於循環神經網路和馬爾可夫鏈,論文提出了現有方法的兩個缺點:

1)當一個session中用戶的行為數量十分有限時,這些方法難以獲取准確的用戶行為表示。如當使用RNN模型時,用戶行為的表示即最後一個單元的輸出,論文認為只有這樣並非十分准確。

2)根據先前的工作發現,物品之間的轉移模式在會話推薦中是十分重要的特徵,但RNN和馬爾可夫過程只對相鄰的兩個物品的 單向轉移關系 進行建模,而忽略了會話中其他的物品。

為了克服上述缺陷,本文提出了用圖神經網路對方法對用戶對session進行建模:

下面具體介紹怎麼進行圖序列推薦

V = {v1,v2...vm}為全部的item,S = { }為一個session裡面按時間順序的點擊物品,論文的目標是預測用戶下一個要點擊的物品vs,n+1,模型的任務是輸出所有item的預測概率,並選擇top-k進行推薦。

我們為每一個Session構建一個子圖,並獲得它對應的出度和入度矩陣。

假設一個點擊序列是v1->v2->v4->v3,那麼它得到的子圖如下圖中紅色部分所示:

另一個例子,一個點擊序列是v1->v2->v3->v2->v4,那麼它得到的子圖如下:

同時,我們會為每一個子圖構建一個出度和入度矩陣,並對出度和入度矩陣的每一行進行歸一化,如我們序列v1->v2->v3->v2->v4對應的矩陣如下:

這個矩陣裡面的值是怎麼計算的呢?下面講一下:

看左邊的出度矩陣,第一行為 0 1 0 0 ,代表著v1->v2,因為v1,只有一個指向的item,所以為1;看第二行,0 0 1/2 1/2,因為v2有指向v3和v4的邊,所以進行歸一化後每一個值都變成了1/2。入度矩陣的計算方法也是一樣的,就不再說了。

本文採用的是GRU單元進行序列建模,將圖信息嵌入到神經網路中,讓GRU充分學習到item之間的關系,傳統的GRU只能學到相鄰的兩個物品之間的關系,加入圖信息後就能學到整個session子圖的信息。

計算公式如下:

為了剛好的理解這個計算過程,我們還是使用之前那個例子:v1->v2->v3->v2->v4來一步步分析輸入到輸出的過程。

(1) 是t時刻,會話s中第i個點擊對應的輸入, 是n✖️2n的矩陣,也就是會話子圖的完整矩陣,而 是其中一行,即物品vi所對應的那行,大小為1✖️2n,n代表序列中不同物品的數量。

如果按照例子來看,如果i取2,那麼 為 [0 0 1/2 1/2 1/2 0 1/2 0]

進一步的,可以把 :拆解為[ , ]

(2) 可以理解為序列中第i個物品,在訓練過程中對應的嵌入向量,這個向量隨著模型的訓練不斷變化,可以理解為隱藏層的狀態,是一個d維向量。

   (3)  H是d*2d的權重向量,也可以看作是一個分塊的矩陣,可以理解為H=[Hin|Hout],每一塊都是d*d的向量。

那麼我們來看看計算過程:

1)[ ..., ] ,結果是d * n的矩陣,轉置之後是n*d的矩陣,計作

2) : H相當於[   ],即拆開之後相乘再拼接,因此結果是一個1 * 2d的向量。

上面就是完整的第i個點擊的輸入的計算過程,可以看到,在進入GRU計算之前,通過跟As,i矩陣相乘,把圖信息嵌入到了神經網路中取,加深了神經網路學習到的item之間的交互信息。

此外,就是GRU的計算過程了,跟原始的GRU不一樣的地方在於輸入從xt變成了嵌入了圖信息的as,i。

通樣也有更新門和重置門,計算方法跟原始GRU一模一樣。

這里的 其實就是相當於原始gru中的 ,只不過在SR-GNN裡面,進行一輪運算的時候i是沒有變化,相當於每個物品單獨進去GRU進行計算,得到自己的向量,也就是說在GRU的計算過程中, 是不斷變化的,看一下源碼更易於理解:

hidden就是公式裡面的 ,在gru的每一個step計算中都會進行更新,這里我有個疑問,如果所有item的hidden都更新的話,那麼應該是整個序列中所有的item並行進入GRU中進行計算,每一個step都得到自己的vector,當每個item的vector更新後,下一個step就重新根據新的 計算 ,接著計算下一個step。

計算過程大概就是下面這樣:

這里有四個GRU並行計算,沒次更新自己的hidden狀態,輸入則考慮所有的hidden和圖信息。

從上面的圖看來,每一個item都要進行T個step得到自己的item-vec,所以經過T個step後,我們就得到了序列中所有item的向量,即:

圖中用藍色框框畫出來的向量,有了這些向量後,我們怎麼得到預測結果呢?這就引入了下一個問題。

觀察上面的模型結構,我們看到attention,沒錯,我們認為一個session中的這些item-vec並不都對預測結果產生影響,有些item對結果影響很大,有些影響很小,所以我們進行了加權求和。同時,論文認為session對最後一個item-vec,s1=vn是重要的,所以單獨拿出來:

公式(6)就是簡單的attention操作,其實從公式上來看就是計算每個vi跟最後一個向量vn的權值,然後進行加權求和。

在最後的輸出層,使用sh和每個物品的embedding進行內積計算,這里vi應該是item的embedding層出來的向量,而不是後面一直更新的hidden:

最後通過一個softmax得到最終每個物品的點擊概率:

損失函數為交叉熵損失函數:

從數據上來看,SR-GNN超過了經典的GRU4REC,這也說明了圖信息的嵌入能帶來更好的推薦效果。

本論文很巧妙的將圖信息嵌入的神經網路中,更高地讓GRU學習到每個item之間的關系,不再局限於相鄰的物品之間進行學習。近年來,圖神經網路的思想和方法屢屢被用在推薦系統中,學好圖神經網路應該是推薦系統的下一個熱潮。

F. 輸入循環的三種主要控制方式

1.查詢方式、2.中斷方式、3.DMA方式。

循環神經網路(RNN/recurrentneuralnetwork)是一類人工神經網路,其可以通過為網路添加額外的權重來在網路圖(networkgraph)中創建循環,以便維持一個內部狀態。為神經網路添加狀態的好處是它們將能在序列預測問題中明確地學習和利用背景信息(context)。

這類問題包括帶有順序或時間組件的問題。在這篇文章中,你將踏上了解用於深度學習的循環神經網路的旅程。在讀完這篇文章後,你將了解:用於深度學習的頂級循環神經網路的工作方式,其中包括LSTM、GRU和NTM、頂級RNN與人工神經網路中更廣泛的循環(recurrence)研究的相關性。

RNN研究如何在一系列高難度問題上實現了當前最佳的表現。注意,我們並不會覆蓋每一種可能的循環神經網路,而是會重點關注幾種用於深度學習的循環神經網路(LSTM、GRU和NTM)以及用於理解它們的背景。

那就讓我們開始吧!概述我們首先會設置循環神經網路領域的場景;然後,我們將深入了解用於深度學習的LSTM、GRU和NTM;之後我們會花點時間介紹一些與用於深度學習的RNN相關的高級主題。

G. 神經網路模型-27種神經網路模型們的簡介

​ 

【1】Perceptron(P) 感知機

【1】感知機 

感知機是我們知道的最簡單和最古老的神經元模型,它接收一些輸入,然後把它們加總,通過激活函數並傳遞到輸出層。

【2】Feed Forward(FF)前饋神經網路

 【2】前饋神經網路

前饋神經網路(FF),這也是一個很古老的方法——這種方法起源於50年代。它的工作原理通常遵循以下規則:

1.所有節點都完全連接

2.激活從輸入層流向輸出,無回環

3.輸入和輸出之間有一層(隱含層)

在大多數情況下,這種類型的網路使用反向傳播方法進行訓練。

【3】Radial Basis Network(RBF) RBF神經網路

 【3】RBF神經網路

RBF 神經網路實際上是 激活函數是徑向基函數 而非邏輯函數的FF前饋神經網路(FF)。兩者之間有什麼區別呢?

邏輯函數--- 將某個任意值映射到[0 ,... 1]范圍內來,回答「是或否」問題。適用於分類決策系統,但不適用於連續變數。

相反, 徑向基函數--- 能顯示「我們距離目標有多遠」。 這完美適用於函數逼近和機器控制(例如作為PID控制器的替代)。

簡而言之,RBF神經網路其實就是, 具有不同激活函數和應用方向的前饋網路 。

【4】Deep Feed Forword(DFF)深度前饋神經網路

【4】DFF深度前饋神經網路 

DFF深度前饋神經網路在90年代初期開啟了深度學習的潘多拉盒子。 這些依然是前饋神經網路,但有不止一個隱含層 。那麼,它到底有什麼特殊性?

在訓練傳統的前饋神經網路時,我們只向上一層傳遞了少量的誤差信息。由於堆疊更多的層次導致訓練時間的指數增長,使得深度前饋神經網路非常不實用。 直到00年代初,我們開發了一系列有效的訓練深度前饋神經網路的方法; 現在它們構成了現代機器學習系統的核心 ,能實現前饋神經網路的功能,但效果遠高於此。

【5】Recurrent Neural Network(RNN) 遞歸神經網路

【5】RNN遞歸神經網路 

RNN遞歸神經網路引入不同類型的神經元——遞歸神經元。這種類型的第一個網路被稱為約旦網路(Jordan Network),在網路中每個隱含神經元會收到它自己的在固定延遲(一次或多次迭代)後的輸出。除此之外,它與普通的模糊神經網路非常相似。

當然,它有許多變化 — 如傳遞狀態到輸入節點,可變延遲等,但主要思想保持不變。這種類型的神經網路主要被使用在上下文很重要的時候——即過去的迭代結果和樣本產生的決策會對當前產生影響。最常見的上下文的例子是文本——一個單詞只能在前面的單詞或句子的上下文中進行分析。

【6】Long/Short Term Memory (LSTM) 長短時記憶網路

【6】LSTM長短時記憶網路 

LSTM長短時記憶網路引入了一個存儲單元,一個特殊的單元,當數據有時間間隔(或滯後)時可以處理數據。遞歸神經網路可以通過「記住」前十個詞來處理文本,LSTM長短時記憶網路可以通過「記住」許多幀之前發生的事情處理視頻幀。 LSTM網路也廣泛用於寫作和語音識別。

存儲單元實際上由一些元素組成,稱為門,它們是遞歸性的,並控制信息如何被記住和遺忘。

【7】Gated Recurrent Unit (GRU)

 【7】GRU是具有不同門的LSTM

GRU是具有不同門的LSTM。

聽起來很簡單,但缺少輸出門可以更容易基於具體輸入重復多次相同的輸出,目前此模型在聲音(音樂)和語音合成中使用得最多。

實際上的組合雖然有點不同:但是所有的LSTM門都被組合成所謂的更新門(Update Gate),並且復位門(Reset Gate)與輸入密切相關。

它們比LSTM消耗資源少,但幾乎有相同的效果。

【8】Auto Encoder (AE) 自動編碼器

 【8】AE自動編碼器

Autoencoders自動編碼器用於分類,聚類和特徵壓縮。

當您訓練前饋(FF)神經網路進行分類時,您主要必須在Y類別中提供X個示例,並且期望Y個輸出單元格中的一個被激活。 這被稱為「監督學習」。

另一方面,自動編碼器可以在沒有監督的情況下進行訓練。它們的結構 - 當隱藏單元數量小於輸入單元數量(並且輸出單元數量等於輸入單元數)時,並且當自動編碼器被訓練時輸出盡可能接近輸入的方式,強制自動編碼器泛化數據並搜索常見模式。

【9】Variational AE (VAE)  變分自編碼器

 【9】VAE變分自編碼器

變分自編碼器,與一般自編碼器相比,它壓縮的是概率,而不是特徵。

盡管如此簡單的改變,但是一般自編碼器只能回答當「我們如何歸納數據?」的問題時,變分自編碼器回答了「兩件事情之間的聯系有多強大?我們應該在兩件事情之間分配誤差還是它們完全獨立的?」的問題。

【10】Denoising AE (DAE) 降噪自動編碼器

 【10】DAE降噪自動編碼器

雖然自動編碼器很酷,但它們有時找不到最魯棒的特徵,而只是適應輸入數據(實際上是過擬合的一個例子)。

降噪自動編碼器(DAE)在輸入單元上增加了一些雜訊 - 通過隨機位來改變數據,隨機切換輸入中的位,等等。通過這樣做,一個強制降噪自動編碼器從一個有點嘈雜的輸入重構輸出,使其更加通用,強制選擇更常見的特徵。

【11】Sparse AE (SAE) 稀疏自編碼器

【11】SAE稀疏自編碼器 

稀疏自編碼器(SAE)是另外一個有時候可以抽離出數據中一些隱藏分組樣試的自動編碼的形式。結構和AE是一樣的,但隱藏單元的數量大於輸入或輸出單元的數量。

【12】Markov Chain (MC) 馬爾科夫鏈

 【12】Markov Chain (MC) 馬爾科夫鏈

馬爾可夫鏈(Markov Chain, MC)是一個比較老的圖表概念了,它的每一個端點都存在一種可能性。過去,我們用它來搭建像「在單詞hello之後有0.0053%的概率會出現dear,有0.03551%的概率出現you」這樣的文本結構。

這些馬爾科夫鏈並不是典型的神經網路,它可以被用作基於概率的分類(像貝葉斯過濾),用於聚類(對某些類別而言),也被用作有限狀態機。

【13】Hopfield Network (HN) 霍普菲爾網路

【13】HN霍普菲爾網路 

霍普菲爾網路(HN)對一套有限的樣本進行訓練,所以它們用相同的樣本對已知樣本作出反應。

在訓練前,每一個樣本都作為輸入樣本,在訓練之中作為隱藏樣本,使用過之後被用作輸出樣本。

在HN試著重構受訓樣本的時候,他們可以用於給輸入值降噪和修復輸入。如果給出一半圖片或數列用來學習,它們可以反饋全部樣本。

【14】Boltzmann Machine (BM) 波爾滋曼機

【14】 BM 波爾滋曼機 

波爾滋曼機(BM)和HN非常相像,有些單元被標記為輸入同時也是隱藏單元。在隱藏單元更新其狀態時,輸入單元就變成了輸出單元。(在訓練時,BM和HN一個一個的更新單元,而非並行)。

這是第一個成功保留模擬退火方法的網路拓撲。

多層疊的波爾滋曼機可以用於所謂的深度信念網路,深度信念網路可以用作特徵檢測和抽取。

【15】Restricted BM (RBM) 限制型波爾滋曼機

【15】 RBM 限制型波爾滋曼機 

在結構上,限制型波爾滋曼機(RBM)和BM很相似,但由於受限RBM被允許像FF一樣用反向傳播來訓練(唯一的不同的是在反向傳播經過數據之前RBM會經過一次輸入層)。

【16】Deep Belief Network (DBN) 深度信念網路

【16】DBN 深度信念網路 

像之前提到的那樣,深度信念網路(DBN)實際上是許多波爾滋曼機(被VAE包圍)。他們能被連在一起(在一個神經網路訓練另一個的時候),並且可以用已經學習過的樣式來生成數據。

【17】Deep Convolutional Network (DCN) 深度卷積網路

【17】 DCN 深度卷積網路

當今,深度卷積網路(DCN)是人工神經網路之星。它具有卷積單元(或者池化層)和內核,每一種都用以不同目的。

卷積核事實上用來處理輸入的數據,池化層是用來簡化它們(大多數情況是用非線性方程,比如max),來減少不必要的特徵。

他們通常被用來做圖像識別,它們在圖片的一小部分上運行(大約20x20像素)。輸入窗口一個像素一個像素的沿著圖像滑動。然後數據流向卷積層,卷積層形成一個漏斗(壓縮被識別的特徵)。從圖像識別來講,第一層識別梯度,第二層識別線,第三層識別形狀,以此類推,直到特定的物體那一級。DFF通常被接在卷積層的末端方便未來的數據處理。

【18】Deconvolutional Network (DN) 去卷積網路

 【18】 DN 去卷積網路

去卷積網路(DN)是將DCN顛倒過來。DN能在獲取貓的圖片之後生成像(狗:0,蜥蜴:0,馬:0,貓:1)一樣的向量。DNC能在得到這個向量之後,能畫出一隻貓。

【19】Deep Convolutional Inverse Graphics Network (DCIGN) 深度卷積反轉圖像網路

【19】 DCIGN 深度卷積反轉圖像網路

深度卷積反轉圖像網路(DCIGN),長得像DCN和DN粘在一起,但也不完全是這樣。

事實上,它是一個自動編碼器,DCN和DN並不是作為兩個分開的網路,而是承載網路輸入和輸出的間隔區。大多數這種神經網路可以被用作圖像處理,並且可以處理他們以前沒有被訓練過的圖像。由於其抽象化的水平很高,這些網路可以用於將某個事物從一張圖片中移除,重畫,或者像大名鼎鼎的CycleGAN一樣將一匹馬換成一個斑馬。

【20】Generative Adversarial Network (GAN) 生成對抗網路

 【20】 GAN 生成對抗網路

生成對抗網路(GAN)代表了有生成器和分辨器組成的雙網路大家族。它們一直在相互傷害——生成器試著生成一些數據,而分辨器接收樣本數據後試著分辨出哪些是樣本,哪些是生成的。只要你能夠保持兩種神經網路訓練之間的平衡,在不斷的進化中,這種神經網路可以生成實際圖像。

【21】Liquid State Machine (LSM) 液體狀態機

 【21】 LSM 液體狀態機

液體狀態機(LSM)是一種稀疏的,激活函數被閾值代替了的(並不是全部相連的)神經網路。只有達到閾值的時候,單元格從連續的樣本和釋放出來的輸出中積累價值信息,並再次將內部的副本設為零。

這種想法來自於人腦,這些神經網路被廣泛的應用於計算機視覺,語音識別系統,但目前還沒有重大突破。

【22】Extreme  Learning Machine (ELM) 極端學習機

【22】ELM 極端學習機 

極端學習機(ELM)是通過產生稀疏的隨機連接的隱藏層來減少FF網路背後的復雜性。它們需要用到更少計算機的能量,實際的效率很大程度上取決於任務和數據。

【23】Echo State Network (ESN) 回聲狀態網路

【23】 ESN 回聲狀態網路

回聲狀態網路(ESN)是重復網路的細分種類。數據會經過輸入端,如果被監測到進行了多次迭代(請允許重復網路的特徵亂入一下),只有在隱藏層之間的權重會在此之後更新。

據我所知,除了多個理論基準之外,我不知道這種類型的有什麼實際應用。。。。。。。

【24】Deep Resial Network (DRN) 深度殘差網路

​【24】 DRN 深度殘差網路 

深度殘差網路(DRN)是有些輸入值的部分會傳遞到下一層。這一特點可以讓它可以做到很深的層級(達到300層),但事實上它們是一種沒有明確延時的RNN。

【25】Kohonen Network (KN) Kohonen神經網路

​ 【25】 Kohonen神經網路

Kohonen神經網路(KN)引入了「單元格距離」的特徵。大多數情況下用於分類,這種網路試著調整它們的單元格使其對某種特定的輸入作出最可能的反應。當一些單元格更新了, 離他們最近的單元格也會更新。

像SVM一樣,這些網路總被認為不是「真正」的神經網路。

【26】Support Vector Machine (SVM)

​【26】 SVM 支持向量機 

支持向量機(SVM)用於二元分類工作,無論這個網路處理多少維度或輸入,結果都會是「是」或「否」。

SVM不是所有情況下都被叫做神經網路。

【27】Neural Turing Machine (NTM) 神經圖靈機

​【27】NTM 神經圖靈機 

神經網路像是黑箱——我們可以訓練它們,得到結果,增強它們,但實際的決定路徑大多數我們都是不可見的。

神經圖靈機(NTM)就是在嘗試解決這個問題——它是一個提取出記憶單元之後的FF。一些作者也說它是一個抽象版的LSTM。

記憶是被內容編址的,這個網路可以基於現狀讀取記憶,編寫記憶,也代表了圖靈完備神經網路。

閱讀全文

與利用GRU網路的方法有哪些相關的資料

熱點內容
wifi每隔一會就會無網路 瀏覽:444
上海網萌網路科技有限公司怎麼樣 瀏覽:676
有線電視網路有沒有免費信號 瀏覽:635
小米無線網路平板 瀏覽:358
路由器怎麼設置網路基本參數 瀏覽:821
手機無法接收網路是啥情況 瀏覽:611
p2p網路電視軟體 瀏覽:4
服裝店鋪網路營銷可行性分析 瀏覽:159
手機短時不用為何會斷開網路 瀏覽:290
物流公司的物流網路規劃是什麼 瀏覽:683
2021貴州網路安全技能 瀏覽:182
手機連接筆記本電腦網路流量 瀏覽:603
怎麼設置網路類型 瀏覽:237
花茶網路營銷 瀏覽:360
網路層和數據連接層 瀏覽:895
杭州計算機網路服務推薦咨詢 瀏覽:336
移動網路ip刷新 瀏覽:272
中興v9如何設置網路 瀏覽:667
太原手機端網路推廣價格價位 瀏覽:600
為什麼wifi滿格還顯示網路不給力 瀏覽:317

友情鏈接