📘

5章:配列を色で描く

に公開

― 重みを描く ―

この章では、
AIの中にありそうなものを、はっきりと目で見る
という体験をします。

いよいよ出てきます。

重み(weight)

まだ難しいことはしません。
学習もしません。

でも、この章を終えたとき、

「あ、AIってこんな感じの中身なんだ」

という感覚が、きっと残ります。


この章でやること

  • 配列(たくさんの数)を用意する
  • 数を「色」に変換する
  • 画面に並べて描く

ゴールはこれです。

数の集まりが、意味のある“構造”に見える


配列って何?

配列は、とても単純なものです。

  • 数が
  • たくさん
  • 並んでいる

それだけ。

でもAIの中では、

重みは、ほぼ全部「配列」

で表現されています。


  • MYON(ミョン)
    「重みって、もっと特別なものじゃないの?」

  • エディ(EDiE)
    「正体は、ただの数の集まりです。」


まずは配列を作ってみよう

Processingに、次のコードをコピペしてください。

float[] weights = new float[100];

void setup() {
  size(500, 100);

  for (int i = 0; i < weights.length; i++) {
    weights[i] = random(-1, 1);
  }
}

void draw() {
  background(240);

  for (int i = 0; i < weights.length; i++) {
    float w = weights[i];

    if (w > 0) {
      fill(255, 100, 100);
    } else {
      fill(100, 100, 255);
    }

    float h = abs(w) * height;
    rect(i * 5, height - h, 5, h);
  }
}

成功条件

  • 横に棒が並んで表示される
  • 赤っぽい棒と、青っぽい棒が混ざっている
  • 高さがバラバラ

それで成功です。


  • MYON(ミョン)
    「……急にAIっぽくなった」

  • エディ(EDiE)
    「はい。
    でも、まだ“絵”です。」


何を描いているのか

今、画面に描かれているものは、

  • 100個の数
  • 正と負
  • 大きさの違い

それだけです。

でも、これをこう呼びたくなります。

重みの分布

AIの中では、

  • 入力に掛け算され
  • 足し合わされ
  • 出力に影響する

そんな役割を持つ数たちです。


少しだけ動かしてみる

次に、重みを少しずつ変えてみましょう。

void draw() {
  background(240);

  for (int i = 0; i < weights.length; i++) {
    weights[i] += random(-0.01, 0.01);
    weights[i] = constrain(weights[i], -1, 1);

    float w = weights[i];

    if (w > 0) {
      fill(255, 100, 100);
    } else {
      fill(100, 100, 255);
    }

    float h = abs(w) * height;
    rect(i * 5, height - h, 5, h);
  }
}

成功条件(その2)

  • 棒の高さや色が
  • ゆっくり変化していく

しばらく眺めてみてください。


  • MYON(ミョン)
    「生きてる…?」

  • エディ(EDiE)
    「いいえ。
    ただ変化しているだけです。」


でも、人はこう感じる

  • 変わっている
  • 保たれている
  • 全体としてまとまっている

これだけで、人はこう思います。

「内部状態がある」

AIが“中身を持っている”ように見える理由の一つが、
ここにあります。


コラム:なぜ「重み」は見せると分かるのか

数値の一覧を見ても、
多くの人はピンと来ません。

でも、

  • 高さ
  • 並び

にすると、急に分かる。

構造は、視覚で理解される

この感覚を持っていると、
数式を見る目も変わります。


次の章へ

次の章では、
この「重み」を、

  • 目的に向かって
  • 少しずつ
  • 変えてみます。

テーマは、

「値が変わる様子を描画する」
― 学習っぽいことをさせる ―

いよいよ、
“学んでいるように見える”世界へ。


Discussion