11
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

生成AIの仕組みを「なんとなく」理解する

11
Last updated at Posted at 2025-12-09

はじめに

開発現場にもAIツールが浸透している昨今、

「そもそもAIとは何か?」
「生成AI(LLM)はどういう仕組みで動いているのか?」

と疑問に思ったことはありませんか?

エンジニアの方のみならず、ChatGPTなどの生成AIを活用している皆さんに、生成AI(LLM)の仕組みを「なんとなく」理解して、「ちょっとだけ」誰かに自慢してほしい!

そして今よりももっとAIを使いこなせるようになってほしい!

この記事は、そんな思いを込めて書いた記事です。

生成AIの仕組みを「なんとなく」理解する

目次

  1. AIって?: 人工知能、機械学習、深層学習とは?
  2. にゅーらるねっとわーく?: 深層学習の仕組み
  3. LLMとは?: 生成AI、ChatGPTの仕組み
  4. ローカルLLM: 自分の手元でAIを動かすことの意義、凄さ

1. AIって?

AIと一口に言っても、いろいろな単語が思い当たるかもしれません。
例えば、

  • 人工知能 (AI): 人間の知能を模倣するシステムの総称(一番広い意味)
  • 機械学習: データからルールやパターンを学ぶ手法
  • 深層学習 (Deep Learning): 機械学習の一種。人間の脳の仕組み(ニューラルネットワーク)を模倣して、より複雑なパターンを学習する手法
  • LLM(大規模言語モデル): 深層学習の技術を用いた生成AI。人間のような自然な言語を生成・理解する能力を持つ

これらはすべて関連していますが、意味が少しずつ異なります。

ざっくり理解
「人工知能」という概念の中に「機械学習」があり、その中に「深層学習」があり、さらにその応用として「LLM」があるイメージです。
AI関連でいろいろな用語があって、それぞれに使い分けがありそう。と、まずは覚えてください!

今回の題目でもあるLLM(大規模言語モデル)は、深層学習の技術を用いて構築されていますが、少し特殊な仕組みを持っているので、後ほど詳しく確認します。

2. にゅーらるねっとわーく?

深層学習のキモとなるのが「ニューラルネットワーク」です。

その前に...

「機械学習」について理解を深めていきます。

2-1 機械学習とは

従来の「機械学習」は、特定のルールに従ってデータをパターン分けしていました。
例えば、下記の「あるなしクイズ」を考えてみます。

ある なし
椅子

この場合、「動物であるかどうか」という「区分のルール」さえ、学んでしまえば簡単に区分けできるはずです。このように特徴が明確なら、「区分のルール」を人間が与えてあげれば分類できる。これが「機械学習」です。

2-2 深層学習とは - 機械学習と何が違うのか

しかし、世の中には言葉でルール化しにくいものがたくさんあります。例えば「手書きの数字」です。「深層学習」はより複雑な分類を得意とします。

例えば、手書き数字の分類を考えてみます。

手書き数字「3」 手書き数字「3」

言わずもがな、これは数字の「3」だと認識できるはずです。
ただこれを先ほど機械学習の例で示した「動物であるかどうか」のように単純なルールで区分けすることはできるのでしょうか。

  • 白い背景に黒い線で書かれている
  • 上下の丸の大きさが似ている
  • 始点と終点の位置が縦に並んでいる
  • 左側が閉じていない
  • 中央部分に配置されている

これでなんとなくは分類できそうですが、これはどうでしょうか。

ずらした手書き数字「3」 ずらした手書き数字「3」

たしかにこれも「3」だとわかりますが、上記のルールから逸脱していないか確認してみます。

  • 白い背景に黒い線で書かれている → 〇
  • 上下の丸の大きさが似ている → △
  • 始点と終点の位置が縦に並んでいる → ✕
  • 左側が閉じていない → 〇
  • 中央部分に配置されている → △(左に寄っている)

自信をもってすべて「◯」にできませんよね?
このような「傾いた3」や「丸が潰れた3」を判断するために、いちいち「こういう線のときは3」とルールを教え込むのは限界があり、ルールを事前に定義しておくことが難しいのです。

