自然言語AI超簡単入門 １

# 自然言語入門
## 単語の意味はどうやって把握しているのか？
自然言語の意味をコンピューターが把握するのはとても困難です。例えば同じ単語でも別の意味を持つ場合「多義語」もあれば別の単語が同じ意味をもつ「同義語」、「途中で言い換えられる」ことで把握しにくいなどがあるためです。例えば


- 多義語の例：「ごはん」は、文脈により「ライス」を意味することもあれば、「食事」を意味することもあります。
- 同義語の例：「速い」、「早い」、「急いで」は、似たような状況で使われ、同じような意味を持つことがあります。
- 言葉が途中で言い換えられる例：「これは赤いりんごです。それは美味しそうです。」という文では、「それ」は前の文で言及された「りんご」を指しています。

これらの問題を解決するために、自然言語処理の技術は、単語の意味を理解するだけでなく、文脈全体を理解し、それぞれの単語がどのように他の単語と関連しているかを把握することを目指しています。これにより、多義語や同義語の問題をより効果的に対処し、より正確な解釈を可能にしています。



では、まず単語の意味をどのように把握しているかを考えてみましょう。

## 文脈は周辺の（単語やセンテンスの）分布によって決まる 「分布的意味論」
自然言語処理(Natural Language Processing, NLP)において、単語の意味やコンテキストを把握するために、その単語がどのような周辺単語と一緒に現れるか、その単語の「分布」を調べるというアプローチがあります。このアプローチは「分布仮説」または「分布的意味論」と呼ばれ、言語学者のJ.R.ファースによって提唱されました。これに基づいて「単語の意味は、その使用環境によって決まる」とされています。

具体的には、ある単語が他のどの単語と一緒にどのくらい頻繁に現れるかを見て、その単語がどのようなコンテキストで使われるかを理解しようとするのです。例えば、「銀行」の単語が「お金」、「預金」、「ローン」などの単語と頻繁に一緒に使われることから、「銀行」が金融に関連するコンテキストで使われることが理解できます。




### 同一単語で別の意味合いを持つ事例

同じ単語でも、その周辺の単語によって意味が変わることがあります。それは単語が持つ多義性から来ています。日本語の「ごはん」を例に取りましょう。

- 「かまどで炊いたごはんが美味しい。」
- 「今日のごはんは何にしようかな。」
これらの2つの文では、「ごはん」の意味が変わっています。

最初の文では、「ご飯」は特定の食事、米から作られた食べ物を指しています。この文脈では、「かまどで炊いた」という周辺の単語から、「ご飯」が具体的な料理を指しています。

一方、二番目の文では、「ご飯」は一日の食事（朝食、昼食、夕食）を指しています。この文脈では、「今日の」という周辺の単語から、この「ご飯」が一日の食事を指しています。

このように、同じ単語でも周辺の単語によってその意味は変わります。自然言語処理では、このような文脈を正確に把握することが重要になります。


### 別単語でほぼ同じ意味合いを持つ事例

今度は別の単語でも周辺の単語が同じ場合にほぼ同じ意味としてとらえる例を考えてみましょう。

- 「昨日の昼、ラーメンを食べにラーメン屋山一に行きました。」
- 「昨日の昼、ごはんを食べにラーメン屋山一に行きました。」

この例では、「ラーメン」も「ごはん」も「食べにラーメン屋山一に行きました」という同じコンテキストの中に存在しています。そのため、このだけの文脈では、それぞれが「食事」という一般的な意味を持つ食事の一部として解釈されます。これが同義語や類義語と呼ばれるものになります。

この原理は、NLPのモデル、特に単語埋め込みモデル（Word2Vec、GloVeなど）やトランスフォーマモデル（BERT、GPTなど）の設計に大きな影響を与えています。これらのモデルは大量のテキストデータから単語やフレーズのパターンを学習し、単語の間の関係性を数値ベクトルとしてエンコードします。これにより、単語の意味や文脈を理解することが可能になります。

ところで、この場合「ラーメン」に関する話が事前にあった場合、前者はもう一つ別の意味も持ちます。食事にラーメンを取ったということをあえて強調しておきたいという意図です。そこで今度は別の手法でコンピューターはこのニュアンスを把握します。

## 長期記憶・短期記憶

自然言語処理（NLP）において、短期記憶、つまり直前の文脈を捉えることは、より高度な理解と精度を実現するために重要です。これは特に会話型のタスクや、物語の理解など、時間的な連続性が求められるタスクにおいて重要です。

そのために、リカレントニューラルネットワーク（RNN）やその派生形のLSTM（Long Short-Term Memory）やGRU（Gated Recurrent Unit）などのモデルが使用されます。これらのモデルは、情報を時間を通じて伝播させることで、過去の文脈を現在の解釈に役立てます。

例えば、以下のような会話を考えてみましょう。

A: 「昨日の昼、ラーメンを食べにラーメン屋山一に行きました。」
B: 「それはどうでしたか？」
A: 「美味しかったですよ。特にスープが絶品でした。」
この会話では、「それ」や「美味しかったですよ」、「特にスープが絶品でした」という発言は、直前の「ラーメンを食べにラーメン屋山一に行きました」という文脈を理解して初めて意味を成します。RNNやLSTM、GRUなどのモデルは、このような文脈を記憶して、それに基づいて次の単語や文を生成します。

しかし、これらのモデルは長いシーケンスを扱う際に困難を伴うことがあります。というのも、情報が時間を通じて伝播する際に、情報が徐々に失われてしまう問題（勾配消失問題）が発生するためです。

そのため、より長い文脈を効果的に扱うために、トランスフォーマーアーキテクチャが開発されました。トランスフォーマーは、アテンションメカニズムという新たな技術を導入しました。

### アテンションメカニズム
アテンションメカニズムは、自然言語処理において特定の情報に「注目」する能力を提供します。これにより、モデルは入力の一部に重点を置くことができ、特定の情報が重要であると判断した場合にその情報を強調することができます。

アテンションメカニズムは、自然言語処理の一部として使用され、特定の単語やフレーズが文中の他の部分とどのように関連しているかをモデルが理解するのを助けます。これは、特定の単語が他の単語とどの程度関連しているかの「重み」を計算することで行われます。

以下に示す二つの例文で説明します。

- 「私は海に行った、山にも行った。」
- 「私は海に行った、とてもきれいだった。」
これらの例文でアテンションメカニズムがどのように働くか見てみましょう。

例文1では、「私」、「海」、「行った」、「山」、「も」、「行った」という単語が存在します。アテンションメカニズムは各単語が他の単語とどのように関連しているかを評価します。「私」は「行った」のが「海」、「山」と強く関連強しています。つまり「私が行った場所」が中心テーマになっています。

例文2では、「私」、「海」、「行った」、「とても」、「きれいだった」という単語が存在します。「海」は「行った」や「私」に強く関連し、「きれいだった」にも関連します。「海」に対してどうしたのか、あるいはどうだったのかという「海」が中心テーマになっています。


要するにこれらの関連性はアテンションの「重み」を形成し、それぞれの単語が文全体の意味にどの程度影響を与えるかを決定しています。その結果、モデルは文全体の意味をより正確に理解し、より適切な応答や予測を生成できます。

これにより、例えば「私は海に行った、山にも行った。」という文において、「行った」が「海」や「山」といった単語に高いアテンションスコアを付けることで、これらの単語が行動の対象であることを理解します。

このアテンションメカニズムは、特にトランスフォーマーベースのモデル（例えば、GPTやBERTなど）において重要な役割を果たします。これらのモデルでは、各単語がその文脈全体に「注目」することで、より豊かな文脈理解を実現しています。


このような機能により、トランスフォーマーベースのモデルは、単語の周囲の単語の分布からコンテキストを把握し、それを元に長期的な文脈を理解し、さらに特定の情報に注目することで、自然言語の理解と生成を行うことができます。

### GPTの基本原理（＝続きを予測する）
GPT（Generative Pretrained Transformer）は、上述したトランスフォーマーベースのモデルの一つです。GPTは大規模なテキストデータから自動的に学習し、その後様々なタスクに対してファインチューニングすることが可能です。

GPTの基本的な動作原理は、与えられた単語列に続く単語を予測することです。つまり、ある単語の後に最も確率が高いと予測される単語を選びます。この予測は、単語の周囲の単語の分布からコンテキストを把握し（単語の分布確率）、それに続く単語を予測することで行われます。

また、GPTはアテンションメカニズムを用いて、入力の全範囲をカバーし、特定の情報に注目します。これにより、単語間の関連性や長距離依存性を捉え、より複雑な文脈を理解することが可能となります。

組み合わさることで、GPTは非常に高度な自然言語理解と生成能力を持つモデルとなります。

例えば、「昨日の昼、ラーメンを食べにラーメン屋山一に行きました。そのラーメンは」というフレーズがあったとき、GPTは「そのラーメンは」という部分を受けて、「美味しかった」とか「辛かった」などといった最も適切な単語やフレーズを生成します。そしてこの予測は、単語の周囲の単語の分布（「昨日の昼」、「ラーメンを食べに」、「ラーメン屋山一に行きました」など）と、その長期的な文脈（過去の会話や物語全体の流れなど）を理解した上で行われます。

さらに、GPTはアテンションメカニズムを用いて、特定の単語やフレーズ（この場合、「ラーメン」や「ラーメン屋山一」など）に注目し、それらが持つ情報を強調します。これにより、単語やフレーズの間の複雑な関連性を捉え、より豊かな文脈理解と言語生成を実現します。

このように、GPTは単語の周囲の単語の分布からコンテキストを把握し、長期的な文脈を理解し、特定の情報に注目することで、高度な自然言語理解と生成を実現します。具体的には、与えられた単語やフレーズに対して、最も確率的に続く単語を生成します。そのため、GPTは質問応答、文章の生成、文章の要約、翻訳など、様々なタスクに適用することが可能です。

このメカニズムがGPTが自然言語処理の分野で非常に強力なモデルである理由でもあります。


続く
https://qiita.com/bonten999/items/eae7f53f138879e72a8d