2017年11月10日金曜日

Adversarial Example 2

昨日、活性化関数のReLU(Rectified Linear Unit)をmax(0, x)からmax(0, x-ε)に変更したら良いのではないかと書いたが、Adversarial Exampleの微小な信号でも総和をとって活性化関数に入力される時点では、大きな信号に変わるのかもしれないと思い直した。

そうすると、総和をとる前に微小な信号を0か0の近くに変更するような関数を通さなければならないのかもしれない。それは、通常のニューラルネットワークのモデルとは少し異なるものになってしまうことが難点ではある。

この方法で良いのかどうかは、シミュレーションしてみなければ解らないように思う。ただ、ぼくには、シミュレーションプログラムを書く程の余裕も実力もないように思う。理論的に計算する方法があれば良いのではあるが、それをする方法は思い付かない。

この方法の他の方法はやはり有効なのではないかと思っている。特にSigmoid関数の取り扱い方は重要であるように思うし、Adversarial Exampleのクラス自体を学習することも良い方法なのではないかと思っている。