1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

最近、ChatGPT、Claude、Gemini、ローカルLLMなど、さまざまな生成AIが使われるようになりました。

その中心にある技術が LLM です。

LLMは Large Language Model の略で、日本語では 大規模言語モデル と呼ばれます。

この記事では、LLMについて以下の内容を整理します。

  • LLMとは何か
  • LLMが文章を生成する仕組み
  • Transformer / Attention の基礎
  • トークン、コンテキスト、プロンプト
  • RAG、ファインチューニング、量子化
  • LLMを使うときの注意点

この記事の目的
LLMを「なんとなくすごいAI」として見るのではなく、基本的な仕組みを理解して使えるようにすることです。


LLMとは

LLMとは、大量のテキストデータを学習したAIモデル のことです。

LLMは、文章を読んだり、書いたり、要約したり、翻訳したり、コードを書いたりできます。

代表的な用途は以下です。

用途
文章生成 メール、記事、レポートを書く
要約 長い文章を短くまとめる
翻訳 日本語から英語、英語から日本語に変換する
コーディング支援 コード生成、バグ修正、設計相談
情報整理 複数の情報をまとめる
アイデア出し アプリ案、記事ネタ、企画案を出す

LLMは「人間のように考えているAI」ではなく、基本的には「次に来るトークンを予測するモデル」です。


AI・機械学習・深層学習・LLMの関係

LLMはAIの一種です。

関係を簡単に表すと、以下のようになります。

AI
└── 機械学習
    └── 深層学習
        └── 自然言語処理
            └── LLM

それぞれの意味は以下です。

用語 意味
AI 人間の知的な作業をコンピュータで実現しようとする技術全体
機械学習 データからパターンを学習する技術
深層学習 ニューラルネットワークを使う機械学習
自然言語処理 人間の言葉をコンピュータで扱う技術
LLM 大規模な自然言語処理モデル

ポイント
LLMはAIの中でも、特に「言語」を扱うことに強いモデルです。


LLMは何をしているのか

LLMは、入力された文章をもとに 次に来る可能性が高いトークン を予測します。

例えば、次の文章があったとします。

今日は天気がいいので、

この続きを予測すると、次のような文章が生成されます。

散歩に行きたい。

LLMはこのように、次のトークンを1つずつ予測します。

今日は
↓
今日は天気
↓
今日は天気が
↓
今日は天気がいい
↓
今日は天気がいいので
↓
今日は天気がいいので散歩に行きたい。

LLMの文章生成は、基本的には「次のトークン予測」の繰り返しです。


トークンとは

LLMは文章をそのまま処理するのではなく、トークン という単位に分けて扱います。

トークンは、単語、文字、記号、または単語の一部のようなものです。

例えば、英語では次のように分かれることがあります。

I like programming.
I / like / programming / .

日本語の場合は、単語ごとにきれいに分かれるとは限りません。

今日はいい天気です

モデルによっては、次のように分割されます。

今日 / は / いい / 天気 / です

LLMは、このトークンを順番に処理します。

注意
「1文字 = 1トークン」ではありません。
モデルや tokenizer によって分割方法は変わります。


Transformerとは

現在の多くのLLMでは、Transformer というニューラルネットワークの仕組みが使われています。

Transformerは、文章の中で どの単語がどの単語と関係しているか を扱うのが得意です。

例えば、次の文章を考えます。

太郎は花子に本を渡した。彼女はそれを読んだ。

この文章では、

  • 「彼女」 = 花子
  • 「それ」 = 本

を指しています。

Transformerは、文章中の単語同士の関係を見ながら、文脈を処理します。

Transformerの重要な仕組みが Attention です。


Attentionとは

Attentionは、日本語では 注意機構 と呼ばれます。

簡単に言うと、文章の中で どの部分に注目するべきか を決める仕組みです。

例えば、次の文章があります。

私は昨日買った本を今日読みました。

この文章では、「本」と「読みました」は強く関係しています。

Attentionは、このような関係を計算しながら、文章の意味を扱います。

