メインコンテンツへスキップ
見出し画像

Q & A 🎨画像生成AIに「左手だけ下げて」と指示しても、両手を下げてしまうことがあります。なぜ?🎨

    山根あきら | 哲学者


    Geminiを使いはじめてから、数年経った。最初の頃は、英訳させても不自然なことが多かったが、現在ではかなり精度が上がっていると感じる。

    引用箇所の原典などは不正確なことが多いから、全面的に信頼しているわけではない。けれども、調べものをするには、欠かせないツールの1つになっている。

    しかしながら、生成AIの仕組み自体がどうなっているのかほとんど知らなかったので、chatGPTのプログラミングに関する本を読んでみた。

    使われる数学は、線形代数 (行列) 、ベクトル、内積などのようだ。

    数学的なことは何となくは分かったが、プログラミングはまったく学習したことがないので、よく分からなかった。

    そこで、本を読んで「なんとなく」分かったことについて、chatGPTに質問してみた。


    この記事では、chatGPT と対話を重ねた結果を、簡潔にまとめてみました。
    おおむね、
    Q はわたしで、AはchatGPTです。



    画像

    AIは数学でどう動いているのか
    ――ベクトル・内積・ニューラルネットワーク・ChatGPTをめぐるQ&A


    Q1 ChatGPTでは、本当にベクトルや行列が使われているの?


    A. はい。大量に使われています。

    文章をそのまま「意味のある言葉」として計算しているわけではなく、まず文章を数値に変換します。

    たとえば、単語や文章の一部(トークン)を、非常に多次元のベクトルとして表します。

    「猫」
    → [0.21, -0.73, 0.15, …… ]
    「犬」
    → [0.19, -0.68, 0.18, …… ]

    実際には数百~数千次元など、もっと高次元です。
    そして、そのベクトルに対して行列による変換などを大量に行います。


    Q2 では、「内積」はどこで使われるの?


    A. ベクトル同士の「関係の強さ」を計算する場面などで使われます。

    たとえば、二つのベクトル

    [\mathbf{x}=(x_1,x_2,x_3)]
    [\mathbf{y}=(y_1,y_2,y_3)]

    の内積は、

    [\mathbf{x}\cdot\mathbf{y}=x_1y_1+x_2y_2+x_3y_3]

    です。

    ベクトルの向きが近ければ、内積は大きくなりやすい。
    たとえば「北」と「北北東」の方向は近いので関係が強く、「北」と「南」は反対方向です。
    AIでも、このようなベクトル同士の関係を計算することが重要になります。


    Q3 それって、相関係数みたいなもの?


    A. 直感としては、かなり近いところがあります。

    相関係数も、二つのデータがどの程度同じ方向に動くかを表しています。

    実は、平均からの偏差をベクトルとして考えると、相関係数は

    [r=\frac{\mathbf{x}\cdot\mathbf{y}}{|\mathbf{x}||\mathbf{y}|}]

    という形に書けます。

    これはベクトルのなす角のコサインでもあります。

    つまり、
    «「二つのものがどちらの方向を向いているか」»を見るという意味では、内積と相関係数には似たところがあります。

    ただし、ChatGPTの計算がそのまま「相関係数を計算している」という意味ではありません。


    Q4 では、文章をベクトルにしたあと、どうやって再び「日本語」になるの?


    A. 「ベクトルを日本語に翻訳する」という単純な仕組みではありません。

    ここはChatGPTを理解するときに重要なところです。

    たとえば、
    «「私は昨日、映画を……」»
    という文章が入力されたとします。

    AIは大量の計算をして、

    «「見た」
    「観た」
    「見に行った」
    「楽しんだ」……»

    など、次に来る可能性のあるトークンについて確率を計算します。

    たとえばイメージとして、
    見た   35%
    観た   25%
    見に行った 15%
    楽しんだ  5%
    その他  20%
    のような状態を作ります。

    そして一つのトークンを出力し、さらにその結果を利用して次のトークンを予測します。

    つまり、
    «数値計算 → 次に出す言葉の確率 → トークンを出力 → また計算»
    という処理を繰り返して文章を作っています。


    Q5 では、AIは「意味」を数字として持っているの?


    A. 「意味そのものが一個の数字になっている」と考えるのは少し違います。

    むしろ、多次元の空間の中で、いろいろな言葉や概念の関係が数値的な配置として表現されている、と考えるほうが近いです。

    たとえば、

    犬
    猫
    馬

    は、それぞれ別のベクトルですが、学習によって関係性が形成されます。

    さらに、

    犬 ― 動物
    猫 ― 動物
    馬 ― 動物

    のような関係や、

    東京 ― 日本
    パリ ― フランス

    のような関係も、ベクトル空間の中に何らかの形で反映されます。

    ただし、これは「AIの頭の中に辞書のような意味一覧がある」ということではありません。


    Q6 文章だけではなく、画像もベクトルになるの?


    A. はい。画像も数値として扱うことができます。

    そもそもデジタル画像は、画素の集まりです。

    画像
     ↓
    大量の数値
     ↓
    ベクトルや行列として処理
     ↓
    特徴を抽出・変換

    現在のAIでは、画像を単純に「このピクセルは赤、このピクセルは青」とだけ扱うのではなく、より複雑な数値表現に変換して処理します。

    そのため、
    «文章も画像も、AIの内部では数値的な表現に変換されて処理される»

    という点では共通しています。


    Q7 では、文章でも画像でも、基本的には内積を計算しているの?


    A. 内積は非常に重要ですが、「全部が内積」というわけではありません。

    ChatGPTなどで使われるTransformerでは、特に「Attention(注意機構)」の計算で内積が重要な役割を果たします。

    簡単にいうと、
    «「この部分と、この部分はどのくらい関係があるか?」»
    をベクトル同士の内積などによって計算します。

    実際には、
    - ベクトル
    - 行列
    - 内積
    - 行列の掛け算
    - 非線形関数
    - Softmax
    - 確率計算

    などが組み合わされています。

    したがって、
    «AI=内積»
    ではなく、
    «内積を含む大量の数学的計算を組み合わせたシステム»
    と考えるのが適切です。


    Q8 画像生成AIに「左手だけ下げて」と指示しても、両手を下げてしまうことがあります。なぜ?


    A. 「文章を理解すること」と「画像の特定部分を正確に操作すること」は別の問題だからです。

    人間なら、
    «「女の子の両手が胸の前にある。左手だけ下げて」»
    と言われれば、

    右手 → そのまま
    左手 → 下げる

    と考えます。

    ところがAIにとって、画像は必ずしも

    女の子
    ├─ 顔
    ├─ 右手
    ├─ 左手
    ├─ 髪
    └─ 服

    という、人間が考えるような明確な「部品の集合」になっているわけではありません。

    画像全体が、非常に複雑な数値表現として関係し合っています。

    そのため、

    «「左手」という言語上の概念
    ↓
    「画像のこの部分」»

    という対応付けが完全にできるとは限りません。

    これは**grounding(グラウンディング)**の問題として考えることができます。


    Q9 つまり、一枚の絵は無数のベクトルとして一体になっているので、一部分を変えるときにも全体を計算し直す必要がある?


    A. その理解はかなりよいです。

    ただし、「一枚の絵=無数の独立したベクトル」というより、
    «画像全体が、互いに関係し合った複雑な数値表現になっている»
    と考えるほうが正確です。

    だからAIにとっては、人間ほど簡単に
    «「ここだけ交換する」»
    とはいきません。

    一部分を変更すると、その部分と周囲との整合性も保たなければならないため、画像全体を再構成するような計算になる場合があります。

    マスクを使った画像編集などは、この問題を軽減するための方法の一つです。


    Q10 従来のGoogle検索とChatGPTは、仕組みがまったく違うの?


    A. 基本的な役割はかなり違います。

    非常に単純化すると、

    検索エンジン
    «「質問に関係する情報が、どこにあるか探す」»

    ChatGPT
    «「入力された内容をもとに、次に来る言葉を予測しながら文章を生成する」»

    という違いがあります。

    たとえばGoogle検索なら、

    検索語
     ↓
    大量のWebページから候補を探す
     ↓
    関連性などを評価
     ↓
    順位をつける
     ↓
    検索結果を表示

    というイメージです。

    一方、ChatGPTは、

    入力
     ↓
    ベクトルなどに変換
     ↓
    大量の数学的計算
     ↓
    次のトークンの確率
     ↓
    トークンを出力
     ↓
    また計算
     ↓
    ……

    という流れです。


    Q11 数学的なアナロジーでいうと、ChatGPTが「ベクトル・内積」なら、Google検索は何?


    A. 伝統的な検索なら、「集合+ランキング」と考えると分かりやすいです。

    たとえば、
    «「夏目漱石について書かれたページ」»
    を探すなら、

    Web上の膨大なページ
            ↓
    検索条件に合うページの集合
            ↓
    関連性を評価
            ↓
    ランキング

    というイメージです。

    したがって、かなり大雑把に言えば、
    «従来型検索=データベース検索+ランキングChatGPT=ベクトルを含む大量の数値計算+文章生成»

    という対比ができます。


    Q12 でも、今のGoogleもベクトルを使っているんじゃない?


    A. はい。ここは重要な但し書きです。

    現在の検索エンジンは、昔ながらのキーワード一致だけで動いているわけではありません。

    検索語やWebページをベクトルとして表現し、«「この検索語と意味的に近いページはどれか」»という計算をする、意味検索・ベクトル検索の考え方も使われています。

    つまり、

    昔の検索
    キーワード → ページを探す → 順位付け

    現在の検索
    キーワード
       ↓
    文字・意味・リンクなど多様な情報
       ↓
    候補を検索・評価
       ↓
    ランキング

    というように、かなり複雑になっています。

    したがって、
    «「Google=ベクトルを使わない」»
    という理解は現在では正しくありません。


    Q13 では「ディープラーニング」は、ニューラルネットワークとは違うの?


    A. 違いますが、非常に近い関係です。

    簡単に言えば、
    «ニューラルネットワークのうち、たくさんの層を持つものを使った学習がディープラーニング(深層学習)»
    と考えるとよいでしょう。

    イメージすると、

    ニューラルネットワーク
            │
            ├─ 浅いネットワーク
           │
            └─ 深いネットワーク
                   ↓
              ディープラーニング

    です。


    Q14 なぜ最近「ディープラーニング」という言葉をあまり聞かなくなったの?


    A. 技術として当たり前になり、さらに具体的な名前が前面に出るようになったからです。

    2010年代には、
    «「ディープラーニングによって画像認識の性能が大幅に向上した」»
    ということ自体が大きなニュースでした。

    現在では、AIの多くの分野で深層学習が前提になっています。

    そのため現在は、
    - Transformer
    - LLM(大規模言語モデル)
    - 生成AI
    - 拡散モデル

    など、より具体的な技術の名前が語られることが多くなりました。

    つまり、
    «ディープラーニングがなくなったのではなく、ディープラーニングが「当たり前の土台」になった»
    と考えると分かりやすいです。


    Q15 では、ChatGPTまでを一本の線でつなぐと?


    A. だいたい次のようにつながります。

    ニューラルネットワーク
            ↓
    深いニューラルネットワーク
            ↓
    ディープラーニング
            ↓
    さまざまな深層学習モデル
            ↓
    Transformer
            ↓
    大規模なTransformer
            ↓
    LLM(大規模言語モデル)
            ↓
    ChatGPTのような生成AI

    そして、その内部では、
    文章
     ↓
    トークン
     ↓
    ベクトル
     ↓
    行列による変換
     ↓
    内積などによる関係の計算
     ↓
    Attention
     ↓
    大量の計算
     ↓
    次のトークンの確率
     ↓
    文章

    ということが、ものすごい規模で行われています。


    Q16 結局、AIは「意味」を理解しているの?


    A. これは、数学的な仕組みの説明だけでは答えが出ない、かなり哲学的な問題です。

    少なくとも技術的には、AIは単に文字列を検索しているわけではありません。

    大量の文章から学習し、言葉と文脈の関係を高次元の数値表現として獲得し、それを使って新しい文章を生成しています。

    一方で、
    «「その数値的な関係を、人間が言うところの『意味の理解』と呼んでよいのか?」»
    という問題は残ります。

    ここで、先ほどの画像編集の例が面白くなります。

    AIは、
    «「左手だけ下げて」»
    という日本語の指示に対して、かなり適切に文章で説明できる。

    ところが実際の画像では、左手と右手を区別して変更することに失敗することがある。

    つまり、
    «言葉の関係を扱えることと、言葉を世界の具体的な対象に正確に結びつけることは同じではない。»

    この違いが、AIの「理解」を考えるうえで、とても興味深いところです。


    画像

    https://note.com/piccolotakamura/m/m7a098a50fcd4


    #数学がすき #AIとできたこと
    #ベクトル #内積 #集合 #Google検索
    #ディープラーニング #生成AI  
    #意味 #Gemini #chatGPT #相関係数
    #コサイン

     
     
     
    初投稿2021/08/08。毎日投稿。2023年から個人企画「青ブラ文学部」。英語、ことば、文学、哲学、数学、時々noteのことなどを書いています。 『星空の恋の方程式』で創作大賞2025中間選考通過。『算数の時間 | 分数を理解しよう!』で「今日の注目記事」に選出。

    あなたへのおすすめ