質問編集履歴

1 VATに限らず、kerasにおける教師なしデータの与え方について質問するよう改めました。

motsuo

motsuo score 0

2018/07/23 10:27  投稿

[keras] VATで教師なしデータを扱いたい
kerasで教師なしデータを扱いたい
### 前提・実現したいこと
kerasでVAT(Virtual Adversarial Training)を動かしています。
ソースは
[https://qiita.com/mokemokechicken/items/b3cb3d65b6876ccf1a5b](https://qiita.com/mokemokechicken/items/b3cb3d65b6876ccf1a5b)
を参考にして実装しました。
教師あり学習についてはうまく行ったのですが、
半教師あり学習の場合の教師なしデータの処理の仕方を思いつかず悩んでいます。
半教師あり学習の場合の教師なしデータの与え方を思いつかず悩んでいます。
VATに限らず、kerasでの教師なしデータの与え方について
良い方法をご存知でしたら教えていただけますでしょうか?
### 試したこと
参考にしたソースではkeras標準のModelクラスに、自作のクラス(VATModel)をオーバーライドしており、その中で下記のように損失関数を定義しています。
   @property
   def losses(self):
       losses = super(self.__class__, self).losses
       if self._vat_loss:
           losses += [self._vat_loss]
       return losses
※self._vat_lossにVATのlossが入っており、この値は別途計算される。
教師なしデータの学習をするにあたって、上記関数の
           losses += [self._vat_loss]
           losses = [self._vat_loss]
に変えることで、ダミーで設定した出力の正解値にかかわらず、
VATのlossのみを設定できると考え、そのように変更して学習を行わせてみました。
しかし、学習したモデルは、全てのデータがダミーで設定した正解値が出力されるモデルでした。
(VATのlossが考慮されたかはともかく、狙いと異なりダミーデータが考慮されてしまった)
###
上記のやり方の問題点はどこでしょうか?
また、別の良い方法をご存知でしたらご教示ください。
よろしくお願いいたします。
  • Keras

    475 questions

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る