入力文
↓
どの単語に注目するかを計算
↓
文脈を反映した表現に変換
↓
次のトークンを予測

ポイント
LLMが長い文章をある程度理解できるのは、Attentionによって文脈上重要な情報に注目できるからです。


LLMの学習の流れ

LLMは、主に以下のような流れで作られます。

大量のテキストデータを集める
↓
事前学習する
↓
指示に従えるように調整する
↓
安全性や使いやすさを調整する
↓
ユーザーが使う

それぞれを簡単に説明します。


事前学習

事前学習では、大量の文章を使ってモデルに言語のパターンを学習させます。

基本的には、文章の続きを予測するように学習します。

例えば、

日本の首都は

という入力に対して、

東京

が続きやすいことを学習します。

これを大量のデータで行うことで、モデルは以下のようなものを学びます。

  • 文法
  • 単語の関係
  • 文章構造
  • 一般的な知識
  • コードの書き方
  • 会話のパターン

事前学習は、LLMの基礎能力を作る段階です。


ファインチューニング

ファインチューニングとは、事前学習済みのモデルを 特定の目的に合わせて追加学習すること です。

例えば、以下のような目的で使われます。

  • チャット形式で答えられるようにする
  • 指示に従えるようにする
  • 特定分野に強くする
  • 特定キャラクターの口調にする
  • 安全な回答をしやすくする
  • コード生成に強くする

事前学習だけでは、モデルは必ずしもユーザーの指示にうまく従えません。

そこで、指示応答データなどを使って調整します。

事前学習済みモデル
↓
追加データで学習
↓
目的に合ったモデルになる

ポイント
ローカルLLMを自分好みにしたい場合、LoRAなどを使った軽量なファインチューニングがよく使われます。


推論とは

推論とは、学習済みのモデルを使って、実際に回答を生成する処理のことです。

ユーザーがプロンプトを入力すると、LLMはそれをトークン化し、次のトークンを順番に生成します。

ユーザーの入力
↓
トークン化
↓
モデルに入力
↓
次のトークンを予測
↓
出力文を生成

ChatGPTやローカルLLMで会話しているときに行われている処理が、この推論です。


プロンプトとは

プロンプトとは、LLMに与える指示文のことです。

例えば、次の文章はプロンプトです。

LLMについて初心者向けに説明してください。

プロンプトの書き方によって、LLMの出力は大きく変わります。

悪い例です。

LLM説明して

これでも回答は返ってきますが、条件が少ないため、出力がぶれやすくなります。

良い例です。

LLMについて初心者向けに説明してください。
AI、機械学習、深層学習との違いも含めてください。
専門用語には簡単な補足を入れてください。
Qiitaの記事として読みやすい構成にしてください。

このように、条件を具体的に書くと、期待に近い出力になりやすくなります。

プロンプトは、LLMへの命令文であり、出力品質に大きく影響します。


コンテキストとは

コンテキストとは、LLMが一度に参照できる情報のことです。

例えば、以下のようなものがコンテキストに含まれます。

  • 現在のプロンプト
  • 会話履歴
  • 入力された文章
  • 読み込ませた資料
  • コード
  • システム指示

ただし、LLMが無限に情報を覚えられるわけではありません。

モデルごとに、一度に扱えるトークン数には上限があります。

この上限を コンテキスト長 と呼びます。

注意
コンテキスト長を超えた情報は、モデルが参照できなくなる場合があります。
長い会話で以前の内容を忘れたように見えるのは、この制限が関係しています。


RAGとは

RAGは Retrieval-Augmented Generation の略です。

日本語では 検索拡張生成 と呼ばれます。

簡単に言うと、LLMに外部データを検索させ、その情報をもとに回答させる仕組みです。

ユーザーの質問
↓
関連する資料を検索
↓
検索結果をLLMに渡す
↓
LLMが回答を生成

RAGを使うと、以下のようなデータをLLMに参照させることができます。

  • 社内文書
  • PDF
  • Webページ
  • Notion
  • GitHub README
  • データベース
  • マニュアル

