コンテンツにスキップ

最小二乗問題:正規方程式・QR・特異値分解と感度

対象読者: 本テーマの QR 分解と行列ノルム・条件数の章、内積空間と直交射影を学んだ人。擬似逆行列や特異値分解の応用は仮定せず、章の中で導入します。

前提となる記事:QR 分解:Householder 変換・Givens 回転・Gram–Schmidt の安定性、行列のノルムと線形方程式の条件数:誘導ノルム・後退誤差・特異行列までの距離、内積空間とグラム・シュミット直交化:長さと角度を線形代数に持ち込む

生 Markdown

測った点の数が未知数より多く、すべての式を同時には満たせないとき、「いちばんずれが小さい答え」をどう選び、どう正確に計算するかを扱います。たとえば 3 つの測定点に 1 本の直線を引くと、普通は 3 点すべてを通りません。そこで各点とのずれの 2 乗和を最小にする直線を選びます。これが最小二乗法です。この記事では、その答えの性質、計算法ごとの精度の違い、データに雑音があるときの対処を順に見ます。

  • ∥Ax−b∥2\|A\boldsymbol{x}-\boldsymbol{b}\|_2 を最小にする x\boldsymbol{x} は、残差が AA の像に直交する x\boldsymbol{x}、すなわち正規方程式 A∗Ax=A∗bA^{*}A\boldsymbol{x}=A^{*}\boldsymbol{b}(A∗A^{*} は共役転置)の解です。列が一次独立なら一意です。
  • 特異値分解から作る擬似逆 A+A^{+} について、A+bA^{+}\boldsymbol{b} は最小二乗解のうちノルムが最小のものです。A+A^{+} は Moore–Penrose の 4 条件(AXA=AAXA=A など 4 つの等式。第 4 節)で一意に決まります。
  • QR 分解 A=Q1R1A=Q_1R_1 を使えば x=R1−1Q1Tb\boldsymbol{x}=R_1^{-1}Q_1^{\mathsf{T}}\boldsymbol{b} で、Householder QR による解法は後退安定です(後退安定とは、計算結果が「入力をわずかに動かした問題の厳密な答え」になっていること。計算した解は、各列と右辺を相対 γ~mn\widetilde\gamma_{mn} だけ動かした問題の厳密な最小二乗解)。
  • 解の感度は ε(2κ/cos⁡θ+κ2tan⁡θ)+O(ε2)\varepsilon\bigl(2\kappa/\cos\theta+\kappa^2\tan\theta\bigr)+O(\varepsilon^2) です(θ\theta は b\boldsymbol{b} と像のなす角)。残差が大きい問題では κ2\kappa^2 が避けられず、残差が小さい問題では κ\kappa で済みます。
  • 正規方程式は κ(A∗A)=κ(A)2\kappa(A^{*}A)=\kappa(A)^2 の問題を解くので、残差が小さくても κ2u\kappa^2u の誤差を出しえます。数値例では次数 11 の多項式の当てはめで、QR の 8×10−118\times10^{-11} に対し正規方程式は 0.240.24 でした。
  • 階数落ちに近い問題では、打ち切り特異値分解(小さい特異値を捨てる方法)と Tikhonov 正則化(捨てずに滑らかに弱める方法。弱める度合いがフィルタ因子 σi2/(σi2+λ2)\sigma_i^2/(\sigma_i^2+\lambda^2))で小さい特異値の方向を抑えます。

観測点 t1,…,tmt_1,\ldots,t_m でのデータ bib_i に、未知の係数を nn 個もつモデルを当てはめるとき、方程式は m>nm>n 本で一般には解がありません。そこで「残差の 2 乗和を最小にする」係数を探すのが最小二乗法です。Gauss が天体の軌道決定に使って以来、データ解析・逆問題・統計の回帰の基本です。

数値計算の観点では、同じ最小二乗解を求めるのに 3 通りの道があります。正規方程式を Cholesky 分解で解く、QR 分解を使う、特異値分解を使う、の 3 つです。前者ほど速く、後者ほど頑健です。この記事では、どれがどんな場合にどれだけ精度を失うかを、問題の感度(条件数と残差の大きさ)とアルゴリズムの後退安定性に分けて説明します。行列のノルムと条件数 の物差しと、QR 分解 の後退誤差解析をそのまま使います。

K=R\mathbb{K}=\mathbb{R} または C\mathbb{C}、A∈Km×nA\in\mathbb{K}^{m\times n}、b∈Km\boldsymbol{b}\in\mathbb{K}^m とし、ノルムはすべて 2 ノルムで ∥⋅∥\|\cdot\| と書きます。内積は ⟨x,y⟩=y∗x\langle\boldsymbol{x},\boldsymbol{y}\rangle=\boldsymbol{y}^{*}\boldsymbol{x} です。AA の特異値分解 A=UΣV∗A=U\Sigma V^{*}、rank⁡A=r\operatorname{rank}A=r、特異値 σ1≥⋯≥σr>0\sigma_1\ge\cdots\ge\sigma_r>0 は 特異値分解(定理 4.1)[行列の分解と標準形] のとおりです。U,VU,V の列を ui,vi\boldsymbol{u}_i,\boldsymbol{v}_i と書きます。浮動小数の解析(第 5 節)では実行列を扱い、記号は QR 分解 と同じです。

列が一次独立(r=nr=n)な AA について、条件数 κ(A)=σ1/σn\kappa(A)=\sigma_1/\sigma_n と書きます。正方の正則行列ではこれは κ2(A)\kappa_2(A) に一致します(特異行列までの距離(定理 6.4)[行列のノルムと線形方程式の条件数])。

まず「ずれが最小」を幾何で言い換えます。AxA\boldsymbol{x} が動ける範囲は AA の像(列ベクトルが張る部分空間)で、b\boldsymbol{b} に最も近いのはそこへ垂線を下ろした足です。下の定理は、この見方と正規方程式が同じことを言っていると示します。

定義 3.1(最小二乗問題)↗

∥Ax−b∥\|A\boldsymbol{x}-\boldsymbol{b}\| を最小にする x∈Kn\boldsymbol{x}\in\mathbb{K}^n を最小二乗解といい、r=b−Ax\boldsymbol{r}=\boldsymbol{b}-A\boldsymbol{x} をその残差という。A∗Ax=A∗bA^{*}A\boldsymbol{x}=A^{*}\boldsymbol{b} を正規方程式という。

