#daiizメモ

Cosenseに夢中

久しぶりの自然対数

Phonnoを理想の姿に近づけていく - #daiizメモ の補強メモです。未来の自分のための設計メモ。2025å¹´1月バージョン。

類似度順にソート済みのsimilarImagesが与えられたとき、ちょうどいい弱さの関連度合いの画像をひとつ選定するための数式。seedImageIdsは、基本的に、試行回数tに対する増加関数。

\text{skipLen(t)} = 10 - \lfloor \log(\text{seedImageIds(t).length}) \rfloor

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 からは画像がランダムに選択される。これは、スキップ処理によって絞り込まれた類似画像群から、さらにランダム性を取り入れることで、単に多様性を高めるだけでなく、以下のような効果を持つためである。

  • 局所解からの脱却: ランダム選択により、探索が局所的な類似画像群に固定されることを防ぎ、より広い範囲の画像空間を探索する機会を増やす。
  • 探索の揺らぎと復帰: たとえある試行で意味的にシード画像から遠い画像が選択されたとしても、次以降の試行におけるランダム選択によって、確率的にシード画像に近い画像が再び選択される可能性があり、探索が大きく逸脱した場合でも軌道修正が期待できる。
  • 偶発的な発見の促進: 意図的にランダム性を取り入れることで、開発者が予測していなかった意外な類似画像や、新しい視点をもたらす画像の発見に繋がる可能性がある。
  • 過剰な最適化の抑制: 常に最も類似度の高い画像ばかりを選択し続けるのではなく、ランダム性によって多少のノイズを加えることで、過剰な最適化を防ぎ、より汎用的な探索を促す効果も期待できる。

Prediction Of SkipLen Up To T = 100*2

Prediction Of SkipLen With Change Points

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

*1:クエリ画像と過去の試行の結果から構成されるリスト

*2:by gpt-4o

*3:by gemini-2.0-flash-thinking-exp-01-21

Phonnoを理想の姿に近づけていく

眠さが残る火曜日

Phonno

昨日に続いて、検索画面の「Load more」ボタンの挙動を改善した。検索ボックスの内容(seed query)とほどよく関連している画像を優先して返すことで、弱い類似画像(強くない類似画像)を探すことが可能になった。継ぎ足しボタンを押すだけで遠くに連れていきたい。遠くに行きつつも、seed images, seed keywordsの遺伝子は残したい。

さらに、Load moreで気になる画像を見つけたら検索キーワード(キーイメージ)として追加できるようになった。グリッドレイアウトで整列している画像の末尾の「+」ボタンを押すだけでよい。しばらく遊んでみよう。

Chrome -> QR Screenshot(Chromeでの体験、Screenshot -> Gyazo)-> Scrapbox(Gyazo、Nota)-> GyaPC(Scrapbox、Chrome拡張機能のLT)

食事

焼きそば、20%引きの寿司、グミ、ドクターペッパー

不健康!!!

技書博の準備

今日は有給休暇。去年(訂正: 一昨年)付与されたお休みが来月期限切れになってしまうので慌てて消化している。有給休暇消滅防止委員会の活動。

MailLM

技書博のフリーペーパー(リーフレット)を推敲している。コンビニで印刷して誤字脱字のチェックも進行中。実はドッグフーディングを兼ねてMailLMに執筆の相談に乗ってもらっていた。当初の想定のような書籍にはならなかったけれど、無事に間に合いそうであることを報告してスレッドを閉じた。折衷案のリーフレットに落ち着いたのも、途中でやめずに書ききれたのもMailLMのマネージメントのおかげ。

LLMにコンテキストとして渡すメールの引用文には、メッセージの時刻がしっかり含まれている。そのため、時間に関する話題も質問しやすい。

最後に執筆活動の記録をまとめてもらう。今後の時間見積もりのためにどこかに蓄積して分析できるといい。知的生産活動の時間を有効活用できるようになりたい。

印刷したリーフレット

Google DocsでB4サイズの紙面に10ptで文字を詰めて、B5で縮小印刷したらだいぶ小さい文字になった。この文字の大きさはどこか懐かしい。高校や予備校でもらったプリントの文字サイズだ。B4設定にしておくと2カラムの文章が書きやすい。一行あたりの文字数がちょうどいい。そういうことだったのか。

MailLMによる総括

では、技書博でお話しましょう!!!
2025.01.25 Sat. 11:00~16:00 @横浜産貿ホール マリネリア
第十一回技術書同人誌博覧会 - connpass(一般参加の無料登録が必要です)

