Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

言語モデル

文章が生成される確率を推定したい。 もっともらしい(確率的にありえる)文章を生成したい。

P(昨日は雨が降りました)>P(昨日は飴が降りました)P(昨日は雨が降りました) > P(昨日は飴が降りました)

文章をトークンに置き換えて考えると、文章の確率ではなくトークンの同時確率として扱うことができる

P(昨日,,,,降り,ました)P(昨日, は, 雨, が, 降り, ました)

記号にすると、ある文章SSをトークン化したのを(w1,w2,,wn)(w_1, w_2, \cdots, w_n)とすると、

P(S)=P(w1,w2,,wn)P(S)=P(w_1, w_2, \cdots, w_n)

を求めたいということになる。これは条件付き確率の積として表せる

P(w1,w2,,wn)=P(w1)×P(w2w1)×P(w3w1,w2)×=i=1np(wici)\begin{align} P(w_1, w_2, \cdots, w_n) &= P(w_1) \times P(w_2|w_1) \times P(w_3|w_1, w_2) \times \cdots\\ &= \prod_{i=1}^n p(w_i|\boldsymbol{c}_i) \end{align}

ここでci\boldsymbol{c}_iwiw_iより前のトークン列ci=(w1,w2,,wn)\boldsymbol{c}_i=(w_1,w_2,\cdots,w_n)で、文脈(context)と呼ばれる

言語モデルの位置づけと活用

この言語モデルの考え方がNLPではベースとなっている。

この派生で、DNNを使うword2vecがあったり(word2vecはcontextがwiw_iの前後n個という感じでやや違うが)、

「contextは時系列的な関係がある」ということで系列性を扱えるRNNやLSTMを使う流れが生まれたり、

「RNNやLSTMは勾配消失の問題がある」ということでTransformerを使ってBERTやGPTを使ったり

「もっと大規模な表現力の高いモデルに」となりLLMに派生していった