定理 3.2(最小二乗解の特徴づけ)✓

  1. 最小二乗解は存在する。
  2. x\boldsymbol{x} について次は同値である: (a) x\boldsymbol{x} は最小二乗解、(b) Ax=PbA\boldsymbol{x}=P\boldsymbol{b}(PP は AA の像 W=im⁡AW=\operatorname{im}A への直交射影)、(c) 残差 b−Ax\boldsymbol{b}-A\boldsymbol{x} が WW に直交する、(d) A∗Ax=A∗bA^{*}A\boldsymbol{x}=A^{*}\boldsymbol{b}。
  3. 最小二乗解が一意   ⟺  \iff rank⁡A=n\operatorname{rank}A=n   ⟺  \iff A∗AA^{*}A が正則。このとき解は (A∗A)−1A∗b(A^{*}A)^{-1}A^{*}\boldsymbol{b}。
  4. 最小二乗解の全体は x0+ker⁡A\boldsymbol{x}_0+\ker A(x0\boldsymbol{x}_0 は 1 つの最小二乗解)である。
証明(定理 3.2)

W=im⁡AW=\operatorname{im}A は Km\mathbb{K}^m の有限次元部分空間です。

(a)⇔(b): {Ax}\{A\boldsymbol{x}\} は WW 全体を動くので、最良近似(定理 7.2)[内積空間とグラム・シュミット直交化] により ∥Ax−b∥\|A\boldsymbol{x}-\boldsymbol{b}\| が最小になるのは Ax=PbA\boldsymbol{x}=P\boldsymbol{b} のとき、かつそのときに限ります。Pb∈WP\boldsymbol{b}\in W なので Ax=PbA\boldsymbol{x}=P\boldsymbol{b} となる x\boldsymbol{x} があり、1 が従います。

(b)⇔(c): 直交分解定理(定理 7.1)[内積空間とグラム・シュミット直交化] の分解 b=w+w′\boldsymbol{b}=\boldsymbol{w}+\boldsymbol{w}'(w∈W\boldsymbol{w}\in W、w′∈W⊥\boldsymbol{w}'\in W^{\perp})は一意で w=Pb\boldsymbol{w}=P\boldsymbol{b} です。b=Ax+(b−Ax)\boldsymbol{b}=A\boldsymbol{x}+(\boldsymbol{b}-A\boldsymbol{x}) で Ax∈WA\boldsymbol{x}\in W なので、b−Ax∈W⊥\boldsymbol{b}-A\boldsymbol{x}\in W^{\perp} と Ax=PbA\boldsymbol{x}=P\boldsymbol{b} は同値です。

(c)⇔(d): WW は AA の列 aj\boldsymbol{a}_j で張られるので、y⊥W\boldsymbol{y}\perp W は全 jj で aj∗y=0\boldsymbol{a}_j^{*}\boldsymbol{y}=0、すなわち A∗y=0A^{*}\boldsymbol{y}=\boldsymbol{0} と同値です。y=b−Ax\boldsymbol{y}=\boldsymbol{b}-A\boldsymbol{x} とすれば (d) です。

3: 最小二乗解は (b) の方程式 Ax=PbA\boldsymbol{x}=P\boldsymbol{b} の解の全体で、その差は ker⁡A\ker A を動きます(4 もこれで示された)。よって一意   ⟺  ker⁡A={0}  ⟺  rank⁡A=n\iff\ker A=\{\boldsymbol{0}\}\iff\operatorname{rank}A=n(次元定理(定理 8.3)[行列と連立一次方程式])。また A∗Ax=0A^{*}A\boldsymbol{x}=\boldsymbol{0} なら ∥Ax∥2=x∗A∗Ax=0\|A\boldsymbol{x}\|^2=\boldsymbol{x}^{*}A^{*}A\boldsymbol{x}=0 なので ker⁡A∗A=ker⁡A\ker A^{*}A=\ker A で、nn 次正方行列 A∗AA^{*}A が正則   ⟺  ker⁡A∗A={0}\iff\ker A^{*}A=\{\boldsymbol{0}\} です(正則性の判定(定理 7.1)[行列式とその性質])。このとき (d) から解は (A∗A)−1A∗b(A^{*}A)^{-1}A^{*}\boldsymbol{b} です。

残差 r\boldsymbol{r} と AxA\boldsymbol{x} は直交するので、Pythagoras の関係 ∥b∥2=∥Ax∥2+∥r∥2\|\boldsymbol{b}\|^2=\|A\boldsymbol{x}\|^2+\|\boldsymbol{r}\|^2 が成り立ちます。そこで 0≤θ≤π/20\le\theta\le\pi/2 を sin⁡θ=∥r∥/∥b∥\sin\theta=\|\boldsymbol{r}\|/\|\boldsymbol{b}\| で定めると ∥Ax∥=∥b∥cos⁡θ\|A\boldsymbol{x}\|=\|\boldsymbol{b}\|\cos\theta で、θ\theta は b\boldsymbol{b} と像 WW のなす角です。θ\theta が小さいほどデータはモデルによく合っています。

WbAx = Pbrθ
像 W を真横から見た図。b から W へ下ろした垂線の足が Ax(= Pb)で、垂線が残差 r。b と W のなす角が θ

定義 4.1(擬似逆行列)↗

A=UΣV∗A=U\Sigma V^{*} を特異値分解とし、Σ+∈Rn×m\Sigma^{+}\in\mathbb{R}^{n\times m} を (Σ+)ii=1/σi(\Sigma^{+})_{ii}=1/\sigma_i(i≤ri\le r)、他の成分 0 の行列とする。A+=VΣ+U∗A^{+}=V\Sigma^{+}U^{*} を AA の擬似逆行列(Moore–Penrose 逆)という。

特異値分解は一意ではありませんが、A+A^{+} が分解の選び方によらないことは 命題 4.3 で示します。

定理 4.2(擬似逆による最小ノルム解)✓

x+=A+b\boldsymbol{x}^{+}=A^{+}\boldsymbol{b} は最小二乗解であり、最小二乗解の中でノルムが最小のものはこれただ 1 つである。具体的に

x+=∑i=1rui∗bσivi,min⁡x∥Ax−b∥2=∑i=r+1m∣ui∗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.
証明(定理 4.2)

y=V∗x\boldsymbol{y}=V^{*}\boldsymbol{x}、c=U∗b\boldsymbol{c}=U^{*}\boldsymbol{b} とおきます。ユニタリ行列の特徴づけ(命題 3.2)[スペクトル定理] の 3 により U∗U^{*} はノルムを保ち、VV は Kn\mathbb{K}^n 上の全単射でノルムを保つので

∥Ax−b∥2=∥U∗(UΣV∗x−b)∥2=∥Σy−c∥2=∑i=1r∣σiyi−ci∣2+∑i=r+1m∣ci∣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}\|

です。第 2 の和は y\boldsymbol{y} によらないので、最小は yi=ci/σiy_i=c_i/\sigma_i(i≤ri\le r)のとき、かつそのときに限り達成され、yiy_i(i>ri>r)は任意です。そのうち ∥y∥\|\boldsymbol{y}\| が最小なのは yi=0y_i=0(i>ri>r)のときだけです。このとき y=Σ+c\boldsymbol{y}=\Sigma^{+}\boldsymbol{c}、x=VΣ+U∗b=A+b\boldsymbol{x}=V\Sigma^{+}U^{*}\boldsymbol{b}=A^{+}\boldsymbol{b} で、成分で書けば主張の式です。

