クリーム色の背景、色付き表示、高コントラスト、大きな文字のほうが読みやすいですか?配色と文字を選ぶと、すべてのページに一度で反映されます。

無料レッスン

ニューラルネットワークを言葉で説明する

このレッスンのあとで: ニューラルネットワークとは何かを、自分の言葉で説明できる。

40分のレッスンコマンドなし

手書きの申請書を、だれが読むのか

ある市役所では、毎月何千枚もの手書きの申請書が届きます。以前は、職員が一枚ずつ入力していました。

今は、スキャンした文字をコンピューターが読み取り、職員は確認だけをします。

人によって字の形はばらばらです。それでも読めるのは、ニューラルネットワークのおかげです。このレッスンでは、そのしくみを数式を使わずに説明します。

このレッスンのゴール

メモ

ニューラルネットワークとは何かを、自分の言葉で説明できる。

キーワード

ことばいみ
ニューロン入力に重みをかけて足し、次に伝える小さな計算の単位です。
重みそれぞれの入力を、どれだけ重く見るかを表す数です。
層同じ段に並んだ、ニューロンのまとまりです。
ニューラルネットワークニューロンを層にしてつないだモデルです。
ディープラーニング層をたくさん重ねたネットワークで学ぶことです。

学生が入力するセルは、このプレビューでは空白です。

ニューロンは、かけて足して比べる

電力会社の問い合わせ窓口で、メールが急ぎかを決める場面を考えます。

ニューロンは、いくつかの入力を受け取ります。たとえば「停電という言葉があるか」「至急という言葉があるか」です。

入力にはそれぞれ重みがあり、大事な入力ほど重みが大きくなります。ニューロンは、入力と重みをかけて足し、決めた値と比べます。

計算例: メール一通を判定する

入力あるか(1か0)重みかけた値
「停電」という言葉133
「至急」という言葉020
法人のお客さま111
合計4
判定(3以上なら急ぎ)急ぎ

学生が入力するセルは、このプレビューでは空白です。

やってみよう: ニューロン一つを動かす

コード: python
# 問い合わせメールが急ぎかを決める、ニューロン一つです。
# 入力: 「停電」がある、「至急」がある、法人のお客さま (あれば 1、なければ 0)
inputs = [1, 0, 1]

# 重み: どの入力をどれだけ重く見るか。学習で決まる数です。
weights = [3, 2, 1]
threshold = 3

total = 0
for i in range(len(inputs)):
    total = total + inputs[i] * weights[i]

print("合計:", total)
if total >= threshold:
    print("急ぎの問い合わせです。")
else:
    print("通常の問い合わせです。")

# inputs を [0, 1, 0] に変えて、結果がどう変わるか見ましょう。

ニューロンを層にしてつなぐ

ニューロン一つでは、簡単な判断しかできません。そこで、たくさんのニューロンを層に並べます。

最初の層が入力を受け取り、その結果を次の層に渡します。最後の層が、答えを出します。

文字の読み取りなら、前の層は線や角を見つけます。後ろの層は、それを組み合わせて文字の形を見分けます。層をたくさん重ねて学ぶことを、ディープラーニングと呼びます。

学習とは、重みを少しずつ直すこと

重みは、最初はでたらめな数です。

ネットワークは例を一つ見て答えを出し、正解ラベルと比べます。外れたら、外れが小さくなる方向へ、重みを少しだけ直します。

これを何百万回もくり返すと、よく当たる重みになります。そのため、たくさんの例と、計算の速いコンピューターが必要です。

よくある誤解

注意

ニューラルネットワークは、人の脳と同じように考えている、と思われがちです。名前は脳から借りていますが、中でしているのは、かけ算と足し算のくり返しです。意味を理解しているわけではないので、答えは人が確かめましょう。

授業で使いますか?このモジュールを学生に割り当てると、教員用ガイド、自動採点つきの課題、学生ごとのラボを使えます。