Upload emonavi挙動まとめ.txt
Browse files- report/emonavi挙動まとめ.txt +63 -0
report/emonavi挙動まとめ.txt
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
EmoNAVI(第一世代)の挙動について
|
| 2 |
+
|
| 3 |
+
学習開始時、2つのemaは十分な履歴を持たないため、shadow-systemは停止状態です
|
| 4 |
+
およそ 50~150 stepくらいになると、2つのemaの履歴は"差分"を生じるようになります
|
| 5 |
+
開始直後は差分はなく、差分が生じるようになると以下の補正を開始します
|
| 6 |
+
|
| 7 |
+
v1.0では、スカラー±0.3以上からshadow-systemのブレンド(常時30%)を開始します、
|
| 8 |
+
スカラー+0.6以上になると強いブレンド(82~90%)を動的スカラーに基づきを行います、
|
| 9 |
+
(スカラー-0.6以下は弱いブレンド(常時10%)を行います)
|
| 10 |
+
|
| 11 |
+
v2.0からはスカラー±0.1以上からshadow-systemのブレンド(10~60%)を開始します、
|
| 12 |
+
スカラー±0.6以上になると強いブレンド(60~100%)を動的スカラーに基づきを行います、
|
| 13 |
+
(v2.0からは"負"-値への対応を別にせず、常に±どちらの領域も等しくしました)
|
| 14 |
+
|
| 15 |
+
これらはすべて動的スカラーに基づきブレンドを適用します(v2.0からは全指定領域で線形です)
|
| 16 |
+
|
| 17 |
+
では実際には、emaの監視するLoss値はどのくらいになるか? 短期3~7stepくらいで、
|
| 18 |
+
スカラー:±0.1 / loss_val:±0.07 増加している時
|
| 19 |
+
スカラー:±0.3 / loss_val:±0.21 増加している時 (lossが4step続けて1.0以上になるくらい)
|
| 20 |
+
スカラー:±0.6 / loss_val:±0.48 増加している時 (lossが3step続けて1.4以上になるくらい)
|
| 21 |
+
これで shadow-system のリアルな姿を感じて頂けるでしょうか、皆さんのガーディアンですよね!
|
| 22 |
+
|
| 23 |
+
|
| 24 |
+
shadow-systemの成長とlerp計算と収束
|
| 25 |
+
state['shadow'].lerp_(p, 0.05)は、線形補間(Linear Interpolation)を行う関数です
|
| 26 |
+
この式は、shadowパラメータを現在のパラメータ(p)に0.05の割合で近づけることを意味します
|
| 27 |
+
|
| 28 |
+
勾配のパラメータは徐々に成長します、元の情報(過去値)に対し5%づつ"現在値"を混ぜていきます
|
| 29 |
+
これは先ほどのブレンドを行うのと同時に行われます(安全のため事実上の信頼値を判定していますが)
|
| 30 |
+
|
| 31 |
+
基本的に、これらは学習の、序盤、中盤、に適用されます、つまり勾配更新が一定以上の強度をもつ時のみです
|
| 32 |
+
学習の段階に関わらず、小さな更新のときは、shadow-systemは働きません、自動停止になる仕組みです
|
| 33 |
+
|
| 34 |
+
では終盤はどうなるのか?
|
| 35 |
+
概算で、2000~3500stepくらいになると、shadow-systemは成熟します、
|
| 36 |
+
これは、shadow-systemのもつ各パラメータのほぼ全域で、概ね現在値に置き換わることを意味します
|
| 37 |
+
(ここでもし過適合や発散の傾向を感知した場合は、現在値に戻すことになります)
|
| 38 |
+
|
| 39 |
+
このあたりでは既にlossは常に安定していると予想されますので、shadow-systemは無用になります
|
| 40 |
+
そして実際に、安定状態ではshadow-systemは自動停止状態です
|
| 41 |
+
|
| 42 |
+
この状態ではつまり、純粋なAdam的な更新のみ"継続"されています
|
| 43 |
+
スカラー値が大ブレするほどの"持続的かつ大きな揺れ"が生じないかぎり純粋なAdam的更新のみ行われます
|
| 44 |
+
この純粋なAdam的更新が進行することで、やがて"学習完了"になります
|
| 45 |
+
|
| 46 |
+
こうした"深い安定期"になると、Early Stop機能による"外部への静けさ信号"が送出されます
|
| 47 |
+
ただしこれは"静けさの予兆"を知らせるだけで、学習の自動停止等は外部の仕組みに依存します
|
| 48 |
+
|
| 49 |
+
ここまでが emonavi 世代の"挙動"そのものです、つまり学習自体は常に進行します、
|
| 50 |
+
重大な事態(過適合や崩壊の傾向)のときは、それまでの学習を維持するために強固に守りますし、
|
| 51 |
+
中程度の揺れには、ほんの少し揺れを減少させるサスペンションのような働きをします、
|
| 52 |
+
|
| 53 |
+
Adafactor、Lion、系を更新ロジックにもつバリエーションは、Adamのところを置き換えてください
|
| 54 |
+
つまり emo系は、常に"安定"するよう自動的に判断しています。
|
| 55 |
+
|
| 56 |
+
shadow-system による書き戻し、という言葉だけでは "常に学習を妨げるのではないか?" との懸念を
|
| 57 |
+
持たれてしまうと思うのですが、スカラーの部分だけ見てもその存在の意味はご理解を頂けると思います
|
| 58 |
+
|
| 59 |
+
|
| 60 |
+
最後に重要なことを伝えますと、このemo系は、過適合や崩壊を抑制します、がしかし!
|
| 61 |
+
それを完全になくす、までは対応しないようにしています。つまり"学習設定の誤りを正す"まではしません。
|
| 62 |
+
そういう過剰な設定状態のまま学習を進めても結果は悪いだろう、という想定です、
|
| 63 |
+
ですから"学習設定の誤りはユーザーの修正に委ねる"ことにしています、どうかご了��ください。
|