次の命題は、擬似逆を特異値分解の取り方に頼らずに特徴づけるものです。4 つの等式を満たす行列がただ 1 つであることを示すので、証明 (2) では XX と YY の 2 つが条件を満たすと仮定し、条件を 1 つずつ使って両方が同じ XAYXAY に等しいことを示します。

命題 4.3(Moore–Penrose の条件)✓

  1. X=A+X=A^{+} は次の 4 条件を満たす: AXA=AAXA=A、XAX=XXAX=X、(AX)∗=AX(AX)^{*}=AX、(XA)∗=XA(XA)^{*}=XA。
  2. 4 条件を満たす X∈Kn×mX\in\mathbb{K}^{n\times m} はただ 1 つである。とくに A+A^{+} は特異値分解の選び方によらず、AA が実行列なら A+A^{+} も実行列である。
  3. rank⁡A=n\operatorname{rank}A=n なら A+=(A∗A)−1A∗A^{+}=(A^{*}A)^{-1}A^{*}、A+A=InA^{+}A=I_n。
  4. 任意の b\boldsymbol{b} について AA+b=PbAA^{+}\boldsymbol{b}=P\boldsymbol{b}(PP は im⁡A\operatorname{im}A への直交射影)。
証明(命題 4.3)

(1) ΣΣ+Σ=Σ\Sigma\Sigma^{+}\Sigma=\Sigma、Σ+ΣΣ+=Σ+\Sigma^{+}\Sigma\Sigma^{+}=\Sigma^{+} で、ΣΣ+=diag⁡(Ir,0)∈Rm×m\Sigma\Sigma^{+}=\operatorname{diag}(I_r,0)\in\mathbb{R}^{m\times m}、Σ+Σ=diag⁡(Ir,0)∈Rn×n\Sigma^{+}\Sigma=\operatorname{diag}(I_r,0)\in\mathbb{R}^{n\times n} は実対称です。U∗U=IU^{*}U=I、V∗V=IV^{*}V=I を使うと AA+A=UΣΣ+ΣV∗=AAA^{+}A=U\Sigma\Sigma^{+}\Sigma V^{*}=A、A+AA+=A+A^{+}AA^{+}=A^{+}、AA+=UΣΣ+U∗AA^{+}=U\Sigma\Sigma^{+}U^{*}、A+A=VΣ+ΣV∗A^{+}A=V\Sigma^{+}\Sigma V^{*} はエルミートです。

(2) X,YX,Y がともに 4 条件を満たすとします。条件を順に使って

X=XAX=X(AX)∗=XX∗A∗=XX∗(AYA)∗=XX∗A∗Y∗A∗=X(AX)∗(AY)∗=XAXAY=XAY,X=XAX=X(AX)^{*}=XX^{*}A^{*}=XX^{*}(AYA)^{*}=XX^{*}A^{*}Y^{*}A^{*}=X(AX)^{*}(AY)^{*}=XAXAY=XAY,Y=YAY=(YA)∗Y=A∗Y∗Y=(AXA)∗Y∗Y=A∗X∗A∗Y∗Y=(XA)∗(YA)∗Y=XAYAY=XAYY=YAY=(YA)^{*}Y=A^{*}Y^{*}Y=(AXA)^{*}Y^{*}Y=A^{*}X^{*}A^{*}Y^{*}Y=(XA)^{*}(YA)^{*}Y=XAYAY=XAY

なので X=YX=Y です。別の特異値分解から作った A+A^{+} も (1) により 4 条件を満たすので一致します。AA が実なら A+‾\overline{A^{+}} も(条件の複素共役をとれば)4 条件を満たすので A+‾=A+\overline{A^{+}}=A^{+} です。

(3) 定理 3.2 の 3 により M=A∗AM=A^{*}A は正則です。X=M−1A∗X=M^{-1}A^{*} は XA=InXA=I_n を満たし、AXA=AAXA=A、XAX=XXAX=X、XA=InXA=I_n はエルミート、AX=AM−1A∗AX=AM^{-1}A^{*} は M−1M^{-1} がエルミート(MM がエルミートだから)なのでエルミートです。(2) により X=A+X=A^{+} です。

(4) 定理 4.2 により A+bA^{+}\boldsymbol{b} は最小二乗解で、定理 3.2 の 2 (b) から AA+b=PbAA^{+}\boldsymbol{b}=P\boldsymbol{b} です。

命題 4.4(正規方程式の条件数)✓

rank⁡A=n\operatorname{rank}A=n なら、A∗AA^{*}A の特異値は σ12,…,σn2\sigma_1^2,\ldots,\sigma_n^2 で、κ2(A∗A)=κ(A)2\kappa_2(A^{*}A)=\kappa(A)^2。また ∥A+∥=1/σn\|A^{+}\|=1/\sigma_n、∥(A∗A)−1∥=1/σn2\|(A^{*}A)^{-1}\|=1/\sigma_n^2。

証明(命題 4.4)

A∗A=VΣ∗ΣV∗A^{*}A=V\Sigma^{*}\Sigma V^{*} で、Σ∗Σ=diag⁡(σ12,…,σn2)\Sigma^{*}\Sigma=\operatorname{diag}(\sigma_1^2,\ldots,\sigma_n^2) です。これは A∗AA^{*}A の特異値分解なので、特異値は σi2\sigma_i^2 です。特異行列までの距離(定理 6.4)[行列のノルムと線形方程式の条件数] の 2 ノルムの部分から κ2(A∗A)=σ12/σn2=κ(A)2\kappa_2(A^{*}A)=\sigma_1^2/\sigma_n^2=\kappa(A)^2 です。2 ノルムの公式(命題 4.2)[行列のノルムと線形方程式の条件数] から ∥A∗A∥=σ12\|A^{*}A\|=\sigma_1^2 なので、∥(A∗A)−1∥=κ2(A∗A)/∥A∗A∥=1/σn2\|(A^{*}A)^{-1}\|=\kappa_2(A^{*}A)/\|A^{*}A\|=1/\sigma_n^2 です。A+=VΣ+U∗A^{+}=V\Sigma^{+}U^{*} では ユニタリ不変性(命題 4.4)[行列のノルムと線形方程式の条件数] から ∥A+∥=∥Σ+∥\|A^{+}\|=\|\Sigma^{+}\| で、∥Σ+y∥2=∑i≤n∣yi∣2/σi2≤∥y∥2/σn2\|\Sigma^{+}\boldsymbol{y}\|^2=\sum_{i\le n}|y_i|^2/\sigma_i^2\le\|\boldsymbol{y}\|^2/\sigma_n^2(等号は y=en\boldsymbol{y}=\boldsymbol{e}_n)なので ∥A+∥=1/σn\|A^{+}\|=1/\sigma_n です。