そこで深層学習です。
深層学習は、大量の「3の画像」を読み込み、「どこに注目すれば3に見えるか」という特徴自体を、AI自身に学習させます。

補足: 画像も結局数字で表現している(クリックして展開)

画像データも突き詰めれば、色の濃淡で表現された数値データの集合体です。
手書きの「3」を単純化すると、以下のようなデータになります。

0, 0, 0, 0, 0, 0, 0
0, 0, 1, 1, 1, 0, 0
0, 0, 0, 0, 1, 0, 0
0, 0, 1, 1, 1, 0, 0
0, 0, 0, 0, 1, 0, 0
0, 0, 1, 1, 1, 0, 0
0, 0, 0, 0, 0, 0, 0

(※実際にはもっと細かい画素数で、0〜255の階調などで表現されます)

深層学習では、この「数字の並びパターン」と「正解ラベル(これは3です)」をセットにして大量に読み込ませます。


深層学習では明確に定義しにくいルールを、大量の答え付きデータから自動的に学習します。

重要なのは「答え付き」かつ「大量」のデータであることです。つまり、分類先があらかじめ選択肢として定まっているのです。

(これが生成AIとの大きな違いです)

2-3 深層学習の仕組み - ニューラルネットワークとは

ここからは深層学習の仕組みを見ていきます。

なぜ学習用のデータを用意すると分類できるようになるのか。

ニューラルネットワークは、入力された情報に対して「重み付け(重要度の判断)」を行いながら答えを導き出します。

イメージしやすい例として、「アキネーター」というサービスがあります。質問を繰り返して、「あなたが思い浮かべた人物を、質問を通して当ててくれるゲーム」です。

例えばあなたが「ドラえもん」を思い浮かべているとします。

質問 回答
男性? わからない
しっぽがある? はい
ポケモン? いいえ
ヒトの言葉を話しますか? はい
Youtube関係者? いいえ
猫? たぶん(部分的に)
映画に一度でも出演した? はい
青い? はい
五人グループの一人である? いいえ
ドラえもんのキャラクターですか? はい

→ アキネーター: 「想像しているのは ドラえもん ですね。」

数多くある選択肢の中から、質問を重ねていくことで、最終的に「ドラえもん」を特定できました。このように質問を積み重ねて選択肢を狭めていく仕組みは、ニューラルネットワークの動作原理に似ています。

この判断プロセスを何度も繰り返して「正解する感覚(パラメータ)」を調整して「学習」し、モデルを完成させていきます。

さらに詳しく原理を理解したい方へ(クリックして展開)

この例とニューラルネットワークの違いを対応させてみます。

  • 質問 → ニューロン(各条件)
  • 回答 → ニューロンの出力(YES/NO)
  • ニューラルネットワーク全体 → 質問の積み重ねによる最終的な分類

ただし実際には、人間のように「質問を順番に」ではなく、
一度に大量の計算が並列に走って答えを決めていたり、回答が「はい」「いいえ」だけでなく、0から1までの連続値で表現されていたり、質問も人間の肌感覚では捉えきれないような要素も含まれ、複雑に構成されています。

ニューラルネットワークは複数の層(レイヤー)で構成されており、各層が前の層からの入力を受け取り、計算を行い、次の層に出力を送ります。
この層が多層であることから「深層」学習と呼ばれています。

深層学習は機械学習と異なり、区分けルールを与える必要がありません。
必要なのは大量のデータで、それが正解データなのか、不正解データなのかを与えることで、ニューラルネットワークが自動的に特徴を抽出し、分類を行います。

画像データも結局は数値データの集合体です(詳細は前述の補足を参照)。

手書き数字の分類の場合、数万枚の手書き数字画像とそれに対応する正解ラベル(これは3です)をニューラルネットワークに与えます。

ニューラルネットワーク内のパラメータ(重み)を何度も更新して最適化していきます。これを学習(訓練)と呼びます。

学習過程を示すグラフの例を示します。

学習過程のグラフ例 学習過程のグラフ例(イメージ図)

