もう迷わない!数学嫌いのエンジニアに贈る余弦定理と機械学習の意外な関係

こんにちは。ゆうせいです。

数学と聞いただけで、学生時代の苦い記憶が蘇って身構えてしまう方も多いのではないでしょうか。ましてや「機械学習」なんて言葉が合わさると、まるで別世界の出来事のように感じてしまいますよね。

でも、安心してください。実は機械学習の世界で使われている数学は、突き詰めれば私たちが中学生や高校生の頃に触れた知識の延長線上にあります。今回は、機械学習の「目」とも言える重要な概念、余弦定理について、皆さんと対話しながら解き明かしていきたいと思います。

準備はいいですか?それでは、一緒に新しい知識の扉を開きましょう!

なぜ機械学習に数学が必要なの?

そもそも、なぜコンピューターに学習させるために数学が必要なのでしょうか。

それは、コンピューターが「言葉」や「画像」をそのままでは理解できないからです。彼らは数字しか食べることができません。そこで私たちは、あらゆる情報を数字の羅列、つまり「ベクトル」という形に変換して渡してあげる必要があります。

例えば、ある人の「身長」と「体重」を数字にして、グラフの上にポツンと点を打つイメージをしてみてください。機械学習とは、このグラフ上の点と点の距離を測ったり、向きを比べたりして、「このデータとあのデータは似ているな」と判断する作業のことなのです。

この「似ているかどうか」を判定するときに、今回主役となる余弦定理が大活躍します。

余弦定理を高校生レベルで再定義する

さて、懐かしの余弦定理についてお話しします。定理という言葉を聞くと難しそうですが、要は「三角形の辺の長さと角度の関係」を表したルールに過ぎません。

専門用語の解説:コサイン(Cosine)

まず、余弦定理の「余弦」とは、数学でいう「コサイン( \cos )」のことです。

これは、ある角度がどれくらい「横に倒れているか」を表す指標だと考えてください。

例えば、坂道を想像してみましょう。

角度が 0 度、つまり真っ平らな道なら、コサインの値は 1 になります。

逆に、絶壁のような 90 度の壁なら、横への進みはゼロなのでコサインの値は 0 です。

余弦定理の公式を分解してみよう

一般的な三角形において、辺の長さを abc とし、辺 c の向かい側にある角度を C とすると、次のような式が成り立ちます。

c^{2} = a^{2} + b^{2} - 2 \times a \times b \times \cos C

この式、どこかで見覚えはありませんか?

そう、直角三角形で有名な「三平方の定理」にそっくりですよね。

もし角度 C90 度なら、 \cos 90^{\circ} = 0 になるため、後ろのパーツが丸ごと消えて c^{2} = a^{2} + b^{2} に戻ります。余弦定理は、どんな角度の三角形でも使える「三平方の定理の進化版」なのです!

機械学習でどう使われる?「コサイン類似度」の魔術

では、この数学の知識がどうやって機械学習に化けるのでしょうか。

実務で最も使われるのが「コサイン類似度」という考え方です。

似ているものを見つける仕組み

想像してみてください。あなたは今、音楽のおすすめ機能を開発しているとします。

ユーザーが聴いた「曲A」と「曲B」が似ているかどうかを判定したいとき、それぞれの曲の特徴をベクトル(矢印)として捉えます。

  • 矢印が同じ方向を向いている = 似ている曲
  • 矢印がバラバラの方向を向いている = 全く違うジャンルの曲

この「矢印がどれくらい同じ方向を向いているか」を測るために、先ほどの余弦定理から導き出されるコサインの値を使うのです。

コサインの値は、向きが完全に一致していれば 1 になり、正反対なら -1 になります。つまり、この数字が 1 に近ければ近いほど「この二つのデータは似ている!」とAIが判断できるわけです。

余弦定理を使うメリットとデメリット

どんな便利な道具にも、得意・不得意があります。

メリット:データの大きさに惑わされない

コサイン類似度の最大の長所は、データの「規模」に影響を受けない点です。

例えば、長い文章と短い文章を比べるとき、単語の数自体は違っても、話題(方向性)が同じであれば正しく「似ている」と判定できます。

デメリット:絶対的な量は無視される

逆に言えば、データの「大きさ」そのものが重要な場合には不向きです。

例えば、テストの点数が「 10 点と 20 点」なのか「 50 点と 100 点」なのかという違いは、コサイン類似度ではどちらも「 1 \div 2 の比率」として同じように扱われてしまう可能性があります。

研修講師が教える!機械学習の学習環境づくり

数学の理論が分かったところで、実際に手を動かすための「環境」についても触れておきましょう。初心者がまず整えるべき道具は以下の通りです。

  1. プログラミング言語:Python現在、機械学習のデファクトスタンダード(標準)です。読みやすく、数学ライブラリが充実しています。
  2. 実行環境:Google Colaboratory自分のパソコンに難しい設定をすることなく、ブラウザ上で今すぐプログラムを書き始められます。
  3. ライブラリ:NumPy(ナンパイ)先ほどの余弦定理のような複雑な計算を、一瞬で、しかも大量にこなしてくれる魔法のツールです。

例えば、Pythonを使ってコサイン類似度を計算するコードは、非常にシンプルに書けます。

Python

import numpy as np

vector_a = np.array([1, 2, 3])
vector_b = np.array([4, 5, 6])

cosine_similarity = np.dot(vector_a, vector_b) / (np.linalg.norm(vector_a) * np.linalg.norm(vector_b))
print(cosine_similarity)

この数行で、AIが「似ている度合い」を計算してくれるなんて、ワクワクしませんか?


まとめと今後のステップ

今回は、余弦定理という数学の道具が、機械学習において「データの似ている度合いを測る物差し」として使われていることをお話ししました。

数学は決して、テストのために暗記するだけのものではありません。現実世界の複雑な情報を、コンピューターが理解できる形に翻訳するための大切な共通言語なのです。

さて、ここから先はどう学習を進めればよいでしょうか。

まずは、Google Colaboratoryを開いて、簡単な計算をPythonで実行してみることから始めてみてください。数式をコードに変換する楽しさを知れば、もう数学はあなたの味方です。

セイ・コンサルティング・グループでは新人エンジニア研修のアシスタント講師を募集しています。

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。

学生時代は趣味と実益を兼ねてリゾートバイトにいそしむ。長野県白馬村に始まり、志賀高原でのスキーインストラクター、沖縄石垣島、北海道トマム。高じてオーストラリアのゴールドコーストでツアーガイドなど。現在は野菜作りにはまっている。