重みとは

ディープラーニングにおける重みとは、m個の入力をn個の出力に変換する関数の「入力に乗算される項」のことをいいます。

以下は2つの入力を3つの出力に変換する関数です。重みは、列優先の行列として表現されています。

use strict;
use warnings;

sub m_to_n_convert {
  my ($inputs) = @_;
  
  my $outputs = [];
  
  # バイアス
  my $biases = [
    0.12,
    0.43,
    0.16,
  ];
  
  # 重み
  my $weights_mat = {
    rows_length => 3,
    columns_length => 2,
    values => [
      0.25,
      0.58,
      0.13,
      0.43,
      0.98,
      0.47,
    ]
  };
  my $weights_mat_values = $weights_mat->{values};
  
  # 重みはm個の入力をn個の出力に変換する関数の入力に乗算される項
  $outputs->[0] = $weights_mat_values->[0] * $inputs->[0] + $weights_mat_values->[3] * $inputs->[1] + $biases->[0];
  $outputs->[1] = $weights_mat_values->[1] * $inputs->[0] + $weights_mat_values->[4] * $inputs->[1] + $biases->[1];
  $outputs->[2] = $weights_mat_values->[2] * $inputs->[0] + $weights_mat_values->[5] * $inputs->[1] + $biases->[2];
  
  return $outputs;
}

重みの行数は、出力数と同じです。重みの列数は、入力数と同じです。

重みは自動調整されるパラメーター

重みは、学習アルゴリズムを使って自動調節されるパラメーターです。誤差の指標である損失関数の値が小さくなるように更新されます。更新には、勾配降下法などのパラメーター更新アルゴリズムが利用されます。

関連情報