したがって κ(A)=∥A∥∥A+∥\kappa(A)=\|A\|\|A^{+}\| で、正方の場合の κ2\kappa_2 の自然な拡張になっています。正規方程式を作った時点で条件数は 2 乗になります。κ(A)=108\kappa(A)=10^8 なら κ(A∗A)=1016\kappa(A^{*}A)=10^{16} で、倍精度では正規方程式の解に 1 桁も保証がありません。

5. QR 分解による解法と後退安定性

Section titled “5. QR 分解による解法と後退安定性”

この節では A∈Rm×nA\in\mathbb{R}^{m\times n}、m≥nm\ge n とします。

定理 5.1(QR 分解による最小二乗解)✓

rank⁡A=n\operatorname{rank}A=n とし、A=QRA=QR を QR 分解(QR 分解の存在(定理 4.1)[QR 分解])、Q=(Q1 Q2)Q=(Q_1\ Q_2)(Q1∈Rm×nQ_1\in\mathbb{R}^{m\times n})、R=(R10)R=\binom{R_1}{0} と分ける。このとき R1R_1 は正則で、最小二乗解は x=R1−1Q1Tb\boldsymbol{x}=R_1^{-1}Q_1^{\mathsf{T}}\boldsymbol{b}、最小の残差ノルムは ∥Q2Tb∥\|Q_2^{\mathsf{T}}\boldsymbol{b}\| である。

証明(定理 5.1)

QQ は正則なので rank⁡R1=rank⁡R=rank⁡A=n\operatorname{rank}R_1=\operatorname{rank}R=\operatorname{rank}A=n で、R1R_1 は正則です。直交行列 QTQ^{\mathsf{T}} はノルムを保つので

∥Ax−b∥2=∥QTAx−QTb∥2=∥R1x−Q1Tb∥2+∥Q2Tb∥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

です。第 2 項は x\boldsymbol{x} によらず、第 1 項は x=R1−1Q1Tb\boldsymbol{x}=R_1^{-1}Q_1^{\mathsf{T}}\boldsymbol{b} のときだけ 0 になります。

正規方程式 R1TR1x=R1TQ1TbR_1^{\mathsf{T}}R_1\boldsymbol{x}=R_1^{\mathsf{T}}Q_1^{\mathsf{T}}\boldsymbol{b} を作らずに、三角方程式 R1x=Q1TbR_1\boldsymbol{x}=Q_1^{\mathsf{T}}\boldsymbol{b} を直接解くのが要点です。条件数は κ(R1)=κ(A)\kappa(R_1)=\kappa(A)(R1=Q1TAR_1=Q_1^{\mathsf{T}}A と AA は同じ特異値をもつ)で、2 乗になりません。実際の計算では QQ を作らず、Householder 鏡映を b\boldsymbol{b} に作用させます。

次の系は、Householder QR の後退安定性(QR 分解の章)を最小二乗問題へ持ち込むものです。uu は丸め誤差の単位、γk\gamma_k は kk 回の演算で積もる誤差の見積もりで、条件 86mnu<186mnu<1 は、これらの見積もりの分母が正になって式が意味をもつための仮定です。結論は「計算した解は、各列と右辺をごくわずか動かした問題の厳密な最小二乗解になっている」という形です。

系 5.2(Householder QR による最小二乗法の後退安定性)✓

A∈Fm×nA\in\mathbb{F}^{m\times n}、b∈Fm\boldsymbol{b}\in\mathbb{F}^m、m≥nm\ge n とし、Householder QR で R^\widehat R を、同じ鏡映を b\boldsymbol{b} に作用させて c^\widehat{\boldsymbol{c}} を計算し、上三角の R^1\widehat R_1(R^\widehat R の最初の nn 行)について R^1x=c^1\widehat R_1\boldsymbol{x}=\widehat{\boldsymbol{c}}_1(c^\widehat{\boldsymbol{c}} の最初の nn 成分)を後退代入で解いて x^\widehat{\boldsymbol{x}} を得たとする。アンダーフロー・オーバーフローが起きず、R^1\widehat R_1 の対角成分が 0 でなく、86mnu<186mnu<1 とする。このとき ΔA\Delta A、Δb\Delta\boldsymbol{b} で

∥Δaj∥≤γ44mn∥aj∥ (j=1,…,n),∥Δb∥≤γ43mn∥b∥\|\Delta\boldsymbol{a}_j\|\le\gamma_{44mn}\|\boldsymbol{a}_j\|\ (j=1,\ldots,n),\qquad\|\Delta\boldsymbol{b}\|\le\gamma_{43mn}\|\boldsymbol{b}\|

を満たし、x^\widehat{\boldsymbol{x}} が ∥(A+ΔA)x−(b+Δb)∥\|(A+\Delta A)\boldsymbol{x}-(\boldsymbol{b}+\Delta\boldsymbol{b})\| を最小にするものがある。

証明(系 5.2)

Householder QR の後退安定性(定理 5.3)[QR 分解] の 1・2 により、ある直交行列 QQ について A+ΔA1=QR^A+\Delta A_1=Q\widehat R、∥Δa1,j∥≤γ43mn∥aj∥\|\Delta\boldsymbol{a}_{1,j}\|\le\gamma_{43mn}\|\boldsymbol{a}_j\|、c^=QT(b+Δb)\widehat{\boldsymbol{c}}=Q^{\mathsf{T}}(\boldsymbol{b}+\Delta\boldsymbol{b})、∥Δb∥≤γ43mn∥b∥\|\Delta\boldsymbol{b}\|\le\gamma_{43mn}\|\boldsymbol{b}\| です(QQ は両方で同じ)。三角方程式の後退誤差(補題 3.1)[Gauss 消去と LU 分解](上三角の後退代入)により (R^1+ΔR)x^=c^1(\widehat R_1+\Delta R)\widehat{\boldsymbol{x}}=\widehat{\boldsymbol{c}}_1、∣ΔR∣≤γn∣R^1∣|\Delta R|\le\gamma_n|\widehat R_1| です。

ΔA=ΔA1+Q(ΔR0)\Delta A=\Delta A_1+Q\binom{\Delta R}{0} とおくと A+ΔA=Q(R^1+ΔR0)A+\Delta A=Q\binom{\widehat R_1+\Delta R}{0} です。第 jj 列について、∥Q(Δrj0)∥=∥Δrj∥≤γn∥r^j∥\|Q\binom{\Delta\boldsymbol{r}_j}{\boldsymbol{0}}\|=\|\Delta\boldsymbol{r}_j\|\le\gamma_n\|\widehat{\boldsymbol{r}}_j\| で、∥r^j∥=∥Qr^j∥=∥aj+Δa1,j∥≤(1+γ43mn)∥aj∥\|\widehat{\boldsymbol{r}}_j\|=\|Q\widehat{\boldsymbol{r}}_j\|=\|\boldsymbol{a}_j+\Delta\boldsymbol{a}_{1,j}\|\le(1+\gamma_{43mn})\|\boldsymbol{a}_j\| なので

