Skip to content

Latest commit

 

History

History
134 lines (98 loc) · 10.2 KB

nlp_language_model.md

File metadata and controls

134 lines (98 loc) · 10.2 KB

言語モデル


自然言語を科学で扱う試み

特徴量設計1:シソーラス、カウントと推論に基づいた設計で眺めてきたように、文章を計算機で処理する代表的なアプローチにカウントや推論がある。中でも 言語モデル (language model) は基礎として扱われ、形態素解析、構文解析、情報検索、感情情報処理など多くの実用モデルの基礎として取り組まれ、今なお研究がなされている。ここでは言語モデルが求められる背景と方法論、そして後で眺める分散表現への入り口までを外観していく。


文らしさを評価したい

  • Q: 以下に示す2つの文は、どちらがより文として自然だろうか?
    • 文1: the cat sat on the mat.
    • 文2: the cat the mat sat on.

上記の文例2つについて「読みやすい文」はどちらかと尋ねられたら文1と答える人が多いはずだ。このように答えるのは文1が いわゆる「SVOの文型」として書かれており、subject, verb, object に分解して文を読めるのに対し、文2はそもそも文型を判断すること自体が困難だからだ。つまり、ある規則に則って書かれているならば、その文は自然な文として評価できるだろう。

このことをより抽象化して考えたモデルが言語モデルと呼ばれている。厳密な言語モデルとは、離散シンボル $x \in X$ と、その x の時系列に並べたデータ $x = x_1 x_2 x_3 \cdot x_L$ について、その確率 $P(x)$ を与えるモデルのことを指す。先に上げた文1ならば「(ピリオドを単語の一種として扱うと)7単語からなる系列データ」であり、そのときの$P(文1)$とは「母集団(世の中にある全ての文集合)において文1が含まれる確率」と解釈できる。つまり、$P(文1) > P(文2)$ ならば「文1の方が文2よりも出現確率が多い=文1の方がより自然な文だろう」と見做すことができる。

文の自然さとして利用するのははあくまでも応用例の一つに過ぎない。言語モデルそのものは「離散シンボルxの時系列データ」として表現できるデータに対して適用できる。

例えば音声vから原文xを推定する際に $P(x_1|v), P(x_2|v),,,$ と比較することで妥当と思われる原文 $x_i$ を求めることが可能だ。なお、$P(x|v)$ を直接求めることは困難なので、ベイズの定理により算出する。