詳しい説明は省きますが、
このグラフは、横軸が学習回数・データ量、縦軸が正解率(1.0が正解率100%)を表しています。

一般に学習回数が増えるにつれて正解率も向上していきます。
近年のAI技術の発展は、大量のデータを収集・処理できるようになったことが大きな要因です。


ここまでのポイント

  • 機械学習はルールを与えて分類する
  • 深層学習は求める出力結果になるように、大量のデータからパラメータ(重み)を調整していく

3. LLMとは? - 生成AIとは

さて、ここからは生成AIの核心に迫ります。
ChatGPTなどの「生成AI」に使われている LLM(大規模言語モデル: Large Language Model) は、これまでのAIと何が違うのでしょうか?

LLMは、大量のテキストデータを学習し、人間のように自然な言語を生成・理解する能力を持っています。
LLMの代表例として、OpenAIのChatGPTやGoogleのGemini、MicrosoftのCopilot、MetaのLLaMAなどがあります。

生成とは「新しいものを作り出すこと」を指します。
つまり、生成AIは新しいテキスト、画像、音声などを生成する能力を持っています。

もう少し分解してみます。

先ほどまで紹介した深層学習は、膨大な学習データのもと、正解ラベルに合うように学習して、与えられたデータを「学習データで事前に用意していた選択肢」に分類していました。

一方、生成AIは与えられたデータからパターンや特徴を学習し、「未知の問題」であっても新しいデータを生成します。
例えば、ChatGPTに「今日の献立を考えて」と指示すると、回鍋肉のレシピを教えてくれました。また、ChatGPTに「ベランダの掃除の仕方を教えて」と指示すると、ベランダ掃除の流れを手順建てて教えてくれます。

このように、生成AIは「献立」を考えることもできるし、「掃除の仕方」を考えることもできるのです。
一つのことに特化しているわけではなく、幅広いタスクに対応できるのが特徴です。

3-1 LLMの仕組み - アテンション機構

LLMが賢くなった最大の理由が、2017年に登場したTransformerという技術と、その中のアテンション機構(Attention Mechanism)です。

これは、文章の中で「どの単語に注目(Attention)すべきか」を判断する仕組みです。

「今日は天気が晴れるので気分がいいです。」

人間はこの文章を読むとき、「天気」「晴れる」「気分」の関係性を瞬時に理解します。「晴れる」から「気分がいい」のだな、と。

アテンション機構は、文中の離れた単語同士の「関連度」を計算します。

無意識に「晴れる」という言葉を注視していませんか?
このように文章全体を均等に扱うのではなく、「晴れる」という単語に注目することで、文全体の意味をより正確に理解できます。

  • 晴れる → なにが: 「天気」に関係しそう
  • 晴れる → どうする: 「晴れる」から何をしたいのか、次の文脈で「何らかの行動」を示す文章が続きそう
  • 晴れる → いつ: 「晴れる」ことがいつ起こるのか、時間に関する情報が続きそう

このように何かひとつ(Query)に注目して、複数の視点で関連性(Key)を考える(Value)ことで、文脈をより深く理解&予測できるようになります。

LLMにおける学習とは、QueryとKeyの関連性を数値化して重み付けし、Valueに反映させることで、重要な情報を強調し、不要な情報を抑制することを指します。

この仕組みをさらに詳しく学びたい方は、「Attention is All You Need」(2017年に発表されたGoogleの論文)を参照したり、追加調査をしてみてください。

3-2 トークナイザー(Tokenizers)

LLMはテキストデータを扱いますが、そのままの形では処理できません。

そこで、テキストを「トークン(Token)」と呼ばれる小さな単位に分割します。
この処理を行うのが「トークナイザー(Tokenizer)」です。
トークンは単語、サブワード、文字など、さまざまな粒度で分割されます。

LLMでは、トークンを数値ベクトルに変換(Embedding)し、モデルが理解できる形式にします。

  1. テキスト入力:
    「今日は天気が晴れるので気分がいいです。」
    
  2. トークン化: テキストをトークンに分割
    今日 / は / 天気 / が / 晴れる / ので / 気分 / が / いい / です / 。
    
  3. エンコーディング: 各トークンを数値に変換
    [2, 3246, 9, 11385, 14, 16577, 28449, 5, 12, 15100, 14, 2575, 2992, 8, 3]
    