∥Δaj∥≤(γ43mn+γn(1+γ43mn))∥aj∥≤γ43mn+n∥aj∥≤γ44mn∥aj∥\|\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\|

です(γₙ の計算規則(補題 3.2)[浮動小数点数と丸め誤差])。最後に、任意の x\boldsymbol{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

で、x=x^\boldsymbol{x}=\widehat{\boldsymbol{x}} で等号です。

次の注意では 2 種類の誤差を使い分けます。後退誤差は「計算結果が、入力をどれだけ動かした問題の答えか」、前進誤差は「計算結果が本当の答えからどれだけ離れているか」です。後退安定でも、問題の感度(条件数)が大きければ前進誤差は大きくなりえます。

注意 5.3

正規方程式の精度. 正規方程式を浮動小数で作ると、fl(ATA)\mathrm{fl}(A^{\mathsf{T}}A) の各成分は内積の丸め誤差 γm∣ai∣T∣aj∣\gamma_m|\boldsymbol{a}_i|^{\mathsf{T}}|\boldsymbol{a}_j| を含み、Cholesky 分解は Cholesky 分解の後ろ向き誤差(定理 4.2)[行列計算の認証と最適化の証明書] の意味で後退安定です。合わせると、計算した解はおおよそ、ATAA^{\mathsf{T}}A に相対 O(mnu)O(mnu) の摂動を加えた(右辺 ATbA^{\mathsf{T}}\boldsymbol{b} の丸めも含む)正規方程式の厳密解とみなせ、線形方程式の摂動定理(定理 6.3)[行列のノルムと線形方程式の条件数] を ATAA^{\mathsf{T}}A に使えば前進誤差は κ(ATA)u=κ(A)2u\kappa(A^{\mathsf{T}}A)u=\kappa(A)^2u の程度になりえます。これは残差が 0 でも起こります。一方 QR による解法の前進誤差は、系 5.2 と次節の 定理 6.2 から κu+κ2utan⁡θ\kappa u+\kappa^2u\tan\theta の程度で、残差が小さい問題では κu\kappa u にとどまります。ATAA^{\mathsf{T}}A に加わる摂動は、小さい ΔA\Delta A による (A+ΔA)T(A+ΔA)−ATA(A+\Delta A)^{\mathsf{T}}(A+\Delta A)-A^{\mathsf{T}}A の形に書けるとは限りません。実際、もし後退安定なら残差 0 の問題の前進誤差は κu\kappa u の程度にとどまるはずなので、κ2u\kappa^2u の誤差が出る例(例 6.3)は、正規方程式が最小二乗問題として後退安定でないことを示しています。

この節では、AA や b\boldsymbol{b} を少し動かしたとき解がどれだけ動くかを調べます。解は A+bA^{+}\boldsymbol{b} なので、A+A^{+} を AA の関数として微分すれば動きの大きさが分かります。そのための準備が最初の補題です。

補題 6.1(擬似逆の微分)✓

A∈Km×nA\in\mathbb{K}^{m\times n} を rank⁡A=n\operatorname{rank}A=n、E∈Km×nE\in\mathbb{K}^{m\times n} とする。ある ε0>0\varepsilon_0>0 があって、∣ε∣<ε0|\varepsilon|<\varepsilon_0 の実数 ε\varepsilon で rank⁡(A+εE)=n\operatorname{rank}(A+\varepsilon E)=n となり、X(ε)=(A+εE)+X(\varepsilon)=(A+\varepsilon E)^{+} の各成分の実部と虚部は ε\varepsilon について何回でも微分可能で

X′(0)=−A+EA++(A∗A)−1E∗(I−AA+).X'(0)=-A^{+}EA^{+}+(A^{*}A)^{-1}E^{*}(I-AA^{+}).
証明(補題 6.1)

M(ε)=(A+εE)∗(A+εE)=A∗A+ε(E∗A+A∗E)+ε2E∗EM(\varepsilon)=(A+\varepsilon E)^{*}(A+\varepsilon E)=A^{*}A+\varepsilon(E^{*}A+A^{*}E)+\varepsilon^2E^{*}E の行列式は ε\varepsilon の(複素係数の)多項式で、ε=0\varepsilon=0 で 0 でありません(定理 3.2 の 3)。多項式は連続なので、ある ε0>0\varepsilon_0>0 について ∣ε∣<ε0|\varepsilon|<\varepsilon_0 で det⁡M(ε)≠0\det M(\varepsilon)\ne0 です。すると 定理 3.2 の 3 から rank⁡(A+εE)=n\operatorname{rank}(A+\varepsilon E)=n、命題 4.3 の 3 から X(ε)=M(ε)−1(A+εE)∗X(\varepsilon)=M(\varepsilon)^{-1}(A+\varepsilon E)^{*} です。余因子行列の基本関係式(命題 5.4)[行列式とその性質] により M(ε)−1=adj⁡M(ε)/det⁡M(ε)M(\varepsilon)^{-1}=\operatorname{adj}M(\varepsilon)/\det M(\varepsilon) の成分は、分母が 0 にならない多項式の商なので、X(ε)X(\varepsilon) の成分は何回でも微分できます。

M(ε)X(ε)=(A+εE)∗M(\varepsilon)X(\varepsilon)=(A+\varepsilon E)^{*} を ε=0\varepsilon=0 で微分すると(積の微分)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−1E∗(I−AA+)−A+EA+X'(0)=M^{-1}\bigl(E^{*}-(E^{*}A+A^{*}E)A^{+}\bigr)=M^{-1}E^{*}(I-AA^{+})-A^{+}EA^{+}

です(M=A∗AM=A^{*}A、M−1A∗=A+M^{-1}A^{*}=A^{+})。

次の定理の θ\theta は第 3 節の図の角です。残差が 0 なら θ=0\theta=0、データがモデルに合わないほど θ\theta は π/2\pi/2 に近づきます。評価の第 1 項 2κ/cos⁡θ2\kappa/\cos\theta は線形方程式と同じ型の増幅、第 2 項 κ2tan⁡θ\kappa^2\tan\theta は残差が大きいときだけ効く増幅です。

定理 6.2(最小二乗問題の感度)✓

rank⁡A=n\operatorname{rank}A=n、x=A+b\boldsymbol{x}=A^{+}\boldsymbol{b}、r=b−Ax\boldsymbol{r}=\boldsymbol{b}-A\boldsymbol{x} とし、θ\theta を sin⁡θ=∥r∥/∥b∥\sin\theta=\|\boldsymbol{r}\|/\|\boldsymbol{b}\|(0≤θ<π/20\le\theta<\pi/2 を仮定する、すなわち Ax≠0A\boldsymbol{x}\ne\boldsymbol{0})で定める。∥E∥≤∥A∥\|E\|\le\|A\|、∥f∥≤∥b∥\|\boldsymbol{f}\|\le\|\boldsymbol{b}\| とし、x(ε)=(A+εE)+(b+εf)\boldsymbol{x}(\varepsilon)=(A+\varepsilon E)^{+}(\boldsymbol{b}+\varepsilon\boldsymbol{f}) とおく。このとき ε→0\varepsilon\to0 で

∥x(ε)−x∥∥x∥≤∣ε∣(2κ(A)cos⁡θ+κ(A)2tan⁡θ)+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).
証明(定理 6.2)

