重みとは
ディープラーニングにおける重みとは、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; }
重みの行数は、出力数と同じです。重みの列数は、入力数と同じです。
重みは自動調整されるパラメーター
重みは、学習アルゴリズムを使って自動調節されるパラメーターです。誤差の指標である損失関数の値が小さくなるように更新されます。更新には、勾配降下法などのパラメーター更新アルゴリズムが利用されます。