ちなみに、この文章を分割する「トークン化」ですが、実は単純に単語で区切っているわけではありません。ここには賢いアルゴリズムが使われています。

【深掘り】どうやって区切ってる? - BPEアルゴリズム(クリックして展開)

ここから余談ですが、このトークンに分割する作業、どのように行われているか気になりませんか?
代表的な手法として、「BPE(Byte Pair Encoding)」や「WordPiece」などがあります。

そもそも日本語の文章は、英語のように単語間にスペースがないため、単語境界が曖昧で分割しにくい特徴があります。
形態素解析ツールを使って単語に分割する方法もありますが、LLMではサブワード単位で分割する手法が一般的です。
これにより、未知の単語や新語にも対応しやすくなります。

「BPE」などの手法では、「頻繁に隣り合う文字」をくっつけて一つのセット(トークン)にするという方法をとります。

例えば学習コーパスとして以下のような文章があったとします。

今日は晴れ
今日は雨です
明日も晴れ
今日は気分がいい

最初は一文字ずつバラバラに考えます。すると、語彙(初期辞書)は:

今, 日, は, 晴, れ, 雨, で, す,  明, も, 気, 分, が, い

となります。次に"隣り合うペア"の出現回数を数えます。

すると、「今」と「日」の隣り合う回数が多いことに気づきます。
そこで、この2つをくっつけて今日という新しいトークンを作ります。
これを繰り返すと、

  • よく使う言葉(今日、晴れ)は1つのトークンとしてまとまる
  • あまり使わない言葉は文字単位で分割される

という状態になります。これにより、辞書のサイズを節約しつつ、未知の言葉(新語など)が来ても文字単位で組み合わせて対応できるようになるのです。


上記の例では、各トークンは以下のように数値に対応しています。

  • 今日 : 3246
  • : 9

この対応関係を「語彙(ボキャブラリー)」と呼び、モデルごとに異なります。
上記は公開モデル(tohoku-nlp/bert-base-japanese-v3)での例ですが、別のモデル(例:rinna/japanese-gpt2-small)では異なる数値が割り当てられます。

  • 今日 : 4761
  • : 11

各モデルは独自の意味空間を持っており、トークンはその空間上の座標として表現されています。

その言葉の座標(ベクトル)には、面白い性質があります。

「王様」 - 「男」 + 「女」 = 「女王」

「王様」という座標から「男」成分を引き、「女」成分を足すと、不思議と「女王」の座標にたどり着きます。
つまり、AIの内部では、言葉の意味が計算可能な数値として存在しているのです。

【深掘り】ベクトル空間を覗いてみる(クリックして展開)

ここからはイメージで理解してほしいので、実際とは異なるかもしれませんが、そのマッピングを考えてみます。

例えば、時間軸で考えると、

  • 今日 : [0, 0, 0]

  • 明日 : [1, 0, 0]

  • 昨日 : [-1, 0, 0]

  • 今年 : [2, 0, 0]

  • 来年 : [9, 0, 0]

  • 一昨年 : [-10, 0, 0]

大きさは違いますが、未来志向になるほど、X軸が正の方向にベクトルが伸びています。

他にも主語で考えると

  • : [6, 5, 1]
  • : [4, 3, -1]
  • : [5, 4, 0]
  • あたし : [5, 8, 2]
    第一象限に固まってそう?

文章中の同じような意味合いで使われる単語群は、ベクトル空間の似た場所にマッピングされます。

このように、ある種の法則性に基づいて、各トークンは意味をもって配置されるのです。

下記のサイトでは、 実際のマッピングされたベクトル空間を可視化して確認できます。
Embedding projector - visualization of high-dimensional data

検索欄に"today"を入力した例が下記の画像です。
空間的に近い単語("now", "current"など)が右側にリストで表示されています。

Embedding Projector による単語埋め込みの可視化(例) Embedding Projectorで可視化した単語埋め込みの例("today"に近い単語群の表示)

