ブログのMathJaxのバージョンを上げたら数式の描画がはやくなった
概要
- MathJaxのバージョンをv2からv3に上げたら爆速になった
モチベーション
ブログの数式のレンダリングが遅いのが以前から気になってて, MathJaxからKaTeXに乗り換えようかなあと思って色々ググってたら以下の記事を発見した.
古い設定見てみたらMathJaxのバージョン2系だったし思い切って上げてみた. 2系より3系の方が何かと良いのはPythonとOpenCVで学んでいる.
MathJaxの更新
旧設定:
<script type="text/javascript" async src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.4/MathJax.js?config=TeX-MML-AM_CHTML"> </script> <script type="text/x-mathjax-config"> MathJax.Hub.Config({ tex2jax: { inlineMath: [['$','$'], ['\\(','\\)']], displayMath: [ ['$$','$$'], ["\\[","\\]"] ] } }); </script>
新設定:
<script type="text/javascript" id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js"> </script> <script> window.MathJax = { tex: { inlineMath: [['$','$'], ['\\(','\\)']], displayMath: [ ['$$','$$'], ["\\[","\\]"] ] } }; </script>
例
数式のある文章の例. 変える前との比較は出せないが以前より明らかに早くなってる.
観測データを$\mathbf X = \{\mathbf x_1, \cdots, \mathbf x_N\} \; (\mathbf x_n \in \mathbb R^D)$, クラスタ割り当てを$\mathbf S = \{\mathbf s_1, \cdots, \mathbf s_N\} \; (\mathbf s_n \in \{0,1\}^K, \sum_k s_{n,k}=1)$とするとき, GMMの同時分布は次式で表される:
$$ \begin{align} p(\mathbf X, \mathbf S, \boldsymbol \pi, \Theta) &=p(\mathbf X | \mathbf S, \Theta)p(\mathbf S | \boldsymbol \pi)p(\Theta)p(\boldsymbol \pi)\\ &=\left\{\prod_{n=1}^N p(\mathbf x_n | \mathbf s_n, \Theta)p(\mathbf s_n | \boldsymbol \pi)\right\} \left\{\prod_{k=1}^Kp(\theta_k)\right\} p(\boldsymbol \pi) \\ p(\mathbf x_n | \mathbf s_n, \Theta) &= \prod_{k=1}^K \mathcal N(\mathbf x_n | \boldsymbol\mu_k, \boldsymbol\Lambda_k^{-1})^{s_{n,k}} \\ p(\mathbf s_n | \boldsymbol \pi) &= \mathrm{Cat}(\mathbf s_n | \boldsymbol \pi) \end{align} $$
ここで集合 $\Theta = \{\theta_1, \cdots, \theta_K\}$は混合要素のパラメタで, $\theta_k = \{\boldsymbol\mu_k, \boldsymbol\Lambda_k\}$である. ベクトル$\boldsymbol\pi \in \mathbb R^K \; (\sum_k \pi_k = 1)$は混合係数である.