1.初めに
JDLA主催のE資格(2021#2)の受験も終わり、学習した内容、自分自身が引っかかったポイントを本記事にまとめた。
特に本記事では自然言語処理(NLP)をスコープにしている。
参考として、第一弾の画像処理を以下に記載する。
【E資格・深層学習】画像処理 重要なネットワーク(AlexNetなど)とその特徴
2.重要なネットワーク・手法
2- 1.ポイント
ー文法が曖昧。
ー単語列を確率モデルとする手法が主流。
ー文をナイーブに、そのまま素直に扱うと、高次元でスパースなデータになる。
ー上記を踏まえ、まずはニューラル言語モデル、すなわちRNNが最も成功し、その次にAttention機構が現れた。
2- 2.N-gram
n-gramとは異なる。
自然言語の単語の並びを確率モデルで表現したい時に使う概念。
Token: 文を区切る最小単位。単語、文字、byteなど。
仮説:ある単語の分布は、直前のN単語だけに依存すると仮定する。その場合、t番目の単語Xtの確率は
文全体、すなわち、X1, X2, X3, ・・・XTと単語が並ぶ確率は、
2-3. ニューラル言語モデル(RNNなど)を扱うにあたっての指標
もともと、言語モデルの目的は、
「ある文字列(単語列、文章)が与えられた時に、次に来る単語を予測する」
ことにある。
BLEU:
数ある指標の中で、もっとも重要な指標。
文を対象にしている。
正解の文(プロの翻訳家の作成した文章)と、生成された文(機械による翻訳文)の類似度を表している。
n-gramの一致度が基本。ライブラリなどで細かい算出基準が異なるので、詳細は都度確認。
perplexity:
BLEUは文を対象にしていることに対して、単語の評価指標に相当。以下の定義式のように、実質的にエントロピーと同等。
2-4. 単語埋め込み
単語を、数百次元の低レベル(!?)のベクトル表現をする。
2-5. Encode-Decode
2-6. simple RNN(Recurrent Neural Network)
-各時刻の予測値=softmax[線形関数(次の時刻の入力)]
-学習方法の一つに、教師強制がある。通常の誤差逆伝播法だと時間がかかるため、前時刻の正解データを使用。
2-7. LSTM
-学習対象のパラメータ=各入力に対する重み・バイアス、及び各ゲートを制御する重み・バイアス
-inputゲート・・・現在の入力をどれだけメモリに取り込むか。(メモリ=記憶セル)
-outputゲート・・・現在のメモリの値をどれだけ出力するか。
-forgetゲート・・・メモリの値を、次の時刻に向けてどれだけ保持するか。
すでに良記事があるため、記事を紹介。
(Qiita記事)LSTMネットワークの概要
2-8. GRU
-2つのゲート
-出力=内部状態(どういうことだっけ)
-パラメータの数を減らし、LSTMと同程度の性能を持つ。
-時刻t-1の情報を、
入力時:u(t)
出力時:1-u(t)
として利用。
-すでに良記事があるため、記事を紹介。
2-9. Bidirectional RNN
-すでに良記事があるため、記事を紹介。
解説1
2-10. エコーステートネットワーク
-学習が容易なパラメータに絞って学習を行い、短期記憶を残す。
-以下の学習は難しい。
--1ステップ前の出力を入力として写像する回帰重み(=時刻列情報の回帰重み)
--入力へ適用する重み
-スペクトル半径は「固有値の絶対値のmax」をとる。
2-11. Seq2Seq
エンコードした結果となる文脈ベクトルは固定長。そして、文脈ベクトルは特徴空間。
文脈C(Encoder Vector)は固定長。入力系列が長すぎると、うまくエンコードができない。
そして、”入力の長さ”と”出力の長さ”は異なっていて良い。
対策として、エンコーダの各ステップでの出力を直接参照できるモデルとして、Attention機構が提案されている。
2-12. word2vec
主に以下の2つの手法に分類される。
CBOW・・・周辺の単語から、ある単語を推測する。
skip-gram・・・ある単語から、周辺の単語を予測する。
どちらの手法も、入力層の重みWinと出力側の重みWoutをパラメータとしても持つ。
一般に、Winが単語埋め込み行列として埋め込まれる。
2-13. Attention機構
Transformer含め、別の記事にて解説する。
3. 工夫
3-1. Leaklyユニット
前時刻の出力を重み付けしたもの、及び現時刻の入力に重み付けしたものを、それぞれ入力として利用する。
-時刻t-1からの接続(出力)にα倍
-入力層からの接続(入力)に1-α倍
3-2. スキップ接続
追記予定。
3-3. 勾配クリッピング
勾配爆発の回避を目的とする。
3-4.誤差逆伝播法と教師強制
追記予定
3-5.長期依存性
長期(遠い過去)のデータの特徴を適切に維持・管理するために、主に3つのアプローチがある。
a)複数の時間スケールで動作するモデル・・・短期と長期で分離。
-スキップ接続
-Leaklyユニット
b)複数の時間スケールで構造化・・・短期と長期で分離
-接続の解除
c)ゲート付きRNN・・・上2つと異なり、性能が格段に向上。
-LSTM
-GRU
短期の依存性 -> (約10ステップ) -> 長期の依存性
4.まとめ
LSTMやGRUも入りそうだが、こちらは他の記事(時系列or系列データ)で説明したい。