補題 6.1 により x(ε)=X(ε)(b+εf)\boldsymbol{x}(\varepsilon)=X(\varepsilon)(\boldsymbol{b}+\varepsilon\boldsymbol{f}) の各成分の実部・虚部 gg は ∣ε∣<ε0|\varepsilon|<\varepsilon_0 で 2 回連続微分可能です。0<ε1<ε00<\varepsilon_1<\varepsilon_0 を固定すると、g′′g'' は [−ε1,ε1][-\varepsilon_1,\varepsilon_1] で連続なので 最大値・最小値の定理(定理 2.3)[平均値の定理とテイラーの定理] により有界で、Taylor の定理(定理 5.3)[平均値の定理とテイラーの定理](n=1n=1)から ∣g(ε)−g(0)−εg′(0)∣≤Cε2|g(\varepsilon)-g(0)-\varepsilon g'(0)|\le C\varepsilon^2 です。よって x(ε)−x=εx′(0)+O(ε2)\boldsymbol{x}(\varepsilon)-\boldsymbol{x}=\varepsilon\boldsymbol{x}'(0)+O(\varepsilon^2) で、∥x′(0)∥\|\boldsymbol{x}'(0)\| を評価すれば十分です。

補題 6.1 と (I−AA+)b=b−Pb=r(I-AA^{+})\boldsymbol{b}=\boldsymbol{b}-P\boldsymbol{b}=\boldsymbol{r}(命題 4.3 の 4、定理 3.2 の 2)から

x′(0)=X′(0)b+A+f=−A+Ex+(A∗A)−1E∗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}

です。命題 4.4 の ∥A+∥=1/σn\|A^{+}\|=1/\sigma_n、∥(A∗A)−1∥=1/σn2\|(A^{*}A)^{-1}\|=1/\sigma_n^2 と、∥E∗∥=∥E∥≤σ1\|E^{*}\|=\|E\|\le\sigma_1(2 ノルムの公式(命題 4.2)[行列のノルムと線形方程式の条件数])、∥f∥≤∥b∥\|\boldsymbol{f}\|\le\|\boldsymbol{b}\| を使うと

∥x′(0)∥∥x∥≤σ1σn+σ1∥r∥σn2∥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}\|}

です。σ1∥x∥≥∥Ax∥=∥b∥cos⁡θ>0\sigma_1\|\boldsymbol{x}\|\ge\|A\boldsymbol{x}\|=\|\boldsymbol{b}\|\cos\theta>0(第 3 節の Pythagoras の関係)なので、右辺は κ+κ2tan⁡θ+κ/cos⁡θ≤2κ/cos⁡θ+κ2tan⁡θ\kappa+\kappa^2\tan\theta+\kappa/\cos\theta\le2\kappa/\cos\theta+\kappa^2\tan\theta 以下です。

この評価の読み方は次のとおりです。

  • 残差が 0(θ=0\theta=0)なら 2κ2\kappa で、正方の線形方程式と同じ κ\kappa の程度です。
  • 残差が大きいと κ2tan⁡θ\kappa^2\tan\theta が効きます。これは AA の摂動で像の向きが κ\kappa に比例して傾き、それが大きな残差を通して解に κ\kappa 倍で伝わるためで、どんな算法でも避けられない問題そのものの感度です。
  • θ\theta が π/2\pi/2 に近い(データがモデルにほとんど合わない)と 1/cos⁡θ1/\cos\theta が効きます。

後退安定な算法(系 5.2、ε≈γ~mn\varepsilon\approx\widetilde\gamma_{mn})の前進誤差は、この評価から γ~mn(2κ/cos⁡θ+κ2tan⁡θ)\widetilde\gamma_{mn}(2\kappa/\cos\theta+\kappa^2\tan\theta) の程度と見積もれます。

例 6.3(多項式の当てはめ:3 つの解法の精度)

[0,1][0,1] の等間隔 100 点で、単項式基底 1,t,…,tn−11,t,\ldots,t^{n-1} の Vandermonde 行列 AA に当てはめます。真の係数をすべて 1 とし、残差 0 の右辺 b=A1\boldsymbol{b}=A\boldsymbol{1} と、像に直交する成分(乱数ベクトルの射影、mpmath の 50 桁で計算)を加えた残差の大きい右辺を比べます。参照解は浮動小数のデータ (A,b)(A,\boldsymbol{b}) に対する mpmath の 50 桁の qr_solve です。

# Python 3.12.10 / NumPy 2.5.2 / SciPy 1.18.1 / mpmath 1.3.0
# 乱数種 20261006
import numpy as np, mpmath as mp
from scipy.linalg import cho_factor, cho_solve, solve_triangular
mp.mp.dps = 50
rng = np.random.default_rng(20261006)
t = np.linspace(0, 1, 100)
print(" n kappa tan normal QR lstsq")
for n in (4, 8, 12):
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) # 正規方程式
Q, R = np.linalg.qr(A)
x2 = solve_triangular(R, Q.T @ b) # Householder QR
x3 = np.linalg.lstsq(A, b, rcond=None)[0] # SVD
r = b - A @ xr
tan = np.linalg.norm(r) / np.linalg.norm(b - r)
err = [np.linalg.norm(x - xr) / np.linalg.norm(xr)
for x in (x1, x2, x3)]
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 が 10310^3 倍になるごとに、正規方程式の誤差は残差によらずおよそ 10510^5〜10610^6 倍(κ2u\kappa^2u に比例、n=12n=12 で κ2u≈1.6\kappa^2u\approx1.6 に達して桁が残らない)、QR の誤差は残差 0 では κu\kappa u 以下(n=12n=12 で κu≈1.3×10−8\kappa u\approx1.3\times10^{-8} に対し 8.3×10−118.3\times10^{-11})、残差が大きいと n=8→12n=8\to12 で 6×1056\times10^5 倍と κ2\kappa^2 の増え方に移ります。QR と lstsq の誤差はどれも 定理 6.2 の評価 u(2κ/cos⁡θ+κ2tan⁡θ)u(2\kappa/\cos\theta+\kappa^2\tan\theta) の範囲内です(n=12n=12 の残差 0 で lstsq の誤差が QR より大きいのも、κu\kappa u の範囲内のばらつきです)。