け-03 TeamJで待ってます。id:kanata_02くんも来てくれます!

Phonno

検索画面の「Load more」ボタンを改善した。これはBox内のコンテンツをくまなく触れてもらうための仕掛けで、クリックすると画像がランダムに継ぎ足し表示される。

これまでは新たに読み込まれた画像群に関する概要を動的に生成していた。これがめちゃくちゃ遅くて嫌だった。遅いわりにさほど読んでいなかったので思い切って廃止した。代わりに画像のタイトルなどの事前生成されている情報が提示される。この機能はSNSのタイムラインのようにサクサク動く方がいい!

デモ: https://phonno.org/_d7ad2f536ace4d21ae9f8fb833194482

珈琲

スタバのカフェミスト

MailLMの実験

MailLMでは、メールインターフェースを介したLLMとの対話や、LLMによるメールマガジン生成、パーソナライズされたAIエージェントの可能性を探究しています。

技書博で配布するフリーペーパーも書き始めた。本にまとめるのは難しかった!すみません!!もっと早く動き始めないといけないな。反省。4ページほどの内容にはなりそうなので、「折れば本」ということでフリーブックを名乗ろうと思っています。よろしくお願いします。

少し余裕ができそうなので、当日だけ遊べるデモを用意しようかな。

既刊もいくつか持っていきます。技書博で会いましょう!!!
2025.01.25 Sat. 11:00~16:00 @横浜産貿ホール マリネリア
第十一回技術書同人誌博覧会 - connpass(一般参加の無料登録が必要です)

今週の振り返り

今週記事にできていなかったことを書いておく。詳細はそれぞれ別の機会に深堀りしたい。

嬉しい

Perplexity検索で、自分の記事がソースとして参照されたのを目撃した。Google検索でも自分のWikiやブログがヒットすることは実績解除済みだが、今回はなんとなくAIに選ばれた特別感があって嬉しさが大きい。

素朴でニッチな題材であってもブログや本を書いてインターネットに放流することは、LLM時代においても引き続き(むしろより一層)、言語モデルそのものやRAG体験向上への立派な貢献だと再認識した。合成データによる学習も活発になってきているようだけど、いまを生きる人間ならではの感性や視点を提供しつづけたい。

雑談

今年の目標のひとつである毎日投稿を継続できていて、去年のブログ記事数を超えた!!
寝落ち直前のギリギリの体力で書くことで下手に気負うことなく(細かいことに構う余裕がなく)投稿ボタンを押せる。

Phonno

  • 検索チャット機能のプロンプトを調整した
    • 自分のWikiのデモで、本名を間違えられてしまったので見逃せなかった
    • 継ぎ足しを繰り返して長く深くなっていき、秘伝のタレ化している
  • 「グローバルなタイムライン」機能を実装した
    • Boxを横断して検索チャットでのAIによる回答が流れてくる場所
      • AIだけが活動するSNSのような見せ方を模索中
      • 知的好奇心を刺激するストリームを自動生成できるのではないか
    • Boxごとに機能を有効化する必要あり
    • UIは9割くらいAIに書いてもらったので、他の画面と力の入れ具合に差が出ている。便利そうだったら本格的にリデザインする予定。
    • もう少し利用者が増えると楽しくなってくるかもしれない
    • https://phonno.org/stream
  • 「期間を指定して検索」機能の開発を開始
    • ホットなトピックを探しやすくなるはず

レトロ 焼肉

お昼に開発メンバーとレトロな喫茶店でオムカレーライス食べた。
面談、北海道のスープカレーとおでん、はてなブログとCosense最高という話をした。
LLMに負けずに人間も文字を書いていこうではありませんか!

ウスターソースがついてきた。
卵にあう調味料はなんでも受け入れられる。
オムライスの卵はBFF。
ケチャップしか試したことなかったけど、この理論で醤油もマヨネーズもいけるはず。
卵より低レイヤーは仕様上は不可知。

夜はまたまた開発メンバーと一緒に焼肉した。
きょうは右手の人差し指が熱くなっただけでクリアです。

明日は本を書きます。
絶対に書きます。

カフェで執筆

技書博11に向けて執筆を進めた一日だった。中途半端だった解説用のコードを仕上げて動作確認したり、脱線して別件の開発に没頭したり。原稿作成からの逃避駆動開発が捗ってしまっている。土日で勝負だ。

gishohaku.dev

このカフェ好き。パンもお洒落そうだった。