ネコにもイヌにも、毛も目も耳もある。低レベル特徴が似た2つの対象を見分けるには、何が必要なのだろうか。パーセプトロン・SVMが平面1枚で行き詰まる理由を3次元で回して確かめ、隠れ層が座標を変える様子を見る。続いて、CNNが写真を確率に変える全過程と学習をたどり、重要なかけらを貼り付けて正解を混ぜるデータ拡張(Attentive CutMix)を実際にやってみる。
どちらにも毛があり、目が2つあり、耳が立っている。低レベル特徴だけでは見分けにくい。モデルは何を積み重ねれば、この2つを見分けられるのだろうか?
4-2のネコ vs ヒトは、毛と肌という低レベル特徴からして違っていました。ネコ vs イヌは違います。どちらにも毛があるのでエッジの地図が似ており、違いはマズルの長さ、鼻の大きさ、顔の輪郭といった部分の形にあります。
この回では3つのことを見ます。なぜ層を重ねると、平面1枚では分けられなかったものが分けられるのか(セクション2)、CNNが写真を確率に変える過程(セクション3〜4)、そしてモデルが重要な部分に集中するよう教えるデータ拡張、図のAttentive CutMix(セクション5〜6)です。
図は、ネコの写真でモデルが最も強く反応したかけら(目・耳のあたり)を選んでイヌの写真に貼り付け、貼った面積の分だけ正解を混ぜる方法です。49マスのうち6マスがネコなので、正解は「ネコ6/49、イヌ43/49」になります。セクション6で実際にやってみます。
4-1のパーセプトロンとSVMは平面を1枚引く。ピクセル座標のままでは平面1枚で分けられない。解決策は座標を変えることであり、その方法を誰が決めるかが、カーネルSVMと多層ニューラルネットワークを分ける。
線形分類器は、特徴空間に平面を1枚(2次元なら直線、3次元なら平面、それ以上なら超平面)引き、点がどちら側にあるかで答えます。単層パーセプトロンと線形SVMはどちらもこの形で、どちらも重みwとバイアスbを求めます。違いは平面を選ぶ基準だけです。パーセプトロンは間違った点がなくなれば止まり、SVMは2つの群との間隔(マージン)が最も広い平面を選びます。ですから、重みを求めるという事実は両者を分ける違いではありません。
かんたんに言うとテーブルの上で混ざった黒い玉と白い玉を、定規1本で分ける作業です。黒い玉が真ん中に集まり、白い玉がその周りを囲んでいると、定規をどう置いてもどちらかが切れてしまいます。そこでテーブルを真ん中がくぼむように曲げると、黒い玉は下に下がり、白い玉は上に残るので、水平な板1枚で分けられます。カーネルSVMは人がテーブルの曲げ方を決めてあげるもので、多層ニューラルネットワークは曲げ方を自ら学ぶものです。
真ん中の群と、その周りを囲む群という2つの群の点です(説明用の架空データ)。ボタンで方法を切り替え、図をドラッグして回してみましょう。③の隠れ層(ニューロン3個)は、このページを開いたときにブラウザで実際に学習させた結果です。
● 真ん中の群 ● 周りの群 紫の面 = 境界の平面。図をクリックしてから矢印キーでも回せます。
| 方法 | 境界の形 | 座標(特徴)を決めるのは | 生のピクセル写真では | 登場 |
|---|---|---|---|---|
| 単層パーセプトロン | 平面1枚 | 変えない | うまくいかない | 1958 |
| 線形SVM | 平面1枚(マージン最大) | 変えない | うまくいかない(パーセプトロンよりはおおむね良い) | 1990年代 |
| カーネルSVM | 元の空間で曲がった境界 | 人がカーネルで決める | 単純な画像(手書き数字)ではうまくいくが、自然な写真では限界 | 1992~ |
| 多層パーセプトロン · CNN | 元の空間で曲がった境界 | データから学習 | うまくいく(十分なデータが必要) | 1986〜、CNNは2012年に飛躍 |
手書き数字(MNIST)では、カーネルSVMがピクセルだけでも誤り率1%前後を出しました(LeCunら、1998の比較)。写真が複雑になるほど、人が適したカーネルを選ぶのは難しくなります。逆に、学習済みCNNが取り出した特徴ベクトルに線形SVMをつないでも、分類はうまくいきます(Razavianら、2014)。性能を分けたのは分類器の種類ではなく、特徴だということです。
「SVMがうまくいかなかったからパーセプトロンが生まれた」というのは順序が逆です。パーセプトロン(1958)が先に登場し、層を重ねたニューラルネットワークを学習させるのが難しかった1990〜2000年代にSVMが主流になりました。2012年、層の深いCNNが大規模な画像分類でSVMベースの手法に大差で勝ち、流れが再び変わりました。
「パーセプトロンは重みを求めるから正確だ」というのも半分しか正しくありません。重みを求めるのはSVMも同じです。単層パーセプトロンは線形SVMと同じく平面1枚の分類器なので、生のピクセル写真では同じように行き詰まります。うまくいくのは、隠れ層のある多層パーセプトロンとCNNです。
まとめると、違いはSVMかパーセプトロンかではなく、座標(特徴)を人が決めるのか、データから学ぶのかから生まれます。ピクセルのルールが意味のない背景のマスを選んでしまう(4-4)のは、ピクセルという座標が悪いからであり、4-2のフィルタとこの回のCNNは、その座標を学習で変える仕組みです。CNNが勝てたのは、層を重ねたことだけでなく、畳み込みの重み共有、大量の正解データ、GPUによる計算が合わさった結果です。
Q1. 単層パーセプトロンと線形SVMの関係として正しいものは?
Q2. カーネルSVMと多層パーセプトロンの最も重要な違いは?
Q3. 隠れ層からσ(活性化関数)を取り除くとどうなるでしょうか?
隠れ層のニューロン1個は、「重み付き和 → 折れ曲がった関数(tanh、ReLU)」で新しい座標を1つ作ります。学習は、最後の平面がうまく分けられるよう、この座標の作り方そのものを直します。コード1では同じ点に対して、線形SVMは57.7%、人が選んだx₁² + x₂²を加えたSVMは98.8%、隠れニューロン3個の多層パーセプトロンは99.2%を正しく分けました。CNNの畳み込み層も、この「座標の変換」を写真向けに行うものです。
畳み込み → ReLU → プーリングを繰り返すと、写真は小さくなり、特徴マップの枚数は増える。最後に平坦化してパーセプトロンの層に入れると、クラスごとのスコアが出る。
畳み込みニューラルネットワーク(CNN)は、4-2の部品(畳み込み・プーリング)を重ねて作るモデルで、セクション2で見た「座標を学習で変えてから平面を引く」多層ニューラルネットワークの写真専用版です。[畳み込み → ReLU → プーリング]を何度も繰り返すと、写真はだんだん小さくなり、その代わり特徴マップの枚数(チャネル)が増えます。最後の特徴マップを1列に平坦化して全結合層(パーセプトロンを何個も並べたもの)に入れると、クラスごとにスコアが1つずつ出て、ソフトマックスがこのスコアを合計1の確率に変えます。
かんたんに言うと会社の報告体制です。現場の社員(1層目)は「ここに線がある」といった小さな事実を報告し、チームリーダー(2〜3層目)はその報告をまとめて「ここに目と耳がある」と上げ、役員(全結合層)は要約だけを見て「ネコである確率93%」と決めます。層を上がるほど、報告書は短く、内容は抽象的になります。
| 段階 | すること | 出力サイズ | 数の個数 | 学習する数(パラメータ) |
|---|---|---|---|---|
| 入力 | ピクセルの行列 | 56 × 56 × 3 | 9,408 | 0 |
| 畳み込み1 | 3 × 3フィルタ16個、端にパディング | 56 × 56 × 16 | 50,176 | 3·3·3·16 + 16 = 448 |
| プーリング1 | 2 × 2最大プーリング | 28 × 28 × 16 | 12,544 | 0 |
| 畳み込み2 + プーリング2 | フィルタ32個 → 半分 | 14 × 14 × 32 | 6,272 | 3·3·16·32 + 32 = 4,640 |
| 畳み込み3 + プーリング3 | フィルタ64個 → 半分 | 7 × 7 × 64 | 3,136 | 3·3·32·64 + 64 = 18,496 |
| 平坦化 | 1列に | 3,136 | 3,136 | 0 |
| 全結合 | スコア2つ | 2 | 2 | 3,136·2 + 2 = 6,274 |
| ソフトマックス | 確率に | 2 | 2 | 0 (合計 29,858) |
最後の特徴マップが7 × 7であることを覚えておいてください。実際によく使われるResNet-50も、224 × 224の写真を入れると最後の特徴マップは7 × 7の格子(チャネル2,048枚)で、セクション6のAttentive CutMixはまさにこの49マスを使います。
表の数字をたどってみましょう。56 × 56 × 3の写真が畳み込みとプーリングを3回経て7 × 7 × 64になり、平坦化した3,136個の数が全結合層を通ってスコア2つになります。学習する数は全部で29,858個です。実際によく使われるResNet-50は約2,500万個ですが、最後の特徴マップが7 × 7の格子である点は同じです [R4]。
最後のスコアをソフトマックスで確率に変え、正解との差(交差エントロピー)の分だけフィルタと重みを直す。
上で写真を選んでください。1層目の特徴マップとプーリングの結果は、実際の写真にフィルタを適用してこのページで計算したものです。後ろの層の反応と最後の確率は、流れを示すために決めた例の値です。
全結合層が出した2つのスコアを動かしてみましょう。正解はネコだと仮定します。
最初、CNNのフィルタの数字Kと全結合層のWはすべてランダムです。ネコの写真を入れても、確率は半々くらいになります。
正解を教えると損失 L = −log p正解 を計算し、前の回で見た勾配降下法で、損失が小さくなる方向へすべての数を少しずつ直します。この勾配は、出力から入力の側へ層をさかのぼって伝えられます(誤差逆伝播法)。
この過程を数万枚の写真で繰り返すと、誰も指示していないのに、1層目のフィルタはエッジフィルタの形になり、後ろの層のフィルタは目や耳に反応するようになります。「どんな特徴を見るか」までデータから学ぶことが、人が特徴を決めていたやり方との最大の違いです。
Q1. CNNを通るにつれて、特徴マップの形はおおむねどうなる?
Q2. スコアzが (2.0, 2.0) のとき、ソフトマックスの確率は?
Q3. 学習中に直されるのは?
ソフトマックスはスコアを合計1の確率に変えます。交差エントロピーは、正解に与えた確率が低いほど大きな罰点を与えます。学習とは、この罰点が小さくなる方向へすべてのフィルタの数字と重みを少しずつ直すことで、その勾配は出力から入力の側へ層をさかのぼって伝えられます(誤差逆伝播法) [R3]。
低レベル特徴(毛のエッジ)は似ている。マズルの長さ、鼻の大きさ、顔の輪郭のように、3層目以降で見る部分的な特徴が2つを見分ける。
今回は低レベル特徴が似ています。どちらにも毛があるのでエッジ強度の地図が写真全体でびっしりしており、2つの目と立った耳も同じです。1〜2層目の特徴だけでは見分けにくいのです。
違いは部分の形にあります。イヌはマズルが前に長く出ていて鼻が大きく、口が開いて舌が見えることもあります。ネコは顔が丸く、鼻と口が小さめです。3層目以降の「目・鼻・マズルの配置」を見る特徴が、この2つを見分けます。
そこで、モデルが写真全体の雰囲気(毛の色、背景)ではなく、こうした重要な部分に集中するよう教える手法が生まれました。セクション6で扱う、セクション1の画像のAttentive CutMixです。
ペア比較で表示を「エッジ強度」に切り替えると、どちらの写真も毛のせいでエッジの地図がびっしりしています。解像度を7に下げると、何が先に消えるかも見てみましょう。モデルに毛の色や背景(芝生)のような簡単な手がかりではなく顔の部分を見させるには、学習データをどう与えるかが重要になります。それがセクション6のデータ拡張です。
写真が少ないときや、モデルが見当違いの手がかりに頼るとき、学習用の写真を変えたり混ぜたりして「何を見るべきか」を教える。
| 方法 | すること | 正解は? | 教えること |
|---|---|---|---|
| 反転・切り抜き・回転 | 左右を反転したり、一部を切り抜いて拡大したりする | そのまま | 位置・向きが変わっても同じ対象 |
| 明るさ・色の変更 | 照明が違う写真のようにする | そのまま | 照明より形を見ること |
| Cutout | 四角形を1つ消す | そのまま | 一部が隠れても当てること |
| Mixup | 2枚の写真を半透明に重ねる | 比率どおりに混ぜる | 過剰な確信を減らすこと [R7] |
| CutMix | 別の写真の四角いかけらを貼る | 貼った面積どおりに混ぜる | 一部だけを見ても見分けること [R5] |
| Attentive CutMix | 反応の大きいかけらだけを選んで貼る | 貼った面積どおりに混ぜる | 重要な部分に集中すること [R6] |
Colabのコード2で、手書き数字をクラスあたり20枚(計200枚)だけ与えて同じCNNを学習させると、テストの正解率はそのままで93.3%、CutMixでは95.2%でした(シード3つの平均)。写真が少ないときに、混ぜて貼り付けることが役立った例です。データやモデルが変われば、効果の大きさは変わります。
方法は4段階です。(1) 学習済みのCNNにネコの写真を入れ、最後の7 × 7の特徴マップを得ます。(2) 49マスのうち、反応が最も大きいkマスを選びます。(3) そのマスに対応するネコの写真のかけらを、ランダムに選んだイヌの写真の同じ位置に貼ります。(4) 正解も面積の比率どおりに混ぜます。k = 6なら、ネコ6/49、イヌ43/49です。
注意:論文では、ImageNetで学習したResNet-50の実際の反応でかけらを選びます。ここでは学習済みモデルの代わりに、「マスの中のエッジ強度の平均」を反応の代用にしました。そのため目・鼻のほかに、額の縞模様や背景のエッジのように、エッジが多いだけのマスが選ばれることもあります。本当に学習したモデルがどのマスを選ぶかは、これとは異なる場合があります。
データ拡張は、モデルの構造を変えずに学習用の写真だけを変えて性能を上げる方法です。過学習、つまり学習用の写真にだけ過剰に合わせてしまうことを減らす正則化の効果があります。上の実習では、学習済みのResNet-50の代わりに「マスの中のエッジ強度」を反応の代用にしたことを覚えておきましょう。
どちらのコードも、Colabに標準でインストールされているライブラリと組み込みデータだけを使う。「ノートブック(.ipynb)をダウンロード」したあとColabでファイル → ノートブックをアップロードで開くか、コピーして新しいノートブックのセルに貼り付ける。
真ん中・周りの2つの群を、パーセプトロン・線形SVM・人が選んだ変換・RBFカーネルSVM・隠れニューロン3個の多層パーセプトロン(numpyで誤差逆伝播法を直接実装)で比較し、ソフトマックスと交差エントロピーを計算する。
8 × 8の手書き数字で、クラスあたり20枚だけを学習に使い、同じCNNをそのまま / CutMixで学習させ、テストの正解率をシード3つで比較する。ネコ・イヌの写真に替えるには、keras.datasets.cifar10から3番(ネコ)・5番(イヌ)のクラスを選び、Inputの形を (32, 32, 3) に変える。
ChatGPT、Qwen、ClaudeのようなAIアシスタントに貼り付けるプロンプトである。「コピー」を押すと、プロンプトの後ろに選んだコードが一緒につく。〔 〕の中を自分の状況に書き換えて使えばよい。
AIの答えは出発点にすぎない。提案された論文・数値・ライブラリ関数は、必ず原文と公式ドキュメントで確認する。コンテストや論文でAIの助けを借りた場合は、主催者や学術誌の規定に従って、使用した事実と範囲を明記する。
本文の黄色い点線の下線と同じ辞書である。シリーズ全体で同じ表記を使う。セクション名を押すと、最初に登場した箇所へ移動する。
たとえは理解の第一歩だが、誤解の種にもなる。人の目・脳のたとえには強さを示した。直接 実際に同じことをしているという根拠がある · 部分 一部の性質だけが似ている · なし 対応するものが知られていない
| 概念 | 日常のたとえ | 人の目・脳のたとえ | たとえが当てはまらない点 |
|---|---|---|---|
| 隠れ層 | しわくちゃの紙を広げて定規で分ける | なし | 紙は人が広げるが、隠れ層は「どう広げるか」を学習する。しかも実際には数百次元で起きるので、目で見ることはできない |
| CNNの層 | 現場社員 → チームリーダー → 役員という報告の流れ | 部分 視覚経路も網膜 → 一次視覚野 → 高次領域へと進むにつれて、より広い範囲と複雑な形に反応するようになる | 脳には逆向きに下りてくる結合や注意のはたらきが多い。CNNは一方向にしか計算しない |
| ソフトマックス | 得票数を得票率に変える | なし | 得票率は実際の投票結果だが、ソフトマックスの確率はモデルの「確信の度合い」にすぎず、当たる確率と同じとは限らない |
| 誤差逆伝播法 | 結果が間違っていたとき、最後の工程からさかのぼって責任を問う | なし | 責任を「分けて問う」量は微分で正確に計算される。誰が悪かったかを人が判断するわけではない |
| CutMix | 2枚の写真を切り貼りしたコラージュに、貼った面積の分だけ正解も分け与える | なし | 貼った切れ端が背景だけだと、「ネコ30%」という間違った正解が生まれる。Attentive CutMixはこれを減らす |
E-1 著者紹介 · E-2 学術参考文献 · E-3 図・データの参考資料
講師、実務OJT担当者、チューターのための運営ガイドである。時間は目安なので、実際の授業に合わせて調整する。
| 対象 | 4-1・4-2を終えた大学生・社会人。ディープラーニングが「なぜ深くなければならないのか」の説明が必要な実務者 |
|---|---|
| 前提知識 | 4-1のパーセプトロン・SVM、4-2の畳み込み。指数関数e^zの意味 |
| 学習目標 | ① 線形分類器ではうまくいかないデータを例に挙げ、隠れ層が座標を変える原理を説明できる ② CNNの層ごとの出力サイズとパラメータ数を計算できる ③ ソフトマックス・交差エントロピーを計算し、CutMixの正解の混ぜ方を説明できる |
| 所要時間の目安 | 読む 45~55分 · 実習デモ 25分 · Colab実習 30分(コード1 10分、コード2 実行1分 + 解釈19分) |
導入5分(セクション1)→ セクション2の3次元図 15分 → セクション3のサイズ表 10分 → セクション4のソフトマックス計算機 10分 → セクション6のCutMix 5分 → 確認問題 5分。
セクション2を自社データの「平面では分けられない事例」に置き換えて討論 20分 → セクション3の表で自社の入力サイズのパラメータ数を計算 15分 → セクション6の拡張の表から自社の写真に合う方法を選ぶ 20分 → コード2を自社の写真が少ない状況に書き換えて実行 35分。
入門者はセクション1・2・4だけ。中級者にはセクション3の表のパラメータ数を手で計算し直させ、コード1の誤差逆伝播法の3行を数式と1行ずつ照らし合わせさせる。
| セクション | 立ち止まって尋ねる質問 | 操作のコツ |
|---|---|---|
| 1 問題 | 「ネコとイヌの共通点は何だろう?」 | 画像の6/49がどこから来たのかを先に問う |
| 2 なぜ層を重ねるのか | 「平面をどこに立てても、なぜ片側が切れてしまうのだろう?」 | ① → ② → ③ の順に押して、図を回す |
| 3 CNNの構造 | 「プーリング層で学習する数はいくつだろう?」 | 表のサイズとパラメータの列を上から下へ指でたどる |
| 4 確率 | 「スコアが同じなら確率は?」 | ソフトマックス計算機で2つのスコアを同じにする |
| 5 ネコ vs イヌ | 「毛の色だけを見て分けると、何が問題だろう?」 | ペア比較のエッジ強度と解像度7を見る |
| 6 データ拡張 | 「ネコの切れ端が10マスなら、正解は?」 | kスライダーを1 → 15へ動かしながら正解のバーを見る |
| 誤解 | 正しい説明 | 見せる場面 |
|---|---|---|
| 層を重ねさえすれば曲がった境界になる | 折れ曲がる関数(活性化関数)がなければ、層を重ねても平面1枚と同じである | セクション2の確認問題Q3 |
| SVMは非線形な分類ができない | カーネルSVMは曲がった境界をつくる。ただしカーネルは人が選ぶ | セクション2の②とコード1のRBFの結果 |
| ソフトマックスの確率 = 当たる確率 | モデルの確信にすぎず、実際の正解率とは異なることがある(キャリブレーションの問題) | セクション4の計算機でスコアの差を大きく広げる |
| CNNは学習する数が多いから性能が良い | 同じフィルタを使い回すので、全結合のネットワークよりずっと少ない | セクション3の表の29,858 |
| データ拡張は写真を増やすだけだ | 何を見るべきかを教える正則化である。正解を混ぜる方法もある | セクション6の拡張の表とコード2 |
境界が平面(2次元では直線)1枚なので、どの向きに立てても周囲の群れを2つに切ってしまう。コード1では57.7%だった。
3 × 3 × 16 × 32 + 32(バイアス)= 4,640個。
確率は (0.5, 0.5)。損失は −log 0.5 ≈ 0.693。
ネコ 10/49 ≈ 0.204、イヌ 39/49 ≈ 0.796。
学習用の写真が200枚と少ないため、どちらのモデルも学習用の写真はすべて当てられる。差が出るのは初めて見るテスト用の写真である(過学習の程度)。
コード1で隠れニューロンの数を1、2、3、8に変えて正解率を表にまとめ、いくつから中央と周囲を分けられるか、その理由とともに書く。
コード2のPER_CLASSを10、20、50、100に変え、CutMixの効果(テストの正解率の差)が写真の枚数によってどう変わるかを、シード3つで報告する。
| 入門者 | セクション3の表とセクション4の数式は飛ばしてもよい。セクション2の3次元図とセクション6のCutMixの実習はしっかりやってみる |
|---|---|
| 発展 | MixupとCutMixを両方コード2に入れて比較し、正解を混ぜる拡張がモデルの確信(ソフトマックスの最大値)をどう変えるかを発表させる |
| さらに学ぶ | 3-3 画像とCNN · 4-4 チワワ vs マフィン(高レベル特徴とモデルの限界) |
| 講師用資料 | 確認問題の採点基準と課題の解答例は教育者用の解答ページ(4-3)で見られる |
「4-3 ネコ vs イヌ」編を最後まで読みました。研究室のみんなが一言ずつまとめます。