7. 階数落ちに近い問題と正則化

Section titled “7. 階数落ちに近い問題と正則化”

σn\sigma_n がほとんど 0 だと、x+=∑i(ui∗b/σi)vi\boldsymbol{x}^{+}=\sum_i(\boldsymbol{u}_i^{*}\boldsymbol{b}/\sigma_i)\boldsymbol{v}_i の小さい σi\sigma_i の項が、b\boldsymbol{b} に含まれる雑音を 1/σi1/\sigma_i 倍に拡大します。そこで、小さい特異値の方向を捨てるか、抑えるかします。

命題 7.1(打ち切り特異値分解の解)✓

1≤k≤r1\le k\le r とし、Ak=∑i≤kσiuivi∗A_k=\sum_{i\le k}\sigma_i\boldsymbol{u}_i\boldsymbol{v}_i^{*} とする。xk:=Ak+b\boldsymbol{x}_k:=A_k^{+}\boldsymbol{b} は ∥Akx−b∥\|A_k\boldsymbol{x}-\boldsymbol{b}\| の最小ノルムの最小二乗解で、

xk=∑i=1kui∗bσivi,∥xk∥2=∑i=1k∣ui∗b∣2σi2,∥b−Axk∥2=∑i=k+1m∣ui∗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.

とくに ∥xk∥\|\boldsymbol{x}_k\| は kk について非減少、残差は非増加である。

証明(命題 7.1)

Σk\Sigma_k を Σ\Sigma の第 k+1k+1 以降の対角成分を 0 にした行列とすると、Ak=UΣkV∗A_k=U\Sigma_kV^{*} は AkA_k の特異値分解です。定理 4.2 を AkA_k に使えば最初の 2 式が出ます(2 番目は vi\boldsymbol{v}_i の正規直交性)。Avi=σiuiA\boldsymbol{v}_i=\sigma_i\boldsymbol{u}_i より Axk=∑i≤k(ui∗b)uiA\boldsymbol{x}_k=\sum_{i\le k}(\boldsymbol{u}_i^{*}\boldsymbol{b})\boldsymbol{u}_i で、UU の列は正規直交基底(ユニタリ行列の特徴づけ(命題 3.2)[スペクトル定理] の 4)なので b=∑i≤m(ui∗b)ui\boldsymbol{b}=\sum_{i\le m}(\boldsymbol{u}_i^{*}\boldsymbol{b})\boldsymbol{u}_i、差のノルムが 3 番目の式です。

AkA_k は Eckart–Young の定理(命題 4.3)[行列の分解と標準形] により階数 kk 以下で AA に最も近い行列で、∥A−Ak∥=σk+1\|A-A_k\|=\sigma_{k+1} です。「σk+1\sigma_{k+1} 以下の違いはデータの誤差の範囲で区別できない」と判断できるとき、AA を AkA_k に置き換えるのが打ち切り特異値分解の考え方です。numpy.linalg.lstsq の rcond は、σi≤rcond⋅σ1\sigma_i\le\mathtt{rcond}\cdot\sigma_1 の特異値を捨てる閾値です。

命題 7.2(Tikhonov 正則化とフィルタ因子)✓

λ>0\lambda>0 とする。∥Ax−b∥2+λ2∥x∥2\|A\boldsymbol{x}-\boldsymbol{b}\|^2+\lambda^2\|\boldsymbol{x}\|^2 を最小にする x\boldsymbol{x} はただ 1 つで、

xλ=(A∗A+λ2I)−1A∗b=∑i=1rσi2σi2+λ2⋅ui∗bσivi.\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λ∥≤∥x+∥\|\boldsymbol{x}_\lambda\|\le\|\boldsymbol{x}^{+}\| かつ ∥xλ∥≤∥b∥/(2λ)\|\boldsymbol{x}_\lambda\|\le\|\boldsymbol{b}\|/(2\lambda)。

証明(命題 7.2)

K=(AλI)∈K(m+n)×nK=\binom{A}{\lambda I}\in\mathbb{K}^{(m+n)\times n}、d=(b0)\boldsymbol{d}=\binom{\boldsymbol{b}}{\boldsymbol{0}} とおくと ∥Kx−d∥2=∥Ax−b∥2+λ2∥x∥2\|K\boldsymbol{x}-\boldsymbol{d}\|^2=\|A\boldsymbol{x}-\boldsymbol{b}\|^2+\lambda^2\|\boldsymbol{x}\|^2 です。Kx=0K\boldsymbol{x}=\boldsymbol{0} なら λx=0\lambda\boldsymbol{x}=\boldsymbol{0} なので rank⁡K=n\operatorname{rank}K=n で、定理 3.2 の 3 により最小解はただ 1 つ、(K∗K)−1K∗d=(A∗A+λ2I)−1A∗b(K^{*}K)^{-1}K^{*}\boldsymbol{d}=(A^{*}A+\lambda^2I)^{-1}A^{*}\boldsymbol{b} です。特異値分解から A∗A+λ2I=V(Σ∗Σ+λ2I)V∗A^{*}A+\lambda^2I=V(\Sigma^{*}\Sigma+\lambda^2I)V^{*}、A∗b=VΣ∗U∗b=∑i≤rσi(ui∗b)viA^{*}\boldsymbol{b}=V\Sigma^{*}U^{*}\boldsymbol{b}=\sum_{i\le r}\sigma_i(\boldsymbol{u}_i^{*}\boldsymbol{b})\boldsymbol{v}_i なので、vi\boldsymbol{v}_i の係数は σi(ui∗b)/(σi2+λ2)\sigma_i(\boldsymbol{u}_i^{*}\boldsymbol{b})/(\sigma_i^2+\lambda^2) で、主張の式です。フィルタ因子 σi2/(σi2+λ2)\sigma_i^2/(\sigma_i^2+\lambda^2) は 11 未満なので ∥xλ∥≤∥x+∥\|\boldsymbol{x}_\lambda\|\le\|\boldsymbol{x}^{+}\|(定理 4.2 の式と比べる)。また σi2+λ2≥2σiλ\sigma_i^2+\lambda^2\ge2\sigma_i\lambda から係数の絶対値は ∣ui∗b∣/(2λ)|\boldsymbol{u}_i^{*}\boldsymbol{b}|/(2\lambda) 以下で、∥xλ∥2≤∑i∣ui∗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) です。

フィルタ因子は σi≫λ\sigma_i\gg\lambda でほぼ 1、σi≪λ\sigma_i\ll\lambda でほぼ σi2/λ2\sigma_i^2/\lambda^2 です。打ち切り特異値分解の「0 か 1 か」のフィルタを滑らかにしたもので、λ\lambda が打ち切りの閾値の役をします。計算では KK に QR 分解を使えば、A∗AA^{*}A を作らずに済みます。

例 7.3(打ち切りと Tikhonov 正則化の比較)

