文章を読む方向は一方向ですが、新しい情報を受け取ると、脳はすぐに前のテキストの内容に戻ることができます。人間は、最良の順序で提示されていない情報を処理できます。モデルが入力間を行ったり来たりできるようにできれば素晴らしいと思います。これが双方向リカレントニューラルネットワークの出番です。
基本的な考え方:図に示すように、2つのRNNを並べて、通常の一方向RNNの入力と同じように、入力を一方のRNNに渡し、同じ入力を逆からもう一方のRNNに渡します。 、各瞬間で、これら2つのネットワークの出力は、他のネットワークの対応する(同じ入力項)モーメントの入力として一緒にスプライスされます。入力の最後の瞬間に出力を取得した後、それを逆ネットワークの最初の瞬間に同じ入力項によって生成された出力と連結します。
利点:
テキストを予測して分類できるだけでなく、言語自体とその使用方法もモデル化できます。これにより、モデルが以前に見たテキストを模倣するだけでなく、まったく新しい文を生成できます。
コード:
from keras.models import Sequential
from keras.layers import SimpleRNN
from keras.layers.wrappers import Bidirectional
num_neurons = 10
maxlen = 100
embedding_dims = 300
model = Sequential()
model.add(Bidirectional(SimpleRNN(
num_neurons, return_sequences=True), input_shape=(maxlen, embedding_dims)))