Sign In

EmoNavi complete / 完成(開発終了) v2.2.0 ※追記あり

3

Dec 18, 2025

(Updated: 15 days ago)

tool guide
EmoNavi complete / 完成(開発終了) v2.2.0 ※追記あり

EmoNavi、及び、EmoFact、EmoLynx、開発終了

emo系 v3.6 の新機能を簡単に説明します

emoDrive 機構をつくりました
これは Turbo 機能といえばわかりやすいかもしれません、ユーザー指定の初期LRと、以後の変動LR(step-size) を基準にし、emoDrive 機構は一定条件下でLRを高値に補正します

どのくらい高値になるかというと、基準を 1e-4 とした場合、
・trust (+) :emoDrive ≈ 4.2〜6.45 / loss降下時(改善)
・trust (-) :emoDrive ≈ 3.8〜5.55 / loss上昇時(悪化)
このくらいになります。なぜ(-) つまり loss値が上振れするときにも学習率を上昇させるのかは後で説明しますが、この boost は感情スカラ:±0.25~±0.50 の範囲にあるとき、この範囲のみに emoDrive が作動し学習率を補正します

emoDrive を直感的に見る表(±0.25〜±0.50)

| scalar (+) | trust (+) | emoDrive (+) | | scalar (-) | trust (-) | emoDrive (-) |

|-----------:|----------:|-------------:|---|-----------:|----------:|-------------:|

| 0.26 | 0.74 | 6.36 | | -0.26 | -0.74 | 5.48 |

| 0.30 | 0.70 | 5.99 | | -0.30 | -0.70 | 5.04 |

| 0.35 | 0.65 | 5.54 | | -0.35 | -0.65 | 4.55 |

| 0.40 | 0.60 | 5.09 | | -0.40 | -0.60 | 4.03 |

| 0.45 | 0.55 | 4.64 | | -0.45 | -0.55 | 3.50 |

| 0.49 | 0.51 | 4.29 | | -0.49 | -0.51 | 3.16 |

このように信頼値が高い(loss 評価が良い/0 に近い)ほど emoDrive の boost も大きくなります、マイナス側(loss 悪化時)も同様で 0 に近いほど boost は大きいです

なぜ(-)時にも boost するんでしょう?
これは感情機構の根幹、multi-ema の特性を利用しています。loss の ema 履歴は、loss 値 を平均したデータとして保持します、multi-ema は3種類あり、短期、中期、長期、と履歴の長さが異なる構成をしています。この ema は、loss 変動 をそれぞれの時間(期間=履歴長さ)で評価するための記録ですが、想像して頂いてわかるとおり、瞬間の loss を反映するのにタイムラグが生じます。このタイムラグを活用したのが emoDrive 機構です

emoDrive によるノイズの正規化
では loss 高値の変動時を想像してください。loss 値 が高まり(学習の悪化時) p更新式はこれを感知し、step-size を含むいろいろなパラメータが loss を下げるための修正モードに入ります、ここでは ema はまだ loss 変動を拾いつつも「平均」としては感知しません。3step程度の悪化を持続すると、ema-short は loss 高値 の信号を発します、これで差分相手の ema-long、スケール調整として働く 分母の ema-medium との差分が生じ、感情機構も"loss 高値"を感知します、こういうタイムラグです

さてp更新式はここで既に loss を下げる修正を開始します、はい、ここが重要です。この修正された step-size を信頼し emoDrive は boost を掛ける、これにより loss 高値時 に行われた更新を大きく上回る「学習率」を投入することで、loss 高値時 の更新のほとんどを上書きするような新しい更新が行われます。これによりノイズを多く含むデータは相対的に弱まり、ノイズの重み等は縮減されます、つまり loss 高値 になる原因を突き止め、この問題となるデータを正規化する、という仕組みです

(学校などの"テスト"で、誤答を見つけ修正した瞬間のアレです、そう修正した瞬間から一気に正解の記述まで走り抜けるような感覚のアレです、スラスラと正解を記すときの加速度的な"閃き"に似た疾走感、これを loss 悪化時に emoDrive は行います)