特異値を 1,10−1,…,10−71,10^{-1},\ldots,10^{-7} と 10−10,10−1210^{-10},10^{-12} にした 30×1030\times10 の行列を作り、真の解を上位 8 個の右特異ベクトルの和(ノルム 8≈2.83\sqrt8\approx2.83)、右辺に大きさ 10−810^{-8} の雑音を加えます。lstsq の rcond と Tikhonov の λ\lambda を変え、解のノルム・残差・真の解との誤差、および 命題 7.1・命題 7.2 の式で構成に使った U,Σ,VU,\Sigma,V から直接計算した解との相対差(formula)を並べます。

# Python 3.12.10 / NumPy 2.5.2 /乱数種 20261006
import numpy as np
rng = np.random.default_rng(20261006)
m, n = 30, 10
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] # 特異値
A = U @ np.diag(s) @ V.T
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−1210^{-10},10^{-12} の方向を捨てる rcond=1e-9 では誤差が 0.10.1(雑音 10−810^{-8} を σ8=10−7\sigma_8=10^{-7} で割った大きさ)まで下がり、残差はほとんど増えません。Tikhonov では λ=10−8\lambda=10^{-8} 付近が最もよく、λ\lambda を大きくしすぎると(10−610^{-6})上位の方向まで縮められて残差と誤差が増えます。

検算. (a) 既知値: 特異値分解を構成から知っているので、命題 7.1・命題 7.2 の式の値(formula 列の比較相手)が計算できます。(b) 別手法: lstsq(特異値分解)と、拡大行列 KK に対する lstsq の結果が式の値と一致します。(c) 次数: 一致の度合いは u/σmin⁡u/\sigma_{\min}(残した最小の特異値)の程度で、捨てる特異値を増やすと 10−3→4×10−7→2×10−1010^{-3}\to4\times10^{-7}\to2\times10^{-10} と改善します。浮動小数で AA を作った時点で特異値が絶対 u∥A∥u\|A\| 程度動くので、σ=10−12\sigma=10^{-12} の方向は相対 10−410^{-4} の不確かさをもつ、という見積もりと合っています。

演習 8.1易

3 点 (t,y)=(0,1),(1,2),(2,2)(t,y)=(0,1),(1,2),(2,2) に直線 y=c0+c1ty=c_0+c_1t を最小二乗で当てはめ、係数と残差を求めよ。残差が AA の像に直交することを確かめよ。

解答

A=(101112)A=\begin{pmatrix}1&0\\1&1\\1&2\end{pmatrix}、b=(1,2,2)T\boldsymbol{b}=(1,2,2)^{\mathsf{T}} で、ATA=(3335)A^{\mathsf{T}}A=\begin{pmatrix}3&3\\3&5\end{pmatrix}、ATb=(5,6)TA^{\mathsf{T}}\boldsymbol{b}=(5,6)^{\mathsf{T}}。正規方程式(定理 3.2)を解いて c0=7/6c_0=7/6、c1=1/2c_1=1/2。残差は r=(−1/6,1/3,−1/6)T\boldsymbol{r}=(-1/6,1/3,-1/6)^{\mathsf{T}} で、ATr=(0,0)TA^{\mathsf{T}}\boldsymbol{r}=(0,0)^{\mathsf{T}}、すなわち両方の列に直交します。∥r∥2=1/6\|\boldsymbol{r}\|^2=1/6。

演習 8.2標準

a∈Km\boldsymbol{a}\in\mathbb{K}^m、c∈Kn\boldsymbol{c}\in\mathbb{K}^n を 0 でないベクトルとし、A=ac∗A=\boldsymbol{a}\boldsymbol{c}^{*} とする。A+=ca∗/(∥a∥2∥c∥2)A^{+}=\boldsymbol{c}\boldsymbol{a}^{*}/(\|\boldsymbol{a}\|^2\|\boldsymbol{c}\|^2) であることを示せ。

解答

X=ca∗/(∥a∥2∥c∥2)X=\boldsymbol{c}\boldsymbol{a}^{*}/(\|\boldsymbol{a}\|^2\|\boldsymbol{c}\|^2) とおくと、AX=aa∗/∥a∥2AX=\boldsymbol{a}\boldsymbol{a}^{*}/\|\boldsymbol{a}\|^2、XA=cc∗/∥c∥2XA=\boldsymbol{c}\boldsymbol{c}^{*}/\|\boldsymbol{c}\|^2 はエルミートで、AXA=(aa∗/∥a∥2)ac∗=AAXA=(\boldsymbol{a}\boldsymbol{a}^{*}/\|\boldsymbol{a}\|^2)\boldsymbol{a}\boldsymbol{c}^{*}=A、XAX=(cc∗/∥c∥2)X=XXAX=(\boldsymbol{c}\boldsymbol{c}^{*}/\|\boldsymbol{c}\|^2)X=X です。命題 4.3 の 2 の一意性から X=A+X=A^{+} です。

演習 8.3難

0<δ<10<\delta<1、A=(100δ00)A=\begin{pmatrix}1&0\\0&\delta\\0&0\end{pmatrix}、b=(1,0,1)T\boldsymbol{b}=(1,0,1)^{\mathsf{T}} とし、AA の (3,2)(3,2) 成分だけを ε\varepsilon に変えた A+εEA+\varepsilon E(∥E∥=1=∥A∥\|E\|=1=\|A\|)の最小二乗解を求めよ。定理 6.2 の κ2tan⁡θ\kappa^2\tan\theta の項が改善できないことを確かめよ。

解答

x=(1,0)T\boldsymbol{x}=(1,0)^{\mathsf{T}}、r=(0,0,1)T\boldsymbol{r}=(0,0,1)^{\mathsf{T}}、∥Ax∥=∥r∥=1\|A\boldsymbol{x}\|=\|\boldsymbol{r}\|=1 なので tan⁡θ=1\tan\theta=1、κ=1/δ\kappa=1/\delta です。摂動後の正規方程式は対角で、第 2 成分は (δ⋅0+ε⋅1)/(δ2+ε2)(\delta\cdot0+\varepsilon\cdot1)/(\delta^2+\varepsilon^2)、第 1 成分は 11 のままです。よって

∥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)

で、ε\varepsilon の 1 次の係数は κ2tan⁡θ\kappa^2\tan\theta に一致します。評価の 2κ/cos⁡θ2\kappa/\cos\theta の部分を除いて、κ2tan⁡θ\kappa^2\tan\theta の項は定数倍も含めて改善できません。

  • 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.

このテーマの 100 本ノック(100 問)

執筆: Claude Code(Opus 5.5)、Claude Code(Sonnet 5.5)・監査 2 回(Claude Code)・最終 2026-10-12

この記事の誤りを報告する ・運営: 夢現技研合同会社 ・料金 ・利用条件 ・特定商取引法に基づく表記

© 2026 夢現技研合同会社 ・コード例は MIT ライセンスです。