「YOLOが板チョコみたいにマス目で画像を分割して見ているのは分かった。でも、そのマス目の中身って結局どう処理されているの?」

前回の記事を読んでいただいた方から、そんな疑問の声が聞こえてきそうです。

こんにちは!
北海道大学で画像処理(AI)を研究しているヒグマです。

前回は、YOLOというAIが「どう動くのか」というイメージだけをお話ししました。

今回はそこからもう一歩だけ踏み込んで、AIの中身がどんなパーツで組み立てられているのかを覗いてみましょう。

とはいえ、ご安心ください。

今回も数式や難しいコードは一切使いません。使うのは「工場のラインダイヤル」のイメージだけです。

この仕組みをなんとなくでも知っておくと、この後に実際にプログラムを動かして研究や開発を進める際に「あ、今これを計算させているんだな」と迷子にならずに済みと思います。

AIの中身は「ニューラルネットワーク」

YOLOによる物体検出も、ChatGPTのような文章生成も、スマホの顔認証も、中身はぜんぶ「ニューラルネットワーク」という仕組みでできています。

名前だけ聞くとすごく仰々しいですが、やっていることの基本は意外と単純です。

「数字を入れると、別の数字が出てくる箱」

本当にこれだけです。写真を入れたら「これは犬です」という結果が出てくる。

音声を入れたら文字が出てくる。

どのような処理であっても、中身はすべて「数字の入力と出力」で行われています。

では、その不思議な箱の中身を開けてみましょう。

ネットワークは、大きく3つのパーツ(層)でできています。

構成①:入力層 — 世界を数字に翻訳する入口

まず大前提として、AIは人間のように画像を「見て」いるわけではありません。AIは数字しか扱うことができません。

「じゃあ、どうやって画像を処理するの?」というと、画像をすべて数字に置き換えてしまいます。

写真は、細かい点(ピクセル)がギュッと集まってできていますよね。たとえば白黒写真なら、それぞれの点の明るさを「0(真っ黒)〜255(真っ白)」という数字で表すことができます。

 つまり、28×28ピクセルの小さな画像であれば、784個の数字がズラッと並んだデータとして扱えるわけです。

この「外界のデータを数字に変換して受け取る最初の入り口」のことを、入力層と呼びます。

  • ここが大事なポイント
    AIにとって画像とは、ただの数字の羅列です。「かわいい犬の写真」も、AIから見れば「784個の数字の固まり」でしかありません。

構成②:隠れ層 — 特徴を見つけ出す「工場のライン」

ここがAIの本体です。そして、頭の中で一番イメージしにくい部分でもあるので、「工場のベルトコンベア(ライン)」を想像してみてください。

入力層で受け取った大量の数字は、いくつもの「工程」を順番に通っていきます。

  1. 第1工程:「あ、ここに縦の線があるな」「ここは斜めの線だな」と単純な線を見つける

  2. 第2工程:縦線と横線の情報を組み合わせて「ここは角っぽいぞ」と判断する

  3. 第3工程:角と丸の情報をさらに組み合わせて「これは目のような形だ」と認識する

  4. 第4工程:目と鼻と耳っぽいものが揃ったから「これは顔かもしれない」と推測する

こんなふうに、単純なパーツから複雑な意味へと、少しずつ組み立てていくのがニューラルネットワークの最大の特徴です。

この工程のひとつひとつを専門用語で「層(レイヤー)」と呼びます。そして、入力層(入口)でも出力層(出口)でもない、外からは見えない途中の作業工程なので隠れ層という名前がついています。

「ディープラーニング」の"ディープ"って何?

AIの話題でよく聞く「ディープラーニング(深層学習)」ですが、この"ディープ(深い)"という言葉は、「この隠れ層の工程がたくさんある」という意味です。ただそれだけです。

工程が3つしかなければ「浅い」ネットワーク。100個もあれば「深い」ネットワークです。工程(層)が多いほど複雑なものを正確に認識できるようになりますが、その分だけ計算量が増え、時間もかかります。 「深い=AIとして優れている」と直結するわけではなく、「深い=作業工程が多い」と覚えておけば十分です。

構成③:出力層 — 最終的な答えを出す出口

工場の長いラインを通り抜けた最後に、いよいよ答えが出力されます。これが出力層です。

たとえば「手書きの数字が0〜9のどれか」を当てるAIを作ったとします。この場合、出口には10個の数字(確率)が並びます。

  • 0の可能性:0.01

  • 1の可能性:0.02

  • ...

  • 7の可能性:0.89 (一番大きい!)

  • ...

AIはこれらを見比べて、一番数値の大きいものを選び「これは7です」と答えます。 ここで重要なのは、AIは「絶対に7だ!」と断言しているわけではなく、「7である可能性が一番高いと思う」と言っているに過ぎないということです。だからこそ、AIは時々間違えます。ここは意外と誤解されやすいポイントなので覚えておいてください。

