離散化
数学において、離散化 (discretization) 連続関数、モデル、変数、方程式を離散的な対応する物へ移す過程のこと。この過程は普通、それらをデジタルコンピュータ上での数値評価および実装に適したものにするために最初に行われるステップである。二分化 (dichotomization) は離散クラスの数が2である離散化の特別な場合であり、これにより連続変数を2値変数として近似することができる(2項分類のようにモデリングの目的で2分法を作成する)。
離散化は離散数学にも関係しており、グラニュラーコンピューティングの重要な成分である。この文脈において、離散化は、複数の離散変数が集約されるもしくは複数の離散圏が融合する場合のときのように、変数もしくは圏のグラニュラリティの変更をさすこともある。
連続的なデータが離散化されるときは常にある程度の離散化誤差がある。目標は手元のモデル化の目的では無視できると考えられるレベルまでその量を減らすことである。
離散化と量子化 (quantization) という用語はしばしば同じ意味を持つが、必ずしも同じ意味というわけではない(具体的には2つの用語は意味領域を共有している)。離散化誤差と量子化誤差についても同様である。
離散化に関する数学的方法にはオイラー・丸山法とゼロ次ホールドがある。
離散化は連続微分方程式を数値解析に適した離散差分方程式に変換することにも関係する。
次に連続時間状態空間モデルを示す。
\dot{\mathbf{x}(t) = \mathbf A \mathbf{x}(t) + \mathbf B \mathbf{u}(t) + \mathbf{w}(t)
\mathbf{y}(t) = \mathbf C \mathbf{x}(t) + \mathbf D \mathbf{u}(t) + \mathbf{v}(t)
ここで v と w はパワースペクトル密度を有する連続ゼロ平均ホワイトノイズ源である。
\mathbf{w}(t) \sim N(0,\mathbf Q)
\mathbf{v}(t) \sim N(0,\mathbf R)
入力 u に対するゼロ次ホールドとノイズ v に対する連続積分を仮定することで離散化することができる。
\mathbf{x}[k+1] = \mathbf A_d \mathbf{x}[k] + \mathbf B_d \mathbf{u}[k] + \mathbf{w}[k]
\mathbf{y}[k] = \mathbf C_d \mathbf{x}[k] + \mathbf D_d \mathbf{u}[k] +  \mathbf{v}[k]
共分散は以下となる。
\mathbf{w}[k] \sim N(0,\mathbf Q_d)
\mathbf{v}[k] \sim N(0,\mathbf R_d)
\mathbf A_d = e^{\mathbf A T} = \mathcal{L}^{-1}\{(s\mathbf I - \mathbf A)^{-1}\}_{t=T}
\mathbf B_d = \left( \int_{\tau=0}^{T}e^{\mathbf A \tau}d\tau \right) \mathbf B = \mathbf A^{-1}(\mathbf A_d - I)\mathbf B (もし \mathbf A が正則行列であれば)
\mathbf C_d = \mathbf C
\mathbf D_d = \mathbf D
\mathbf Q_d = \int_{\tau=0}^{T} e^{\mathbf A \tau} \mathbf Q e^{\mathbf A^\top \tau}  d\tau
\mathbf R_d = \frac{1}{T} \mathbf R
である。T はサンプル時間、\mathbf A^\top は\mathbf A行列である。
1つのステップで Ad と Bd を計算するための巧妙な手段は次の特性を使うことである
e^{\begin{bmatrix} \mathbf{A} & \mathbf{B} \\
\mathbf{0} & \mathbf{0} \end{bmatrix} T} = \begin{bmatrix} \mathbf{M_{11} & \mathbf{M_{12} \\
\mathbf{0} & \mathbf{I} \end{bmatrix}
\mathbf A_d = \mathbf M_{11}
\mathbf B_d = \mathbf M_{12}
\mathbf{Q}_d の数値評価は行列の指数積分を用いるためやや扱いにくい。しかし、はじめに行列を構築し、その指数関数を計算することにより処理することができる。
\mathbf{F} =
\begin{bmatrix} -\mathbf{A} & \mathbf{Q} \\
\mathbf{0} & \mathbf{A}^\top \end{bmatrix} T
\mathbf{G} = e^\mathbf{F} =
\begin{bmatrix} \dots & \mathbf{A}_d^{-1}\mathbf{Q}_d \\
\mathbf{0} & \mathbf{A}_d^\top             \end{bmatrix}.
離散化された駆動雑音は G の右下の区画の転置行列を G の右上の区画にかけあわせることで得られる。
\mathbf{Q}_d = (\mathbf{A}_d^\top)^\top (\mathbf{A}_d^{-1}\mathbf{Q}_d) = \mathbf{A}_d (\mathbf{A}_d^{-1}\mathbf{Q}_d).
\mathbf{\dot{x}(t) = \mathbf A\mathbf x(t) + \mathbf B \mathbf u(t)
\frac{d}{dt}e^{\mathbf At} = \mathbf A e^{\mathbf At} = e^{\mathbf At} \mathbf A
モデルを左から掛けることで以下の式を得る。
e^{-\mathbf At} \mathbf{\dot{x}(t) = e^{-\mathbf At} \mathbf A\mathbf x(t) + e^{-\mathbf At} \mathbf B\mathbf u(t)
\frac{d}{dt}(e^{-\mathbf At}\mathbf x(t)) = e^{-\mathbf At} \mathbf B\mathbf u(t)
であり、積分することで
e^{-\mathbf At}\mathbf x(t) - e^0\mathbf x(0) = \int_0^t e^{-\mathbf A\tau}\mathbf B\mathbf u(\tau) d\tau
\mathbf x(t) = e^{\mathbf At}\mathbf x(0) + \int_0^t e^{\mathbf A(t-\tau)} \mathbf B\mathbf u(\tau) d \tau
となる。これが連続モデルに対する解析的解法である。
ここで、上の式を離散する。各時間ステップの定数 u は一定とする。
\mathbf x[k] \ \stackrel{\mathrm{def}{=}\  \mathbf x(kT)
\mathbf x[k] = e^{\mathbf AkT}\mathbf x(0) + \int_0^{kT} e^{\mathbf A(kT-\tau)} \mathbf B\mathbf u(\tau) d \tau
\mathbf x[k+1] = e^{\mathbf A(k+1)T}\mathbf x(0) + \int_0^{(k+1)T} e^{\mathbf A((k+1)T-\tau)} \mathbf B\mathbf u(\tau) d \tau
\mathbf x[k+1] = e^{\mathbf AT} \left[  e^{\mathbf AkT}\mathbf x(0) + \int_0^{kT} e^{\mathbf A(kT-\tau)} \mathbf B\mathbf u(\tau) d \tau \right]+ \int_{kT}^{(k+1)T} e^{\mathbf A(kT+T-\tau)} \mathbf B\mathbf u(\tau) d \tau
これが\mathbf x[k]のカッコで囲まれた表現であり、第2項は関数 v(\tau) = kT + T - \tauで置き換えることで簡略にすることができる。 d\tau=-dvである。また、積分中、 \mathbf u が定数であるとすると次のようになる。
\begin{matrix} \mathbf x[k+1]&=& e^{\mathbf AT}\mathbf x[k] - \left( \int_{v(kT)}^{v((k+1)T)} e^{\mathbf Av} dv \right) \mathbf B\mathbf u[k] \\
&=& e^{\mathbf AT}\mathbf x[k] - \left( \int_T^0 e^{\mathbf Av} dv \right) \mathbf B\mathbf u[k] \\
&=& e^{\mathbf AT}\mathbf x[k] + \left( \int_0^T e^{\mathbf Av} dv \right) \mathbf B\mathbf u[k] \\
&=&e^{\mathbf AT}\mathbf x[k] + \mathbf A^{-1}\left(e^{\mathbf AT}-\mathbf I \right) \mathbf B\mathbf u[k] \end{matrix}
これが離散化問題の厳密解である。
厳密な離散化には重い行列の指数関数や積分操作が含まれているため、処理が難しいことがある。小さな時間ステップに基づき、 e^{\mathbf AT} \approx \mathbf I + \mathbf A Tと近似した離散モデルで計算するほうがはるかに簡単である。近似解は以下のようになる。
\mathbf x[k+1] \approx (\mathbf I + \mathbf AT) \mathbf x[k] + T\mathbf B \mathbf u[k]
他の可能な近似としてはe^{\mathbf AT} \approx \left( \mathbf I - \mathbf A T \right)^{-1} や e^{\mathbf AT} \approx \left( \mathbf I +\frac{1}{2}  \mathbf A T \right) \left( \mathbf I - \frac{1}{2} \mathbf A T \right)^{-1}がある。各々異なる安定特性を持っており、最後の近似は双一次変換やTustin変換と呼ばれ、連続時間系の安定性を持っている。
統計や機械学習において、離散化は連続特徴や変数を離散や名目特徴に変換する過程をさす。これは確率質量関数を作成する際に便利である。