🐒

Stanford NLP with Deep Learning Lecture3のまとめ

2023/03/28に公開

1.はじめに

引き続きStanford大学の公開講義を見て、自分が大事だと思ったことや後で見返すだろうなと思った点についてまとめていきます。
 今回のLecture3の内容としては、前半で基礎的な自然言語タスクに触れてその後、Deep Learningの肝の部分である勾配計算について触れていました。
 勾配計算についての部分はこの講義より詳しく教えている講義があるだろうし、連鎖率の計算例とかが多かったので軽くだけ触れていきます。
 ここ最近はLLMに関する話題がどこでもされていますが、これらに振り回されず将来も機械学習及び深層学習を職として続けていくために今の学習を頑張っていきたいものですね、、😅

2.NER(固有表現抽出:Named Entity Recognition)

たくさんある自然言語処理のタスクのうち、基本的なものである固有表現抽出について考えていきます。
 そもそも固有表現抽出とは、文章中の各単語を見た時に人名であったり、地名といった固有表現を他の単語を用いて分類するというタスクのことを指します。

例) The museum in Paris are amazing to see.
ここではParisが地名というカテゴリーに属する固有表現である。

ニューラルネットワークが用いられる前までは、人間の知識ベースで固有表現と結びつけて判断していました(辞書等を用いて)。しかしこの方法では固有表現のカテゴリーが重複している単語であったり、新語に対して弱いという弱点があります。
 そのためここでも単語のベクトル化とニューラルネットワークの手法を用いました。

3.簡単な二値分類ニューラルネットワーク

ニューラルネットワークを用いた簡易的なNERに対する手法として二値ロジスティック分類を用いた手法があります。
<アイデア>
近隣の単語を含むcontext windowを用いてcenter wordが固有表現か否かについて分類を行う。
これを全単語において行う。
先ほどの例文を用いて考えていきます。

ex) 'Paris'の分類(window size = 2)

"The mueseum in Paris are amazing to see."

Window sizeが2なので'Paris'から前後2単語のベクトルを用いて分類していきます。
よって用いるWindow内のベクトルは以下のようになります。

\mathbf{X}_{window} = \big\lbrack \mathbf{x}_{museum}, \mathbf{x}_{in}, \mathbf{x}_{Paris}, \mathbf{x}_{are}, \mathbf{x}_{amazing} \big\rbrack

この単語ベクトル集合を用いてロジスティック回帰を行うことで固有表現抽出を行っていきます。

3-1:二値分類器の中身

今回の例で言うと'Paris'に対して'Location(地名)'という固有表現のタグを付与できたら成功と言えます。よって固有表現の中でも'Location'に対して高スコアを出すように重みを調整した分類器を得ることがこの分類器の目標と言えます。
 今回考えていくモデルは通常の機械学習でよく用いられるロジスティック回帰に一層の隠れ層を導入したニューラルネットワークになります。(図1参照)
図1) 二層のロジスティック回帰モデル

3-2:勾配計算について

3-1で紹介したモデルについて、より最適なパラメータを導き出すためにパラメータの勾配を計算していきます。
 今回のモデルにおいても前稿で触れたSGD(確率的勾配降下法)を用いてパラメータの更新を行っていきます。
 またその時の損失はyにおけるシグモイド関数の確率となります。この損失がParisが固有表現locationとなるときに最小となるように更新していきます。
<損失>

J(\theta) = \sigma(s)

<パラメータの更新>

\theta^{new} = \theta^{old}- \alpha\nabla_{\theta}J(\theta)

この更新のける損失の偏微分の求め方は二通りあります。

  1. 手計算で順序通り求める
  2. Back Propagationアルゴリズムを用いる。
     ここではまず順序通りに損失の偏微分を求める手法について見ていきます。
     勾配の計算では行列計算を用いた手法がよく用いられます。行列計算には単なるベクトル計算やベクトル化していない状態での勾配計算と比較して以下のようなメリットがあります。
  • 多変量の微分計算が単変量の微分計算として扱うことができる
  • 上の変更に伴って計算速度の向上につながる

ただ、行列計算は直感的に理解することが難しいというデメリットがあります。しかし、それを考慮してもメリットの方が大きいのでよく用いられています。

3-3:逆伝播:Back Propagation

次に逆伝播:Back Propagationについて見ていきます。
図1でも示した通り、入力が予測である固有表現か否かについての出力に変換されるまで3ステップ(重みとバイアスを分けるなら4)通ることになります。(図2参照)
図2 Forward Propagation[1]より引用
 このモデルないの各種パラメータ(W, b, u)の調整を出力側からそれぞれの偏微分である勾配を用いて逆算的にパラメータの更新を行う手法を逆伝播:Back Propagationといいます。(図3参照)
図3 パラメータbにおける逆伝播

この逆伝播では偏微分の計算の手法である連鎖率の考え方を用いています。
<連鎖率>

\frac{\partial s}{\partial b} = \frac{\partial s}{\partial z} \cdot \frac{\partial z}{\partial b}

4.まとめ

今回はLecture3のまとめを作成しました。
 この講義はDeepLearningひいてはニューラルネットワークを学習する上で重要な勾配計算とパラメータの更新についての回でした。
 引き続き講義の要点まとめを作成していきたいと思います。

5.参考文献

[1]:Stanford CS224N NLP with Deep Learning | Winter 2021 | Lecture 3 - Backprop and Neural Networks

Discussion