前提・実現したいこと
kerasでVAT(Virtual Adversarial Training)を動かしています。
ソースは
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が考慮されたかはともかく、狙いと異なりダミーデータが考慮されてしまった)
上記のやり方の問題点はどこでしょうか?
また、別の良い方法をご存知でしたらご教示ください。
よろしくお願いいたします。
あなたの回答
tips
プレビュー