5

Keras を使用した公式の TensorFlow チュートリアルに従っていますが、ここで行き詰まりました:住宅価格の予測: 回帰 - モデルの作成

連続値を予測するタスクにアクティベーション関数が使用されるのはなぜですか?

コードは次のとおりです。

def build_model():
    model = keras.Sequential([
        keras.layers.Dense(64, activation=tf.nn.relu, 
                   input_shape=(train_data.shape[1],)),
        keras.layers.Dense(64, activation=tf.nn.relu),
        keras.layers.Dense(1)
    ])

    optimizer = tf.train.RMSPropOptimizer(0.001)

    model.compile(loss='mse', optimizer=optimizer, metrics=['mae'])
    return model
4

1 に答える 1

8

隠れ層で非線形活性化関数を使用する一般的な理由は、それらがないと、層の数または層ごとのユニットの数に関係なく、ネットワークが単純な線形ユニットのように動作するためです。これについては、Andrew Ng によるこの短いビデオでうまく説明されています: Why do you need non-linear activation functions?

あなたの場合、もっとよく見ると、最終層の活性化関数はrelu非表示層のようではなく、線形のものであることがわかります(ここのように何も指定しない場合のデフォルトの活性化です) :

keras.layers.Dense(1)

Keras ドキュメントから:

密集

[...]

引数

[...]

activation : 使用するアクティベーション関数 ( activationsを参照)。何も指定しない場合、アクティベーションは適用されません (つまり、「線形」アクティベーション: a(x) = x)。

これは、単一の連続出力を持つ回帰ネットワークに期待されるものです。

于 2018-07-20T12:37:00.030 に答える