質問: プログラミングというより仕組みの質問です。 機械学習における十の法則、つまり「ネットワークにおけるパラメータの数の10倍の学習データを用意しろ」という文における「パラメータ」がよくわかりません。 入力層のことでしょうか? 中間層の組み合わせの数のことでしょうか? それ以外の自分が知らないようなことでしょうか? 答えとその少し詳しい説明をいただけると幸いです
回答: 同じ主張「ネットワークにおけるパラメータの数の10倍の学習データを用意しろ(=**the rule of 10**)」についてソースコードつきで解説しているページがありましたので、それを元に回答します。 How much training data do you need? Tensorflow-Projects / training_data_exploration.py リンク先で筆者はロジスティック回帰を複数のパラメータで実施し、その結果からだいたい正確なモデルにするにはパラメータの数の10倍の学習データが必要と結論付けています。 当該部分のソースコード ``` # Construct a logistic regression model. Alternatively, one can also use # tf.nn.softmax_cross_entropy_with_logits() for compactness. This version # makes the model explicit by exposing the basic units. W = tf.Variable(tf.random_uniform(1, num_parameters], -1.0, 1.0)) y = tf.sigmoid(tf.matmul(W, x_data)) ``` ニューラルネットワークで`W`ってどこかで見たことがないでしょうか? これはW(=weight、重み、θとも)のことです。なのでパラメータとはネットワークの重み(=W)のことです。 機械学習はたいてい線形回帰を実施して以下のような仮説関数を最小化することを目標とします(式は一番簡単なサンプル)。 ![ このθ0, θ1は機械学習モデルを訓練して最適化します。 **ユースケース** θ(W)は機械学習モデルの特徴値を表すので、何かを機械学習で解決しようとした場合のデータの要素と言える。(様々なデータから家の家賃を機械学習で出そうとした場合、特徴値は部屋の数、バスルーム、キッチンの数、家が幹線道路の横にあるか、幹線道路から遠いかのようなものになる。) 特徴値を増やした場合のトレーニングセットの量についてこの法則が適用されると言えるのではないでしょうか。 参考: 機械学習アルゴリズムにおけるシータの意味は何ですか? Edit どうやらこの経験則はバーニーおじさんのルール(Uncle Bernie's rule)として知られているようです。 参考: バーニーおじさんのルール(Uncle Bernie's rule)とは?