測った点の数が未知数より多く、すべての式を同時には満たせないとき、「いちばんずれが小さい答え」をどう選び、どう正確に計算するかを扱います。たとえば 3 つの測定点に 1 本の直線を引くと、普通は 3 点すべてを通りません。そこで各点とのずれの 2 乗和を最小にする直線を選びます。これが最小二乗法です。この記事では、その答えの性質、計算法ごとの精度の違い、データに雑音があるときの対処を順に見ます。
∥ A x − b ∥ 2 \|A\boldsymbol{x}-\boldsymbol{b}\|_2 ∥ A x − b ∥ 2 を最小にする x \boldsymbol{x} x は、残差が A A A の像に直交する x \boldsymbol{x} x 、すなわち正規方程式 A ∗ A x = A ∗ b A^{*}A\boldsymbol{x}=A^{*}\boldsymbol{b} A ∗ A x = A ∗ b (A ∗ A^{*} A ∗ は共役転置)の解です。列が一次独立なら一意です。
特異値分解から作る擬似逆 A + A^{+} A + について、A + b A^{+}\boldsymbol{b} A + b は最小二乗解のうちノルムが最小のものです。A + A^{+} A + は Moore–Penrose の 4 条件(A X A = A AXA=A A X A = A など 4 つの等式。第 4 節)で一意に決まります。
QR 分解 A = Q 1 R 1 A=Q_1R_1 A = Q 1 R 1 を使えば x = R 1 − 1 Q 1 T b \boldsymbol{x}=R_1^{-1}Q_1^{\mathsf{T}}\boldsymbol{b} x = R 1 − 1 Q 1 T b で、Householder QR による解法は後退安定 です(後退安定とは、計算結果が「入力をわずかに動かした問題の厳密な答え」になっていること。計算した解は、各列と右辺を相対 γ ~ m n \widetilde\gamma_{mn} γ mn だけ動かした問題の厳密な最小二乗解)。
解の感度は ε ( 2 κ / cos θ + κ 2 tan θ ) + O ( ε 2 ) \varepsilon\bigl(2\kappa/\cos\theta+\kappa^2\tan\theta\bigr)+O(\varepsilon^2) ε ( 2 κ / cos θ + κ 2 tan θ ) + O ( ε 2 ) です(θ \theta θ は b \boldsymbol{b} b と像のなす角)。残差が大きい問題では κ 2 \kappa^2 κ 2 が避けられず、残差が小さい問題では κ \kappa κ で済みます。
正規方程式は κ ( A ∗ A ) = κ ( A ) 2 \kappa(A^{*}A)=\kappa(A)^2 κ ( A ∗ A ) = κ ( A ) 2 の問題を解くので、残差が小さくても κ 2 u \kappa^2u κ 2 u の誤差を出しえます。数値例では次数 11 の多項式の当てはめで、QR の 8 × 10 − 11 8\times10^{-11} 8 × 1 0 − 11 に対し正規方程式は 0.24 0.24 0.24 でした。
階数落ちに近い問題では、打ち切り特異値分解(小さい特異値を捨てる方法)と Tikhonov 正則化(捨てずに滑らかに弱める方法。弱める度合いがフィルタ因子 σ i 2 / ( σ i 2 + λ 2 ) \sigma_i^2/(\sigma_i^2+\lambda^2) σ i 2 / ( σ i 2 + λ 2 ) )で小さい特異値の方向を抑えます。
この記事で使う事前知識
直交射影 : ベクトルを部分空間の中で最も近い点に落とす操作。落とした先とのずれは部分空間に直交します。→ 内積空間とグラム・シュミット直交化
条件数 : 入力の小さな変化が答えをどれだけ拡大するかの目安。大きいほど計算しにくい問題です。→ 条件数
特異値 : 行列が空間を各方向にどれだけ伸ばすかを表す非負の数。特異値分解 A = U Σ V ∗ A=U\Sigma V^{*} A = U Σ V ∗ の Σ \Sigma Σ の対角成分です。→ 特異値分解(定理 4.1)[行列の分解と標準形]
QR 分解 : 行列を直交行列と上三角行列の積に分けること。→ QR 分解
Householder 鏡映 : 1 本のベクトルを鏡に映すように反転させる直交変換で、QR 分解の部品として使います。→ Householder 鏡映
ユニタリ行列 : ベクトルの長さを変えない行列(実数なら直交行列)。→ ユニタリ行列
観測点 t 1 , … , t m t_1,\ldots,t_m t 1 , … , t m でのデータ b i b_i b i に、未知の係数を n n n 個もつモデルを当てはめるとき、方程式は m > n m>n m > n 本で一般には解がありません。そこで「残差の 2 乗和を最小にする」係数を探すのが最小二乗法です。Gauss が天体の軌道決定に使って以来、データ解析・逆問題・統計の回帰の基本です。
数値計算の観点では、同じ最小二乗解を求めるのに 3 通りの道があります。正規方程式を Cholesky 分解で解く、QR 分解を使う、特異値分解を使う、の 3 つです。前者ほど速く、後者ほど頑健です。この記事では、どれがどんな場合にどれだけ精度を失うかを、問題の感度(条件数と残差の大きさ)とアルゴリズムの後退安定性に分けて説明します。行列のノルムと条件数 の物差しと、QR 分解 の後退誤差解析をそのまま使います。
K = R \mathbb{K}=\mathbb{R} K = R または C \mathbb{C} C 、A ∈ K m × n A\in\mathbb{K}^{m\times n} A ∈ K m × n 、b ∈ K m \boldsymbol{b}\in\mathbb{K}^m b ∈ K m とし、ノルムはすべて 2 ノルムで ∥ ⋅ ∥ \|\cdot\| ∥ ⋅ ∥ と書きます。内積は ⟨ x , y ⟩ = y ∗ x \langle\boldsymbol{x},\boldsymbol{y}\rangle=\boldsymbol{y}^{*}\boldsymbol{x} ⟨ x , y ⟩ = y ∗ x です。A A A の特異値分解 A = U Σ V ∗ A=U\Sigma V^{*} A = U Σ V ∗ 、rank A = r \operatorname{rank}A=r rank A = r 、特異値 σ 1 ≥ ⋯ ≥ σ r > 0 \sigma_1\ge\cdots\ge\sigma_r>0 σ 1 ≥ ⋯ ≥ σ r > 0 は 特異値分解(定理 4.1)[行列の分解と標準形] のとおりです。U , V U,V U , V の列を u i , v i \boldsymbol{u}_i,\boldsymbol{v}_i u i , v i と書きます。浮動小数の解析(第 5 節)では実行列を扱い、記号は QR 分解 と同じです。
列が一次独立(r = n r=n r = n )な A A A について、条件数 κ ( A ) = σ 1 / σ n \kappa(A)=\sigma_1/\sigma_n κ ( A ) = σ 1 / σ n と書きます。正方の正則行列ではこれは κ 2 ( A ) \kappa_2(A) κ 2 ( A ) に一致します(特異行列までの距離(定理 6.4)[行列のノルムと線形方程式の条件数] )。
まず「ずれが最小」を幾何で言い換えます。A x A\boldsymbol{x} A x が動ける範囲は A A A の像(列ベクトルが張る部分空間)で、b \boldsymbol{b} b に最も近いのはそこへ垂線を下ろした足です。下の定理は、この見方と正規方程式が同じことを言っていると示します。
定義 3.1 (最小二乗問題 ) ↗
∥ A x − b ∥ \|A\boldsymbol{x}-\boldsymbol{b}\| ∥ A x − b ∥ を最小にする x ∈ K n \boldsymbol{x}\in\mathbb{K}^n x ∈ K n を最小二乗解 といい、r = b − A x \boldsymbol{r}=\boldsymbol{b}-A\boldsymbol{x} r = b − A x をその残差 という。A ∗ A x = A ∗ b A^{*}A\boldsymbol{x}=A^{*}\boldsymbol{b} A ∗ A x = A ∗ b を正規方程式 という。
定理 3.2 (最小二乗解の特徴づけ ) ✓
最小二乗解は存在する。
x \boldsymbol{x} x について次は同値である: (a) x \boldsymbol{x} x は最小二乗解、(b) A x = P b A\boldsymbol{x}=P\boldsymbol{b} A x = P b (P P P は A A A の像 W = im A W=\operatorname{im}A W = im A への直交射影)、(c) 残差 b − A x \boldsymbol{b}-A\boldsymbol{x} b − A x が W W W に直交する、(d) A ∗ A x = A ∗ b A^{*}A\boldsymbol{x}=A^{*}\boldsymbol{b} A ∗ A x = A ∗ b 。
最小二乗解が一意 ⟺ \iff ⟺ rank A = n \operatorname{rank}A=n rank A = n ⟺ \iff ⟺ A ∗ A A^{*}A A ∗ A が正則。このとき解は ( A ∗ A ) − 1 A ∗ b (A^{*}A)^{-1}A^{*}\boldsymbol{b} ( A ∗ A ) − 1 A ∗ b 。
最小二乗解の全体は x 0 + ker A \boldsymbol{x}_0+\ker A x 0 + ker A (x 0 \boldsymbol{x}_0 x 0 は 1 つの最小二乗解)である。
証明(定理 3.2) W = im A W=\operatorname{im}A W = im A は K m \mathbb{K}^m K m の有限次元部分空間です。
(a)⇔(b): { A x } \{A\boldsymbol{x}\} { A x } は W W W 全体を動くので、最良近似(定理 7.2)[内積空間とグラム・シュミット直交化] により ∥ A x − b ∥ \|A\boldsymbol{x}-\boldsymbol{b}\| ∥ A x − b ∥ が最小になるのは A x = P b A\boldsymbol{x}=P\boldsymbol{b} A x = P b のとき、かつそのときに限ります。P b ∈ W P\boldsymbol{b}\in W P b ∈ W なので A x = P b A\boldsymbol{x}=P\boldsymbol{b} A x = P b となる x \boldsymbol{x} x があり、1 が従います。
(b)⇔(c): 直交分解定理(定理 7.1)[内積空間とグラム・シュミット直交化] の分解 b = w + w ′ \boldsymbol{b}=\boldsymbol{w}+\boldsymbol{w}' b = w + w ′ (w ∈ W \boldsymbol{w}\in W w ∈ W 、w ′ ∈ W ⊥ \boldsymbol{w}'\in W^{\perp} w ′ ∈ W ⊥ )は一意で w = P b \boldsymbol{w}=P\boldsymbol{b} w = P b です。b = A x + ( b − A x ) \boldsymbol{b}=A\boldsymbol{x}+(\boldsymbol{b}-A\boldsymbol{x}) b = A x + ( b − A x ) で A x ∈ W A\boldsymbol{x}\in W A x ∈ W なので、b − A x ∈ W ⊥ \boldsymbol{b}-A\boldsymbol{x}\in W^{\perp} b − A x ∈ W ⊥ と A x = P b A\boldsymbol{x}=P\boldsymbol{b} A x = P b は同値です。
(c)⇔(d): W W W は A A A の列 a j \boldsymbol{a}_j a j で張られるので、y ⊥ W \boldsymbol{y}\perp W y ⊥ W は全 j j j で a j ∗ y = 0 \boldsymbol{a}_j^{*}\boldsymbol{y}=0 a j ∗ y = 0 、すなわち A ∗ y = 0 A^{*}\boldsymbol{y}=\boldsymbol{0} A ∗ y = 0 と同値です。y = b − A x \boldsymbol{y}=\boldsymbol{b}-A\boldsymbol{x} y = b − A x とすれば (d) です。
3: 最小二乗解は (b) の方程式 A x = P b A\boldsymbol{x}=P\boldsymbol{b} A x = P b の解の全体で、その差は ker A \ker A ker A を動きます(4 もこれで示された)。よって一意 ⟺ ker A = { 0 } ⟺ rank A = n \iff\ker A=\{\boldsymbol{0}\}\iff\operatorname{rank}A=n ⟺ ker A = { 0 } ⟺ rank A = n (次元定理(定理 8.3)[行列と連立一次方程式] )。また A ∗ A x = 0 A^{*}A\boldsymbol{x}=\boldsymbol{0} A ∗ A x = 0 なら ∥ A x ∥ 2 = x ∗ A ∗ A x = 0 \|A\boldsymbol{x}\|^2=\boldsymbol{x}^{*}A^{*}A\boldsymbol{x}=0 ∥ A x ∥ 2 = x ∗ A ∗ A x = 0 なので ker A ∗ A = ker A \ker A^{*}A=\ker A ker A ∗ A = ker A で、n n n 次正方行列 A ∗ A A^{*}A A ∗ A が正則 ⟺ ker A ∗ A = { 0 } \iff\ker A^{*}A=\{\boldsymbol{0}\} ⟺ ker A ∗ A = { 0 } です(正則性の判定(定理 7.1)[行列式とその性質] )。このとき (d) から解は ( A ∗ A ) − 1 A ∗ b (A^{*}A)^{-1}A^{*}\boldsymbol{b} ( A ∗ A ) − 1 A ∗ b です。
∎
残差 r \boldsymbol{r} r と A x A\boldsymbol{x} A x は直交するので、Pythagoras の関係 ∥ b ∥ 2 = ∥ A x ∥ 2 + ∥ r ∥ 2 \|\boldsymbol{b}\|^2=\|A\boldsymbol{x}\|^2+\|\boldsymbol{r}\|^2 ∥ b ∥ 2 = ∥ A x ∥ 2 + ∥ r ∥ 2 が成り立ちます。そこで 0 ≤ θ ≤ π / 2 0\le\theta\le\pi/2 0 ≤ θ ≤ π /2 を sin θ = ∥ r ∥ / ∥ b ∥ \sin\theta=\|\boldsymbol{r}\|/\|\boldsymbol{b}\| sin θ = ∥ r ∥/∥ b ∥ で定めると ∥ A x ∥ = ∥ b ∥ cos θ \|A\boldsymbol{x}\|=\|\boldsymbol{b}\|\cos\theta ∥ A x ∥ = ∥ b ∥ cos θ で、θ \theta θ は b \boldsymbol{b} b と像 W W W のなす角です。θ \theta θ が小さいほどデータはモデルによく合っています。
像 W を真横から見た図。b から W へ下ろした垂線の足が Ax(= Pb)で、垂線が残差 r。b と W のなす角が θ
定義 4.1 (擬似逆行列 ) ↗
A = U Σ V ∗ A=U\Sigma V^{*} A = U Σ V ∗ を特異値分解とし、Σ + ∈ R n × m \Sigma^{+}\in\mathbb{R}^{n\times m} Σ + ∈ R n × m を ( Σ + ) i i = 1 / σ i (\Sigma^{+})_{ii}=1/\sigma_i ( Σ + ) ii = 1/ σ i (i ≤ r i\le r i ≤ r )、他の成分 0 の行列とする。A + = V Σ + U ∗ A^{+}=V\Sigma^{+}U^{*} A + = V Σ + U ∗ を A A A の擬似逆行列 (Moore–Penrose 逆)という。
特異値分解は一意ではありませんが、A + A^{+} A + が分解の選び方によらないことは 命題 4.3 で示します。
定理 4.2 (擬似逆による最小ノルム解 ) ✓
x + = A + b \boldsymbol{x}^{+}=A^{+}\boldsymbol{b} x + = A + b は最小二乗解であり、最小二乗解の中でノルムが最小のものはこれただ 1 つである。具体的に
x + = ∑ i = 1 r u i ∗ b σ i v i , min x ∥ A x − b ∥ 2 = ∑ i = r + 1 m ∣ u i ∗ b ∣ 2 . \boldsymbol{x}^{+}=\sum_{i=1}^r\frac{\boldsymbol{u}_i^{*}\boldsymbol{b}}{\sigma_i}\boldsymbol{v}_i,\qquad\min_{\boldsymbol{x}}\|A\boldsymbol{x}-\boldsymbol{b}\|^2=\sum_{i=r+1}^m|\boldsymbol{u}_i^{*}\boldsymbol{b}|^2. x + = i = 1 ∑ r σ i u i ∗ b v i , x min ∥ A x − b ∥ 2 = i = r + 1 ∑ m ∣ u i ∗ b ∣ 2 .
証明(定理 4.2) y = V ∗ x \boldsymbol{y}=V^{*}\boldsymbol{x} y = V ∗ x 、c = U ∗ b \boldsymbol{c}=U^{*}\boldsymbol{b} c = U ∗ b とおきます。ユニタリ行列の特徴づけ(命題 3.2)[スペクトル定理] の 3 により U ∗ U^{*} U ∗ はノルムを保ち、V V V は K n \mathbb{K}^n K n 上の全単射でノルムを保つので
∥ A x − b ∥ 2 = ∥ U ∗ ( U Σ V ∗ x − b ) ∥ 2 = ∥ Σ y − c ∥ 2 = ∑ i = 1 r ∣ σ i y i − c i ∣ 2 + ∑ i = r + 1 m ∣ c i ∣ 2 , ∥ x ∥ = ∥ y ∥ \|A\boldsymbol{x}-\boldsymbol{b}\|^2=\|U^{*}(U\Sigma V^{*}\boldsymbol{x}-\boldsymbol{b})\|^2=\|\Sigma\boldsymbol{y}-\boldsymbol{c}\|^2=\sum_{i=1}^r|\sigma_iy_i-c_i|^2+\sum_{i=r+1}^m|c_i|^2,\qquad\|\boldsymbol{x}\|=\|\boldsymbol{y}\| ∥ A x − b ∥ 2 = ∥ U ∗ ( U Σ V ∗ x − b ) ∥ 2 = ∥Σ y − c ∥ 2 = i = 1 ∑ r ∣ σ i y i − c i ∣ 2 + i = r + 1 ∑ m ∣ c i ∣ 2 , ∥ x ∥ = ∥ y ∥ です。第 2 の和は y \boldsymbol{y} y によらないので、最小は y i = c i / σ i y_i=c_i/\sigma_i y i = c i / σ i (i ≤ r i\le r i ≤ r )のとき、かつそのときに限り達成され、y i y_i y i (i > r i>r i > r )は任意です。そのうち ∥ y ∥ \|\boldsymbol{y}\| ∥ y ∥ が最小なのは y i = 0 y_i=0 y i = 0 (i > r i>r i > r )のときだけです。このとき y = Σ + c \boldsymbol{y}=\Sigma^{+}\boldsymbol{c} y = Σ + c 、x = V Σ + U ∗ b = A + b \boldsymbol{x}=V\Sigma^{+}U^{*}\boldsymbol{b}=A^{+}\boldsymbol{b} x = V Σ + U ∗ b = A + b で、成分で書けば主張の式です。
∎
次の命題は、擬似逆を特異値分解の取り方に頼らずに特徴づけるものです。4 つの等式を満たす行列がただ 1 つであることを示すので、証明 (2) では X X X と Y Y Y の 2 つが条件を満たすと仮定し、条件を 1 つずつ使って両方が同じ X A Y XAY X A Y に等しいことを示します。
命題 4.3 (Moore–Penrose の条件 ) ✓
X = A + X=A^{+} X = A + は次の 4 条件を満たす: A X A = A AXA=A A X A = A 、X A X = X XAX=X X A X = X 、( A X ) ∗ = A X (AX)^{*}=AX ( A X ) ∗ = A X 、( X A ) ∗ = X A (XA)^{*}=XA ( X A ) ∗ = X A 。
4 条件を満たす X ∈ K n × m X\in\mathbb{K}^{n\times m} X ∈ K n × m はただ 1 つである。とくに A + A^{+} A + は特異値分解の選び方によらず、A A A が実行列なら A + A^{+} A + も実行列である。
rank A = n \operatorname{rank}A=n rank A = n なら A + = ( A ∗ A ) − 1 A ∗ A^{+}=(A^{*}A)^{-1}A^{*} A + = ( A ∗ A ) − 1 A ∗ 、A + A = I n A^{+}A=I_n A + A = I n 。
任意の b \boldsymbol{b} b について A A + b = P b AA^{+}\boldsymbol{b}=P\boldsymbol{b} A A + b = P b (P P P は im A \operatorname{im}A im A への直交射影)。
証明(命題 4.3) (1) Σ Σ + Σ = Σ \Sigma\Sigma^{+}\Sigma=\Sigma Σ Σ + Σ = Σ 、Σ + Σ Σ + = Σ + \Sigma^{+}\Sigma\Sigma^{+}=\Sigma^{+} Σ + Σ Σ + = Σ + で、Σ Σ + = diag ( I r , 0 ) ∈ R m × m \Sigma\Sigma^{+}=\operatorname{diag}(I_r,0)\in\mathbb{R}^{m\times m} Σ Σ + = diag ( I r , 0 ) ∈ R m × m 、Σ + Σ = diag ( I r , 0 ) ∈ R n × n \Sigma^{+}\Sigma=\operatorname{diag}(I_r,0)\in\mathbb{R}^{n\times n} Σ + Σ = diag ( I r , 0 ) ∈ R n × n は実対称です。U ∗ U = I U^{*}U=I U ∗ U = I 、V ∗ V = I V^{*}V=I V ∗ V = I を使うと A A + A = U Σ Σ + Σ V ∗ = A AA^{+}A=U\Sigma\Sigma^{+}\Sigma V^{*}=A A A + A = U Σ Σ + Σ V ∗ = A 、A + A A + = A + A^{+}AA^{+}=A^{+} A + A A + = A + 、A A + = U Σ Σ + U ∗ AA^{+}=U\Sigma\Sigma^{+}U^{*} A A + = U Σ Σ + U ∗ 、A + A = V Σ + Σ V ∗ A^{+}A=V\Sigma^{+}\Sigma V^{*} A + A = V Σ + Σ V ∗ はエルミートです。
(2) X , Y X,Y X , Y がともに 4 条件を満たすとします。条件を順に使って
X = X A X = X ( A X ) ∗ = X X ∗ A ∗ = X X ∗ ( A Y A ) ∗ = X X ∗ A ∗ Y ∗ A ∗ = X ( A X ) ∗ ( A Y ) ∗ = X A X A Y = X A Y , X=XAX=X(AX)^{*}=XX^{*}A^{*}=XX^{*}(AYA)^{*}=XX^{*}A^{*}Y^{*}A^{*}=X(AX)^{*}(AY)^{*}=XAXAY=XAY, X = X A X = X ( A X ) ∗ = X X ∗ A ∗ = X X ∗ ( A Y A ) ∗ = X X ∗ A ∗ Y ∗ A ∗ = X ( A X ) ∗ ( A Y ) ∗ = X A X A Y = X A Y , Y = Y A Y = ( Y A ) ∗ Y = A ∗ Y ∗ Y = ( A X A ) ∗ Y ∗ Y = A ∗ X ∗ A ∗ Y ∗ Y = ( X A ) ∗ ( Y A ) ∗ Y = X A Y A Y = X A Y Y=YAY=(YA)^{*}Y=A^{*}Y^{*}Y=(AXA)^{*}Y^{*}Y=A^{*}X^{*}A^{*}Y^{*}Y=(XA)^{*}(YA)^{*}Y=XAYAY=XAY Y = Y A Y = ( Y A ) ∗ Y = A ∗ Y ∗ Y = ( A X A ) ∗ Y ∗ Y = A ∗ X ∗ A ∗ Y ∗ Y = ( X A ) ∗ ( Y A ) ∗ Y = X A Y A Y = X A Y なので X = Y X=Y X = Y です。別の特異値分解から作った A + A^{+} A + も (1) により 4 条件を満たすので一致します。A A A が実なら A + ‾ \overline{A^{+}} A + も(条件の複素共役をとれば)4 条件を満たすので A + ‾ = A + \overline{A^{+}}=A^{+} A + = A + です。
(3) 定理 3.2 の 3 により M = A ∗ A M=A^{*}A M = A ∗ A は正則です。X = M − 1 A ∗ X=M^{-1}A^{*} X = M − 1 A ∗ は X A = I n XA=I_n X A = I n を満たし、A X A = A AXA=A A X A = A 、X A X = X XAX=X X A X = X 、X A = I n XA=I_n X A = I n はエルミート、A X = A M − 1 A ∗ AX=AM^{-1}A^{*} A X = A M − 1 A ∗ は M − 1 M^{-1} M − 1 がエルミート(M M M がエルミートだから)なのでエルミートです。(2) により X = A + X=A^{+} X = A + です。
(4) 定理 4.2 により A + b A^{+}\boldsymbol{b} A + b は最小二乗解で、定理 3.2 の 2 (b) から A A + b = P b AA^{+}\boldsymbol{b}=P\boldsymbol{b} A A + b = P b です。
∎
命題 4.4 (正規方程式の条件数 ) ✓
rank A = n \operatorname{rank}A=n rank A = n なら、A ∗ A A^{*}A A ∗ A の特異値は σ 1 2 , … , σ n 2 \sigma_1^2,\ldots,\sigma_n^2 σ 1 2 , … , σ n 2 で、κ 2 ( A ∗ A ) = κ ( A ) 2 \kappa_2(A^{*}A)=\kappa(A)^2 κ 2 ( A ∗ A ) = κ ( A ) 2 。また ∥ A + ∥ = 1 / σ n \|A^{+}\|=1/\sigma_n ∥ A + ∥ = 1/ σ n 、∥ ( A ∗ A ) − 1 ∥ = 1 / σ n 2 \|(A^{*}A)^{-1}\|=1/\sigma_n^2 ∥ ( A ∗ A ) − 1 ∥ = 1/ σ n 2 。
証明(命題 4.4) A ∗ A = V Σ ∗ Σ V ∗ A^{*}A=V\Sigma^{*}\Sigma V^{*} A ∗ A = V Σ ∗ Σ V ∗ で、Σ ∗ Σ = diag ( σ 1 2 , … , σ n 2 ) \Sigma^{*}\Sigma=\operatorname{diag}(\sigma_1^2,\ldots,\sigma_n^2) Σ ∗ Σ = diag ( σ 1 2 , … , σ n 2 ) です。これは A ∗ A A^{*}A A ∗ A の特異値分解なので、特異値は σ i 2 \sigma_i^2 σ i 2 です。特異行列までの距離(定理 6.4)[行列のノルムと線形方程式の条件数] の 2 ノルムの部分から κ 2 ( A ∗ A ) = σ 1 2 / σ n 2 = κ ( A ) 2 \kappa_2(A^{*}A)=\sigma_1^2/\sigma_n^2=\kappa(A)^2 κ 2 ( A ∗ A ) = σ 1 2 / σ n 2 = κ ( A ) 2 です。2 ノルムの公式(命題 4.2)[行列のノルムと線形方程式の条件数] から ∥ A ∗ A ∥ = σ 1 2 \|A^{*}A\|=\sigma_1^2 ∥ A ∗ A ∥ = σ 1 2 なので、∥ ( A ∗ A ) − 1 ∥ = κ 2 ( A ∗ A ) / ∥ A ∗ A ∥ = 1 / σ n 2 \|(A^{*}A)^{-1}\|=\kappa_2(A^{*}A)/\|A^{*}A\|=1/\sigma_n^2 ∥ ( A ∗ A ) − 1 ∥ = κ 2 ( A ∗ A ) /∥ A ∗ A ∥ = 1/ σ n 2 です。A + = V Σ + U ∗ A^{+}=V\Sigma^{+}U^{*} A + = V Σ + U ∗ では ユニタリ不変性(命題 4.4)[行列のノルムと線形方程式の条件数] から ∥ A + ∥ = ∥ Σ + ∥ \|A^{+}\|=\|\Sigma^{+}\| ∥ A + ∥ = ∥ Σ + ∥ で、∥ Σ + y ∥ 2 = ∑ i ≤ n ∣ y i ∣ 2 / σ i 2 ≤ ∥ y ∥ 2 / σ n 2 \|\Sigma^{+}\boldsymbol{y}\|^2=\sum_{i\le n}|y_i|^2/\sigma_i^2\le\|\boldsymbol{y}\|^2/\sigma_n^2 ∥ Σ + y ∥ 2 = ∑ i ≤ n ∣ y i ∣ 2 / σ i 2 ≤ ∥ y ∥ 2 / σ n 2 (等号は y = e n \boldsymbol{y}=\boldsymbol{e}_n y = e n )なので ∥ A + ∥ = 1 / σ n \|A^{+}\|=1/\sigma_n ∥ A + ∥ = 1/ σ n です。
∎
したがって κ ( A ) = ∥ A ∥ ∥ A + ∥ \kappa(A)=\|A\|\|A^{+}\| κ ( A ) = ∥ A ∥∥ A + ∥ で、正方の場合の κ 2 \kappa_2 κ 2 の自然な拡張になっています。正規方程式を作った時点で条件数は 2 乗になります。κ ( A ) = 10 8 \kappa(A)=10^8 κ ( A ) = 1 0 8 なら κ ( A ∗ A ) = 10 16 \kappa(A^{*}A)=10^{16} κ ( A ∗ A ) = 1 0 16 で、倍精度では正規方程式の解に 1 桁も保証がありません。
この節では A ∈ R m × n A\in\mathbb{R}^{m\times n} A ∈ R m × n 、m ≥ n m\ge n m ≥ n とします。
定理 5.1 (QR 分解による最小二乗解 ) ✓
rank A = n \operatorname{rank}A=n rank A = n とし、A = Q R A=QR A = QR を QR 分解(QR 分解の存在(定理 4.1)[QR 分解] )、Q = ( Q 1 Q 2 ) Q=(Q_1\ Q_2) Q = ( Q 1 Q 2 ) (Q 1 ∈ R m × n Q_1\in\mathbb{R}^{m\times n} Q 1 ∈ R m × n )、R = ( R 1 0 ) R=\binom{R_1}{0} R = ( 0 R 1 ) と分ける。このとき R 1 R_1 R 1 は正則で、最小二乗解は x = R 1 − 1 Q 1 T b \boldsymbol{x}=R_1^{-1}Q_1^{\mathsf{T}}\boldsymbol{b} x = R 1 − 1 Q 1 T b 、最小の残差ノルムは ∥ Q 2 T b ∥ \|Q_2^{\mathsf{T}}\boldsymbol{b}\| ∥ Q 2 T b ∥ である。
証明(定理 5.1) Q Q Q は正則なので rank R 1 = rank R = rank A = n \operatorname{rank}R_1=\operatorname{rank}R=\operatorname{rank}A=n rank R 1 = rank R = rank A = n で、R 1 R_1 R 1 は正則です。直交行列 Q T Q^{\mathsf{T}} Q T はノルムを保つので
∥ A x − b ∥ 2 = ∥ Q T A x − Q T b ∥ 2 = ∥ R 1 x − Q 1 T b ∥ 2 + ∥ Q 2 T b ∥ 2 \|A\boldsymbol{x}-\boldsymbol{b}\|^2=\|Q^{\mathsf{T}}A\boldsymbol{x}-Q^{\mathsf{T}}\boldsymbol{b}\|^2=\|R_1\boldsymbol{x}-Q_1^{\mathsf{T}}\boldsymbol{b}\|^2+\|Q_2^{\mathsf{T}}\boldsymbol{b}\|^2 ∥ A x − b ∥ 2 = ∥ Q T A x − Q T b ∥ 2 = ∥ R 1 x − Q 1 T b ∥ 2 + ∥ Q 2 T b ∥ 2 です。第 2 項は x \boldsymbol{x} x によらず、第 1 項は x = R 1 − 1 Q 1 T b \boldsymbol{x}=R_1^{-1}Q_1^{\mathsf{T}}\boldsymbol{b} x = R 1 − 1 Q 1 T b のときだけ 0 になります。
∎
正規方程式 R 1 T R 1 x = R 1 T Q 1 T b R_1^{\mathsf{T}}R_1\boldsymbol{x}=R_1^{\mathsf{T}}Q_1^{\mathsf{T}}\boldsymbol{b} R 1 T R 1 x = R 1 T Q 1 T b を作らずに、三角方程式 R 1 x = Q 1 T b R_1\boldsymbol{x}=Q_1^{\mathsf{T}}\boldsymbol{b} R 1 x = Q 1 T b を直接解くのが要点です。条件数は κ ( R 1 ) = κ ( A ) \kappa(R_1)=\kappa(A) κ ( R 1 ) = κ ( A ) (R 1 = Q 1 T A R_1=Q_1^{\mathsf{T}}A R 1 = Q 1 T A と A A A は同じ特異値をもつ)で、2 乗になりません。実際の計算では Q Q Q を作らず、Householder 鏡映 を b \boldsymbol{b} b に作用させます。
次の系は、Householder QR の後退安定性(QR 分解の章)を最小二乗問題へ持ち込むものです。u u u は丸め誤差の単位、γ k \gamma_k γ k は k k k 回の演算で積もる誤差の見積もりで、条件 86 m n u < 1 86mnu<1 86 mn u < 1 は、これらの見積もりの分母が正になって式が意味をもつための仮定です。結論は「計算した解は、各列と右辺をごくわずか動かした問題の厳密な最小二乗解になっている」という形です。
系 5.2 (Householder QR による最小二乗法の後退安定性 ) ✓
A ∈ F m × n A\in\mathbb{F}^{m\times n} A ∈ F m × n 、b ∈ F m \boldsymbol{b}\in\mathbb{F}^m b ∈ F m 、m ≥ n m\ge n m ≥ n とし、Householder QR で R ^ \widehat R R を、同じ鏡映を b \boldsymbol{b} b に作用させて c ^ \widehat{\boldsymbol{c}} c を計算し、上三角の R ^ 1 \widehat R_1 R 1 (R ^ \widehat R R の最初の n n n 行)について R ^ 1 x = c ^ 1 \widehat R_1\boldsymbol{x}=\widehat{\boldsymbol{c}}_1 R 1 x = c 1 (c ^ \widehat{\boldsymbol{c}} c の最初の n n n 成分)を後退代入で解いて x ^ \widehat{\boldsymbol{x}} x を得たとする。アンダーフロー・オーバーフローが起きず、R ^ 1 \widehat R_1 R 1 の対角成分が 0 でなく、86 m n u < 1 86mnu<1 86 mn u < 1 とする。このとき Δ A \Delta A Δ A 、Δ b \Delta\boldsymbol{b} Δ b で
∥ Δ a j ∥ ≤ γ 44 m n ∥ a j ∥ ( j = 1 , … , n ) , ∥ Δ b ∥ ≤ γ 43 m n ∥ b ∥ \|\Delta\boldsymbol{a}_j\|\le\gamma_{44mn}\|\boldsymbol{a}_j\|\ (j=1,\ldots,n),\qquad\|\Delta\boldsymbol{b}\|\le\gamma_{43mn}\|\boldsymbol{b}\| ∥Δ a j ∥ ≤ γ 44 mn ∥ a j ∥ ( j = 1 , … , n ) , ∥Δ b ∥ ≤ γ 43 mn ∥ b ∥ を満たし、x ^ \widehat{\boldsymbol{x}} x が ∥ ( A + Δ A ) x − ( b + Δ b ) ∥ \|(A+\Delta A)\boldsymbol{x}-(\boldsymbol{b}+\Delta\boldsymbol{b})\| ∥ ( A + Δ A ) x − ( b + Δ b ) ∥ を最小にするものがある。
証明(系 5.2) Householder QR の後退安定性(定理 5.3)[QR 分解] の 1・2 により、ある直交行列 Q Q Q について A + Δ A 1 = Q R ^ A+\Delta A_1=Q\widehat R A + Δ A 1 = Q R 、∥ Δ a 1 , j ∥ ≤ γ 43 m n ∥ a j ∥ \|\Delta\boldsymbol{a}_{1,j}\|\le\gamma_{43mn}\|\boldsymbol{a}_j\| ∥Δ a 1 , j ∥ ≤ γ 43 mn ∥ a j ∥ 、c ^ = Q T ( b + Δ b ) \widehat{\boldsymbol{c}}=Q^{\mathsf{T}}(\boldsymbol{b}+\Delta\boldsymbol{b}) c = Q T ( b + Δ b ) 、∥ Δ b ∥ ≤ γ 43 m n ∥ b ∥ \|\Delta\boldsymbol{b}\|\le\gamma_{43mn}\|\boldsymbol{b}\| ∥Δ b ∥ ≤ γ 43 mn ∥ b ∥ です(Q Q Q は両方で同じ)。三角方程式の後退誤差(補題 3.1)[Gauss 消去と LU 分解] (上三角の後退代入)により ( R ^ 1 + Δ R ) x ^ = c ^ 1 (\widehat R_1+\Delta R)\widehat{\boldsymbol{x}}=\widehat{\boldsymbol{c}}_1 ( R 1 + Δ R ) x = c 1 、∣ Δ R ∣ ≤ γ n ∣ R ^ 1 ∣ |\Delta R|\le\gamma_n|\widehat R_1| ∣Δ R ∣ ≤ γ n ∣ R 1 ∣ です。
Δ A = Δ A 1 + Q ( Δ R 0 ) \Delta A=\Delta A_1+Q\binom{\Delta R}{0} Δ A = Δ A 1 + Q ( 0 Δ R ) とおくと A + Δ A = Q ( R ^ 1 + Δ R 0 ) A+\Delta A=Q\binom{\widehat R_1+\Delta R}{0} A + Δ A = Q ( 0 R 1 + Δ R ) です。第 j j j 列について、∥ Q ( Δ r j 0 ) ∥ = ∥ Δ r j ∥ ≤ γ n ∥ r ^ j ∥ \|Q\binom{\Delta\boldsymbol{r}_j}{\boldsymbol{0}}\|=\|\Delta\boldsymbol{r}_j\|\le\gamma_n\|\widehat{\boldsymbol{r}}_j\| ∥ Q ( 0 Δ r j ) ∥ = ∥Δ r j ∥ ≤ γ n ∥ r j ∥ で、∥ r ^ j ∥ = ∥ Q r ^ j ∥ = ∥ a j + Δ a 1 , j ∥ ≤ ( 1 + γ 43 m n ) ∥ a j ∥ \|\widehat{\boldsymbol{r}}_j\|=\|Q\widehat{\boldsymbol{r}}_j\|=\|\boldsymbol{a}_j+\Delta\boldsymbol{a}_{1,j}\|\le(1+\gamma_{43mn})\|\boldsymbol{a}_j\| ∥ r j ∥ = ∥ Q r j ∥ = ∥ a j + Δ a 1 , j ∥ ≤ ( 1 + γ 43 mn ) ∥ a j ∥ なので
∥ Δ a j ∥ ≤ ( γ 43 m n + γ n ( 1 + γ 43 m n ) ) ∥ a j ∥ ≤ γ 43 m n + n ∥ a j ∥ ≤ γ 44 m n ∥ a j ∥ \|\Delta\boldsymbol{a}_j\|\le\bigl(\gamma_{43mn}+\gamma_n(1+\gamma_{43mn})\bigr)\|\boldsymbol{a}_j\|\le\gamma_{43mn+n}\|\boldsymbol{a}_j\|\le\gamma_{44mn}\|\boldsymbol{a}_j\| ∥Δ a j ∥ ≤ ( γ 43 mn + γ n ( 1 + γ 43 mn ) ) ∥ a j ∥ ≤ γ 43 mn + n ∥ a j ∥ ≤ γ 44 mn ∥ a j ∥ です(γₙ の計算規則(補題 3.2)[浮動小数点数と丸め誤差] )。最後に、任意の x \boldsymbol{x} x について
∥ ( A + Δ A ) x − ( b + Δ b ) ∥ 2 = ∥ ( R ^ 1 + Δ R ) x − c ^ 1 ∥ 2 + ∥ c ^ 2 ∥ 2 ≥ ∥ c ^ 2 ∥ 2 \|(A+\Delta A)\boldsymbol{x}-(\boldsymbol{b}+\Delta\boldsymbol{b})\|^2=\|(\widehat R_1+\Delta R)\boldsymbol{x}-\widehat{\boldsymbol{c}}_1\|^2+\|\widehat{\boldsymbol{c}}_2\|^2\ge\|\widehat{\boldsymbol{c}}_2\|^2 ∥ ( A + Δ A ) x − ( b + Δ b ) ∥ 2 = ∥ ( R 1 + Δ R ) x − c 1 ∥ 2 + ∥ c 2 ∥ 2 ≥ ∥ c 2 ∥ 2 で、x = x ^ \boldsymbol{x}=\widehat{\boldsymbol{x}} x = x で等号です。
∎
次の注意では 2 種類の誤差を使い分けます。後退誤差は「計算結果が、入力をどれだけ動かした問題の答えか」、前進誤差は「計算結果が本当の答えからどれだけ離れているか」です。後退安定でも、問題の感度(条件数)が大きければ前進誤差は大きくなりえます。
この節では、A A A や b \boldsymbol{b} b を少し動かしたとき解がどれだけ動くかを調べます。解は A + b A^{+}\boldsymbol{b} A + b なので、A + A^{+} A + を A A A の関数として微分すれば動きの大きさが分かります。そのための準備が最初の補題です。
補題 6.1 (擬似逆の微分 ) ✓
A ∈ K m × n A\in\mathbb{K}^{m\times n} A ∈ K m × n を rank A = n \operatorname{rank}A=n rank A = n 、E ∈ K m × n E\in\mathbb{K}^{m\times n} E ∈ K m × n とする。ある ε 0 > 0 \varepsilon_0>0 ε 0 > 0 があって、∣ ε ∣ < ε 0 |\varepsilon|<\varepsilon_0 ∣ ε ∣ < ε 0 の実数 ε \varepsilon ε で rank ( A + ε E ) = n \operatorname{rank}(A+\varepsilon E)=n rank ( A + εE ) = n となり、X ( ε ) = ( A + ε E ) + X(\varepsilon)=(A+\varepsilon E)^{+} X ( ε ) = ( A + εE ) + の各成分の実部と虚部は ε \varepsilon ε について何回でも微分可能で
X ′ ( 0 ) = − A + E A + + ( A ∗ A ) − 1 E ∗ ( I − A A + ) . X'(0)=-A^{+}EA^{+}+(A^{*}A)^{-1}E^{*}(I-AA^{+}). X ′ ( 0 ) = − A + E A + + ( A ∗ A ) − 1 E ∗ ( I − A A + ) .
証明(補題 6.1) M ( ε ) = ( A + ε E ) ∗ ( A + ε E ) = A ∗ A + ε ( E ∗ A + A ∗ E ) + ε 2 E ∗ E M(\varepsilon)=(A+\varepsilon E)^{*}(A+\varepsilon E)=A^{*}A+\varepsilon(E^{*}A+A^{*}E)+\varepsilon^2E^{*}E M ( ε ) = ( A + εE ) ∗ ( A + εE ) = A ∗ A + ε ( E ∗ A + A ∗ E ) + ε 2 E ∗ E の行列式は ε \varepsilon ε の(複素係数の)多項式で、ε = 0 \varepsilon=0 ε = 0 で 0 でありません(定理 3.2 の 3)。多項式は連続なので、ある ε 0 > 0 \varepsilon_0>0 ε 0 > 0 について ∣ ε ∣ < ε 0 |\varepsilon|<\varepsilon_0 ∣ ε ∣ < ε 0 で det M ( ε ) ≠ 0 \det M(\varepsilon)\ne0 det M ( ε ) = 0 です。すると 定理 3.2 の 3 から rank ( A + ε E ) = n \operatorname{rank}(A+\varepsilon E)=n rank ( A + εE ) = n 、命題 4.3 の 3 から X ( ε ) = M ( ε ) − 1 ( A + ε E ) ∗ X(\varepsilon)=M(\varepsilon)^{-1}(A+\varepsilon E)^{*} X ( ε ) = M ( ε ) − 1 ( A + εE ) ∗ です。余因子行列の基本関係式(命題 5.4)[行列式とその性質] により M ( ε ) − 1 = adj M ( ε ) / det M ( ε ) M(\varepsilon)^{-1}=\operatorname{adj}M(\varepsilon)/\det M(\varepsilon) M ( ε ) − 1 = adj M ( ε ) / det M ( ε ) の成分は、分母が 0 にならない多項式の商なので、X ( ε ) X(\varepsilon) X ( ε ) の成分は何回でも微分できます。
M ( ε ) X ( ε ) = ( A + ε E ) ∗ M(\varepsilon)X(\varepsilon)=(A+\varepsilon E)^{*} M ( ε ) X ( ε ) = ( A + εE ) ∗ を ε = 0 \varepsilon=0 ε = 0 で微分すると(積の微分)M ′ ( 0 ) X ( 0 ) + M ( 0 ) X ′ ( 0 ) = E ∗ M'(0)X(0)+M(0)X'(0)=E^{*} M ′ ( 0 ) X ( 0 ) + M ( 0 ) X ′ ( 0 ) = E ∗ 、すなわち
X ′ ( 0 ) = M − 1 ( E ∗ − ( E ∗ A + A ∗ E ) A + ) = M − 1 E ∗ ( I − A A + ) − A + E A + X'(0)=M^{-1}\bigl(E^{*}-(E^{*}A+A^{*}E)A^{+}\bigr)=M^{-1}E^{*}(I-AA^{+})-A^{+}EA^{+} X ′ ( 0 ) = M − 1 ( E ∗ − ( E ∗ A + A ∗ E ) A + ) = M − 1 E ∗ ( I − A A + ) − A + E A + です(M = A ∗ A M=A^{*}A M = A ∗ A 、M − 1 A ∗ = A + M^{-1}A^{*}=A^{+} M − 1 A ∗ = A + )。
∎
次の定理の θ \theta θ は第 3 節の図の角です。残差が 0 なら θ = 0 \theta=0 θ = 0 、データがモデルに合わないほど θ \theta θ は π / 2 \pi/2 π /2 に近づきます。評価の第 1 項 2 κ / cos θ 2\kappa/\cos\theta 2 κ / cos θ は線形方程式と同じ型の増幅、第 2 項 κ 2 tan θ \kappa^2\tan\theta κ 2 tan θ は残差が大きいときだけ効く増幅です。
定理 6.2 (最小二乗問題の感度 ) ✓
rank A = n \operatorname{rank}A=n rank A = n 、x = A + b \boldsymbol{x}=A^{+}\boldsymbol{b} x = A + b 、r = b − A x \boldsymbol{r}=\boldsymbol{b}-A\boldsymbol{x} r = b − A x とし、θ \theta θ を sin θ = ∥ r ∥ / ∥ b ∥ \sin\theta=\|\boldsymbol{r}\|/\|\boldsymbol{b}\| sin θ = ∥ r ∥/∥ b ∥ (0 ≤ θ < π / 2 0\le\theta<\pi/2 0 ≤ θ < π /2 を仮定する、すなわち A x ≠ 0 A\boldsymbol{x}\ne\boldsymbol{0} A x = 0 )で定める。∥ E ∥ ≤ ∥ A ∥ \|E\|\le\|A\| ∥ E ∥ ≤ ∥ A ∥ 、∥ f ∥ ≤ ∥ b ∥ \|\boldsymbol{f}\|\le\|\boldsymbol{b}\| ∥ f ∥ ≤ ∥ b ∥ とし、x ( ε ) = ( A + ε E ) + ( b + ε f ) \boldsymbol{x}(\varepsilon)=(A+\varepsilon E)^{+}(\boldsymbol{b}+\varepsilon\boldsymbol{f}) x ( ε ) = ( A + εE ) + ( b + ε f ) とおく。このとき ε → 0 \varepsilon\to0 ε → 0 で
∥ x ( ε ) − x ∥ ∥ x ∥ ≤ ∣ ε ∣ ( 2 κ ( A ) cos θ + κ ( A ) 2 tan θ ) + O ( ε 2 ) . \frac{\|\boldsymbol{x}(\varepsilon)-\boldsymbol{x}\|}{\|\boldsymbol{x}\|}\le|\varepsilon|\left(\frac{2\kappa(A)}{\cos\theta}+\kappa(A)^2\tan\theta\right)+O(\varepsilon^2). ∥ x ∥ ∥ x ( ε ) − x ∥ ≤ ∣ ε ∣ ( cos θ 2 κ ( A ) + κ ( A ) 2 tan θ ) + O ( ε 2 ) .
証明(定理 6.2) 補題 6.1 により x ( ε ) = X ( ε ) ( b + ε f ) \boldsymbol{x}(\varepsilon)=X(\varepsilon)(\boldsymbol{b}+\varepsilon\boldsymbol{f}) x ( ε ) = X ( ε ) ( b + ε f ) の各成分の実部・虚部 g g g は ∣ ε ∣ < ε 0 |\varepsilon|<\varepsilon_0 ∣ ε ∣ < ε 0 で 2 回連続微分可能です。0 < ε 1 < ε 0 0<\varepsilon_1<\varepsilon_0 0 < ε 1 < ε 0 を固定すると、g ′ ′ g'' g ′′ は [ − ε 1 , ε 1 ] [-\varepsilon_1,\varepsilon_1] [ − ε 1 , ε 1 ] で連続なので 最大値・最小値の定理(定理 2.3)[平均値の定理とテイラーの定理] により有界で、Taylor の定理(定理 5.3)[平均値の定理とテイラーの定理] (n = 1 n=1 n = 1 )から ∣ g ( ε ) − g ( 0 ) − ε g ′ ( 0 ) ∣ ≤ C ε 2 |g(\varepsilon)-g(0)-\varepsilon g'(0)|\le C\varepsilon^2 ∣ g ( ε ) − g ( 0 ) − ε g ′ ( 0 ) ∣ ≤ C ε 2 です。よって x ( ε ) − x = ε x ′ ( 0 ) + O ( ε 2 ) \boldsymbol{x}(\varepsilon)-\boldsymbol{x}=\varepsilon\boldsymbol{x}'(0)+O(\varepsilon^2) x ( ε ) − x = ε x ′ ( 0 ) + O ( ε 2 ) で、∥ x ′ ( 0 ) ∥ \|\boldsymbol{x}'(0)\| ∥ x ′ ( 0 ) ∥ を評価すれば十分です。
補題 6.1 と ( I − A A + ) b = b − P b = r (I-AA^{+})\boldsymbol{b}=\boldsymbol{b}-P\boldsymbol{b}=\boldsymbol{r} ( I − A A + ) b = b − P b = r (命題 4.3 の 4、定理 3.2 の 2)から
x ′ ( 0 ) = X ′ ( 0 ) b + A + f = − A + E x + ( A ∗ A ) − 1 E ∗ r + A + f \boldsymbol{x}'(0)=X'(0)\boldsymbol{b}+A^{+}\boldsymbol{f}=-A^{+}E\boldsymbol{x}+(A^{*}A)^{-1}E^{*}\boldsymbol{r}+A^{+}\boldsymbol{f} x ′ ( 0 ) = X ′ ( 0 ) b + A + f = − A + E x + ( A ∗ A ) − 1 E ∗ r + A + f です。命題 4.4 の ∥ A + ∥ = 1 / σ n \|A^{+}\|=1/\sigma_n ∥ A + ∥ = 1/ σ n 、∥ ( A ∗ A ) − 1 ∥ = 1 / σ n 2 \|(A^{*}A)^{-1}\|=1/\sigma_n^2 ∥ ( A ∗ A ) − 1 ∥ = 1/ σ n 2 と、∥ E ∗ ∥ = ∥ E ∥ ≤ σ 1 \|E^{*}\|=\|E\|\le\sigma_1 ∥ E ∗ ∥ = ∥ E ∥ ≤ σ 1 (2 ノルムの公式(命題 4.2)[行列のノルムと線形方程式の条件数] )、∥ f ∥ ≤ ∥ b ∥ \|\boldsymbol{f}\|\le\|\boldsymbol{b}\| ∥ f ∥ ≤ ∥ b ∥ を使うと
∥ x ′ ( 0 ) ∥ ∥ x ∥ ≤ σ 1 σ n + σ 1 ∥ r ∥ σ n 2 ∥ x ∥ + ∥ b ∥ σ n ∥ x ∥ = κ + κ 2 ∥ r ∥ σ 1 ∥ x ∥ + κ ∥ b ∥ σ 1 ∥ x ∥ \frac{\|\boldsymbol{x}'(0)\|}{\|\boldsymbol{x}\|}\le\frac{\sigma_1}{\sigma_n}+\frac{\sigma_1\|\boldsymbol{r}\|}{\sigma_n^2\|\boldsymbol{x}\|}+\frac{\|\boldsymbol{b}\|}{\sigma_n\|\boldsymbol{x}\|}=\kappa+\kappa^2\frac{\|\boldsymbol{r}\|}{\sigma_1\|\boldsymbol{x}\|}+\kappa\frac{\|\boldsymbol{b}\|}{\sigma_1\|\boldsymbol{x}\|} ∥ x ∥ ∥ x ′ ( 0 ) ∥ ≤ σ n σ 1 + σ n 2 ∥ x ∥ σ 1 ∥ r ∥ + σ n ∥ x ∥ ∥ b ∥ = κ + κ 2 σ 1 ∥ x ∥ ∥ r ∥ + κ σ 1 ∥ x ∥ ∥ b ∥ です。σ 1 ∥ x ∥ ≥ ∥ A x ∥ = ∥ b ∥ cos θ > 0 \sigma_1\|\boldsymbol{x}\|\ge\|A\boldsymbol{x}\|=\|\boldsymbol{b}\|\cos\theta>0 σ 1 ∥ x ∥ ≥ ∥ A x ∥ = ∥ b ∥ cos θ > 0 (第 3 節の Pythagoras の関係)なので、右辺は κ + κ 2 tan θ + κ / cos θ ≤ 2 κ / cos θ + κ 2 tan θ \kappa+\kappa^2\tan\theta+\kappa/\cos\theta\le2\kappa/\cos\theta+\kappa^2\tan\theta κ + κ 2 tan θ + κ / cos θ ≤ 2 κ / cos θ + κ 2 tan θ 以下です。
∎
この評価の読み方は次のとおりです。
残差が 0(θ = 0 \theta=0 θ = 0 )なら 2 κ 2\kappa 2 κ で、正方の線形方程式と同じ κ \kappa κ の程度です。
残差が大きいと κ 2 tan θ \kappa^2\tan\theta κ 2 tan θ が効きます。これは A A A の摂動で像の向きが κ \kappa κ に比例して傾き、それが大きな残差を通して解に κ \kappa κ 倍で伝わるためで、どんな算法でも避けられない問題そのものの感度です。
θ \theta θ が π / 2 \pi/2 π /2 に近い(データがモデルにほとんど合わない)と 1 / cos θ 1/\cos\theta 1/ cos θ が効きます。
後退安定な算法(系 5.2 、ε ≈ γ ~ m n \varepsilon\approx\widetilde\gamma_{mn} ε ≈ γ mn )の前進誤差は、この評価から γ ~ m n ( 2 κ / cos θ + κ 2 tan θ ) \widetilde\gamma_{mn}(2\kappa/\cos\theta+\kappa^2\tan\theta) γ mn ( 2 κ / cos θ + κ 2 tan θ ) の程度と見積もれます。
例 6.3 (多項式の当てはめ:3 つの解法の精度 )
[ 0 , 1 ] [0,1] [ 0 , 1 ] の等間隔 100 点で、単項式基底 1 , t , … , t n − 1 1,t,\ldots,t^{n-1} 1 , t , … , t n − 1 の Vandermonde 行列 A A A に当てはめます。真の係数をすべて 1 とし、残差 0 の右辺 b = A 1 \boldsymbol{b}=A\boldsymbol{1} b = A 1 と、像に直交する成分(乱数ベクトルの射影、mpmath の 50 桁で計算)を加えた残差の大きい右辺を比べます。参照解は浮動小数のデータ ( A , b ) (A,\boldsymbol{b}) ( A , b ) に対する mpmath の 50 桁の qr_solve です。
# Python 3.12.10 / NumPy 2.5.2 / SciPy 1.18.1 / mpmath 1.3.0
import numpy as np, mpmath as mp
from scipy.linalg import cho_factor, cho_solve, solve_triangular
rng = np.random. default_rng ( 20261006 )
t = np. linspace ( 0 , 1 , 100 )
print ( " n kappa tan normal QR lstsq " )
A = np. vander ( t , n , increasing = True ) # 単項式基底
Am = mp. matrix ( A. tolist ())
z = mp. matrix ( rng. standard_normal ( 100 ) . tolist ())
rp = z - Am * mp. qr_solve ( Am , z ) [ 0 ] # 像に直交する成分
for s in ( 0.0 , 1.0 ): # 残差 0 と大きい残差
b = A @ np. ones ( n ) + s * np. array ( rp. tolist () , dtype = float ) [ :, 0 ]
bm = mp. matrix ( b. tolist ())
xr = np. array ( mp. qr_solve ( Am , bm ) [ 0 ] . tolist () , dtype = float ) [ :, 0 ]
x1 = cho_solve ( cho_factor ( A.T @ A ) , A.T @ b ) # 正規方程式
x2 = solve_triangular ( R , Q.T @ b ) # Householder QR
x3 = np.linalg. lstsq ( A , b , rcond = None ) [ 0 ] # SVD
tan = np.linalg. norm ( r ) / np.linalg. norm ( b - r )
err = [ np.linalg. norm ( x - xr ) / np.linalg. norm ( xr )
print ( f " {n :2d } {np.linalg. cond ( A ) :.1e } {tan :.1e } "
+ " " . join ( f " {e :.1e } " for e in err ))
n kappa tan normal QR lstsq
4 1.2e+02 8.0e-17 8.3e-13 5.5e-15 1.3e-15
4 1.2e+02 4.4e-01 5.7e-13 2.1e-14 2.3e-14
8 1.2e+05 5.1e-17 1.5e-07 4.1e-12 4.4e-12
8 1.2e+05 2.7e-01 2.0e-07 4.4e-09 4.4e-09
12 1.2e+08 9.0e-17 2.4e-01 8.3e-11 6.5e-09
12 1.2e+08 2.2e-01 4.1e-01 2.8e-03 2.8e-03
検算. (a) 既知値: 残差 0 の場合、参照解は真の係数(すべて 1)に浮動小数のデータの丸めの影響を加えたものです。(b) 別精度・別手法: 参照解は mpmath の 50 桁の QR、比べた 3 解法は Cholesky(正規方程式)・Householder QR・特異値分解(lstsq)です。(c) 次数: κ \kappa κ が 10 3 10^3 1 0 3 倍になるごとに、正規方程式の誤差は残差によらずおよそ 10 5 10^5 1 0 5 〜10 6 10^6 1 0 6 倍(κ 2 u \kappa^2u κ 2 u に比例、n = 12 n=12 n = 12 で κ 2 u ≈ 1.6 \kappa^2u\approx1.6 κ 2 u ≈ 1.6 に達して桁が残らない)、QR の誤差は残差 0 では κ u \kappa u κ u 以下(n = 12 n=12 n = 12 で κ u ≈ 1.3 × 10 − 8 \kappa u\approx1.3\times10^{-8} κ u ≈ 1.3 × 1 0 − 8 に対し 8.3 × 10 − 11 8.3\times10^{-11} 8.3 × 1 0 − 11 )、残差が大きいと n = 8 → 12 n=8\to12 n = 8 → 12 で 6 × 10 5 6\times10^5 6 × 1 0 5 倍と κ 2 \kappa^2 κ 2 の増え方に移ります。QR と lstsq の誤差はどれも 定理 6.2 の評価 u ( 2 κ / cos θ + κ 2 tan θ ) u(2\kappa/\cos\theta+\kappa^2\tan\theta) u ( 2 κ / cos θ + κ 2 tan θ ) の範囲内です(n = 12 n=12 n = 12 の残差 0 で lstsq の誤差が QR より大きいのも、κ u \kappa u κ u の範囲内のばらつきです)。
σ n \sigma_n σ n がほとんど 0 だと、x + = ∑ i ( u i ∗ b / σ i ) v i \boldsymbol{x}^{+}=\sum_i(\boldsymbol{u}_i^{*}\boldsymbol{b}/\sigma_i)\boldsymbol{v}_i x + = ∑ i ( u i ∗ b / σ i ) v i の小さい σ i \sigma_i σ i の項が、b \boldsymbol{b} b に含まれる雑音を 1 / σ i 1/\sigma_i 1/ σ i 倍に拡大します。そこで、小さい特異値の方向を捨てるか、抑えるかします。
命題 7.1 (打ち切り特異値分解の解 ) ✓
1 ≤ k ≤ r 1\le k\le r 1 ≤ k ≤ r とし、A k = ∑ i ≤ k σ i u i v i ∗ A_k=\sum_{i\le k}\sigma_i\boldsymbol{u}_i\boldsymbol{v}_i^{*} A k = ∑ i ≤ k σ i u i v i ∗ とする。x k : = A k + b \boldsymbol{x}_k:=A_k^{+}\boldsymbol{b} x k := A k + b は ∥ A k x − b ∥ \|A_k\boldsymbol{x}-\boldsymbol{b}\| ∥ A k x − b ∥ の最小ノルムの最小二乗解で、
x k = ∑ i = 1 k u i ∗ b σ i v i , ∥ x k ∥ 2 = ∑ i = 1 k ∣ u i ∗ b ∣ 2 σ i 2 , ∥ b − A x k ∥ 2 = ∑ i = k + 1 m ∣ u i ∗ b ∣ 2 . \boldsymbol{x}_k=\sum_{i=1}^k\frac{\boldsymbol{u}_i^{*}\boldsymbol{b}}{\sigma_i}\boldsymbol{v}_i,\qquad\|\boldsymbol{x}_k\|^2=\sum_{i=1}^k\frac{|\boldsymbol{u}_i^{*}\boldsymbol{b}|^2}{\sigma_i^2},\qquad\|\boldsymbol{b}-A\boldsymbol{x}_k\|^2=\sum_{i=k+1}^m|\boldsymbol{u}_i^{*}\boldsymbol{b}|^2. x k = i = 1 ∑ k σ i u i ∗ b v i , ∥ x k ∥ 2 = i = 1 ∑ k σ i 2 ∣ u i ∗ b ∣ 2 , ∥ b − A x k ∥ 2 = i = k + 1 ∑ m ∣ u i ∗ b ∣ 2 . とくに ∥ x k ∥ \|\boldsymbol{x}_k\| ∥ x k ∥ は k k k について非減少、残差は非増加である。
証明(命題 7.1) Σ k \Sigma_k Σ k を Σ \Sigma Σ の第 k + 1 k+1 k + 1 以降の対角成分を 0 にした行列とすると、A k = U Σ k V ∗ A_k=U\Sigma_kV^{*} A k = U Σ k V ∗ は A k A_k A k の特異値分解です。定理 4.2 を A k A_k A k に使えば最初の 2 式が出ます(2 番目は v i \boldsymbol{v}_i v i の正規直交性)。A v i = σ i u i A\boldsymbol{v}_i=\sigma_i\boldsymbol{u}_i A v i = σ i u i より A x k = ∑ i ≤ k ( u i ∗ b ) u i A\boldsymbol{x}_k=\sum_{i\le k}(\boldsymbol{u}_i^{*}\boldsymbol{b})\boldsymbol{u}_i A x k = ∑ i ≤ k ( u i ∗ b ) u i で、U U U の列は正規直交基底(ユニタリ行列の特徴づけ(命題 3.2)[スペクトル定理] の 4)なので b = ∑ i ≤ m ( u i ∗ b ) u i \boldsymbol{b}=\sum_{i\le m}(\boldsymbol{u}_i^{*}\boldsymbol{b})\boldsymbol{u}_i b = ∑ i ≤ m ( u i ∗ b ) u i 、差のノルムが 3 番目の式です。
∎
A k A_k A k は Eckart–Young の定理(命題 4.3)[行列の分解と標準形] により階数 k k k 以下で A A A に最も近い行列で、∥ A − A k ∥ = σ k + 1 \|A-A_k\|=\sigma_{k+1} ∥ A − A k ∥ = σ k + 1 です。「σ k + 1 \sigma_{k+1} σ k + 1 以下の違いはデータの誤差の範囲で区別できない」と判断できるとき、A A A を A k A_k A k に置き換えるのが打ち切り特異値分解の考え方です。numpy.linalg.lstsq の rcond は、σ i ≤ r c o n d ⋅ σ 1 \sigma_i\le\mathtt{rcond}\cdot\sigma_1 σ i ≤ rcond ⋅ σ 1 の特異値を捨てる閾値です。
命題 7.2 (Tikhonov 正則化とフィルタ因子 ) ✓
λ > 0 \lambda>0 λ > 0 とする。∥ A x − b ∥ 2 + λ 2 ∥ x ∥ 2 \|A\boldsymbol{x}-\boldsymbol{b}\|^2+\lambda^2\|\boldsymbol{x}\|^2 ∥ A x − b ∥ 2 + λ 2 ∥ x ∥ 2 を最小にする x \boldsymbol{x} x はただ 1 つで、
x λ = ( A ∗ A + λ 2 I ) − 1 A ∗ b = ∑ i = 1 r σ i 2 σ i 2 + λ 2 ⋅ u i ∗ b σ i v i . \boldsymbol{x}_\lambda=(A^{*}A+\lambda^2I)^{-1}A^{*}\boldsymbol{b}=\sum_{i=1}^r\frac{\sigma_i^2}{\sigma_i^2+\lambda^2}\cdot\frac{\boldsymbol{u}_i^{*}\boldsymbol{b}}{\sigma_i}\boldsymbol{v}_i. x λ = ( A ∗ A + λ 2 I ) − 1 A ∗ b = i = 1 ∑ r σ i 2 + λ 2 σ i 2 ⋅ σ i u i ∗ b v i . さらに ∥ x λ ∥ ≤ ∥ x + ∥ \|\boldsymbol{x}_\lambda\|\le\|\boldsymbol{x}^{+}\| ∥ x λ ∥ ≤ ∥ x + ∥ かつ ∥ x λ ∥ ≤ ∥ b ∥ / ( 2 λ ) \|\boldsymbol{x}_\lambda\|\le\|\boldsymbol{b}\|/(2\lambda) ∥ x λ ∥ ≤ ∥ b ∥/ ( 2 λ ) 。
証明(命題 7.2) K = ( A λ I ) ∈ K ( m + n ) × n K=\binom{A}{\lambda I}\in\mathbb{K}^{(m+n)\times n} K = ( λ I A ) ∈ K ( m + n ) × n 、d = ( b 0 ) \boldsymbol{d}=\binom{\boldsymbol{b}}{\boldsymbol{0}} d = ( 0 b ) とおくと ∥ K x − d ∥ 2 = ∥ A x − b ∥ 2 + λ 2 ∥ x ∥ 2 \|K\boldsymbol{x}-\boldsymbol{d}\|^2=\|A\boldsymbol{x}-\boldsymbol{b}\|^2+\lambda^2\|\boldsymbol{x}\|^2 ∥ K x − d ∥ 2 = ∥ A x − b ∥ 2 + λ 2 ∥ x ∥ 2 です。K x = 0 K\boldsymbol{x}=\boldsymbol{0} K x = 0 なら λ x = 0 \lambda\boldsymbol{x}=\boldsymbol{0} λ x = 0 なので rank K = n \operatorname{rank}K=n rank K = n で、定理 3.2 の 3 により最小解はただ 1 つ、( K ∗ K ) − 1 K ∗ d = ( A ∗ A + λ 2 I ) − 1 A ∗ b (K^{*}K)^{-1}K^{*}\boldsymbol{d}=(A^{*}A+\lambda^2I)^{-1}A^{*}\boldsymbol{b} ( K ∗ K ) − 1 K ∗ d = ( A ∗ A + λ 2 I ) − 1 A ∗ b です。特異値分解から A ∗ A + λ 2 I = V ( Σ ∗ Σ + λ 2 I ) V ∗ A^{*}A+\lambda^2I=V(\Sigma^{*}\Sigma+\lambda^2I)V^{*} A ∗ A + λ 2 I = V ( Σ ∗ Σ + λ 2 I ) V ∗ 、A ∗ b = V Σ ∗ U ∗ b = ∑ i ≤ r σ i ( u i ∗ b ) v i A^{*}\boldsymbol{b}=V\Sigma^{*}U^{*}\boldsymbol{b}=\sum_{i\le r}\sigma_i(\boldsymbol{u}_i^{*}\boldsymbol{b})\boldsymbol{v}_i A ∗ b = V Σ ∗ U ∗ b = ∑ i ≤ r σ i ( u i ∗ b ) v i なので、v i \boldsymbol{v}_i v i の係数は σ i ( u i ∗ b ) / ( σ i 2 + λ 2 ) \sigma_i(\boldsymbol{u}_i^{*}\boldsymbol{b})/(\sigma_i^2+\lambda^2) σ i ( u i ∗ b ) / ( σ i 2 + λ 2 ) で、主張の式です。フィルタ因子 σ i 2 / ( σ i 2 + λ 2 ) \sigma_i^2/(\sigma_i^2+\lambda^2) σ i 2 / ( σ i 2 + λ 2 ) は 1 1 1 未満なので ∥ x λ ∥ ≤ ∥ x + ∥ \|\boldsymbol{x}_\lambda\|\le\|\boldsymbol{x}^{+}\| ∥ x λ ∥ ≤ ∥ x + ∥ (定理 4.2 の式と比べる)。また σ i 2 + λ 2 ≥ 2 σ i λ \sigma_i^2+\lambda^2\ge2\sigma_i\lambda σ i 2 + λ 2 ≥ 2 σ i λ から係数の絶対値は ∣ u i ∗ b ∣ / ( 2 λ ) |\boldsymbol{u}_i^{*}\boldsymbol{b}|/(2\lambda) ∣ u i ∗ b ∣/ ( 2 λ ) 以下で、∥ x λ ∥ 2 ≤ ∑ i ∣ u i ∗ b ∣ 2 / ( 4 λ 2 ) ≤ ∥ b ∥ 2 / ( 4 λ 2 ) \|\boldsymbol{x}_\lambda\|^2\le\sum_i|\boldsymbol{u}_i^{*}\boldsymbol{b}|^2/(4\lambda^2)\le\|\boldsymbol{b}\|^2/(4\lambda^2) ∥ x λ ∥ 2 ≤ ∑ i ∣ u i ∗ b ∣ 2 / ( 4 λ 2 ) ≤ ∥ b ∥ 2 / ( 4 λ 2 ) です。
∎
フィルタ因子は σ i ≫ λ \sigma_i\gg\lambda σ i ≫ λ でほぼ 1、σ i ≪ λ \sigma_i\ll\lambda σ i ≪ λ でほぼ σ i 2 / λ 2 \sigma_i^2/\lambda^2 σ i 2 / λ 2 です。打ち切り特異値分解の「0 か 1 か」のフィルタを滑らかにしたもので、λ \lambda λ が打ち切りの閾値の役をします。計算では K K K に QR 分解を使えば、A ∗ A A^{*}A A ∗ A を作らずに済みます。
例 7.3 (打ち切りと Tikhonov 正則化の比較 )
特異値を 1 , 10 − 1 , … , 10 − 7 1,10^{-1},\ldots,10^{-7} 1 , 1 0 − 1 , … , 1 0 − 7 と 10 − 10 , 10 − 12 10^{-10},10^{-12} 1 0 − 10 , 1 0 − 12 にした 30 × 10 30\times10 30 × 10 の行列を作り、真の解を上位 8 個の右特異ベクトルの和(ノルム 8 ≈ 2.83 \sqrt8\approx2.83 8 ≈ 2.83 )、右辺に大きさ 10 − 8 10^{-8} 1 0 − 8 の雑音を加えます。lstsq の rcond と Tikhonov の λ \lambda λ を変え、解のノルム・残差・真の解との誤差、および 命題 7.1 ・命題 7.2 の式で構成に使った U , Σ , V U,\Sigma,V U , Σ , V から直接計算した解との相対差(formula)を並べます。
# Python 3.12.10 / NumPy 2.5.2 /乱数種 20261006
rng = np.random. default_rng ( 20261006 )
U, _ = np.linalg. qr ( rng. standard_normal ( (m, n) ))
V, _ = np.linalg. qr ( rng. standard_normal ( (n, n) ))
s = np.r_[np. logspace ( 0 , - 7 , 8 ), 1e-10 , 1e-12 ] # 特異値
xt = V[:, : 8 ] @ np. ones ( 8 ) # 真の解(上位 8 方向)
b = A @ xt + 1e-8 * rng. standard_normal ( m ) # 雑音つき
nr, c = np.linalg.norm, U.T @ b
print ( " method param |x| |Ax-b| |x-xt| formula " )
for rc, k in (( None , 10 ), ( 1e-11 , 9 ), ( 1e-9 , 8 )):
x = np.linalg. lstsq ( A , b , rcond = rc ) [ 0 ]
xf = V[:, :k] @ (c[:k] / s[:k]) # 打ち切り SVD の式
print ( f "lstsq { str ( rc ) :>7 } { nr ( x ) :.2e } { nr ( A @ x - b ) :.2e } "
f " { nr ( x - xt ) :.2e } { nr ( x - xf ) / nr ( xf ) :.0e } " )
for lam in ( 1e-12 , 1e-9 , 1e-8 , 1e-6 ):
K = np. vstack ( [ A, lam * np. eye ( n ) ] ) # [A; lam I]
x = np.linalg. lstsq ( K , np.r_ [ b, np. zeros ( n )] , rcond = None ) [ 0 ]
xf = V @ (s ** 2 / (s ** 2 + lam ** 2 ) * c / s) # フィルタ因子の式
print ( f "Tikhonov {lam :.0e } { nr ( x ) :.2e } { nr ( A @ x - b ) :.2e } "
f " { nr ( x - xt ) :.2e } { nr ( x - xf ) / nr ( xf ) :.0e } " )
method param |x| |Ax-b| |x-xt| formula
lstsq None 3.99e+02 4.89e-08 3.99e+02 1e-03
lstsq 1e-11 2.33e+02 4.89e-08 2.33e+02 4e-07
lstsq 1e-09 2.87e+00 5.42e-08 1.01e-01 2e-10
Tikhonov 1e-12 2.84e+02 4.89e-08 2.83e+02 8e-04
Tikhonov 1e-09 3.68e+00 5.41e-08 2.31e+00 3e-07
Tikhonov 1e-08 2.86e+00 5.42e-08 9.34e-02 3e-09
Tikhonov 1e-06 2.50e+00 5.29e-07 1.11e+00 2e-11
すべての特異値を使う解(rcond=None)は残差が最小ですが、ノルムが 400 に膨らみ、真の解から大きく外れます。10 − 10 , 10 − 12 10^{-10},10^{-12} 1 0 − 10 , 1 0 − 12 の方向を捨てる rcond=1e-9 では誤差が 0.1 0.1 0.1 (雑音 10 − 8 10^{-8} 1 0 − 8 を σ 8 = 10 − 7 \sigma_8=10^{-7} σ 8 = 1 0 − 7 で割った大きさ)まで下がり、残差はほとんど増えません。Tikhonov では λ = 10 − 8 \lambda=10^{-8} λ = 1 0 − 8 付近が最もよく、λ \lambda λ を大きくしすぎると(10 − 6 10^{-6} 1 0 − 6 )上位の方向まで縮められて残差と誤差が増えます。
検算. (a) 既知値: 特異値分解を構成から知っているので、命題 7.1 ・命題 7.2 の式の値(formula 列の比較相手)が計算できます。(b) 別手法: lstsq(特異値分解)と、拡大行列 K K K に対する lstsq の結果が式の値と一致します。(c) 次数: 一致の度合いは u / σ min u/\sigma_{\min} u / σ m i n (残した最小の特異値)の程度で、捨てる特異値を増やすと 10 − 3 → 4 × 10 − 7 → 2 × 10 − 10 10^{-3}\to4\times10^{-7}\to2\times10^{-10} 1 0 − 3 → 4 × 1 0 − 7 → 2 × 1 0 − 10 と改善します。浮動小数で A A A を作った時点で特異値が絶対 u ∥ A ∥ u\|A\| u ∥ A ∥ 程度動くので、σ = 10 − 12 \sigma=10^{-12} σ = 1 0 − 12 の方向は相対 10 − 4 10^{-4} 1 0 − 4 の不確かさをもつ、という見積もりと合っています。
演習 8.1 易
3 点 ( t , y ) = ( 0 , 1 ) , ( 1 , 2 ) , ( 2 , 2 ) (t,y)=(0,1),(1,2),(2,2) ( t , y ) = ( 0 , 1 ) , ( 1 , 2 ) , ( 2 , 2 ) に直線 y = c 0 + c 1 t y=c_0+c_1t y = c 0 + c 1 t を最小二乗で当てはめ、係数と残差を求めよ。残差が A A A の像に直交することを確かめよ。
解答 A = ( 1 0 1 1 1 2 ) A=\begin{pmatrix}1&0\\1&1\\1&2\end{pmatrix} A = 1 1 1 0 1 2 、b = ( 1 , 2 , 2 ) T \boldsymbol{b}=(1,2,2)^{\mathsf{T}} b = ( 1 , 2 , 2 ) T で、A T A = ( 3 3 3 5 ) A^{\mathsf{T}}A=\begin{pmatrix}3&3\\3&5\end{pmatrix} A T A = ( 3 3 3 5 ) 、A T b = ( 5 , 6 ) T A^{\mathsf{T}}\boldsymbol{b}=(5,6)^{\mathsf{T}} A T b = ( 5 , 6 ) T 。正規方程式(定理 3.2 )を解いて c 0 = 7 / 6 c_0=7/6 c 0 = 7/6 、c 1 = 1 / 2 c_1=1/2 c 1 = 1/2 。残差は r = ( − 1 / 6 , 1 / 3 , − 1 / 6 ) T \boldsymbol{r}=(-1/6,1/3,-1/6)^{\mathsf{T}} r = ( − 1/6 , 1/3 , − 1/6 ) T で、A T r = ( 0 , 0 ) T A^{\mathsf{T}}\boldsymbol{r}=(0,0)^{\mathsf{T}} A T r = ( 0 , 0 ) T 、すなわち両方の列に直交します。∥ r ∥ 2 = 1 / 6 \|\boldsymbol{r}\|^2=1/6 ∥ r ∥ 2 = 1/6 。
演習 8.2 標準
a ∈ K m \boldsymbol{a}\in\mathbb{K}^m a ∈ K m 、c ∈ K n \boldsymbol{c}\in\mathbb{K}^n c ∈ K n を 0 でないベクトルとし、A = a c ∗ A=\boldsymbol{a}\boldsymbol{c}^{*} A = a c ∗ とする。A + = c a ∗ / ( ∥ a ∥ 2 ∥ c ∥ 2 ) A^{+}=\boldsymbol{c}\boldsymbol{a}^{*}/(\|\boldsymbol{a}\|^2\|\boldsymbol{c}\|^2) A + = c a ∗ / ( ∥ a ∥ 2 ∥ c ∥ 2 ) であることを示せ。
解答 X = c a ∗ / ( ∥ a ∥ 2 ∥ c ∥ 2 ) X=\boldsymbol{c}\boldsymbol{a}^{*}/(\|\boldsymbol{a}\|^2\|\boldsymbol{c}\|^2) X = c a ∗ / ( ∥ a ∥ 2 ∥ c ∥ 2 ) とおくと、A X = a a ∗ / ∥ a ∥ 2 AX=\boldsymbol{a}\boldsymbol{a}^{*}/\|\boldsymbol{a}\|^2 A X = a a ∗ /∥ a ∥ 2 、X A = c c ∗ / ∥ c ∥ 2 XA=\boldsymbol{c}\boldsymbol{c}^{*}/\|\boldsymbol{c}\|^2 X A = c c ∗ /∥ c ∥ 2 はエルミートで、A X A = ( a a ∗ / ∥ a ∥ 2 ) a c ∗ = A AXA=(\boldsymbol{a}\boldsymbol{a}^{*}/\|\boldsymbol{a}\|^2)\boldsymbol{a}\boldsymbol{c}^{*}=A A X A = ( a a ∗ /∥ a ∥ 2 ) a c ∗ = A 、X A X = ( c c ∗ / ∥ c ∥ 2 ) X = X XAX=(\boldsymbol{c}\boldsymbol{c}^{*}/\|\boldsymbol{c}\|^2)X=X X A X = ( c c ∗ /∥ c ∥ 2 ) X = X です。命題 4.3 の 2 の一意性から X = A + X=A^{+} X = A + です。
演習 8.3 難
0 < δ < 1 0<\delta<1 0 < δ < 1 、A = ( 1 0 0 δ 0 0 ) A=\begin{pmatrix}1&0\\0&\delta\\0&0\end{pmatrix} A = 1 0 0 0 δ 0 、b = ( 1 , 0 , 1 ) T \boldsymbol{b}=(1,0,1)^{\mathsf{T}} b = ( 1 , 0 , 1 ) T とし、A A A の ( 3 , 2 ) (3,2) ( 3 , 2 ) 成分だけを ε \varepsilon ε に変えた A + ε E A+\varepsilon E A + εE (∥ E ∥ = 1 = ∥ A ∥ \|E\|=1=\|A\| ∥ E ∥ = 1 = ∥ A ∥ )の最小二乗解を求めよ。定理 6.2 の κ 2 tan θ \kappa^2\tan\theta κ 2 tan θ の項が改善できないことを確かめよ。
解答 x = ( 1 , 0 ) T \boldsymbol{x}=(1,0)^{\mathsf{T}} x = ( 1 , 0 ) T 、r = ( 0 , 0 , 1 ) T \boldsymbol{r}=(0,0,1)^{\mathsf{T}} r = ( 0 , 0 , 1 ) T 、∥ A x ∥ = ∥ r ∥ = 1 \|A\boldsymbol{x}\|=\|\boldsymbol{r}\|=1 ∥ A x ∥ = ∥ r ∥ = 1 なので tan θ = 1 \tan\theta=1 tan θ = 1 、κ = 1 / δ \kappa=1/\delta κ = 1/ δ です。摂動後の正規方程式は対角で、第 2 成分は ( δ ⋅ 0 + ε ⋅ 1 ) / ( δ 2 + ε 2 ) (\delta\cdot0+\varepsilon\cdot1)/(\delta^2+\varepsilon^2) ( δ ⋅ 0 + ε ⋅ 1 ) / ( δ 2 + ε 2 ) 、第 1 成分は 1 1 1 のままです。よって
∥ x ( ε ) − x ∥ ∥ x ∥ = ε δ 2 + ε 2 = ε κ 2 + O ( ε 3 ) \frac{\|\boldsymbol{x}(\varepsilon)-\boldsymbol{x}\|}{\|\boldsymbol{x}\|}=\frac{\varepsilon}{\delta^2+\varepsilon^2}=\varepsilon\kappa^2+O(\varepsilon^3) ∥ x ∥ ∥ x ( ε ) − x ∥ = δ 2 + ε 2 ε = ε κ 2 + O ( ε 3 ) で、ε \varepsilon ε の 1 次の係数は κ 2 tan θ \kappa^2\tan\theta κ 2 tan θ に一致します。評価の 2 κ / cos θ 2\kappa/\cos\theta 2 κ / cos θ の部分を除いて、κ 2 tan θ \kappa^2\tan\theta κ 2 tan θ の項は定数倍も含めて改善できません。
N. J. Higham, Accuracy and Stability of Numerical Algorithms , 2nd ed., SIAM, 2002 — Ch. 20(最小二乗問題の感度と QR 法の後退安定性)。
Å. Björck, Numerical Methods for Least Squares Problems , SIAM, 1996 — Ch. 1–2。
G. H. Golub and C. F. Van Loan, Matrix Computations , 4th ed., Johns Hopkins University Press, 2013 — §5.3–5.5、§6.1。
L. N. Trefethen and D. Bau III, Numerical Linear Algebra , SIAM, 1997 — Lectures 11, 18, 19。
P. C. Hansen, Rank-Deficient and Discrete Ill-Posed Problems , SIAM, 1998 — Ch. 3–5(打ち切り特異値分解、フィルタ因子、Tikhonov 正則化)。
R. Penrose, “A generalized inverse for matrices”, Proc. Cambridge Philos. Soc. 51 (1955), 406–413.
執筆: Claude Code(Opus 5.5)、Claude Code(Sonnet 5.5)・監査 2 回(Claude Code)・最終 2026-10-12