LLM単体では、古い情報や間違った情報を出すことがあります。

RAGを使うことで、外部の正確な情報を参照しながら回答できるようになります。

RAGは、LLMに「外部資料を読ませて答えさせる」ための重要な技術です。


ハルシネーションとは

ハルシネーションとは、LLMが 事実と違う内容をもっともらしく生成してしまう現象 です。

例えば、以下のようなことがあります。

  • 存在しない論文を紹介する
  • 間違ったURLを出す
  • 実在しない仕様を書く
  • コードの動作を間違って説明する
  • 最新情報を古い知識で答える

LLMは、常に事実確認をしているわけではありません。

文章として自然なものを生成しているため、間違っていてもそれっぽく見えることがあります。

注意
医療、法律、金融、セキュリティ、学校提出物、公式仕様などでは、LLMの回答をそのまま信じず、必ず確認する必要があります。


ローカルLLMとは

ローカルLLMとは、自分のPCやスマホなどで動かすLLMのことです。

ChatGPTのようなクラウド型AIとは違い、自分の端末上で推論します。

メリットは以下です。

  • データを外部に送りにくい
  • インターネットなしでも使える場合がある
  • モデルの仕組みを学びやすい
  • 自分でモデルを選べる
  • アプリに組み込みやすい

一方で、デメリットもあります。

  • 高性能なPCが必要になることがある
  • 大きなモデルは重い
  • クラウド型の高性能モデルより精度が低い場合がある
  • 環境構築が必要
  • モデル管理が面倒
クラウドLLM
例: ChatGPT, Claude, Gemini

ローカルLLM
例: Ollama, LM Studio, llama.cpp, MLX

ローカルLLMは、LLMの仕組みを学ぶにはかなり良い環境です。


量子化とは

量子化とは、モデルの重みの精度を下げて、モデルを軽くする技術です。

LLMは大量の数値データを持っています。

その数値を小さい形式に変換することで、メモリ使用量を減らせます。

例えば、以下のようなイメージです。

16bit
↓
8bit
↓
4bit

量子化のメリットは以下です。

  • メモリ使用量が減る
  • ローカル環境で動かしやすくなる
  • 推論速度が上がる場合がある
  • 小さい端末でも扱いやすくなる

ただし、デメリットもあります。

  • 精度が少し落ちる場合がある
  • 量子化方式によって性能が変わる
  • モデルによって向き不向きがある

ポイント
ローカルLLMでよく見る Q44bit は、量子化された軽量モデルを指していることが多いです。


パラメータ数とは

LLMでは、よく以下のような表記を見ます。

2B
7B
13B
70B

これはモデルのパラメータ数を表しています。

表記 意味
2B 約20億パラメータ
7B 約70億パラメータ
13B 約130億パラメータ
70B 約700億パラメータ

一般的には、パラメータ数が多いほど高性能になりやすいです。

ただし、必ずしも大きいモデルが常に良いとは限りません。

用途によっては、小さいモデルの方が便利な場合もあります。

例えば、

  • 速度を重視する
  • スマホやPCで動かす
  • コストを下げたい
  • 特定タスクだけ実行したい

という場合は、小型モデルの方が向いていることがあります。

LLMは「大きければ正義」ではなく、用途に合ったモデル選びが重要です。


LLMアプリの基本構成

LLMを使ったアプリは、ざっくり以下のような構成になります。

ユーザー
↓
アプリ
↓
プロンプト作成
↓
LLM API または ローカルLLM
↓
回答生成
↓
ユーザーに表示

RAGを入れる場合は、検索処理が追加されます。

ユーザー
↓
質問を受け取る
↓
関連文書を検索する
↓
検索結果をプロンプトに入れる
↓
LLMに渡す
↓
回答を生成する

アプリ開発で重要なのは、単にLLMを呼び出すことではありません。

以下の設計が重要になります。

  • どんなプロンプトを作るか
  • どのモデルを使うか
  • どこまでLLMに任せるか
  • 回答をどう検証するか
  • ユーザー入力をどう制御するか
  • 失敗時にどう処理するか

