2026年6月21日日曜日

小学生用 AIとはなにか? 一回目 ディープラーニング

Atraはディープラーニングと何が違うのかの前に、ディープラーニングとは何なのかを簡単に説明しちゃうよ。

AIは、魔法のように考えているわけではありません。

今のディープラーニングの多くは、画像、音、文章を数字に変えて、その数字を何度も計算する仕組みです。


ディープラーニング(深層学習)って何?


1. まず、ディープラーニングは「コンピュータが自分でたくさん学ぶ方法」だよ。


人間の脳は、目で見たものや耳で聞いたものを、神経細胞(ニューロン) がつながって覚えたり考えたりするよね。
ディープラーニングは、人間の脳のニューロンの考え方をヒントにした、数字計算の仕組みだよ








2. じゃ、どうやって学ぶの? → たくさんの「層(レイヤー)」で学ぶ



  • 一番下の層:写真の点々(色や明るさ)を見る
  • 次の層:線や模様(耳や目っぽい形)を見つける
  • もっと上の層:全体の形(「猫の顔だ!」)を理解する
  • 一番上の層:最終的に「猫!」と答える
これが深い(deep) から「ディープラーニング」っていうんだよ。
層が何十層も重なってるんだ!



  1. いっぱいの猫と犬の写真をコンピュータに見せる(たくさん!)
  2. 最初は全然わかんない
  3. でも何度も「これは猫」「これは犬」と正解を教えてあげる
  4. コンピュータは自分で「耳が三角っぽい=猫」「鼻が平ら=犬」みたいにルールを勝手に覚える
  5. 最後には新しい写真を見せても「わかった!猫だ!」って言えるようになる
これが学習だよ。人間の赤ちゃんが写真を見ながら覚えるのと似てるよね。



ディープラーニングは大量のデータたくさんの計算が必要だけど、人間が全部教えてあげなくてもいいところがすごいんだ!


普通のプログラミングだと、
「耳が三角だったら+1点、鼻が黒かったら+2点……」
みたいに人間が一つ一つルールを全部書かないといけないでしょ
でもディープラーニングは、正解の写真をたくさん見せるだけで、コンピュータが自分で「大事なところ」を探し出してくれる。


これを「教師あり学習」と言っているんだ。
(先生が「これ猫、これ犬」と教えてくれるから教師あり)
人間の赤ちゃんが
「わあ、猫だ!」って覚えていくのと、すごく似てるよね。




コンピュータは「数字の箱」で考える


まず、コンピュータには 配列 という箱があります。
たとえば python(パイソンという言語)を例にしてみるよ。


配列(はいれつ)
[1, 2, 3, 4, 5]

普通は、数字を順番に入れておく普通の箱みたいな括りをいうんだけど、たとえば、体育でグループ分けしたときにAというグループという括りの中に皆が順番に並んでいるような状態のことだね。
でもディープラーニングでは、何億個、何兆個もの数字を扱います。
世界中の子供が集まってグループわけしてるような状態だね。

ひとつずつ手で計算していたら、いつまでたっても終わらない!
そこで、NumPy配列 という「計算が得意な特別な箱」を使います。


import numpy as np a = np.array([1, 2, 3]) b = np.array([4, 5, 6]) a + b # → [5, 7, 9]

急に難しくなっちゃったけど、コンピューターが読めるようにcode化したんだ。


イメージ
  • 普通の配列 → 1個ずつ手で運ぶ
  • NumPy配列 → ベルトコンベア でまとめて運ぶ

これで少しは速くなるけど、ディープラーニングはもっともっと巨大です。画像1枚 = 横の点 × 縦の点 × 色(赤・緑・青)
文章 = たくさんの単語を数字に変換したもの
音声 = 時間ごとの波の数字
これらを ベクトル・行列・テンソル という「巨大な数字のかたまり」にして扱います。


入力 → 大きな行列をかける → 少し変形 → また行列をかける → …
を何十層、何百層も繰り返します。学習のときは
「答えを出す → 間違ってる → 間違いを逆に戻す → 数字を少し直す」
を何億回もやるから、ものすごく計算が必要になります。
凄いよね!



そこで出てくるのが「GPU」普通の CPU は、頭のいい職人さんみたいなもの。
何でもできるけど、1回にできる仕事は少ない。




でもディープラーニングで必要なのは、

同じ計算を何百万回も一気にやる こと。
そこで GPU が大活躍します!GPUはもともと、ゲームの画面を描くために生まれたんだ。
画面は「たくさんの点(ピクセル)」でできているから、同じ作業を同時に大量にやる のが得意なんだ。


  • CPU → 何でもできる少数の賢い職人
  • GPU → 同じ作業を一斉にやる大量の作業員
ディープラーニングでは「数字をかけ算する」「足し算する」「行列を計算する」といった同じ作業が山ほど出てくるので、GPUがぴったり。


