2018年4月26日木曜日
単位インパルス関数
2018年4月11日水曜日
畳み込み
信号処理の分野では畳み込み積分という重要な処理があります。「畳み込み」と言いますと、ディープラーニングの主要な構造の一つ、畳み込みニューラルネットワーク(CNN)でお馴染みかも知れません。ただ、CNNでは画像とフィルタの間の相関を表すものに近く、実際、画像の画素とフィルタのフィルタ係数との積和演算になっています。
位置\( (i, j) \)の画素の画素値を \( x_{ij} \) とし、位置\( (p, q) \)のフィルタのフィルタ係数を \( h_{pq} \) とすれば、その積和演算は以下のようになります。
\begin{equation} u_{ij} = \sum_{p=0}^{H-1} \sum_{q=0}^{H-1} x_{i+p,j+q} h_{pq} \end{equation}この積和演算では、画像の中に、フィルタの濃淡パターンと似た濃淡パターンがどこにあるかを検出する働きがあります。したがって、フィルタが持つ濃淡の特徴を、画像から抽出していると考えることができます。で、その先に行く前に、この畳み込み積分をちゃんと理解しておきましょう。
信号処理では、システムとして線形で時間的に特性が変化しないものを考えることがあります。これを、線形時不変システムと呼びます。知りたいのは、システムに入力があったとき、出力がどうなるかということです。ただ、システムの特性は明示的にはわからないものとします。このとき、インパルス応答と入力の畳み込み積分によって、システムの出力が計算できるのです。インパルス応答というのは、システムに単位インパルス信号を入力したときの出力応答のことです。
ということで、まず、インパルス応答について知る必要がありますね。その詳細を次に書きます。2017年8月29日火曜日
行列式
行列式は計算負荷が高いので、求めやすい形に変形します。このとき使われるのが、以下の行列式の計算法則です。ここでは6つ挙げていますが、逆行列の計算には(1),(2),(5)が主に用いられます。
(1) \( \det B = k \det A \)
ただし、行列\(B\)は、行列\(A\)の1行の成分を\(k\)倍したものです。例えば、
\begin{equation}
A = \begin{pmatrix} a & c \\ b & d \end{pmatrix} \\
B = \begin{pmatrix} a & c \\ k b & k d \end{pmatrix}
\end{equation}
なら、
\begin{equation}
\det A = a d - b c \\
\det B = k a d - k b c = k ( a d - b c ) = k \det A
\end{equation}
です。
(2) \( \det B = - \det A \)
ただし、行列\(B\)は、行列\(A\)の1行の成分と別の1行の成分とを入れ替えたものです。例えば、
\begin{equation}
A = \begin{pmatrix} a & c \\ b & d \end{pmatrix} \\
B = \begin{pmatrix} b & d \\ a & c \end{pmatrix}
\end{equation}
なら、
\begin{equation}
\det A = a d - b c \\
\det B = b c - a d = - ( a d - b c ) = - \det A
\end{equation}
です。
(3) \( \det A = 0 \)
ただし、行列\(A\)の1行の成分と別の1行の成分とが等しいものです。例えば、
\begin{equation}
A = \begin{pmatrix} a & c \\ a & c \end{pmatrix}
\end{equation}
なら、
\begin{equation}
\det A = a c - a c = 0
\end{equation}
です。
(4) \( \det C = \det A + \det B \)
ただし、行列\(A, B, C\)ではそれぞれ1行の成分以外、すべて等しいという条件で、その1行について\(A\)の成分と\(B\)の成分の和が\(C\)の成分に等しくなっています。例えば、
\begin{equation}
A = \begin{pmatrix} a & c \\ b & d \end{pmatrix} \\
B = \begin{pmatrix} a & c \\ t & v \end{pmatrix} \\
C = \begin{pmatrix} a & c \\ b + t & d + v \end{pmatrix}
\end{equation}
なら、
\begin{equation}
\det A + \det B = ( a d - b c ) + ( a v - c t ) = a ( d + v ) - c ( b + t ) = \det C
\end{equation}
です。
(5) \( \det B = \det A \)
ただし、行列\(B\)は、行列\(A\)の1行の成分に、別の1行の成分の定数倍を足したものです。例えば、
\begin{equation}
A = \begin{pmatrix} a & c \\ b & d \end{pmatrix} \\
B = \begin{pmatrix} a & c \\ b + k a & d + k c \end{pmatrix}
\end{equation}
なら、
\begin{equation}
\det B = a ( d + k c ) - c ( b + k a ) = a d - b c + k ( a c - a c ) = a d - b c = \det A
\end{equation}
です。
(6) \( \det A^T = \det A \)
これは、転置をとっても行列式の値は変わらないことを示しています。例えば、
\begin{equation}
A = \begin{pmatrix} a & c \\ b & d \end{pmatrix} \\
A^T = \begin{pmatrix} a & b \\ c & d \end{pmatrix}
\end{equation}
なら、
\begin{equation}
\det A^T = a d - b c = \det A
\end{equation}
です。
2017年8月22日火曜日
対称行列
対称行列のメリットは、対称行列の固有値に対する固有ベクトルが直交するということです。例えば、対称行列 \begin{equation} A = \begin{pmatrix} 2 & 1 \\ 1 & 4 \end{pmatrix} \end{equation} の対角化を考えます。行列式は \begin{equation} \det ( A - \lambda E ) = \det \left \{ \begin{pmatrix} 2 & 2 \\ 2 & 5 \end{pmatrix} - \lambda \begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix} \right \} = \det \begin{pmatrix} 2 - \lambda & 2 \\ 2 & 5- \lambda \end{pmatrix} \\ = ( 2 - \lambda )(5 - \lambda) - 2 \cdot 2 = \lambda^2 - 7 \lambda + 6 = ( \lambda - 1 )( \lambda - 6 ) \end{equation} となり、固有値は\( \lambda = 1, 6 \)と求まります。
固有ベクトルを\( \begin{pmatrix} x & y \end{pmatrix}^T \)とすれば、連立方程式は \begin{equation} \begin{pmatrix} 2 - \lambda & 2 \\ 2 & 5- \lambda \end{pmatrix} \begin{pmatrix} x \\ y \end{pmatrix} = \begin{pmatrix} 0 \\ 0 \end{pmatrix} \end{equation} となります。\( \lambda = 1\)のとき、\( x + 2 y = 0 \)ですから、 \begin{equation} \begin{pmatrix} x \\ y \end{pmatrix} = \begin{pmatrix} 2 \\ -1 \end{pmatrix} \end{equation} となります。\( \lambda = 6\)のとき、\( 2 x - y = 0 \)ですから、 \begin{equation} \begin{pmatrix} x \\ y \end{pmatrix} = \begin{pmatrix} 1 \\ 2 \end{pmatrix} \end{equation} となります。これらの固有ベクトルの内積を計算すると、0になりますから、確かに直交しています。
固有ベクトルは定数倍してもよいですから、大きさが1になるようにとります。大きさが1になるということは、単位ベクトルということです。これは正規直交基底そのもので、三次元ならば以下の図のように表されます。 対称行列のメリットは、基底の取替え行列が正規直交基底となり、計算が簡単になることです。 \begin{eqnarray} \vec{e}_1 \cdot \vec{e}_1 = 1, \ \ \vec{e}_2 \cdot \vec{e}_2 = 1, \ \ \vec{e}_3 \cdot \vec{e}_3 & = & 1 \\ \vec{e}_1 \cdot \vec{e}_2 = 0, \ \ \vec{e}_2 \cdot \vec{e}_3 = 0, \ \ \vec{e}_3 \cdot \vec{e}_1 & = & 0 \end{eqnarray} もう一つのメリットは、逆行列の計算が簡単になることです。行列\(A\)が表す一次変換を、基底の取替え行列\(P\)として正規直交基底(固有ベクトル)を並べて作った行列で表せますから、逆行列は転置行列と同等になります。 \begin{equation} P^{-1} = P^T \end{equation}
2017年8月15日火曜日
対角化の導出
行列\(A\)は\(n \times n\)の正方行列だとして、その固有値を\(\lambda_1, \lambda_2, \cdots , \lambda_n\)、これに対する固有ベクトルを\(\vec{x_1}, \vec{x_2}, \cdots , \vec{x_n}\)としますと、次式が成り立ちます。 \begin{equation} A \vec{x_1} = \lambda_1 \vec{x_1} \\ A \vec{x_2} = \lambda_2 \vec{x_2} \\ \cdots \\ A \vec{x_n} = \lambda_n \vec{x_n} \end{equation} 固有ベクトルを並べた行列\(P = \begin{pmatrix} \vec{x_1} & \vec{x_2} & \cdots & \vec{x_n} \end{pmatrix}\)を作ると、 \begin{equation} A P = \begin{pmatrix} \lambda_1 \vec{x_1} & \lambda_2 \vec{x_2} & \cdots & \lambda_n \vec{x_n} \end{pmatrix} = P \left( \begin{array}{ccccc} \lambda_1&0&0&\cdots &0\\ 0&\lambda_2&0&\cdots &0\\ 0&0&\lambda_3&\cdots &0\\ &\vdots&&\ddots&\\ 0&0&0&\cdots &\lambda_n \end{array} \right) \end{equation} となります。ここで、列ベクトルごとに\(\lambda\)をかける次式を使っています。 \begin{equation} \left( \begin{array}{rrcr} a_{11} & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{n1} & a_{n2} & \cdots & a_{nn} \end{array} \right) \left( \begin{array}{ccccc} \lambda_1&0&0&\cdots &0\\ 0&\lambda_2&0&\cdots &0\\ 0&0&\lambda_3&\cdots &0\\ &\vdots&&\ddots&\\ 0&0&0&\cdots &\lambda_n \end{array} \right) = \left( \begin{array}{rrcr} \lambda_1 a_{11} & \lambda_2 a_{12} & \cdots & \lambda_n a_{1n} \\ \lambda_1 a_{21} & \lambda_2 a_{22} & \cdots & \lambda_n a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ \lambda_1 a_{n1} & \lambda_2 a_{n2} & \cdots & \lambda_n a_{nn} \end{array} \right) \end{equation} 行列\(P\)が逆行列を持てば、先の式の両辺に左から\(P^{-1}\)をかけて \begin{equation} P^{-1}AP = \left( \begin{array}{ccccc} \lambda_1&0&0&\cdots &0\\ 0&\lambda_2&0&\cdots &0\\ 0&0&\lambda_3&\cdots &0\\ &\vdots&&\ddots&\\ 0&0&0&\cdots &\lambda_n \end{array} \right) \end{equation} を得ます。
2017年8月8日火曜日
対角化
対角行列を具体的に求める前に、対角化の意味とメリットを考えてみましょう。\(P^{-1}AP\)という行列表現は、新しい基底を座標系とした場合の線形変換を表しました。ただし、新しい基底は固有ベクトルの組になっていて、線形変換の行列表現は対角行列になっています。対角化操作を表す式を\(m\)乗すると、 \begin{equation} ( P^{-1}AP )^m = \left( \begin{array}{ccccc} \lambda_1&0&0&\cdots &0\\ 0&\lambda_2&0&\cdots &0\\ 0&0&\lambda_3&\cdots &0\\ &\vdots&&\ddots&\\ 0&0&0&\cdots &\lambda_n \end{array} \right)^m \end{equation} となります。左辺は、 \begin{equation} ( P^{-1}AP ) ( P^{-1}AP ) \cdots ( P^{-1}AP ) = P^{-1}A^mP \end{equation} となります。対角行列を\(m\)回かけた行列は対角成分をそれぞれ\(m\)乗したものになりますから、右辺は \begin{equation} \left( \begin{array}{ccccc} \lambda_1^m &0&0&\cdots &0\\ 0&\lambda_2^m &0&\cdots &0\\ 0&0&\lambda_3^m &\cdots &0\\ &\vdots&&\ddots&\\ 0&0&0&\cdots &\lambda_n^m \end{array} \right) \end{equation} となります。つまり、 \begin{equation} P^{-1}A^mP = \left( \begin{array}{ccccc} \lambda_1^m &0&0&\cdots &0\\ 0&\lambda_2^m &0&\cdots &0\\ 0&0&\lambda_3^m &\cdots &0\\ &\vdots&&\ddots&\\ 0&0&0&\cdots &\lambda_n^m \end{array} \right) \end{equation} です。ここで、両辺の左から\(P\)を、右から\(P^{-1}\)をかけると、 \begin{equation} A^m = P \left( \begin{array}{ccccc} \lambda_1^m &0&0&\cdots &0\\ 0&\lambda_2^m &0&\cdots &0\\ 0&0&\lambda_3^m &\cdots &0\\ &\vdots&&\ddots&\\ 0&0&0&\cdots &\lambda_n^m \end{array} \right) P^{-1} \end{equation} となります。したがって、行列の\(m\)乗の計算を単純にできるのです。
では、行列の対角化を具体的に行ってみましょう。正方行列\(A\)を \begin{equation} A = \begin{pmatrix} 3 & 5 \\ 4 & 2 \end{pmatrix} \end{equation} とします。前の回で固有値と固有ベクトルは求めました。それを使えば、固有ベクトルを並べた行列 \(P = \begin{pmatrix} 1 & 5 \\ -1 & 4 \end{pmatrix} \) に対して \begin{equation} P^{-1}AP = \begin{pmatrix} -2 & 0 \\ 0 & 7 \end{pmatrix} \end{equation} となります。固有値と固有ベクトルは対応する順番に並べることに注意します。