ポイント
LLMアプリでは、モデルの性能だけでなく、プロンプト設計・UI・検証処理も重要です。


LLMでできること

LLMは、以下のような作業に使えます。

文章作成

メール、ブログ記事、説明文、レポートなどを作成できます。

例:
Qiita用の記事を書いてください。

要約

長い文章を短くまとめられます。

例:
この文章を3行で要約してください。

翻訳

自然な翻訳を行えます。

例:
この英語を自然な日本語にしてください。

コーディング支援

コード生成、バグ修正、設計相談ができます。

例:
このSwiftUIコードの問題点を指摘してください。

学習支援

難しい内容をかみ砕いて説明できます。

例:
Attentionを中学生にもわかるように説明してください。

アイデア出し

アプリ案、記事ネタ、企画案を出せます。

例:
ローカルLLMを使ったアプリ案を10個出してください。

LLMが苦手なこと

LLMは便利ですが、万能ではありません。

苦手なこともあります。

苦手なこと 理由
最新情報 学習データが古い場合がある
正確な計算 計算機ではなく言語モデルだから
事実確認 もっともらしい誤情報を出すことがある
厳密な論理推論 複雑な推論でミスすることがある
長い文脈の保持 コンテキスト長に制限がある
公式仕様の確認 仕様変更に弱い

特に、コード生成では注意が必要です。

LLMが生成したコードは、一見正しそうに見えても、以下のような問題を含むことがあります。

  • 存在しないAPIを使う
  • 古い書き方をする
  • セキュリティ上危険な処理を書く
  • エラーハンドリングが不足する
  • テストされていないコードを出す

注意
LLMのコードは「完成品」ではなく、「たたき台」として扱うのが安全です。


LLMを使うときの考え方

LLMは、答えを丸投げする道具ではありません。

LLMは「作業と思考を補助するツール」として使うのが重要です。

特に開発では、以下のような使い方が有効です。

  • エラー文の意味を聞く
  • 実装方針を相談する
  • コードレビューをさせる
  • テストケースを考えさせる
  • READMEを整える
  • 仕様の抜けを探させる
  • 設計の問題点を洗い出す

一方で、最終判断は人間が行う必要があります。

LLMに任せる
↓
人間が確認する
↓
修正する
↓
テストする
↓
完成に近づける

まとめ

この記事では、LLMの基礎について整理しました。

重要なキーワードは以下です。

キーワード 意味
LLM 大量のテキストを学習した大規模言語モデル
トークン LLMが処理する文章の単位
Transformer 多くのLLMで使われるモデル構造
Attention 文章中の重要な部分に注目する仕組み
事前学習 大量データで基礎能力を作る学習
ファインチューニング 目的に合わせた追加学習
推論 学習済みモデルで回答を生成する処理
プロンプト LLMへの指示文
コンテキスト LLMが一度に参照できる情報
RAG 外部情報を検索して回答に使う仕組み
ハルシネーション もっともらしい誤情報を生成する現象
ローカルLLM 自分のPCなどで動かすLLM
量子化 モデルを軽くする技術

LLMは非常に便利な技術ですが、間違った情報を生成することもあります。

そのため、LLMは 正解を出す機械 ではなく、人間の作業を補助する技術 として使うことが重要です。


次に学ぶとよさそうな内容

LLMの基礎を理解したら、次は以下を学ぶと理解が深まります。

  • Transformerの詳しい仕組み
  • Attentionの数式的な理解
  • tokenizerの仕組み
  • RAGの実装
  • ベクトル検索
  • ローカルLLMの動かし方
  • LoRAによるファインチューニング
  • llama.cpp / Ollama / LM Studio
  • LLMアプリの設計
  • LLMの安全性

おわりに

LLMは、文章生成だけでなく、開発、学習、情報整理、アプリ制作など多くの場面で使える技術です。

ただ使うだけでなく、仕組みを理解しておくことで、より安全で実用的に活用できます。

今後は、ローカルLLMの動かし方や、RAGの実装についてもまとめていきたいと思います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?