一番の主役:「重み」というダイヤル

さて、ここまで「情報を工程に通す」と説明してきましたが、各工程では具体的に何が行われているのでしょうか。

イメージとしては、各工程に無数のダイヤル(つまみ)がズラッと並んでいると思ってください。

数字がある工程に入ってくると、それぞれのダイヤルの設定に応じて「この情報は重要だから数値を大きくしよう」「この情報は今回どうでもいいから小さくしよう」という微調整が行われます。 このダイヤルの設定値のことを、専門用語で重み(weight)と呼びます。

そして、声を大にして言いたい最も重要な事実がこれです。

AIの「賢さ」の正体は、このダイヤルの設定値そのものである

研究でよく「学習済みモデル(YOLOなら yolo11n.pt のようなファイル)」をダウンロードすることがあると思います。実はあのファイルの中身には、魔法のようなプログラムが入っているわけではありません。膨大な数のダイヤルの「最適な設定値」がただ保存されているだけなのです。

じゃあ「学習」って何をしているの?

ここまで来れば、「AIを学習させる」という意味も非常にシンプルに説明できます。

学習とは、無数のダイヤルを「正しい位置」に回していく作業のことです。

一番最初、ダイヤルはすべてデタラメな位置にセットされています。だから、いくら犬の写真を見せても、答えはめちゃくちゃです。そこで、AIは次のようなプロセスを延々と繰り返します。

  1. 問題を解かせる:「この写真は何?」と聞く

  2. 答え合わせをする:「AIは3と答えたけど、正解は8だったよ」と教える

  3. 間違い具合を測る:この「どれくらい間違えたか」という指標を損失(loss)と呼びます

  4. ダイヤルを少しだけ回す:間違い(損失)が減る方向に、ダイヤルをほんの少しだけ調整する

  5. 1に戻る

これを何万回、何十万回と繰り返していくと、だんだんダイヤルの位置が最適化されていき、正解できるようになります。 テストで間違えた問題を復習して、次は解けるようになるのと同じですね。AIは、人間には不可能な回数の復習を異常なスピードでこなしているだけとも言えます。

  • 学習における2つのポイント

    • 一気に正解には辿り着けない:少しずつダイヤルを回すのを繰り返す地道な作業です。だから学習には膨大な時間がかかりますし、計算を高速化するGPUが必要になります。

    • 大量のデータが必要:問題数が少なければ、十分な復習になりません。「AIには大量のデータが必要」とよく言われるのは、この「少しずつダイヤルを合わせる仕組み」が理由です。

YOLOの構成に当てはめてみよう

さて、ニューラルネットワークの基本が分かったところで、前回の主役だったYOLOの構成に戻ってみましょう。 YOLOのような物体検出モデルは、基本的に3つのブロックに分かれています。

ブロック名役割働き
① Backbone背骨画像から特徴(線や角、模様など)を抽出する部分。さっきの「工場のライン」のメインとなる本体です。
② Neck背骨が見つけた情報を整理して繋ぐ部分。大きい特徴と小さい特徴を混ぜ合わせる重要な役割があり、これのおかげで「遠くの小さな人」と「手前の大きなバス」を同時に見つけられます。
③ Head最終的に「どこに」「何が」あるかを答える出力部分。前回の板チョコの例で、マス目が「ここにバスの窓があるよ!」と報告していたのは、この頭の仕事です。

背骨で特徴を見て、首で情報をまとめて、頭で最終的な答えを出す。名前もそのままなので、非常に覚えやすい構成になっています。

まとめ

今回のポイントをおさらいします。

  • AIの中身はニューラルネットワーク。「数字を入れると数字が出てくる箱」である。

  • 入力層で画像を数字に変換し、隠れ層で少しずつ特徴を組み立て、出力層で答え(確率)を出す。

  • 「ディープ」とは、隠れ層の工程数が多いというだけの意味。

  • AIの賢さの正体は「重み(ダイヤルの設定値)」。

  • 学習とは、間違いが減る方向にダイヤルを少しずつ回し続ける地道な作業のこと。

  • YOLOは「Backbone(背骨)」「Neck(首)」「Head(頭)」の3ブロック構成。

いかがでしょうか。「数式ばかりで難しそう…」と思っていたAIの中身が、「なんとなく想像はつくかも」くらいになっていれば大成功です。

次回予告

AIの頭の中のイメージが掴めたところで、次はいよいよ実際にAIを自分で学習させてみます。

題材はシンプルな「手書き数字の認識」です。今日出てきた入力層・隠れ層・出力層・重み・学習といった概念が、実際のプログラムでどう書かれるのかを一緒に見ていきましょう。 今日の内容が頭に入っていれば、コードを見ても「あ、これがさっき言っていたダイヤルの部分か」とスムーズに理解できるはずです。お楽しみに!

#高専 #研究 #AI #機械学習 #ディープラーニング #初心者向け