DEEP LEARNING / LESSON 07

層を重ねて分類する

入力から中間層を通って出力へ。MLPの役割を図で見よう。

図から学ぶ
層を重ねて分類するを表すキャラクターと学習内容のイラスト
TODAY'S GOAL

この回でつかむこと

MLPの層と分類の出力を説明できる。

ことばの窓
01 / SEE THE IDEA

層を重ねて分類するって何だろう?

MLP(Multi-Layer Perceptron、多層パーセプトロン)は全結合層と活性化関数を組み合わせたモデルです。分類では、最後に各クラスの点数を出します。

あおい

1個のニューロンでは難しい形もあるんだ?

AI先生

そうなんだよ。層を重ねると、入力された数を段階的に変えて、複雑な分類にも使えるようになるんだ。

はる

出力が各クラスの点数になり、最大の点数を選ぶのですね。

層で数を受け渡す。2個の特徴を入力。中間層で組み合わせる。2種類の点数を出す。
図7 層で数を受け渡す。2個の特徴を入力。中間層で組み合わせる。2種類の点数を出す。

はる 出力は2種類の「点数」です。学習前には正解と決められません。

図を読むと

MLPはMulti-Layer Perceptron。層を通すたび表現を変える。 MLP(Multi-Layer Perceptron、多層パーセプトロン)は全結合層と活性化関数を組み合わせたモデルです。分類では、最後に各クラスの点数を出します。

小さなコードで確かめるまず結果を予想しよう
import torch
from torch import nn
model = nn.Sequential(nn.Linear(2,8),nn.ReLU(),nn.Linear(8,2))
x = torch.tensor([[1.0,0.0],[0.0,1.0]])
print(model(x).shape)
実行結果torch.Size([2, 2])

なぜそうなる? 2件の入力それぞれについて、2クラス分の点数が出ます。学習前の点数には意味を付けません。

02 / GO ONE STEP FURTHER

正解ラベルと比べる

分類の損失にはCrossEntropyLossを使えます。クラス番号を正解として渡します。

target = torch.tensor([0,1])
loss = nn.CrossEntropyLoss()(model(x),target)
print(round(loss.item(),3))
実行結果学習前の損失値

ここに注目 点数をそのまま渡します。CrossEntropyLossの前でsoftmaxを重ねる必要はありません。

03 / YOUR TURN

予想して、理由を話そう

答えを選んで、説明を確かめよう。外れても発見が一つ増えるよ。

2件を3種類に分類する出力の形は?

答えを選ぶと理由が表示されます。

04 / TRY ON COLAB

Colabで試してみよう

コードの実行はColaboratoryの実行環境で行います。まずノートブックを保存し、Colabで「ファイル → ノートブックをアップロード」から開いてください。上から順に実行し、最後に値を変えてみましょう。

保存ボタンを押しても画面は切り替わりません。通常はブラウザの「ダウンロード」フォルダに .ipynb が保存されます。見つからない場合はダウンロード履歴を確認してください。Colabの実習は小さな例から始められます。

COFFEE BREAK

身近な技術とつなげてみよう

AI先生

AI先生:お店のおすすめも分類に似ているけれど、『好み』は人によって変わる。点数が高くても理由を考えよう。

KEY TERMS

この回の重要な用語

本文で出会った言葉を、ここで意味と一緒に振り返ろう。上の「ことばの窓」からも説明を開けるよ。

MLP
Multi-Layer Perceptron。全結合層などを重ねるモデルです。
全結合層
前の層の各値を次の層の各値へ結び、重み付きで計算する層です。
クラス
分類したい種類。たとえば縦線と横線です。