RNN的特別之處在於它用在時間序列上的機器學習,也就是它不僅僅考慮當下情況去做預測,還會考慮過去的情形進行下一階段預測的考量,可以用在像是股票預測、天氣預測、NLP(自然語言處理)等機器學習。
但是隨著時間序列的拉長,一般的RNN會遇到梯度消失的問題,導致長時間的資訊難以處理,因此而衍生出了像是LSTM(長短期記憶)、GRU(Gated Recurrent Unit)等補強缺點的神經網路。
今天會先著重介紹基本款的RNN。RNN與先前介紹過的神經網路最大的不同之處就在於它的先後順序後影響著叫後方節點的運作。我們從下方圖可以看見輸入(Input)進入輸入層(Input Layer)過後,會與權重U相乘過後進入隱藏層(Hidden Layer)。資料在進入到隱藏層過後,會與權重W相乘得出結果(Output),另外會將一份乘上權重V到下一階段的隱藏層去影響計算,這也是為什麼先後順序會影響RNN運作的原因。
這麼講可能有點抽象,有些讀者不太好理解,因此我們來舉個簡單的例子。
A: 我喜歡運動,所以我要去打球。
B: 我不喜歡運動,所以我要去看書。
從上方A和B的發言,從人類的角度來看可以很好地理解,但是從電腦的角度來看死乎就不是這麼簡單了。因此才發展出了RNN這種會將先前數據傳遞到後方進行計算的神經網路。在經過訓練過後,只要電腦看到『我喜歡運動』,他可能就可以推測出『我要去打球』;同理,看見『我不喜歡運動』,就推測出『我要去看書』。
透過上述的例子來看,是不是對於RNN的運作原理以及流程有些許更加瞭解了呢?