Phonnoを理想の姿に近づけていく - #daiizメモの補強メモです。未来の自分のための設計メモ。2025年1月バージョン。
類似度順にソート済みのsimilarImages
が与えられたとき、ちょうどいい弱さの関連度合いの画像をひとつ選定するための数式。seedImageIds
は、基本的に、試行回数tに対する増加関数。
similarImages.splice(0, skipLen);const idx =Math.floor(Math.random()* similarImages.length)const similarImage = similarImages[idx];
弱い類似画像の取得: 探索初期は多様性を重視し(許す限り意味的に遠くに飛ばし)、試行が進むにつれて類似度を重視する戦略で類似画像を取得するものである。
similarImages
リストは類似度順にソートされており、先頭数件は類似度合いが強いため、探索初期段階ではskipLen
によって意図的に除去される。
これは、探索の初期に類似度の高い画像に偏るのを避け、より多様な画像を探索するためである。
skipLen
は減衰関数として機能し、seedImageIds
*1のサイズが大きくなるにつれて徐々に小さくなる。
「Load similar」ボタンの繰り返し実行が進み seedImageIds
が成長するにつれて skipLen
が減少し、先頭除去される画像の数が減ることで、徐々に類似度の高い画像も選択肢に入るように探索範囲が調整される。現実的な試行回数の範囲においては、skipLen
は 4 ~ 5 に収束するようにしてある。similarImages
の長さは15 ~ 20である。
similarImages
からは画像がランダムに選択される。これは、スキップ処理によって絞り込まれた類似画像群から、さらにランダム性を取り入れることで、単に多様性を高めるだけでなく、以下のような効果を持つためである。
- 局所解からの脱却: ランダム選択により、探索が局所的な類似画像群に固定されることを防ぎ、より広い範囲の画像空間を探索する機会を増やす。
- 探索の揺らぎと復帰: たとえある試行で意味的にシード画像から遠い画像が選択されたとしても、次以降の試行におけるランダム選択によって、確率的にシード画像に近い画像が再び選択される可能性があり、探索が大きく逸脱した場合でも軌道修正が期待できる。
- 偶発的な発見の促進: 意図的にランダム性を取り入れることで、開発者が予測していなかった意外な類似画像や、新しい視点をもたらす画像の発見に繋がる可能性がある。
- 過剰な最適化の抑制: 常に最も類似度の高い画像ばかりを選択し続けるのではなく、ランダム性によって多少のノイズを加えることで、過剰な最適化を防ぎ、より汎用的な探索を促す効果も期待できる。
skipLen 減衰の過程:試行回数と seedImageIds.length の変化が最速の場合の推移*3
試行回数 (t) | skipLen | seedImageIds.length |
---|---|---|
4 | 7 | 25 |
9 | 6 | 55 |
25 | 5 | 151 |
68 | 4 | 409 |
183 | 3 | 1099 |
497 | 2 | 2983 |
1351 | 1 | 8107 |
3671 | 0 | 22027 |