p.tatapa.org

p.tatapa.org

ると | @ruto@p.tatapa.org

コンピュータ関連、その他言葉遊びなどを書いてます。アイコンは「腕時計」。ヘッダー画像は2-3フィンガーツリー。

TIL: “categorical”は「明確な」「無条件の」といった意味がある。論理学では“categorical proposition”は「全てのXはYだ/でない」や「あるXはYだ/でない」など、あるカテゴリーのものがある性質を満たす/満たさないという形の命題を指す。圏論的という意味ではない。

メモ: PostgreSQLでは宣言的パーティショニングをしたテーブルを参照する外部キー制約が書ける。

CREATE TABLE foo (
  id int PRIMARY KEY
) PARTITION BY RANGE (id);

CREATE TABLE foo_100 PARTITION OF foo FOR VALUES FROM (0) TO (100);

CREATE TABLE bar (
  id int PRIMARY KEY,
  foo_id int NOT NULL REFERENCES foo
);

INSERT INTO foo (id) VALUES (0);

INSERT INTO bar (id, foo_id) VALUES (0, 0); -- 制約を満たすので挿入できる。
INSERT INTO bar (id, foo_id) VALUES (1, 1); -- エラーとなる。

MySQLでは書けないはず。

https://dev.mysql.com/doc/refman/9.6/en/partitioning-limitations-storage-engines.html

投票の夜はフシギ

投票は夜の七時
※投票所によって開場時間は異なります。指定された投票所の開場時間をご確認の上投票下さい。

数十回は少ないか。場合によったら1000回以上か。

今東京では秒間数十回、もしかしたらは数百回「雪」と言われている。

プログラミング言語の意味論で、small-step semanticsとbig step semanticsの中間的なbig-stop semanticsというものがあるらしい。

https://dl.acm.org/doi/10.1145/3776718

直感的には次のような感じっぽい。

  • small-step semantics: 式e1は1ステップ計算すると式e2になる。
  • big-step semantics: 式eは最終的に値vになる。
  • big-stop semantics: 式e1は何ステップか計算するとe2になる。

big-step semanticsっぽく簡単に書けて、停止しない計算も素直に扱える。

なんとかなった。

まだスパムが来るので、メールアドレスを変えようと思ったらアカウント管理画面からは変更できない。問い合わせチャットボットに案内されたので聞いたら郵便番号やら本名やらを聞かれた上にMonday–Friday, 9 AM – 6 PM ESTに再度チャットしろと言われた。

おにはそと
ふくはうち
かしわもち
くつわむし
あかわいん
つなわたり
うちわえび
うらわえき
かがわけん
ときわだい
いなわしろ

Rootless Dockerからの外向き通信が上手くいかなくて、MTUの設定が悪いのかとかいろいろいじってたら通信できるようになったけど、念のため設定を元に戻しても通信できて、daemonを再起動したから動いただけっぽい。

“pane”は“panel”の略かと思っていたけど別の単語らしい。語源は両方とも古期フランス語のpanで布などの一片という意味らしい。

WIREDにのみ登録しているメールアドレスからスパムが来た。検索すると同じようなスパムが来たという人はいるが、いまのところ1人のみ。以前WIREDに問い合わせを送ったことがあるので、それが関係しているかもしれない。

https://soudai.hatenablog.com/entry/2026/01/27/185902

「startならstopの方が対になるし、期間を表すならfrom-toやbegin-endの方が意味が通りやすい」というのは直感的にはそんなことはないと思うけど、何を示せたらそうである/そうでないと言えるだろうか(そもそもendとstopはニュアンス違う気もする)。

動詞のstartとendが対で使われている用例は英英辞典などにも多くあるけど、「本来は誤用だったが慣用化した」への反論としては弱い。

他の例: Javaの文字列のstartsWithとendsWith https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html#startsWith(java.lang.String)

また、動詞のstart/endではないが、日付の開始日と終了日はstart/endで表す例が多い。

例1: Wikipediaで日付の範囲を指定するテンプレート https://en.wikipedia.org/wiki/Template:Start_and_end_dates

例2: PostgreSQLの日付のOVERLAPS演算子の説明 https://www.postgresql.org/docs/current/functions-datetime.html

例3: JavaScriptのTimeRanges https://developer.mozilla.org/en-US/docs/Web/API/TimeRanges

例4: pandas.date_range https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.date_range.html

その他、カレンダーアプリでも開始日/終了日はstart date/end dateが多いっぽい?

飲み水: 言う
飲む水: 言わない
洗い場: 言う
洗う場: 言わない
食べるラー油: 言う
食べラー油: 言わない
貼るカイロ: 言う
貼りカイロ: 言わない

最近のGPUでは低精度演算が優先されて倍精度浮動小数点数の性能は前世代よりも下がったりしている。そこで低精度演算を組み合わせて高精度演算を実装する手法が注目されているらしい。

https://www.theregister.com/2026/01/18/nvidia_fp64_emulation/

尾崎スキームという手法があり、8ビット整数などの低い精度の数で64ビット浮動小数点数などの高い精度の数の行列積を計算できる。2000 × 2000以上などの大きなサイズでは通常より高速になることもある。実数として考えると誤差なしだが、IEEE 754としては負のゼロなどが絡むと同一ではない。前処理と後処理で高精度演算は必要。使用メモリ量は増える。
https://arxiv.org/abs/2504.08009
https://link.springer.com/chapter/10.1007/978-3-030-50743-5_12

実アプリケーションで高速化できるとは限らないらしい。また、メモリ速度がボトルネックとなる場合もあるらしい。

「カバンが壊れる」はちょっと違和感あるものの言うけど、「袋が壊れる」は言わないな(少なくとも取っ手などを除いた袋本体は破れたり穴が空いたりはするけど壊れるとは言わない)、みたいなことを今日の夢の中で考えていた。知り合いが古いカバンをずっと使っていた。

機械学習の際、参考となるモデルを使うことで学習を効率化する手法についての論文。

https://arxiv.org/abs/2505.06699

学習中モデルの損失関数から、参考モデルの損失関数を引いたものを使って学習する。

直感的には、参照モデルでは上手く扱える(損失関数が小さい)が、学習中のモデルで上手く扱えない(損失関数が大きい)ようなデータを重点的に学習することで学習を効率化する。

知識蒸留とは違い、参照モデルよりも良い性能を出せる可能性がある。また、参照モデルとアーキテクチャが異なっていてもよい。

手法自体は以前から知られていて、学習データの絞り込みや重み付けに使われていたが、本論文では数学的な分析をしていて、学習データの絞り込みや重み付けをしなくても損失関数の入れ替えだけで効率化できることを示している。

理論的には、学習後の危険関数の上界の式に「最適なモデルの損失関数の分散」が通常は含まれるのに対し、これが「(最適なモデルの損失関数 - 参照モデルの損失関数)の分散」となることで、参照モデルが最適なモデルに十分近ければ上界がその分小さくなる、ということらしい。

コード的には、パラメータを更新する式に勾配∇avg(exp(損失関数))が含まれるので、損失関数が大きい部分は勾配も大きくなるということっぽい?

TIL: “most”は50 %を越えていれば使える。というか日本語の「大半」もそう。

»