Atraはディープラーニングと何が違うのかの前に、ディープラーニングとは何なのかを簡単に説明しちゃうよ。
AIは、魔法のように考えているわけではありません。
今のディープラーニングの多くは、画像、音、文章を数字に変えて、その数字を何度も計算する仕組みです。
ディープラーニング(深層学習)って何?
1. まず、ディープラーニングは「コンピュータが自分でたくさん学ぶ方法」だよ。
人間の脳は、目で見たものや耳で聞いたものを、神経細胞(ニューロン) がつながって覚えたり考えたりするよね。
ディープラーニングは、人間の脳のニューロンの考え方をヒントにした、数字計算の仕組みだよ。
ディープラーニングは、人間の脳のニューロンの考え方をヒントにした、数字計算の仕組みだよ。
2. じゃ、どうやって学ぶの? → たくさんの「層(レイヤー)」で学ぶ
- 一番下の層:写真の点々(色や明るさ)を見る
- 次の層:線や模様(耳や目っぽい形)を見つける
- もっと上の層:全体の形(「猫の顔だ!」)を理解する
- 一番上の層:最終的に「猫!」と答える
層が何十層も重なってるんだ!
- いっぱいの猫と犬の写真をコンピュータに見せる(たくさん!)
- 最初は全然わかんない
- でも何度も「これは猫」「これは犬」と正解を教えてあげる
- コンピュータは自分で「耳が三角っぽい=猫」「鼻が平ら=犬」みたいにルールを勝手に覚える
- 最後には新しい写真を見せても「わかった!猫だ!」って言えるようになる
ディープラーニングは大量のデータとたくさんの計算が必要だけど、人間が全部教えてあげなくてもいいところがすごいんだ!
普通のプログラミングだと、
「耳が三角だったら+1点、鼻が黒かったら+2点……」
みたいに人間が一つ一つルールを全部書かないといけないでしょ。
でもディープラーニングは、正解の写真をたくさん見せるだけで、コンピュータが自分で「大事なところ」を探し出してくれる。
「耳が三角だったら+1点、鼻が黒かったら+2点……」
みたいに人間が一つ一つルールを全部書かないといけないでしょ。
でもディープラーニングは、正解の写真をたくさん見せるだけで、コンピュータが自分で「大事なところ」を探し出してくれる。
これを「教師あり学習」と言っているんだ。
(先生が「これ猫、これ犬」と教えてくれるから教師あり)人間の赤ちゃんが
「わあ、猫だ!」って覚えていくのと、すごく似てるよね。
(先生が「これ猫、これ犬」と教えてくれるから教師あり)人間の赤ちゃんが
「わあ、猫だ!」って覚えていくのと、すごく似てるよね。
配列(はいれつ)
[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 # →
イメージ
文章 = たくさんの単語を数字に変換したもの
音声 = 時間ごとの波の数字これらを ベクトル・行列・テンソル という「巨大な数字のかたまり」にして扱います。
- 普通の配列 → 1個ずつ手で運ぶ
- NumPy配列 → ベルトコンベア でまとめて運ぶ
文章 = たくさんの単語を数字に変換したもの
音声 = 時間ごとの波の数字これらを ベクトル・行列・テンソル という「巨大な数字のかたまり」にして扱います。
入力 → 大きな行列をかける → 少し変形 → また行列をかける → …
を何十層、何百層も繰り返します。学習のときは
「答えを出す → 間違ってる → 間違いを逆に戻す → 数字を少し直す」
を何億回もやるから、ものすごく計算が必要になります。
凄いよね!
でもディープラーニングで必要なのは、
同じ計算を何百万回も一気にやる こと。そこで GPU が大活躍します!GPUはもともと、ゲームの画面を描くために生まれたんだ。
画面は「たくさんの点(ピクセル)」でできているから、同じ作業を同時に大量にやる のが得意なんだ。
を何十層、何百層も繰り返します。学習のときは
「答えを出す → 間違ってる → 間違いを逆に戻す → 数字を少し直す」
を何億回もやるから、ものすごく計算が必要になります。
凄いよね!
そこで出てくるのが「GPU」普通の CPU は、頭のいい職人さんみたいなもの。
何でもできるけど、1回にできる仕事は少ない。
何でもできるけど、1回にできる仕事は少ない。
でもディープラーニングで必要なのは、
同じ計算を何百万回も一気にやる こと。そこで GPU が大活躍します!GPUはもともと、ゲームの画面を描くために生まれたんだ。
画面は「たくさんの点(ピクセル)」でできているから、同じ作業を同時に大量にやる のが得意なんだ。
- CPU → 何でもできる少数の賢い職人
- GPU → 同じ作業を一斉にやる大量の作業員
よくニュースに出てくるNVIDIAのGPUなら CUDA、AMDのGPUなら ROCm という「命令の言葉」を使って、GPUに「こう計算して!」と指示を出します。
こうして大量の数字を高速で計算 できるようになったからこそ、
ニューラルネットワーク(NN)を何層も重ねて動かせるようになったんだ。
思い出してみてね。
- 数字の箱(テンソル)に入れた情報を
- ニューロンという小さな判断係に通して
- 重みで「どの情報を大事にするか」を決めて
- 何層も重ねて複雑な判断をする
また、少しハードルをあげちゃうよ。
重み(weight)ってわかるかな?
「大事にする度合い」や「注目する強さ」
「この情報、どれくらい大事に聞くか」の数字 だよ。
たとえば、犬か猫かを見分けるとき
たとえば、犬か猫かを見分けるとき
- 耳の形 → 重み 0.9(すごく大事! よく見る)
- 目の位置 → 重み 0.8(かなり大事)
- しっぽ → 重み 0.6(まあまあ大事)
- お腹の色 → 重み 0.1(ほとんど気にしない)
学習は「間違えたら少し直す」
ニューラルネットワーク(NN)は、最初から賢いわけじゃないよ。
最初の重みはほとんど適当(ランダム)です。だから最初はよく間違えます。
例:
犬の写真を見せる → NN「猫です!」
人間「ちがうよ、犬だよ」
→ NNが重みを少しだけ直す
これを何百万回、何億回も繰り返すんだ。
間違える → 直す → また間違える → また直す…
を繰り返しているうちに、だんだん正解に近づいていくんだ。
この「どれくらい間違えたか」を数字で表したのが 損失(loss) だよ。
ニューラルネットワーク(NN)は、最初から賢いわけじゃないよ。
最初の重みはほとんど適当(ランダム)です。だから最初はよく間違えます。
例:
犬の写真を見せる → NN「猫です!」
人間「ちがうよ、犬だよ」
→ NNが重みを少しだけ直す
これを何百万回、何億回も繰り返すんだ。
間違える → 直す → また間違える → また直す…
を繰り返しているうちに、だんだん正解に近づいていくんだ。
この「どれくらい間違えたか」を数字で表したのが 損失(loss) だよ。
- lossが大きい → めっちゃ間違ってる
- lossが小さい → だいたい合ってる
逆伝播(backpropagation)= 間違いの原因を後ろから探す
ひぇー難しいね~!
でも大事なところ。
NNは間違えたとき、最後だけ直せばいいわけじゃない。
途中の層も悪かったかもしれない。
入力 → 第1層 → 第2層 → 第3層 → 出力(間違い!)
間違えたら逆向きにさかのぼって調べるよ。
「出力が変 → 第3層の重みが悪かった? → 第2層も? → 第1層も少し…」
これを 誤差逆伝播(backpropagation) と言うんだ。
例えばね
工作でロボットを作って、完成したら腕が曲がってた…
→ 最後の組み立てが悪い?
→ その前の部品の切り方が悪かった?
→ 最初の線の引き方が悪かった?
と、後ろから順番に原因を探す感じだよ。
ひぇー難しいね~!
でも大事なところ。
NNは間違えたとき、最後だけ直せばいいわけじゃない。
途中の層も悪かったかもしれない。
入力 → 第1層 → 第2層 → 第3層 → 出力(間違い!)
間違えたら逆向きにさかのぼって調べるよ。
「出力が変 → 第3層の重みが悪かった? → 第2層も? → 第1層も少し…」
これを 誤差逆伝播(backpropagation) と言うんだ。
例えばね
工作でロボットを作って、完成したら腕が曲がってた…
→ 最後の組み立てが悪い?
→ その前の部品の切り方が悪かった?
→ 最初の線の引き方が悪かった?
と、後ろから順番に原因を探す感じだよ。
勾配(gradient)= どっちに直せばいいか
(少し難しいから、軽く読み流してね)
重みを直すとき、適当に直すんじゃなくて、
「この数字を少し大きくしたら良くなる? 小さくしたら良くなる?」を計算する。その「どっち方向に直せば間違いが減るか」を 勾配 と言うよ。
例え話
山の頂上(間違いが多い)から谷の底(ほとんど合ってる)に向かって下りるイメージ。
少しずつ「間違いが減る方向」に進む。これを 勾配降下法 と言うんだ。
(少し難しいから、軽く読み流してね)
重みを直すとき、適当に直すんじゃなくて、
「この数字を少し大きくしたら良くなる? 小さくしたら良くなる?」を計算する。その「どっち方向に直せば間違いが減るか」を 勾配 と言うよ。
例え話
山の頂上(間違いが多い)から谷の底(ほとんど合ってる)に向かって下りるイメージ。
少しずつ「間違いが減る方向」に進む。これを 勾配降下法 と言うんだ。
なんか、難しいね。
坂道を目隠しで下りてると思って。
足で地面を軽く探って、「こっちに傾いてる! こっちの方が下だ!」という方向の矢印が勾配
足で地面を軽く探って、「こっちに傾いてる! こっちの方が下だ!」という方向の矢印が勾配
学習率(learning rate)= 一歩の大きさ坂を下りるときの歩幅が学習率だよ。
- 歩幅が大きすぎる → 谷を飛び越えて反対側に行っちゃう(失敗)
- 歩幅が小さすぎる → 全然進まない(遅すぎる)
モデル=「計算の形」の違い
今まで話したNNは「基本の形」だけど、
実際のAIは計算の形(設計図) がいろいろ違うんだ。
それがモデルだよ。主なものを簡単に言うと
今まで話したNNは「基本の形」だけど、
実際のAIは計算の形(設計図) がいろいろ違うんだ。
それがモデルだよ。主なものを簡単に言うと
- CNN(畳み込みニューラルネットワーク)
→ 画像を見るのがとっても得意!
(目で写真を見るみたいに、線→形→全体を見る) - RNN(再帰型ニューラルネットワーク)
→ 順番や時間の流れを覚えるのが得意だった
(お話の続きを覚えるみたいな感じ) - Transformer
→ 今一番使われている形!
文章や関係性をすごく上手に理解できる。
Attention(注意機構) という「大事なところにちゃんと注目する」仕組みが入ってるよ。
0 件のコメント:
コメントを投稿