これが emoDrive 機構による新しい更新手法です
Navi:1e-4、Fact:2e-4、Lynx:8e-5、「初期学習率推奨値」とします
Navi:6e-5、Fact:1e-4、Lynx:8e-5、「初期学習率推奨値」とします
(あなたの学習タスクに合わせて増減してみてください)
(3種類とももっと高い学習率を指定できますが最適かどうかは試してください)

LoRA学習の Rank / Alpha 同値について
LoRA Rank / Alpha は同値をオススメしています (参考:Rank16 / Alpha16 のように)
これは"最大限で詳細を学ぶ"ためです、Alpha は学習率を絞る設定値です、つまり 1e-4 で学習しているとき、Alpha が Rank の 1/2 であれば、これは 5e-5 で学習しているのと同じです。これは後でコントロールできます、LoRA:xxx:0.5 でいいです、これなら Alpha を半分にするのと同じになります。学習設定がすべて完全にハマった時は LoRA適用強度 1.0 でも破綻なく捉えた詳細を完全に再現できます。こういう理由から R/A 同値を推奨しています
※ 厳密には Alpha はスケールであり学習率というよりも寄与度です
※ emo系は Rank / Alpha を動的スケール(近似)するため同値をオススメしています

どなたさまもありがとうございました(ご声援などに対し心から感謝しています)

多くの方々に、不具合等でご迷惑をかけたこともあると思いますが、ひとまず emo系 第1世代、EmoNavi、EmoFact、EmoLynx、をこれで完成とし、開発終了とさせてください。まだ未到達な目標や機能もありますので、それを研究しながらゆっくり EmoSens (こちらは第2世代) へ反映したいと思います。今後は EmoSens でお目に掛かれれば幸いです。どなたも良い年末年始をお過ごしください、ここまでどうもありがとうございました!


|追記| EmoFact の新技術 キャラ学習もイケると思います…

うっかり記載を忘れてましたので追記します
EmoFact は、Adafactor型 です、そのため Adafactor 特有の「暴れ」や「遅い」も引き継いでいます、これを解消するアイデアが浮かび、今回はそれも適用しています

Adafactor型の特徴は、1次moment を持たず、2次moment のみで (+1次元ベクトル) 更新するという大胆な更新手法を持ち、これで劇的な省VRAMを達成しているのですが、ここに問題が生じます

2次moment の分散により、データは非常に不正確「ゆるい」ものになっています、そして分散近似できないデータ (これが1次元ベクトル) は仕方ないのでそのまま正確に保持します、この正確なデータとゆるいデータのバランスの悪さ、スケール違い、これが「暴れ」の因子のひとつじゃないか、という予想をしました

じゃあ、これを解消するのにどうすべきか? 2つの案が考えられます、2次momentに正確性を付加するか、1次ベクトルを「ゆるい」データにするか、です、EmoFact は、1次ベクトルを「ゆるい」データにすることにしました、結果として2次momentと1次ベクトルを同じスケールにしてバランスを合わせました

どうしたか? どちらも通常計算をした後に符号化しました。究極の簡素化データです。これで同じスケールになりバランス不整合による「暴れ」を抑制したのです、こういう特殊な更新により、EmoFact はこれまでで最良の Adafactor型 へ進化を遂げています。emoDrive の駆動力も合わさり、これまでにない仕上がりになってます
※ 代わりに符号化によるデメリットも生じますがバランスは改善です
※ 元々好きな Adafactor をより好きになりました、細かい部分を覚えやすいんですよね Adafactor は。その代わりに致命的に遅いのですけど、EmoFact は早いです!(従来比)


|再追記|初期学習率の推定を以下の理由により修正しました
CAME:5e-5 は、LR:8e-5(cos スケジューラ)の場合の近似値です

LR計測999.png

序盤で3種とも遅い立ち上がりをするのは multi-ema の履歴を正確に貯めているためです
短期、中期、が作用し始めると降下を開始し長期履歴も作用し始めると急降下になります
概算で学習全体の60%程で emoDrive が作用し初期学習率の2.5倍以上を投入するはずです

3