生成AIの基盤モデルについて簡単まとめ

生成AIの基盤モデルの種類や、モデルの最適化についてのまとめ

## 基盤モデル
生成AIの多くは、インターネット上の大量のデータで既にトレーニングされたモデルが基になっている。このようなモデルを**基盤モデル**という。基盤モデルはこのような事前トレーニングによって、様々なタスクをこなすことができるようになっている。

基盤モデルには、
- GPT
- BERT
- Amazon Titan
- Claude
- Cohere

などが挙げられる。

以下は、生成AIの基盤モデルの代表例。

### 1. 大規模言語モデル
大規模言語モデル（LLM）は、テキストの文脈を理解し、自然なテキストを自動生成することができる、大規模な深層学習モデル。広くには、[トランスフォーマー](https://ja.wikipedia.org/wiki/Transformer_(%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92%E3%83%A2%E3%83%87%E3%83%AB))というニューラルネットワークアーキテクチャが使われている。

#### LLMの特徴
- 入力データに自分でラベルをつけて自己学習をする（**自己教師あり学習**）
- テキスト内の単語を**トークン化**し、**埋め込み**と呼ばれるベクトルで表現する
  - 単語の関係性を、ベクトル空間の位置関係で表すことができる


https://aws.amazon.com/what-is/large-language-model/

### 2. 拡散モデル
拡散モデルとは、ぼやけた画像からノイズを除去したり、テキストから画像を生成したりすることができる深層学習モデルのこと。その目標のために、以下2つの過程を行うことで学習する。

<dl>
    <dt>拡散過程</dt>
    <dd>自然画像にランダムノイズを少しずつ追加し、ノイズだけにする過程</dd>
    <dt>逆拡散過程</dt>
    <dd>拡散過程の逆で、ノイズ画像からノイズを除去して画像を生成する過程</dd>
</dl>

### 3. マルチモーダルモデル
マルチモーダルモデルは、テキストや画像などの複数の種類のデータを、同時に入出力する処理が可能なモデル。様々な形式のデータを組み合わせた際の相互作用や、異なる形式間で共通する情報などを学習することで、そのような処理が可能になる。

:::note info
テキスト・数値・画像・音声・動画などのデータの「種類や形式のこと」を**モダリティ**、「複数のモダリティに対応すること」を**マルチモーダル**という。
:::

マルチモーダルモデルである生成AIの例は、
- ChatGPT-4o
- Gemini
- Copilot

### 4. 敵対的生成ネットワーク
敵対生成ネットワーク（GAN）とは、生成と識別のそれぞれを行う2つのニューラルネットワークを競争させる深層学習モデルのこと。用意したトレーニングデータセットを用いて2つのネットワークが互いにトレーニングすることで、本物のデータと似たデータを生成できるようになる。

2つのニューラルネットワークとは、
<dl>
    <dt>ジェネレーター</dt>
    <dd>トレーニングデータに変更を加えて、新しいデータを生成する</dd>
    <dt>ディスクリミネーター</dt>
    <dd>トレーニングデータとジェネレーターが生成したデータを受け取り、両者を識別する</dd>
</dl>

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3946195/f2077728-aa3e-4665-cc55-e6070de077ed.jpeg" alt="テックブログ用 - 敵対生成ネットワーク.jpg" width="600">

GANでは、ジェネレーターが本物に似たデータを生成してディスクリミネーターを騙そうとし、ディスクリミネーターはデータの真贋を正しく見分けようとする。このような競争は、両方が進化し続け、ディスクリミネーターが完全に生成データを認識できなくなる平衡状態まで行われる。

https://aws.amazon.com/what-is/gan/

### 5. 変分オートエンコーダー
変分オートエンコーダー（VAE）は、**オートエンコーダー**というアーキテクチャのニューラルネットワークに、統計学の手法である**変分推論**を応用させて生まれたモデル。

オートエンコーダーでは、**エンコーダー**と**デコーダー**という2つのニューラルネットワークで構成される。このモデルは教師なし学習でトレーニングし、「どのように圧縮すれば、元のデータを正確に再構成できるか」を学習する。
<dl>
    <dt>エンコーダー</dt>
    <dd>入力データをより次元の少ない次元に圧縮し、重要な特徴のみ抽出する</dd>
    <dt>デコーダー</dt>
    <dd>抽出された特徴データを受け取り、元データを再構成する</dd>
</dl>

VAEでは、このエンコーディングにある種の変化量を加えることで、入力データに類似した新しいデータを生成できるようになった。VAEは画像生成やノイズ除去に活用される。

:::note info
エンコーダーが抽出する特徴量のことを**潜在変数**、潜在変数をマッピングする低次元の空間を**潜在空間**と呼ぶ。VAEでは、この潜在空間が確率分布を持つ。
:::


### 基盤モデルの種類のまとめ

| モデル | 説明 | 主な用途 |
|:-:|:--|:--|
| 大規模言語モデル | トークンと埋め込みを利用して、テキストを理解し生成する | <ul><li>テキスト生成</li><li>質問回答</li></ul> |
| 拡散モデル | 拡散過程とその逆の過程を学習して、画像などを生成する | <ul><li>ノイズ除去</li><li>画像生成</li></ul> |
| マルチモーダルモデル | 様々なモダリティのデータを一度に処理できる | <ul><li>画像からテキストを抽出</li><li>テキストのスクリプトと画像から動画を生成</li></ul> |
| 敵対的生成ネットワーク | 2つのニューラルネットワークが競争し、新しいデータの生成を学習する | <ul><li>画像生成</li><li>トレーニング用のデータセットを生成</li></ul> |
| 変分オートエンコーダー | オートエンコーダーの応用モデルで、元データに似たデータを生成する | <ul><li>画像の再構築</li><li>ノイズ除去</li></ul> |

## モデルの最適化
生成AIの開発は、基礎モデルを出発点として、開発者が求める限定的なタスクをこなせるモデルや、より専門的なタスクに沿ったモデルへと調整する作業になることが多い。このプロセスを基盤モデルの**最適化**と呼ぶ。

一般的に最適化には、以下のような手法が用いられる。

### プロンプトエンジニアリング
期待する出力になるよう、基盤モデルにガイド付きの指示を与える方法。対話形式やコマンドラインのシステムを持つモデルに送られる、そのようなテキストを**プロンプト**といい、例えば

> あなたは有名な技術記事のライターです。
以下の条件で、生成AIについての技術記事の文章を作成してください。
条件：
・1000文字以内
・「です」「ます」口調
・話題ごとに見出しをつける

ような命令文となる。プロンプトを上手く用いることで、目的や状況に合った出力を得ることができ、最も簡単にモデルを最適化できる。

### ファインチューニング
より専門的で限られたデータセットを使って、さらに基礎モデルに対し教師あり学習を行う方法。このファインチューニングにより、モデルの重みが特有の状況に合わせて微調整され、モデルが最適化される。
例えば、業界特有の知識や判断を必要とするタスクを行わせたいときに用いられる。

### 検索拡張生成（RAG）
専門的なタスクの実行に必要となる知識を、予め用意したデータストアから検索し、参考資料としてモデルに提供する方法。
検索拡張生成では、特定のデータでモデルを学習させるのではなく、タスクごとに必要となる情報を、プロンプトを通じてモデルに与えるのみである。ファインチューニングと違い、モデルがトレーニングすることはないので、重みなどのモデルの内部は変わらない。

RAGで利用される、関連するドキュメントのデータストアと検索方法には、主に2種類の方法がある。

#### 1. キーワード検索
入力データ内のキーワードを用いてドキュメントを検索する方法。キーワードの出現頻度が高いドキュメントを、関連性が高いと判定する。

#### 2. ベクトル検索
予めドキュメントをベクトル空間に埋め込み、入力データを埋め込んだベクトルとの類似度でドキュメントを検索する方法。埋め込みは、文章の文脈やニュアンスも含んで検索するので、キーワード検索より精度が高い。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3946195/134a69fa-4d78-55b3-e02a-d21ae4fa8410.jpeg" alt="テックブログ用 - 敵対生成ネットワーク.jpg" width="600">


## まとめ
基盤モデルとは、事前にトレーニングされた、汎用的なタスクを既にこなすことができる生成AIモデルである。
昨今のAI開発とは、このような基盤モデルを最適化することである。基盤モデルには様々な種類が存在するので、目的に沿ってモデルを選択することが重要となる。