Maximum Likelihood Estimation and Loss Functions | Rish’s AI Notes を読んだ。
- 損失関数にはMSE(平均二乗誤差)が選ばれるのか?
- MLE(最尤推定)の説明、尤度の対数を取ってもよい
- 条件付き対数尤度、KLダイバージェンスが説明される
- KLダイバージェンスを最小化することはMLEを最大化すること
Emacs + 暗号 + 数学 + プログラム
Maximum Likelihood Estimation and Loss Functions | Rish’s AI Notes を読んだ。
Move semantics in rust, C++, and Hylo を読んだ。
一度借用の理論的な背景を整理したい。
Understanding the BM25 full text search algorithm | Evan Schwartz を読んだ。
The Art and Mathematics of Genji-Kō – OranLooney.com を読んだ。
和書 (小林 2024) を一回さらっと読んだが、もう一度読んでみよう。
Skyline algorithm for packing 2D rectangles – Julien Vernay を読んだ。
(Gathen and Gerhard 2013) を参考にして、中国の剰余定理のアルゴリズムを実装する。
def alg10_20(cs, i_s, i_e, M, i_r0, j_r0): if i_e - i_s == 1: return cs[i_s] else: return M[i_r0][j_r0+1] * alg10_20(cs, i_s, i_s+(i_e-i_s)//2, M, i_r0-1, 2*j_r0) \ + M[i_r0][j_r0] * alg10_20(cs, i_s+(i_e-i_s)//2, i_e, M, i_r0-1, 2*j_r0+2)
ms = [2, 3, 5, 7, 11, 13, 17, 19] ms, r, k = pack_ms(ms) M = alg10_3(ms) cs = list(range(len(ms))) alg10_20(cs, 0, len(ms), M, -2, 0)
25524916
The stereographic projection of the Stern–Brocot tree を読んだ。
興味深いが後半は理解が覚束無い。記事に内に同一の筆者による記事:Some notes on the Stern–Brocot tree があるので読んでみたい。
Writes large correct programs を読んだ。
(Gathen and Gerhard 2013) を参考にして、中国の剰余定理のアルゴリズムを実装する。
このアルゴリムズは入力m1,…,mr-1で、法miでのm=m1…mi-1,mi+1,…,mr-1 の逆元を算出するものである。
拡張ユークリッド互除法法を使用するため拡張ユークリッド互除法を参考にした。
実装は以下のようになる。
def alg10_18(ms): m = functools.reduce(lambda a, b: a*b, ms, 1) ms2 = [mi**2 for mi in ms] # 1. call alg10_16 (alg10_16はalg10_3とalg10_14を併せたもの) M = alg10_3(ms2) m_rem_mi2 = alg10_14x(0, len(ms2), m, M, -2, 0) # 2. m/mi rem mi m_rem_mi = [m_rem2//mi for mi, m_rem2 in zip(ms, m_rem_mi2)] # 3. extended euclidean algo si = [] for mi, mi_rem in zip(ms, m_rem_mi): a, b = xgcd(mi, mi_rem) if 0 < b: si.append(b) else: si.append(b+mi) return si
期待する結果は以下である。
ms = [2, 3, 5, 7, 11, 13, 17, 19] m = functools.reduce(lambda a, b: a*b, ms, 1) si = [] for mi in ms: for i in range(1, mi): if 1 == (i * m//mi) % mi: si.append(i) break; si
1 | 1 | 2 | 6 | 7 | 5 | 16 | 18 |
実装した結果は以下になり、一致している。
ms = [2, 3, 5, 7, 11, 13, 17, 19] ms, r, k = pack_ms(ms) alg10_18(ms)
1 | 1 | 2 | 6 | 7 | 5 | 16 | 18 |
Traits are a Local Maxima · thunderseethe’s devlog を読んだ。