AIは確率的に次の単語を予測していると言われますが、まさにこの空間上で「意味的に近い(次にきそうな)場所」を探しているイメージです。


ChatGPTがスラスラ喋っているのは、意思があるわけではなく、 「文脈的に次にくる確率が最も高い言葉を、言葉の空間から選んでいるだけ」 です。
それが人間に近いレベルまで高精度になったのが現在のLLMです。

3-3 LLMの学習 - ファインチューニング、LoRA

LLMの学習は主に以下の2つのステップで行われます。

  1. 事前学習 (Pre-training):
    広辞苑やインターネット全体を読み込むようなもの。言葉の文法、一般的な知識、文脈のパターンを徹底的に学び、「ベースとなるモデル」を構築します。膨大な計算資源と時間が必要で、通常は企業や研究機関が実施します。

  2. ファインチューニング (Fine-tuning):
    事前学習モデルを特定のタスク向けに再教育すること(例:医療用語、特定の口調)。比較的小規模なデータセットと計算資源で実行可能で、個人のPC(ゲーミングPC程度のスペック)でも実施できます。LoRAなどの技術は、この追加学習を「教科書全部書き換え」ではなく「付箋を貼る」くらい手軽に行うための工夫です。

こうした背景から、事前学習済みのLLMモデルがオープンソースで公開されています。
Hugging Faceは、多数の事前学習済みモデルが提供されているプラットフォームです。先ほどのトークナイザーの例で紹介したモデルも、Hugging Faceからダウンロードしてローカルで動かしたものです。

ファインチューニングでは、どのパラメータを更新するか(全部?後半だけ?最後の層だけ?)、元のパラメータはそのまま、追加の層を加えてカスタマイズするなど、さまざまな手法があります。

4. ローカルLLM

ここまでで、LLMの基礎技術や学習方法について見てきました。
では、実際にLLMをどのように活用していくのか、その使い方について見ていきましょう。

そして、ここからが本記事の本題である 「ローカルLLM」 です。

4-1 ChatGPTとはなんなのか?(クラウド型LLM)

実は、ChatGPTに使われている技術(GPT-3.5のベース)自体は、ChatGPTが公開される前から存在していました。
しかし、当時は一般のニュースになることはほとんどありませんでした。

それは、使い方が難しかったからです(CUIベース)。

あくまで「研究者やエンジニアが使う専門ツール」だったのです。

普及したきっかけが、ChatGPTの登場です。
LINEのような「チャット形式」にしたことで、コマンドなど知らなくとも直感的にAIと会話できるようになったのです。

4-2. なぜオンライン(クラウド)必須なのか? - 「推論」のコスト

そんな便利なChatGPT、なぜインターネット経由で使う必要があったのでしょうか。

それは、高性能なAIを動かすには膨大な計算リソースが必要だからです。

AIのコストというと「学習(モデルを作ること)」ばかり注目されがちですが、実は「推論(完成したモデルを使うこと)」にも莫大なコストがかかります。

ChatGPTのような巨大なモデル(パラメータ数が兆単位)は、質問に一回答えるだけで業務用GPU(数百万円)を何枚もフル稼働させています。個人のPCやスマホでは処理が不可能でした。

世界中の人が同時に質問する状況を支えるには、巨大なデータセンターで一括処理するしか選択肢がなかったのです。
私たちが無料または月額数千円でChatGPTを使えるのは、OpenAI社がこの推論コストを負担しているからです。

4-3. なぜ今「ローカル」なのか? - モデルの小型化と普及

しかし、ここ最近で流れが変わってきました。
世界中の研究者が「性能はそこそこでいいから、一般人のPCでも動くサイズ(推論コストが低い)のモデル」を開発し始めたのです。

これがローカルLLMです。

つまりLLMの処理場所は、大きく2つに分けられます。

  • サーバーサイド(クラウド):
    AWSやAzureなどの巨大なサーバーで処理
    重い処理が可能だが、通信ラグがある
    ChatGPTはここに該当
  • エッジサイド:
    ユーザーの端末(PC、スマホ、IoT機器)で処理
    リソースは限られるが、反応が速くプライバシーに強い
    ローカルLLMはここに該当

