3分で分かるDeep Learningの “Dark Knowledge"
最近Deep Learning界隈で話題のDark Knowledgeについて。
Deep Learningの教祖、Hinton先生がとあるところで”Dark Knowledge”というタイトルで発表されていました。
最初タイトルを見た時に、やばい、黒魔術的な何かか?!中二病的な何かか!と思いました笑
“Don’t be evil”なんてなかったんや。。。
というわけではなく、翻訳するとおそらく”隠れた知識”や”影の知識”になるのではないかと思います。(多分狙ってると思いますが)
面白そうだったので3分で理解できる範囲でざっとまとめてみます。
コンセプト
Deep Learningでクラス分類の学習をする際、一般的にアウトプットとしてSoftmax関数が利用されます。 学習器のアウトプットおける、Softmaxの最大値が指し示すものが推定されたクラスになります。 このSoftmax関数によるアウトプットには分類をする以外の能力(Softmaxのアウトプットに現れる何らかの相関関係)があり、 その性質をうまく利用することで、学習するネットワークをより小さく(より少ないパラメータで)、 少ない学習データセットでも高い性能を発揮できる、とのことです。
例えば、(いぬ、ねこ、...、くるま)のクラスを持った画像の識別器を作ったとします。
その識別器の "ねこ" の出力は、"くるま” の出力よりも見た目の近い ”いぬ” の出力に何らかの相関が現れそうだなーという気がしますよね。
”くるま” と ”ねこ” よりも ”いぬ” と “ねこ" の方が似ている、といった
なんらかの半教師的な情報の有効活用しよう、というのが今回のコンセプトだと思います。
(こういった本来のタスクでない隠れた知識のことを”Dark Knowledge”と読んでいるのでしょうか)
どうやるの?
Soft targets(?)という考え方を導入します。
通常のSoftmax関数を利用したロス関数は下記のようになります。
*ここで は 正解なら1, 不正解なら0 をとる。
一旦上記を学習した後、ここで得た出力から各クラスにおけるSoftmax出力の アンサンブル平均をとって、
を計算し、ラベルデータと見立てることで下記のロスを計算します。
*ここでTは“temperature”と呼ばれるパラメータ。クロスエントロピーの調整に使う。
これによって先ほどの理論を実現します(たぶん)。
実際どうなの?
MINST(数字認識)のデータセットでの実験では Dark knowkedge を使うとDropoutを使わなくても同等の性能を出すことができたそうです。 (しかも、ネットワークのパラメータの数も少なくできている) また、”3”のデータを抜きでネットワークの学習をした後、バイアスを調整しただけで98.6%の性能を出せたそうです。 (つまり、"3"というデータを一度も見ることなく"3"を認識できたということ?)
まとめ
Soft targets area a VERY good regularizer
だそうです。(嘘書いてたらごめんなさい)
いろいろ応用が効きそうなアイディアですね。 でも実際にやるとなると色々と大変そう。 (Deep Learningのパラメータ職人による”Dark Knowledge”が必要な気がします)
もっと詳しく知りたい方は、Dark Knowledge を読んでみてください٩(๑❛ᴗ❛๑)۶ そして詳しいところご教授お願いします(´・ω・`)