「似ている」をどうやって測るのか? 圃場の状態マップで理解する「コサイン類似度」
農業者のためのAI教養講座|書籍『ChatGPTはどのように動いているのか?』を農業の言葉で読み解く 第3回
第2回で、AIは言葉を「数字の並び(ベクトル)」に変換していることを学びました。
トマトの作物カルテが[8.5, 4.5, 92, 3.0, 7.8]のように表せるのと同じように、「りんご」も「トラクター」も数字の並びで表現されている。
でも、ここでまた疑問が浮かびます。
「数字にしたのはいいけど、2つのベクトルが”似ているかどうか”って、どうやって測るの?」
答えは、「角度」です。
「角度? 方向?」と思うかもしれませんが、安心してください。今回の主役は圃場の状態マップです。
この記事は、書籍『ChatGPTはどのように動いているのか?』を農業の言葉で読み解く 全13回連載の第3回 です。
🗺️ ベクトルを「地図」に並べてみよう ── 意味の空間
第2回で、言葉を数字の並びに変えました。
では、その数字を使って地図を作ってみたらどうなるでしょう?
まずは農業の例で考えます。たとえば5つの品種を「甘さ」と「酸味」の2項目だけで評価して、地図上に置いてみると──
品種の「意味マップ」── 甘さ × 酸味で配置
↑ 酸味
🍎 りんご
🍊 みかん
🍓 いちご
🍅 トマト
🚜 トラクター
果物どうしは固まり、「トラクター」だけ離れた場所に。
見た瞬間に分かりますよね。果物は右上あたりに固まり、トラクターだけ左下にぽつん。
これが「ベクトル空間」の発想です。
ベクトル(数字の並び)を座標として使い、品種を「地図」に配置する。すると、似たもの同士は近くに、違うものは遠くに自然と並びます。
ChatGPTも同じことをしています。「りんご」「みかん」「いちご」の言葉ベクトルは地図上で近い位置にあり、「トラクター」のベクトルは遠い位置にある。
ベクトル空間 = 品種や圃場を「特徴の数値」で配置した地図。
今回は甘さ×酸味の2項目(=2次元)で作りましたが、第2回で学んだように ChatGPT は数百〜数千項目(数千次元)で作っています。人間には見えない地図ですが、仕組みはまったく同じです。
📐 「近い」「遠い」を数字で測りたい ── コサイン類似度
地図を見れば「似ている」は一目瞭然。でも、AIは目で見て判断できません。
だから「2つのベクトルがどれくらい似ているか」を数字で測る方法が必要です。
それがコサイン類似度。
名前は難しそうですが、考え方はシンプルです:
2つの矢印(ベクトル)の「向きがどれくらい揃っているか」を測る。
ぴったり同じ向きなら 1、まったく無関係なら 0、正反対なら -1。
第2回の品種データで実際に測ってみましょう:
🍎 りんご ↔ 🍓 いちご
0.97
ほぼ同じ
🍎 りんご ↔ 🍊 みかん
0.91
とても近い
🍎 りんご ↔ 🍅 トマト
0.72
やや近い
🍎 りんご ↔ 🚜 トラクター
0.12
まったく違う
地図で「近い」と感じたペアほど、コサイン類似度の数値も高い。
AIはこの数値を使って、「この2つの言葉は似ている」「この文脈にはこの言葉が合う」と判断しています。
コサイン類似度 = 2つのベクトルの「向きの揃い具合」を 0〜1 で測るものさし。
1に近いほど「似ている」、0に近いほど「関係ない」。ChatGPTが「文脈に合う言葉」を選ぶときの判定基準のひとつです。
🤔 なぜ「距離」ではなく「角度」なのか? ── 大農家と小農家のたとえ
「似ているかどうかを測るなら、単純に距離(2点間の長さ)でいいのでは?」
いい疑問です。でも、距離だと困るケースがあります。
📏
距離で測ると…
2つの点が地図上でどれくらい離れているか
A農家(小規模):出荷量 2t / 売上 80万円
B農家(大規模):出荷量 200t / 売上 8,000万円規模が100倍違うだけで距離は大きくなる。
でも「売上単価」はまったく同じ。
規模に振り回される ❌
🧭
角度(コサイン)で測ると…
2つの矢印がどれくらい同じ方向を向いているか
A農家(小規模):出荷量 2t / 売上 80万円
B農家(大規模):出荷量 200t / 売上 8,000万円数値の規模は100倍違うが向きは同じ。
コサイン類似度 = 1.0(完全一致)
本質を見抜ける ✅
農業でたとえると──
小規模の有機農家Aさんと、大規模法人のBさん。
出荷量も売上も100倍違いますが、「1トンあたりの売上単価」という経営のバランスはまったく同じ。距離で測ると「まったく違う農家」と出ますが、角度で測ると「経営方針は同じ」と正しく判定できます。
AIの世界でも同じです。文章が長かったり短かったりすると、ベクトルの大きさは変わります。でもコサイン類似度は向きだけを見るので、文章の長さに振り回されない。
だから、ChatGPTの類似度計算にはコサイン類似度が使われるのです。
⚖️ 比較の前に「スケール」を揃える ── 正規化
もうひとつ、ベクトルを比較する前に大切な準備があります。正規化です。
たとえば、トマトの作物カルテにはこんな項目がありました:
- 糖度:0〜15 くらいの範囲
- 水分:0〜100% の範囲
このまま比較すると、水分の数値が大きいだけで「水分が一番重要な特徴だ」と引っ張られてしまうのです。
だから、比較する前にすべての項目を「同じ目盛り」に揃える。これが正規化です。
やり方はシンプル── 各項目を、その項目が取りうる最大値で割るだけ。
この計算を通すと、作物カルテがどう変わるか見てみましょう:
正規化:スケールを揃えて公平に比較する
- 糖度(0〜15) 8.5
- 酸度(0〜10) 4.5
- 水分(0〜100%) 92
- 硬さ(0〜10) 3.0
- 赤色度(0〜10) 7.8
水分「92」が突出して大きい → 比較時に水分の影響が支配的になってしまう
- 糖度 0.57
- 酸度 0.45
- 水分 0.92
- 硬さ 0.30
- 赤色度 0.78
すべて 0〜1 の同じスケールに → 各特徴が公平に比較される
変換後の数値を見ると、水分が「92 → 0.92」になっても一番高いのは変わらない。つまり正規化は「水分の重要性を消す」のではなく、「どの項目も公平に見たうえで、本当に大きい特徴は大きいまま残る」ようにする処理です。
農業の現場や日常生活の事例に置き換えると──
収穫量(トン単位)と糖度(Brix単位)をそのまま比べたら、収穫量の数値が大きいだけで「似ている」と出てしまう。
だから比較する前に、すべての項目を同じ目盛りに揃える(正規化する)。やっていることは、テストの点数を「100点満点に換算し直す」のと同じ。
英語が200点満点で、数学が50点満点だったら、そのまま足したら英語の点数が支配してしまう。
全教科を100点満点に揃えてから比べる── それが正規化です。
ChatGPTの中でも、ベクトルの各数値がバラバラなスケールだと比較が偏るため、正規化して「どの特徴も公平に扱える状態」にしてからコサイン類似度を計算しています。
正規化 = 異なる単位の測定値を、同じ目盛り(0〜1)に揃えること。
糖度(0〜15)と水分(0〜100%)のように範囲が違う項目を、それぞれの最大値で割って同じスケールにする。そうすれば、数値が大きい項目だけに引っ張られず、すべての特徴を公平に比較できる。AIもまったく同じ前処理をしています。
🔧 ChatGPTの中で何が起きているか ── 3ステップで理解する
ここまでの話を整理すると、ChatGPTが「似た言葉」を見つけるまでの流れはこうなります:
ベクトル化
言葉→数字の並び
→
正規化
スケールを揃える
→
コサイン類似度
向きで「似ている」を判定
農業の言葉で流れを追うと:
1
作物カルテを作る(ベクトル化)
言葉を「糖度・酸味・水分…」のような数値の並びに変換
2
目盛りを揃える(正規化)
単位がバラバラだと比較が偏るので、同じスケールに変換
3
カルテの「向き」を比べる(コサイン類似度)
数値パターンが同じ方向を向いていれば「似ている」
この3ステップで、ChatGPTは「この質問に一番近い情報はどれか」「次に来そうな言葉はどれか」を判断しています。
第1回で「次の言葉を予測する装置」と学びました。その予測の裏では──
ベクトル化
言葉→数字の並び
→
類似度を測る
ベクトルの近さを比較
→
次の言葉を出す
一番近い候補を予測
第1〜3回で、ChatGPTの土台がひととおり見えました。
💡 「似ている」の測り方を知ると、AI検索の仕組みが見える
AIは言葉をベクトルにした後、「向きの揃い具合(コサイン類似度)」で似ているかどうかを測っています。
これは、圃場の土壌データを地図に置いて「パターンが近い圃場同士」を見つけるのとまったく同じ発想です。
「距離」ではなく「角度(向き)」で測ることで、規模の違いに惑わされず、本質的な類似性を判定できます。
この知識があると、AIの使い方が変わります:
-
「AI検索」の仕組みが分かる
Google検索は「キーワードが含まれるか」で探す。AI検索は「質問と答えのベクトルが近いか(コサイン類似度が高いか)」で探す。だからキーワードが一致しなくても関連情報が見つかる
-
「言い換え」に強い理由が分かる
「葉が黄色くなった」と「葉が変色した」はキーワードが違うが、ベクトルが近い。だからAIは同じ意味だと判断できる
-
質問の書き方が変わる
AIはベクトルの「向き」を見ている。だから文脈や状況を詳しく書くほど、ベクトルの向きが正確になり、的確な回答が返る
まとめ
- ベクトルを座標として地図に置くと、似たもの同士が近くに配置される。これが「ベクトル空間」
- 「似ている」を数字で測る方法がコサイン類似度。ベクトルの「向きの揃い具合」で判定する
- 「距離」ではなく「角度(向き)」で測ることで、規模の違いに惑わされず本質的な類似性が分かる
- 比較の前に正規化(スケール揃え)をすることで、大きな数値に引っ張られない公平な比較ができる
- ChatGPTは「ベクトル化 → 正規化 → コサイン類似度」の流れで、言葉の「似ている度合い」を判定している
✅ 5分アクション ── 「類似度」を自分の手で体感しよう
✅ 今日の5分アクション:コサイン類似度を体感してみよう
- ChatGPT(無料版でOK)を開く
- 以下のプロンプトをコピーして貼り付ける
- AIが返す「類似度スコア」を見て、「似ている=ベクトルの向きが近い」を実感する
以下の4つの圃場の土壌データがあります。
圃場A:pH 6.2 / EC 0.8 / 窒素 12 / リン酸 15 / カリウム 18
圃場B:pH 6.0 / EC 0.9 / 窒素 14 / リン酸 16 / カリウム 20
圃場C:pH 4.5 / EC 2.1 / 窒素 35 / リン酸 8 / カリウム 10
圃場D:pH 7.8 / EC 0.3 / 窒素 5 / リン酸 30 / カリウム 25
それぞれのペア(A-B、A-C、A-D、B-C、B-D、C-D)について、
コサイン類似度を計算してください。
その後、「最も管理方針が似ている圃場ペア」と
「最も異なる圃場ペア」を教えてください。
あなたはAIの仕組みを教える先生です。
以下の6つの言葉について、
「食べ物」「農作業」「機械」「甘さ」「季節感」の5軸で
-1.0〜1.0のスコアを付けてください。
①トマト ②いちご ③田植え ④コンバイン ⑤ぶどう ⑥稲刈り
表形式で出してください。
そのあと、全ペアのコサイン類似度を計算して、
「最も意味が近いペア」と「最も遠いペア」を発表してください。
最後に、この6つの言葉を2次元の散布図に配置するなら
どういう配置になるか、テキストで図を描いてください。
圃場A-Bは数値パターンが似ているので類似度が高く出るはず。「数値が近い=コサインが近い=管理方針が似ている」という感覚が掴めるはずです。AIもこれを言葉の世界でやっています。
📚 参考文献
- 📕 中西 崇文『ChatGPTはどのように動いているのか?』翔泳社、2026年。第2章後半「次元・空間・コサイン類似度・正規化」
- 🔗 LLMの秘密:「次の言葉を予測するだけ」で人間のように振る舞う仕組み(Grune)
- 🔗 ChatGPTの仕組みを分かりやすく解説(note)── ベクトル空間とコサイン類似度の概念
💬読者の声をお聞かせください
この記事に関するご質問・ご感想をお待ちしています。
最後までお読みいただきありがとうございます。
農業AI通信では、農家さんの「困った」を解決するAI活用情報を発信しています。
※ この記事はAIツール(ChatGPT・Claude等)を活用して作成し、編集部が内容を確認・編集しています。正確性には十分配慮していますが、最新情報は公式サイト等でご確認ください。