これからの時代は、重たい相談はクラウドへ、ちょっとした要約や翻訳はエッジ(ローカル)へ、というハイブリッドな使い分けが進んでいきます(実際にすでに始まっています)。

そこで、自分のPCで動かすメリットを整理します。

  1. セキュリティとプライバシー
    クラウド型AIの場合、入力したデータは学習に使われる可能性があるため、
    「社外秘のコード」や「個人情報」をChatGPTに入力するのはリスクがあります
    しかし、ローカルLLMならオフラインですべて完結するため、データが外部に漏れません
  2. オフラインで動作
    ネット環境がない飛行機の中でも、山奥でも対話できます
  3. カスタマイズ
    あらかじめ用意されたモデルをそのまま使うのではなく、自分の用途に合わせてファインチューニングや追加学習が可能です
    特定の専門分野に特化したモデルを作成できます

4-4. どのようにローカルでモデルを扱うか? - OSSとHugging Face

では、ローカルで動くモデルをどのようにして手に入れるのか。
ここで登場するのが OSS(オープンソースソフトウェア) の文化です。

2023年、Meta社が「LLaMA」という高性能なモデルを公開したことを皮切りに、世界中で「オープンなモデル」の開発競争が始まりました。Googleの「Gemma」、Microsoftの「Phi」、日本企業(サイバーエージェントやRinnaなど)も日本語に強いモデルを公開しています。

これらのモデルが集まる場所が前述の Hugging Face です。
「AI版のGitHub」として、世界中の開発者が作ったモデルが公開されています。
(※使用時は規約を確認してください)

【深掘り】モデルの軽量化技術(量子化)

量子化(Quantization) とは、モデル内部で使用される重み(パラメータ)や中間表現(アクティベーション)を、より低いビット精度で表現することで、モデルサイズや計算負荷を削減する技術です。これにより、元の精度をできるだけ保ちつつ、ローカル環境での高速推論が可能になります。

通常、ニューラルネットワークの重みは 32bit の浮動小数点数(FP32) で表現されています。
量子化では、これらを 8bit(INT8)や 4bit(INT4)などの整数 で表現します。

実際は単純に四捨五入するわけではなく、32bitの浮動小数点(float)のパラメータ空間をそのままに、8bitの整数(int)にマッピングされています。
そのため、このおかげで、元の値の情報を最大限保ちながら、メモリ使用量と演算量を大きく削減できます。

もともとLLMでは、FP32 や FP16 を扱うため、
浮動小数点演算を高速に処理できる GPU が必須でした。
量子化によりLLMモデルの推論が整数(int)での計算が可能になったため、一般的なCPUでも高速に動作させることができるようになりました。

また、量子化モデルの普及とともに、整数演算に最適化された専用チップ(TPUやNPUなど)も登場しています。
これらは INT8 や INT4 の行列演算に最適化されており、ローカルLLMの高速化・省電力化に大きく貢献しています。


4-5. スマホで動くLLM

現在、ローカルLLMはスマートフォンでも動くようになってきています。

最新のスマートフォンには、AI処理専用のチップNPU(Neural Processing Unit)が搭載されています。Googleの「Gemini Nano」やAppleの「Apple Intelligence」は、スマホ内(オンデバイス)で動作するLLMです。

「文章を要約する」「通話をリアルタイムで翻訳する」といった機能が、通信なしでデバイス上で完結するようになってきています。

こうしたオンデバイスAIを実装したデモアプリもオープンンソースで公開されています。

さいごに

ここまで、AIについて「なんとなく」理解できるよう広く解説してきました。

便利に生成AIを使うために、今一度その歴史や原理を知ることで、さらに活用の幅が広がることを願っています。

この記事をきっかけに、皆さんがLLMの仕組みを「ちょっとだけ」理解し、周りの人に自慢したり、実際にローカルLLMを含め触ってみたりするなど、「何かを始めるきっかけ」になれば幸いです。

その仕組みを理解して、より良い使い方を模索していきましょう!

11
2
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
11
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?