質問: ### 前提・実現したいこと 私は現在GANの実装をしているのですが、Discriminatorに対して与える真偽値の教師データの与え方について悩んでいます。 GANについてGithubなどでいくつかの実装を参考にしたところ、Discriminatorの出力において以下のように**”Softmax”**を用いたものと**”Sigmoid”**を用いたものの二種類が見受けられました。 ``` - Dense(units=2, activation='softmax')(x) - Dense(units=1, activation='sigmoid')(x) ``` **"Softmax"**出力においては **”偽”→[1,0]、”真”→[0,1]** というようにOne-hotベクトルで解を与えており、 **”sigmoid”**出力においては、 **”偽”→[0]、”真”→[1]** というように1次元のベクトルで解を与えており、形が違っても結果が同様のものとなることはわかります。 この2つだと、”sigmoid”を用いる方が直感的にわかりやすく、またパラメータも少なくなるので良いように私には思えます。 しかし(私の体感ですが)多くの人は、”Softmax”を用い真偽の二次元ベクトルを出力するようにネットワークを構成しているように感じました。 これは単純な好みの問題でしょうか? それともGANの種類によって適切な選択があるのでしょうか? 些末なことで申し訳ありませんが、よろしくお願い致します。 ### 補足情報 keras(tensorflow)を用いてPix2Pix(CoditionalGANの一種)の実装をしています。
回答: GAN に限らず2値分類で sigmoid を使うか、ソフトマックス関数を使うかはどちらでもよいです。 softmax 関数はシグモイド関数の拡張です。 Softmax vs Sigmoid function in Logistic classifier?