第9章: RNN, CNN

80. ID番号への変換

問題51で構築した学習データ中の単語にユニークなID番号を付与したい.学習データ中で最も頻出する単語に1,2番目に頻出する単語に2,……といった方法で,学習データ中で2回以上出現する単語にID番号を付与せよ.そして,与えられた単語列に対して,ID番号の列を返す関数を実装せよ.ただし,出現頻度が2回未満の単語のID番号はすべて0とせよ.

81. RNNによる予測

ID番号で表現された単語列がある.ただし,は単語列の長さ,は単語のID番号のone-hot表記である(は単語の総数である).再帰型ニューラルネットワーク(RNN: Recurrent Neural Network)を用い,単語列からカテゴリを予測するモデルとして,次式を実装せよ.

ただし,は単語埋め込み(単語のone-hot表記から単語ベクトルに変換する関数),は時刻の隠れ状態ベクトル,は入力と前時刻の隠れ状態から次状態を計算するRNNユニット,は隠れ状態ベクトルからカテゴリを予測するための行列,はバイアス項である(はそれぞれ,単語埋め込みの次元数,隠れ状態ベクトルの次元数,ラベル数である).RNNユニットには様々な構成が考えられるが,典型例として次式が挙げられる.

ただし,はRNNユニットのパラメータ,は活性化関数(例えばやReLUなど)である.

なお,この問題ではパラメータの学習を行わず,ランダムに初期化されたパラメータでを計算するだけでよい.次元数などのハイパーパラメータは,など,適当な値に設定せよ(以降の問題でも同様である).

82. 確率的勾配降下法による学習

確率的勾配降下法(SGD: Stochastic Gradient Descent)を用いて,問題81で構築したモデルを学習せよ.訓練データ上の損失と正解率,評価データ上の損失と正解率を表示しながらモデルを学習し,適当な基準(例えば10エポックなど)で終了させよ.

83. ミニバッチ化・GPU上での学習

問題82のコードを改変し,事例ごとに損失・勾配を計算して学習を行えるようにせよ(の値は適当に選べ).また,GPU上で学習を実行せよ.

84. 単語ベクトルの導入

事前学習済みの単語ベクトル(例えば,Google Newsデータセット(約1,000億単語)での学習済み単語ベクトル)で単語埋め込みを初期化し,学習せよ.

85. 双方向RNN・多層化

順方向と逆方向のRNNの両方を用いて入力テキストをエンコードし,モデルを学習せよ.

ただし,はそれぞれ,順方向および逆方向のRNNで求めた時刻の隠れ状態ベクトル,は入力と次時刻の隠れ状態から前状態を計算するRNNユニット,は隠れ状態ベクトルからカテゴリを予測するための行列,はバイアス項である.また,はベクトルの連結を表す。

さらに,双方向RNNを多層化して実験せよ.

86. 畳み込みニューラルネットワーク (CNN)

ID番号で表現された単語列がある.ただし,は単語列の長さ,は単語のID番号のone-hot表記である(は単語の総数である).畳み込みニューラルネットワーク(CNN: Convolutional Neural Network)を用い,単語列からカテゴリを予測するモデルを実装せよ.

ただし,畳み込みニューラルネットワークの構成は以下の通りとする.

  • 単語埋め込みの次元数:
  • 畳み込みのフィルターのサイズ: 3 トークン
  • 畳み込みのストライド: 1 トークン
  • 畳み込みのパディング: あり
  • 畳み込み演算後の各時刻のベクトルの次元数:
  • 畳み込み演算後に最大値プーリング(max pooling)を適用し,入力文を次元の隠れベクトルで表現

すなわち,時刻の特徴ベクトルは次式で表される.

ただし,はCNNのパラメータ,は活性化関数(例えばやReLUなど),はベクトルの連結である.なお,行列の列数がになるのは,3個のトークンの単語埋め込みを連結したものに対して,線形変換を行うためである.

最大値プーリングでは,特徴ベクトルの次元毎に全時刻における最大値を取り,入力文書の特徴ベクトルを求める.でベクトル番目の次元の値を表すことにすると,最大値プーリングは次式で表される.

最後に,入力文書の特徴ベクトルに行列とバイアス項による線形変換とソフトマックス関数を適用し,カテゴリを予測する.

なお,この問題ではモデルの学習を行わず,ランダムに初期化された重み行列でを計算するだけでよい.

87. 確率的勾配降下法によるCNNの学習

確率的勾配降下法(SGD: Stochastic Gradient Descent)を用いて,問題86で構築したモデルを学習せよ.訓練データ上の損失と正解率,評価データ上の損失と正解率を表示しながらモデルを学習し,適当な基準(例えば10エポックなど)で終了させよ.

88. パラメータチューニング

問題85や問題87のコードを改変し,ニューラルネットワークの形状やハイパーパラメータを調整しながら,高性能なカテゴリ分類器を構築せよ.

89. 事前学習済み言語モデルからの転移学習

事前学習済み言語モデル(例えばBERTなど)を出発点として,ニュース記事見出しをカテゴリに分類するモデルを構築せよ.