よくニュースに出てくるNVIDIAのGPUなら CUDA、AMDのGPUなら ROCm という「命令の言葉」を使って、GPUに「こう計算して!」と指示を出します。



こうして大量の数字を高速で計算 できるようになったからこそ、
ニューラルネットワーク(NN)を何層も重ねて動かせるようになったんだ。

思い出してみてね。

  • 数字の箱(テンソル)に入れた情報を
  • ニューロンという小さな判断係に通して
  • 重みで「どの情報を大事にするか」を決めて
  • 何層も重ねて複雑な判断をする


これがディープラーニングの仕組み。



また、少しハードルをあげちゃうよ。

重み
(weight)ってわかるかな?

「大事にする度合い」や「注目する強さ」

「この情報、どれくらい大事に聞くか」の数字 だよ。
たとえば、犬か猫かを見分けるとき
  • 耳の形 → 重み 0.9(すごく大事! よく見る)
  • 目の位置 → 重み 0.8(かなり大事)
  • しっぽ → 重み 0.6(まあまあ大事)
  • お腹の色 → 重み 0.1(ほとんど気にしない)
数字が大きいほど「この情報、めっちゃ信用する!」ってこと。



学習は「間違えたら少し直す」

ニューラルネットワーク(NN)は、最初から賢いわけじゃないよ。
最初の重みはほとんど適当(ランダム)です。
だから最初はよく間違えます。


例:

犬の写真を見せる → NN「猫です!」
人間「ちがうよ、犬だよ」

→ NNが重みを少しだけ直す

これを何百万回、何億回も繰り返すんだ。

間違える → 直す → また間違える → また直す…
を繰り返しているうちに、だんだん正解に近づいていくんだ。

この「どれくらい間違えたか」を数字で表したのが 損失(loss) だよ。
  • lossが大きい → めっちゃ間違ってる
  • lossが小さい → だいたい合ってる
学習とは、lossを小さくするように重みを直すことなんだ。



逆伝播(backpropagation)= 間違いの原因を後ろから探す
ひぇー難しいね~!
でも大事なところ。

NNは間違えたとき、最後だけ直せばいいわけじゃない。
途中の層も悪かったかもしれない。

入力 → 第1層 → 第2層 → 第3層 → 出力(間違い!)

間違えたら逆向きにさかのぼって調べるよ。

「出力が変 → 第3層の重みが悪かった? → 第2層も? → 第1層も少し…」

これを 誤差逆伝播(backpropagation) と言うんだ。

例えばね

工作でロボットを作って、完成したら腕が曲がってた…

→ 最後の組み立てが悪い?
→ その前の部品の切り方が悪かった?
→ 最初の線の引き方が悪かった?

と、後ろから順番に原因を探す感じだよ。



勾配(gradient)= どっちに直せばいいか
(少し難しいから、軽く読み流してね)

重みを直すとき、適当に直すんじゃなくて、
「この数字を少し大きくしたら良くなる? 小さくしたら良くなる?」を計算する。
その「どっち方向に直せば間違いが減るか」を 勾配 と言うよ。

例え話

山の頂上(間違いが多い)から谷の底(ほとんど合ってる)に向かって下りるイメージ。
少しずつ「間違いが減る方向」に進む。これを 勾配降下法 と言うんだ。

なんか、難しいね。

坂道を目隠しで下りてると思って。
足で地面を軽く探って、「こっちに傾いてる! こっちの方が下だ!」という方向の矢印が勾配





学習率(learning rate)= 一歩の大きさ坂を下りるときの歩幅が学習率だよ。

  • 歩幅が大きすぎる → 谷を飛び越えて反対側に行っちゃう(失敗)
  • 歩幅が小さすぎる → 全然進まない(遅すぎる)
ちょうどいい歩幅を見つけるのが大事!




モデル=「計算の形」の違い

今まで話したNNは「基本の形」だけど、
実際のAIは計算の形(設計図) がいろいろ違うんだ。

それがモデルだよ。主なものを簡単に言うと

  • CNN(畳み込みニューラルネットワーク)
    → 画像を見るのがとっても得意!
    (目で写真を見るみたいに、線→形→全体を見る)
  • RNN(再帰型ニューラルネットワーク)
    → 順番や時間の流れを覚えるのが得意だった
    (お話の続きを覚えるみたいな感じ)
  • Transformer
    → 今一番使われている形!
    文章や関係性をすごく上手に理解できる。
    Attention(注意機構) という「大事なところにちゃんと注目する」仕組みが入ってるよ。

今のChatGPTなどのLLM(大規模言語モデル)は、ほとんどこのTransformer がベースになってるんだ。







0 件のコメント:

コメントを投稿

Atra Emotions_Conditions 感情・状態

 -----------------C++------------------ struct EmotionsConditionsNow { // Unpredictability double input_irregularity_now = 0.0 ; ...