私は最近、ニューラルネットワークで実験しています。使用するアクティベーション機能に関する一般的な質問に出会いました。これはよく知られた事実かもしれませんが、私は正しく理解できませんでした。私が見た多くの例と論文は分類の問題に取り組んでおり、出力層の活性化関数としてシグモイド(バイナリの場合)またはソフトマックス(マルチクラスの場合)を使用します。しかし、回帰モデルの出力層で使用されるアクティベーション関数を見たことはありません。
私の質問は、選択によって、回帰モデルの出力層でアクティベーション関数を使用しないことです。アクティベーション関数で値を制限または制限したくないためです。出力値は、シグモイドからtanhのようなアクティベーション関数が意味をなさないように、任意の数で何千もの大きさにすることができます。または、他の理由はありますか?それとも、この種の問題のために作られたアクティベーション関数を実際に使用できますか?
たとえば、NNの出力層にアクティベーション関数としてSigmoidがある場合、0未満で1を超える値を取得することはありません。
基本的に、予測しようとしているデータがその範囲内に分布している場合、シグモイド関数を使用してアプローチし、トレーニングセットで予測がうまく機能するかどうかをテストします。
さらに一般的には、データを予測するときに、最も効果的な方法でデータを表す関数を考え出す必要があります。
したがって、実際のデータがシグモイド関数にうまく適合しない場合は、他の関数(たとえば、多項式関数、周期関数、その他、またはそれらの組み合わせ)について考える必要がありますが、コスト関数とデリバティブの評価。
線形回帰タイプの問題の場合、変換なしの数値に関心があるため、アクティベーション関数なしで出力レイヤーを作成できます。
詳細:
https://machinelearningmastery.com/regression-tutorial-keras-deep-learning-library-python/
分類用:シグモイド、tanh、Softmaxなどを使用できます。