深層学習による自然言語処理 輪読会#1 資料
by
Yoichi Tokita
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
深層学習による⾃然⾔語 処理 輪読会 #1 2022/02/24 @yoichi_t
Slide 2
Slide 2 text
⾃⼰紹介 • tokita(@yoichi_t) • 所属:株式会社Glia Computing (https://www.glia-computing.com/) • 2018年8⽉に設⽴(Co-Founder) • 機械学習/データ分析のPoC、導⼊⽀援、コンサル • 過去 • 広告会社で推薦システムの開発をやっていたり、警備会社で⼈物⾏動 の研究をしてました
Slide 3
Slide 3 text
⾃⼰紹介 • tokita(@yoichi_t) • チョコボールの秘密を解明するために、⽇々データを収集&解析 • その他の活動はこちら チョコボール 統計
Slide 4
Slide 4 text
書籍の構成 • 1章 ⾃然⾔語処理のアプローチ • ⾃然⾔語処理(NLP)の難しさ、深 層学習への期待 • 2章 ニューラルネットの基礎 • モデル構造、損失関数(尤度)、最 適化法(勾配法)、誤差逆伝播法 の基礎 • 3章 ⾃然⾔語処理における深層 学習の基礎 • ⾔語モデルとは何か、分散表現 (word2vec)、系列変換 (seq2seq) • 4章 ⾔語処理特有の深層学習の 発展 • Attention機構、記憶ネットワーク、 ⾼速化 • 5章 応⽤ • 応⽤モデルの紹介と課題の整理: 翻訳、要約、対話、質問応答 • 6章 汎化性能を向上させる技術 • 汎化誤差を低減させる技術 • 7章 実装 • 実装上の⼯夫、効率的な計算⽅法
Slide 5
Slide 5 text
1章 ⾃然⾔語処理のアプローチ • 1.1 伝統的な⾃然⾔語処理 • 応⽤タスクを部分問題に分割して、それらを組み合わせる • 1.2 深層学習への期待 • 応⽤タスクを直接ニューラルネットで解く • 1.3 テキストデータの特徴 • 1.4 他分野への広がり
Slide 6
Slide 6 text
1.1 伝統的な⾃然⾔語処理 • 深層学習以前の⾔語処理 • 応⽤タスクを複数の部分問題に分割。汎⽤的な部分問題(⾔語解析タ スク)を組み合わせて所望のタスクを解く。 • 応⽤タスク:翻訳、⽂書分類など • 部分問題:品詞タグ付け、単語分割、構⽂解析など (p.2参照) • 課題 • 各⾔語解析タスクが部分問題を解くのに最適化されており、応⽤タス クを解くために全体を最適化させるのが難しい • 各⾔語解析タスクの定義や特性をよく把握しておかなければ、使いこ なすのが難しい
Slide 7
Slide 7 text
1.2 深層学習への期待 • 応⽤タスクを直接ニューラルネットで解くアプローチに注⽬ • 応⽤タスクを解くためだけに最適化されている • 部分問題の組み合わせ、部分問題への深い理解などが不要 • 訓練データを⽐較的容易に⼤量に集められる • 応⽤タスク(翻訳など)のデータは、⼈の⾃然な活動で⽣産される • 部分問題は、部分問題⽤に設計者がデータを作る必要がある テキストp.4 図1.1
Slide 8
Slide 8 text
1.2 深層学習への期待 • 懸念点として「ブラックボックス化」が挙げられる • 部分問題へ分割すると、途中の推論状況が追いやすい • ただし、部分問題の修正は他の影響を踏まえる必要があり難しい • 結局、ブラックボックス的に応⽤タスクの出⼒だけを確認することが多い(⾮専 ⾨家)
Slide 9
Slide 9 text
1.3 テキストデータの特徴 • 単語:NLPでの⼀般的な処理単位。 • ⽂:単語(記号)が⼀つ以上連なったデータ。 • ⽂、単語の分割については扱わない • NLPで扱うデータ • 「可変⻑」の「記号列」(詳細は3章) • 1.4 他分野への広がり • 可変⻑の記号列を扱う問題にNLPの技術が応⽤できる • 購買履歴からの商品推薦 • 分⼦構造を記号列として、創薬につなげる研究
Slide 10
Slide 10 text
2章 ニューラルネットの基礎 • 2.1 教師あり学習 • 2.2 順伝播型ニューラルネット • 2.3 活性化関数 • 2.4 勾配法 • 2.5 誤差逆伝播法 • 2.6 再帰ニューラルネット • 2.7 ゲート付き再帰ニューラルネット • 2.8 ⽊構造再帰ニューラルネット • 2.9 畳み込みニューラルネット
Slide 11
Slide 11 text
2.1 教師あり学習 • ニューラルネットは関数を学習するためのモデルの⼀つ • パラメータ⾏列Wと特徴ベクトルxの積(2.2節) • データDをうまく表現するWを推論する問題 ⼊⼒変数xと出⼒変数yが与えられ、関数f(x|W)の出⼒とy の誤差が⼩さくなるWを推論する:教師あり学習 損失関数 ←これを⼩さくすることが⽬的 (最適化問題)
Slide 12
Slide 12 text
2.1 教師あり学習 • 損失関数:最適化の度合いを測るための関数(設計要素) • 交差エントロピー(cross-entropy loss) • ヒンジ損失 :ニューラルネットの出⼒ ニューラルネットの出⼒の確率化→softmax関数 ⽬的変数次元の確率が⾼ければ⼤きい値 (これにマイナスがかかる) 正解次元を除いて最⼤の出⼒ 正解次元の出⼒とそれ以外が離れるほど値が⼩さくなる (マージン最⼤化を狙う)
Slide 13
Slide 13 text
交差エントロピーの導出 • 多クラス分類問題でよく使われる • 単語列𝑦!:#$! が与えられた場合の𝑦# の予測は、語彙の中でどの単語を選 択するべきかの分類問題となる • 単語𝑦#,& の確率モデルとしてカテゴリ分布を設定したものとみなせる (2値分類ならベルヌーイ分布=ロジスティック回帰) • ニューラルネットワークの出⼒層の活性化関数にソフトマックス関数 (式2.5)を設定すると交差エントロピーが導出できる • 次⾴
Slide 14
Slide 14 text
交差エントロピーの導出 • 損失関数は確率モデルとして⾒ると、負の対数尤度と⼀致
Slide 15
Slide 15 text
2.2 順伝播型ニューラルネット • ニューラルネットはパラメータ⾏列と特徴ベクトルとの積 • 特徴ベクトルとパラメータ⾏列の積で特徴抽出する(隠れ状態) • 多層ニューラルネットは特徴抽出を多数繰り返したもの p.13, 図2.1 活性化関数 パラメータ⾏列 特徴ベクトル バイアス 最終層だけを⾒ると、多項ロジスティック回帰と等価。 特徴抽出(隠れ状態への変換)が深層学習の表現⼒のポイント。
Slide 16
Slide 16 text
2.3 活性化関数 • ニューラルネットの最終層以外の各層の出⼒には⾮線形な活性 化関数が必要 • 恒等写像などの線形関数にすると、前後の層が全く等価な⼀つの層で 表現できる(p.16, 式2.15)
Slide 17
Slide 17 text
よく使われる活性化関数 • シグモイド関数 • 双曲線正接関数 • ReLU関数
Slide 18
Slide 18 text
2.4 勾配法 • 損失関数の最⼩化が⽬的→勾配法がよく⽤いられる • 勾配法により損失関数を最⼩化するパラメータθを推定 p.17, 式2.17, 図2.3 最急降下法 確率的降下法 - 全データで勾配を計算 - 1回の評価に時間がかかりすぎることがある - ミニバッチ分のデータだけを使って勾配を計算 - 雑にでも速く何度もパラメータを更新 - 偏微分の分散が⼤きいと収束が遅いので注意
Slide 19
Slide 19 text
2.5 誤差逆伝播法 • 勾配法を利⽤するためにはニューラルネットの⽬的関数をパラ メータについて偏微分する必要がある • ニューラルネットは合成関数と捉えられる→合成関数の微分 導関数の積で機械的に表現できる ⼆つのニューラルネットの和のような複雑なモデルも同様に表現できる(p.21)
Slide 20
Slide 20 text
2.5 誤差逆伝播法 • 損失関数も合成関数として表現でき、偏微分の連鎖律を使って 同様に計算できる(式2.29) • 例えば2層のネットワークの場合、各層のパラメータ𝑊'に関しての勾 配は以下のように計算できる 損失関数の微分から上位の層に向かって 誤差を伝播→誤差逆伝播
Slide 21
Slide 21 text
勾配消失問題 • 層が深くなると、上位の層の勾配計算で数値計算状の問題が⽣ じることがある • ショートカットの導⼊ パラメータの積のため、計算が不安定にな ることがある ⼩さい値→勾配が0に収束 ⼤きい値→勾配が発散 https://deepsquare.jp/2020/04/resnet-densenet/ wが⼩さい値でも1に近い値になるため、 勾配消失が防げる (勾配爆発は防げない)
Slide 22
Slide 22 text
2.6 再帰ニューラルネット • RNN: 可変⻑の⼊⼒列を扱うネットワーク • 隠れ状態ℎ# (')が過去の状態を保持する ⼊⼒する特徴ベクトルが拡張されたものと理解すると順伝播型 ネットワークと変わらずに計算ができる(式2.37)。 (パラメータ⾏列との積に活性化関数がかかるという構造) 出⼒も同様(式2.39)。
Slide 23
Slide 23 text
双⽅向再帰ニューラルネット • 各計算タイミングで過去の情報だけを考慮するよりも、未来の 情報も併せて考慮できると便利なケースが考えられる • 翻訳など品詞の順序が⾔語によって変わる場合など • 1⽅向の⼊⼒だけでなく、その逆⽅向の特徴を組み合わせるこ とで、各計算タイミングで全ての系列の情報を考慮できる • →双⽅向再帰ニューラルネット(式2.40, 2.41) p.28, 図2.8
Slide 24
Slide 24 text
2.7 ゲート付き再帰ニューラルネット • RNNは⻑期間の情報を保持しておくことが難しい • 離れるほど勾配消失の問題が出てくる • ゲートという仕組みを導⼊(ショートカットの⼀般化) ショートカットの量をゲートで調整する 構造。 ゲート⾃体も隠れ状態から計算(予測)。
Slide 25
Slide 25 text
2.7 ゲート付き再帰ニューラルネット • ゲート付き再帰ニューラルネット(式2.56、導出はp.34) ゲートの活性化関数にシグモイド関数などで(0,1)の範囲 → 過去に遡るほど重みは減少していく ゲート⾃体、隠れ状態から予測するので、必要に応じて過 去の状態を忘却(⼤きく減衰)させることができる(これ は学習によって塩梅を調整する)
Slide 26
Slide 26 text
⻑短期記憶:LSTM • ゲート付き再帰ニューラルネットの代表的なモデル • セル(cell)という隠れ状態を新たに⽤意。セルと3つのゲートを使って 隠れ状態ℎ# (')を⽣成。 • セルの状態𝑐! (#)を出⼒ゲート𝑜! (#)で調整して隠れ状態ℎ! (#)として出⼒ • セルの状態𝑐! (#)は過去のセルの情報𝑐!%& (#) を忘却ゲート𝑓! (#)で減衰させ、⼊⼒ゲート 𝑖! (#)で減衰させた通常のRNNの隠れ状態& ℎ! (#)を⾜し合わせて更新する • 3つのゲートと& ℎ! (#)はそれぞれの パラメータ⾏列と状態 ℎ! #%& , ℎ!%& # ' の積で計算される(式2.58) 依存関係の⾼い情報の場合に出⼒を出せるよう になる(活性化させる) - 適切なタイミングで過去の状態をリセット (過去を忘れる) - 注⽬すべき⼊⼒かどうかを判定する
Slide 27
Slide 27 text
ゲート付き回帰ユニット • LSTMで使ったセル(cell)を使わずに状態を更新していく • LSTMよりもゲートが少なく、学習すべきパラメータ数が少ない • 更新ゲート𝑧# (')の割合で過去の隠れ状態ℎ#$! (') と候補状態% ℎ# (')を混ぜる • 候補状態% ℎ# (')はリセットゲート𝑟# (')の値で過去の状態ℎ#$! (') を減衰させ、 RNNの状態を計算する 過去の状態をどのくらい残すか(どの程度忘れ るか)を調整 過去の状態からの更新量を調整
Slide 28
Slide 28 text
2.9 畳み込みニューラルネット • 時間的(順番的に)に周辺の状態の重み付き和で時刻tの状態を 計算 窓幅Cの状態の重み付き和。窓の各位置の重み は共通(フィルタをスライドさせる)。 窓幅C
Slide 29
Slide 29 text
畳み込みニューラルネットの機能 • パディング • 隠れ状態の次元数を減らさないように、⼊⼒系列の前後に空の状態を 追加する(p39,図2.13) • プーリング • 特徴量を集約する。これで、状態の局所的なズレに頑健になる。 (p41,図2.14) • ストライド • 全ての状態を利⽤せず、幅sを⾶ばす • ダウンサンプリング
Slide 30
Slide 30 text
まとめ • ニューラルネットは⾏列積 • 層の繋がり、複数のネットワークの結合は合成関数として表現できる • 勾配は各層の導関数の積で機械的に計算できる • ニューラルネットの基礎的なモデルの構造を駆け⾜で眺めた • ⾃然⾔語処理を念頭に、記号列を取り扱うためのモデル • RNN, LSTM, GRU, CNN • 時間的に前後の状態をどのように活⽤するかが⼯夫のポイント