6_2 活性化関数

モデルにレイヤーを追加するとき、tf.layers.dense()関数に渡すオブジェクトのactivationプロパティの値に指定するものを活性化関数と言います。活性化関数は次のレイヤーに渡す値を整える働きを持っています。

前出のモデルに追加した1つめの活性化関数はsigmoidです。

model.add(tf.layers.dense({
    units: 10,
    activation: 'sigmoid',
    inputShape: [2]
}));

sigmoid関数は、下のグラフでも分かるように、滑らかに変化し連続している(途切れていない)ので、細かな小数値も返します。この、値が徐々に変化するということが重要で、この性質により、たとえば0か1に分類したい場合、どの程度0に近いかや1に近いかといった微妙さが表現できるようになります。

sigmoid関数には、入力値が大きいほど1に、小さいほど0に近づき、0から1までの値を返すという特徴があります。

sigmod関数のグラフは、tf.sigmoid()関数で簡単に描くことができます。

// x方向の値を、tf.range()で作成
const x = tf.range(-5, 5, 0.1, 'float32');
// y方向の値をtf.step()で作成
const y = tf.sigmoid(x);
const xData = x.dataSync();
const yData = y.dataSync();
plot(xData, yData);

2つめのDenseレイヤーには、softmax活性化関数を指定していました。

model.add(tf.layers.dense({
    units: 2,
    activation: 'softmax'
}));

softmax関数には、どんな入力値でも結果を0から1までの実数値で返すという特徴があり、分類問題の出力層で使用されます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA