人工智慧演算法綜述(二) RNN and LSTM

2022-01-15 16:19:28 字數 1937 閱讀 7503

rnn:迴圈神經網路 and lstm 長短期記憶網路

lstm就是乙個rnn網路,外部的結構是一樣的,主要是單元的內在結構不同。或者說lstm是為了讓rnn能夠更好的處理nlp(自然語言問題)做的一些內部改造。

我推薦這篇文章理解lstm :

可能會比我自己說的更好,我這裡就簡單說一下,不涉及太多技術細節。

我們先回顧一下基本的神經網路結構圖

整體結構就是 輸入層+n層隱層+輸出層。

資料的流向就是由左往右,輸入x1,x2,x3 會分發給隱層通過這些連線傳遞過去,然後在節點計算之後有乙個輸出,繼續分發給下一層。

那麼單獨拎乙個節點放大來看的話就是這樣的。

z就是某中間節點。  這就是標準的前饋神經網路的結構。

這種結構在處理某一類問題的時候非常無力,就是比方說當前的識別結果,需要依賴上一次的識別結果。

具體的場景就是自然語言的翻譯,翻譯需要結合上下文語境才能更精確的翻譯出來。而不能像某些機譯一樣,一句一句單獨翻譯。

那麼rnn 所謂的迴圈神經網路就是在這中間節點做了乙個改造。

這個改造就是,把中間節點的輸出拷貝乙份出來,然後混合著下一次的輸入再做一次計算(啟用函式)得出結果,反覆如是,直到沒有輸入。

那lstm跟這個rnn有什麼區別呢?

rnn當然也不是萬能的,其中也存在各種利弊。

然後有個缺陷,就是假如當前 t 結果依賴上一次 (就是  t -1) 的結果,這問題不大,那如果 依賴 t-2 或者更遠一點 t-10 的結果呢?

然後大家看回那個結構圖,h20 的結果如果依賴 x1  那麼中間的路途遙遠,原輸入經過了很多次計算才到h20 損耗非常大,變數更大。

而且需要依賴上下文語境的情況在自然語言處理中還普遍存在。所以……

噹噹當……

lstm應運而生,為了世界和平而生。

我們先看一下lstm跟常規的rnn區別。

主要是綠色塊裡面的變化,外部結構是一樣的。

這個內在結構長的很像電路板,可以把這個電路板分為3個部件。

分別是「遺忘門」 「輸入門」 「輸出門」

具體這個結構怎麼實現的這3個門這裡不細說,上面那個位址有詳細說明,愛看公式的童鞋可以移步。

這裡我概括性的講為啥要有遺忘門跟輸入門、輸出門

接我們剛才在rnn那裡講的,如果依賴的結果離的很遠,比如說t 依賴 t-10 的輸出結果。中間隔了一條銀河。

你想要t麼?先忘掉t-11 t-12…… 之前的所有資訊,然後輸入t-10,然後 忘掉 t-9 t-8 t-7 …… 然後把 t-10 的輸入 通過輸出門得出結果。

那麼遺忘門的攤開之後的引數就是 從t-12 到 t 就是:

t-11

t-10

t-9t-8

t-7t-6

t-5t-4

t-3t-2

t-1t-001

0000

0000

00輸入門就是:

t-11

t-10

t-9t-8

t-7t-6

t-5t-4

t-3t-2

t-1t-000

0000

0000

01rnn的訓練過程就是根據標識好的資料,訓練調整這些引數到符合這些資料的規律。

好了,rnn就講到這裡,感謝各位閱讀!

人工智慧演算法分類

人工智慧演算法大體上來說可以分類兩類 基於統計的機器學習演算法 machine learning 和深度學習演算法 deep learning 總的來說,在sklearn中機器學習演算法大概的分類如下 1 回歸演算法 2 分類演算法 3 聚類演算法 4 降維演算法 5 概率圖模型演算法 6 文字挖掘...

人工智慧演算法 猴子摘香蕉

只有簡單的狀態顯示 include iostream using namespace std void at char monkeyplace,char boxplace void state int on,int hb char goto char st,char lt void act char...

人工智慧演算法(一)進化演算法

我希望用這類文章,來盡可能通俗的解釋一些聽上去很 高大上 的人工智慧演算法,不僅可以幫助自己真正的理解,還能帶來更多的思考。目前想寫專家系統,神經網路,還有本篇進化演算法。不說大話,進入正題 相信大部分對人工智慧感興趣的人都聽說過進化演算法 遺傳演算法,基因演算法 一篇文章當然不可能把進化演算法的方...