参考: [電子情報通信学会「知識ベース」, 2章 音声認識](https://www.ieice-hbkb.org/files/02/02gun_07hen_02.pdf)

文らしさを確率で推定する

$P(文1)$とは「母集団(世の中にある全ての文集合)において文1が含まれる確率」であることを述べた。この確率 $P(x)$ を求めるには、確率の連鎖則を使って式{eq}lm_baseのように計算する(確率を推定する)ことが多い。この方法を 最尤推定法(Maximum Likelihood Estimation; MLE) と呼ぶ。

:label: lm_base
P(the cat sat on the mat .) = P(the) \times
P(cat| the) \times
P(sat| the cat) \times
P(on| the cat sat) \times
P(the| the cat sat on) \times
P(mat| the cat sat on the) \times
P(.| the cat sat on the mat) \times

P(*x*) $ = $ \prod^{L}_{i=1} P(x_i|x_1, \cdot, x_{i-1})

ここで $x_1 \cdot x_{i-1}$ を自然言語処理の分野においては 文脈やコンテキスト(context)、もしくは履歴やヒストリ(history) と呼ぶ。すなわち言語モデルP(x)とは、与えられた文脈において次に来るシンボルを予測するモデルといえる。

モデル式{eq}`lm_base`の欠点(最尤推定法の欠点)は何だろうか?

```{dropdown} 回答例
- コーパスに似た文があったとしても、確率が0となることがあり得る。
  - 例えばコーパスに「the cat sat on the mat .」があるとしよう。ここで未知の文「the cat sat on the chair .」の確率を算出する場合、c(the cat sat on the)までは少なくとも1以上の値があるが、c(the cat sat on the chair)やc(the cat sat on the chair.)は0となる。すなわち、コーパスと一部でも異なる文に対しては「P(x)=0。文xは自然ではない」と回答してしまう。
- 未知語を含む文に対して確率が0となる。
  - c(未知語)=0のため、確率は0となってしまう。
  - このような状況は **ゼロ確率問題** と呼ばれている。今回のケースにおいてはスムージing(smoothing)と呼ばれる処理を行うことが多い。興味のある人は調べてみよう。
    - 参考: [情報検索のための確率的言語モデルに関する動向と課題](https://search.ieice.org/bin/summary.php?id=j93-d_3_157&category=D&year=2010&lang=J&abst=)
```

より扱いやすくするためにn-gramモデルの導入

未知の文に対して妥当な確率を求めることが出来ないモデルはあまりにも不自由過ぎる。加えて、式{eq}lm_baseを求めることができればそれに越したことはないが、任意の長さ(L=1〜N)文脈の確率を求めることはあまりにも膨大な計算が必要であり、現実的ではない。

そこで文脈の長さを制限するためにn-gramを導入し、近似する(条件を緩和する)ことを考えよう。すなわち、文1において1-gramを導入すると式{eq}lm_1gram、2-gramを導入すると式{eq}lm_2gramのように近似することになる。なお、n=2,3の場合は各々bi-gram, tri-gramとも呼称する。

:label: lm_1gram
P(the cat sat on the mat .) \approx P(the) \times
P(cat| the) \times
P(sat| cat) \times
P(on| sat) \times
P(the| on) \times
P(mat| the) \times
P(.| mat) \times
:label: lm_2gram
P(the cat sat on the mat .) \approx P(the) \times
P(cat| the) \times
P(sat| the cat) \times
P(on| cat sat) \times
P(the| sat on) \times
P(mat| on the) \times
P(.| the mat) \times

言語モデルにn-gramを導入して近似することを一般化すると、式{eq}lm_ngramとなる。このモデルはマルコフ過程やマルコフ連鎖とも呼ばれ、情報通信エントロピーの導入やデータ圧縮、GoogleのPageRank、音声認識、バイオインフォマティクスなど幅広く情報科学において用いられている。(出典はWikipedia参照)

?????文生成のような生成モデルとして利用する際には、文の開始と終わりを表す特殊単語をそれぞれ用意し、対応することが多い。例えば文の開始を <s> とするなら、式{eq}lm_1gramの最初の項 $P(the)$ は $P(the|)$ として

:label: lm_ngram
P(*x*) $ = $ \prod^{L}_{i=1} P(x_i|x_1, \cdot, x_{i-1})
$ \approx $ P(x_i|x_{i-n+1}, \cdot, x_{i-1})
マルコフ過程においては「未来の挙動は現在の値だけで決定される。過去の挙動とは無関係である」という強い前提条件があることに注意しよう。式{eq}`lm_ngram`における$x_i$が未来の挙動であり、文脈($x_{i-n+1}, \cdot, x_{i-1}$)が現在の値に相当する。それ以前の挙動には影響しないモデルとなっている。

カウント見積もりによるn-gram言語モデル

n-gram導入により確率を算出しやすくなったがそれでもなお真の確率(母集団に出現する確率)を求めることは困難であることから、代替案として大規模コーパスにおける出現数によりもっともらしい確率を求めることが多い。

:label: lm_ngram_count
P(x| the cat sat) = \frac{c(the cat sat x)}{c(the cat sat)}
P(x_i|context) \approx \frac{c(context, x_i)}{c(context)}
見積もり算出式は単純なカウント結果の割り算となるため、分母もしくは分子いずれかが0の場合に困ります。
- 分母が0、すなわち文脈がコーパス内で全く存在しない状況がでてきた場合には、更にざっくりとした近似に代替すると良いでしょう。例えば上記の例では文脈が the cat sat ですが、仮にこの文脈が存在しない場合には cat sat として1つ短い文脈で代替するとか。
- 分子が0となる場合、コーパスが十分大規模ならば$P(x_i|context)$をそのまま0とする、すなわちその文脈において直後に$x_i$が出現することはないものとして扱うのも良いでしょう。しかしながら可能性が0であると断定できるほどではない場合には十分小さな値となるように補正すると良いかもしれません。例えば分子に1を加えて計算すると、何かしら0ではない小さな確率を用意できるでしょう。

誤差に基づくモデル構築(機械学習的アプローチ)

これまで、P(x)を構築するためにn-gramを導入したカウント見積もりを眺めてきた。これとは異なる方法論として機械学習的アプローチも試みられている。代表的なアプローチの一つが Log-Linear Models(対数線形モデル) だ。線形と付いているが回帰ではない点に注意しよう。対数線形モデルにおいては問題を教師あり機械学習として定式化し、仮定した線形モデルにおける最適なパラメータを探索することで言語モデルの獲得を目指す。

まず、モデルへの入力と出力を明確にしておこう。基本的にはn-gramモデルにおける「コンテキストから$x_i$が生成される確率」と同じである。すなわち入力はコンテキストであり、出力は$x_i$が生成される確率だ。ただしその表現方法は大きく異なる。

コンテキストの表現方法


識別モデルの導入