
この回でつかむこと
画像の数値を正規化する理由と、平均・標準偏差の役割を説明できる。
画像の数値を同じ基準で比べるって何だろう?
画像を数の表として見ると、各画素の値は明るさを表します。平均はその値の中心、標準偏差は散らばりの大きさです。平均を引いて標準偏差で割ると、学習時とテスト時の画像を同じ計算の基準で扱えます。この変換を、ここでは正規化と呼びます。

同じ絵でも、全体が明るいと数字が変わっちゃうね。

そうなんだよ。まず画像の数値の中心と散らばりを調べよう。学習用画像で決めた計算方法を、ほかの画像にも同じように使うんだよ。

基準に使う平均と標準偏差は、学習用画像から計算するのですね。

はる テスト用にも、学習用で決めた同じ基準を使います。
学習用画像から求めた平均と標準偏差を使い、テスト用画像も同じ式で変換する。 画像を数の表として見ると、各画素の値は明るさを表します。平均はその値の中心、標準偏差は散らばりの大きさです。平均を引いて標準偏差で割ると、学習時とテスト時の画像を同じ計算の基準で扱えます。この変換を、ここでは正規化と呼びます。
import torch
image = torch.tensor([[0.,2.],[4.,6.]])
mean = image.mean()
std = image.std(unbiased=False)
print(mean.item(),round(std.item(),3))なぜそうなる? 4画素の平均は3です。このコードでは計算のしくみを示すため1枚の例を使いますが、実際に学習へ使う平均と標準偏差は学習用画像全体から求めます。
同じ基準で変換する
テスト用画像ごとに平均と標準偏差を求め直さず、学習用画像から決めた値を使います。そうすれば、学習時と評価時に同じ計算を適用できます。
normalized = (image-mean)/std
print(normalized.mean().item())
print(torch.round(normalized*100)/100)ここに注目 平均を引いて中心を0にします。標準偏差が0に近い場合は、割り算の前に対策が必要です。
予想して、理由を話そう
答えを選んで、説明を確かめよう。外れても発見が一つ増えるよ。
答えを選ぶと理由が表示されます。
Colabで試してみよう
コードの実行はColaboratoryの実行環境で行います。まずノートブックを保存し、Colabで「ファイル → ノートブックをアップロード」から開いてください。上から順に実行し、最後に値を変えてみましょう。
保存ボタンを押しても画面は切り替わりません。通常はブラウザの「ダウンロード」フォルダに .ipynb が保存されます。見つからない場合はダウンロード履歴を確認してください。Colabの実習は小さな例から始められます。
身近な技術とつなげてみよう

AI先生:同じ景色でも、カメラや光の当たり方で明るさの数値は変わるよね。学習時と評価時に同じ変換をする理由を考えてみよう。
この回の重要な用語
本文で出会った言葉を、ここで意味と一緒に振り返ろう。上の「ことばの窓」からも説明を開けるよ。
- 平均
- 値を合計して件数で割った、中心の目安です。
- 標準偏差
- 値が平均からどの程度ばらつくかを表す量です。
- 正規化
- ここでは、学習用画像の平均を引き、標準偏差で割って数値を変換することです。