Keras での RNN 入門

Kerasで学ぶ言語モデリングのためのRecurrent Neural Networks (RNNs)

David Cecchini

Data Scientist

Keras とは?

  • 高水準 API

  • TensorFlow 2 上で動作

  • 導入・利用が容易

$pip install tensorflow

迅速に実験可能:

from tensorflow import keras
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense
Kerasで学ぶ言語モデリングのためのRecurrent Neural Networks (RNNs)

keras.models

keras.models.Sequential

Keras の Sequential クラスの概略図。入力から出力まで層を順に追加するモデル。

keras.models.Model

Keras の Model クラスの概略図。複数入力・複数出力を持てるため、より複雑なアーキテクチャが可能。

Kerasで学ぶ言語モデリングのためのRecurrent Neural Networks (RNNs)

keras.layers

  1. LSTM
  2. GRU
  3. Dense
  4. Dropout
  5. Embedding
  6. Bidirectional
Kerasで学ぶ言語モデリングのためのRecurrent Neural Networks (RNNs)

keras.preprocessing

keras.preprocessing.sequence.pad_sequences(texts, maxlen=3)

テキストのパディング例。テキストが短い場合は先頭に「0」トークンを追加し、長い場合は末尾の語を切り捨てます。

Kerasで学ぶ言語モデリングのためのRecurrent Neural Networks (RNNs)

keras.datasets

便利なデータセット多数

  • IMDB 映画レビュー
  • Reuters ニュースワイヤ

ほか多数

一覧と使用例は Keras ドキュメント を参照

Kerasで学ぶ言語モデリングのためのRecurrent Neural Networks (RNNs)

モデルの作成

# Import required modules
from tensorflow import keras
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
# Instantiate the model class
model = Sequential()
# Add the layers
model.add(Dense(64, activation='relu', input_dim=100))
model.add(Dense(1, activation='sigmoid'))
# Compile the model
model.compile(optimizer='adam', loss='mean_squared_error', metrics=['accuracy'])
Kerasで学ぶ言語モデリングのためのRecurrent Neural Networks (RNNs)

モデルの学習

.fit() は学習用データでモデルを訓練します

model.fit(X_train, y_train, epochs=10, batch_size=32)
  1. epochs: 重み更新回数
  2. batch_size: 各ステップのデータ数
Kerasで学ぶ言語モデリングのためのRecurrent Neural Networks (RNNs)

モデルの評価と活用

モデルを評価:

model.evaluate(X_test, y_test)
[0.3916562925338745, 0.89324]

新しいデータで予測:

model.predict(new_data)
array([[0.91483957],[0.47130653]], dtype=float32)
Kerasで学ぶ言語モデリングのためのRecurrent Neural Networks (RNNs)

完全例: IMDB 感情分類

# Build and compile the model
model = Sequential()

model.add(Embedding(10000, 128)) model.add(LSTM(128, dropout=0.2)) model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# Training
model.fit(x_train, y_train, epochs=5)
# Evaluation
score, acc = model.evaluate(x_test, y_test)
Kerasで学ぶ言語モデリングのためのRecurrent Neural Networks (RNNs)

¡Vamos a practicar!

Kerasで学ぶ言語モデリングのためのRecurrent Neural Networks (RNNs)

Preparing Video For Download...