高校国語788355 views
中学数学623778 views
小学算数1200472 views
MathPython497416 views
世界の国564562 views
高校物理160216 views
高校化学2924523 views
高校倫理1440172 views
高校生物551780 views
りんご209693 views
Help
Tools
NewsSpreadsheetCalendarBookkeepingMarkdown TablesLanguage Model NewsSlidesTier ListPen ToolIllustrationCrayonWatercolorPixel ArtASCII ArtPerspectiveEndless StairsGraphMind MapER DiagramFamily TreeMemeCurved TextImage EditorMosaicRetro FilterPencil SketchSwirl EffectLine ArtOCR/HighlighterMakeup EditorFaviconVideo TrimmerScrolling VideoVideo TitleColor PickerColor ExtractorBonfireFireworksCherry BlossomWater RippleWater SplashBreaking GlassGlass TextureFabric TextureWood GrainMarble TextureBrick Wall TextureMetal TextureWashi Paper TextureCardboard TextureCSS ButtonIcon MakerBar ChartGrouped Bar ChartStacked Bar ChartPie ChartLine ChartArea ChartStacked Area ChartScatter Plot3D Bar Chart3D Pie ChartBar Chart RaceBubble ChartPopulation PyramidPictogramEarningsCandlestick ChartInvestment RiskMortgage SimulatorCalculatorMatrix CalculatorFunction GraphPolynomial ExpansionVenn DiagramField VisualizerRubik's Cube Group TheoryTraveling SalesmanVoronoi and DelaunayFractalColumn ArithmeticDraw Math FiguresArithmetic AnimationArithmetic Word ProblemsCounting with Tree DiagramsCube NetsRolling DiceCross SectionsMotion PathMechanicsWavesElectromagnetic WavesCapacitorsLight and LensesThermodynamicsHow Semiconductors WorkMolecular StructuresAtomic OrbitalsElectrochemical CellsChemical EquilibriumCrystal LatticesBuffer pHOrganic Reaction MapPeriodic TableComplex IonsDNA Double HelixCell DivisionMembrane ChannelsNerve ImpulseMuscle ContractionHormones and HomeostasisRock ClassificationWeatherConstellationsSolar and Lunar Eclipses3D ModelingFloor PlanSeismic StructuresIntersection TurnMaglevCooking AnimationOrigamiLive Viewer CountGeoJSON MapRailway MapPopulation MapCrime MapLand Price MapSchool MapShrine and Castle MapHouse of Representatives MapWord MapSolitaireReversiHakoiri MusumeChessHamburgerRippleSlide Puzzle MakerNeon PinballNovel MakerJapanese Typing PracticePiano Score EditorMusic TheoryShogi StrategyPiano Rhythm Game

English

逆行列を持たない行列の逆|ムーア・ペンローズ疑似逆行列の作り方と使い方

逆行列を持たない行列にも、逆行列のかわりを務める行列があります。ムーア・ペンローズの疑似逆行列です。

正方でなくても、階数が落ちていても定まります。しかも「解けない連立方程式にいちばん近い答」と「解が無数にあるときの代表」を、同じ 1 つの行列が与えます。

書き方は です。 が正則なら になるので、逆行列の拡張になっています。

HTML
CSS
JavaScript
<svg viewBox="0 0 460 220" width="100%" style="max-width:460px;display:block;margin:0 auto">
	<text x="115" y="22" font-size="11" fill="#9a9a9a" text-anchor="middle">解けないとき</text>
	<text x="345" y="22" font-size="11" fill="#9a9a9a" text-anchor="middle">解が無数にあるとき</text>
	<line x1="30" y1="140" x2="205" y2="140" stroke="#1b81e0" stroke-width="1"></line>
	<text x="40" y="158" font-size="11" fill="#1b81e0">列空間</text>
	<circle cx="140" cy="70" r="3.5" fill="#1f1f1f"></circle>
	<text x="148" y="68" font-size="12" fill="#1f1f1f">b</text>
	<line x1="140" y1="70" x2="140" y2="140" stroke="#9a9a9a" stroke-width="1" stroke-dasharray="3 3"></line>
	<circle cx="140" cy="140" r="3.5" fill="#1b81e0"></circle>
	<text x="148" y="136" font-size="11" fill="#1b81e0">射影</text>
	<text x="115" y="185" font-size="11" fill="#9a9a9a" text-anchor="middle">いちばん近い点へ落とす</text>
	<line x1="255" y1="60" x2="425" y2="160" stroke="#1b81e0" stroke-width="1"></line>
	<text x="392" y="80" font-size="11" fill="#1b81e0">解の集合</text>
	<circle cx="290" cy="150" r="3.5" fill="#1f1f1f"></circle>
	<text x="266" y="164" font-size="12" fill="#1f1f1f">原点</text>
	<line x1="290" y1="150" x2="322" y2="99" stroke="#9a9a9a" stroke-width="1" stroke-dasharray="3 3"></line>
	<circle cx="322" cy="99" r="3.5" fill="#1b81e0"></circle>
	<text x="330" y="96" font-size="11" fill="#1b81e0">ノルム最小の解</text>
	<text x="345" y="185" font-size="11" fill="#9a9a9a" text-anchor="middle">原点にいちばん近い解を選ぶ</text>
	<text x="230" y="210" font-size="11" fill="#9a9a9a" text-anchor="middle">この 2 つを同時に果たすのが疑似逆行列です</text>
</svg>

ムーア・ペンローズの 4 条件

行列 に対して、 行列 が次の 4 つを満たすとき、 の疑似逆行列といいます。

前の 2 つは「逆行列らしさ」を、後ろの 2 つは「対称性」を要求しています。複素行列なら転置を共役転置に置き換えます。

最初の条件だけを満たす行列は一般化逆行列と呼ばれ、無数に存在します。4 つすべてを課すと、その中から 1 つに絞られます。

条件を満たす行列は 1 つしかない

がともに 4 条件を満たすとします。条件を順に使うと、両者が一致することを示せます。

から出発し、 の対称性を使って書き換えていくと に、さらに同じ手順を繰り返すと に行き着きます。

だから という記号で呼べます。存在のほうは、次に見る特異値分解による構成が示します。

正則なら逆行列に戻る

が正則なら、 が 4 条件をすべて満たします。 も明らかで、 はどちらも単位行列なので対称です。

一意性と合わせれば です。疑似逆行列は逆行列と別物ではなく、逆行列が定義できないところまで広げたものになります。

特異値分解による構成

の特異値分解を とします。 は直交行列で、 の対角には特異値が大きい順に並びます。

疑似逆行列は次の形で書けます。

を転置してから、 でない対角成分を逆数に置き換えたものです。 はそのまま にします。

HTML
CSS
JavaScript
<svg viewBox="0 0 460 190" width="100%" style="max-width:460px;display:block;margin:0 auto">
	<rect x="60" y="45" width="130" height="100" fill="none" stroke="#c8c8c8" stroke-width="1"></rect>
	<text x="125" y="35" font-size="11" fill="#9a9a9a" text-anchor="middle">Σ</text>
	<text x="90" y="75" font-size="13" fill="#1b81e0" text-anchor="middle">3</text>
	<text x="125" y="105" font-size="13" fill="#1b81e0" text-anchor="middle">2</text>
	<text x="160" y="135" font-size="13" fill="#9a9a9a" text-anchor="middle">0</text>
	<text x="125" y="75" font-size="13" fill="#9a9a9a" text-anchor="middle">0</text>
	<text x="160" y="75" font-size="13" fill="#9a9a9a" text-anchor="middle">0</text>
	<text x="90" y="105" font-size="13" fill="#9a9a9a" text-anchor="middle">0</text>
	<text x="160" y="105" font-size="13" fill="#9a9a9a" text-anchor="middle">0</text>
	<text x="90" y="135" font-size="13" fill="#9a9a9a" text-anchor="middle">0</text>
	<text x="125" y="135" font-size="13" fill="#9a9a9a" text-anchor="middle">0</text>
	<line x1="205" y1="95" x2="255" y2="95" stroke="#9a9a9a" stroke-width="1"></line>
	<polygon points="258,95 249,91 249,99" fill="#9a9a9a"></polygon>
	<text x="231" y="86" font-size="11" fill="#9a9a9a" text-anchor="middle">逆数</text>
	<rect x="270" y="45" width="130" height="100" fill="none" stroke="#c8c8c8" stroke-width="1"></rect>
	<text x="335" y="35" font-size="11" fill="#9a9a9a" text-anchor="middle">Σ+</text>
	<text x="300" y="75" font-size="13" fill="#1b81e0" text-anchor="middle">1/3</text>
	<text x="335" y="105" font-size="13" fill="#1b81e0" text-anchor="middle">1/2</text>
	<text x="370" y="135" font-size="13" fill="#9a9a9a" text-anchor="middle">0</text>
	<text x="335" y="75" font-size="13" fill="#9a9a9a" text-anchor="middle">0</text>
	<text x="370" y="75" font-size="13" fill="#9a9a9a" text-anchor="middle">0</text>
	<text x="300" y="105" font-size="13" fill="#9a9a9a" text-anchor="middle">0</text>
	<text x="370" y="105" font-size="13" fill="#9a9a9a" text-anchor="middle">0</text>
	<text x="300" y="135" font-size="13" fill="#9a9a9a" text-anchor="middle">0</text>
	<text x="335" y="135" font-size="13" fill="#9a9a9a" text-anchor="middle">0</text>
	<text x="230" y="175" font-size="11" fill="#9a9a9a" text-anchor="middle">0 は逆数にせず、0 のまま残します</text>
</svg>

例:階数 1 の行列で作る

すべての成分が の行列で試します。

と置くと と書けます。特異値は です。

でない特異値だけ逆数にするので、 になります。

確かめます。 は成分がすべて の行列です。

対称であり、これに を掛けると に戻ります。 も成り立ちます。

は正則でないので逆行列を持ちませんが、疑似逆行列はこのとおり定まります。

列が一次独立なら左逆になる

の列が一次独立なら が正則で、疑似逆行列を明示的に書けます。

このとき が成り立ち、左から掛けると単位行列になります。特異値分解を経由せずに求められる、実用上よく使う形です。

ただし のほうは単位行列になりません。縦長の行列に右逆は存在しないからです。

例:縦長の行列で左逆を作る

3 行 2 列の行列で計算します。

を作ると 2 次の行列になります。

行列式は なので、逆行列がすぐ求まります。

これに を掛けます。

を計算すると対角成分だけが で、 を掛けて単位行列になります。

行が一次独立なら右逆になる

横長の行列では立場が入れ替わります。行が一次独立なら が正則で、次の形になります。

こちらは を満たす右逆です。連立方程式でいえば、方程式より未知数が多く、解が無数にある場合にあたります。

積は 2 通りの直交射影になる

は、どちらも対称でべき等です。つまり直交射影を表します。

の列空間への射影、 は行空間への射影です。 は核への射影になります。

逆行列なら両方とも単位行列になるところが、階数が落ちると射影に化ける、と読めます。ここに疑似逆行列の幾何的な意味が集まっています。

例:射影行列になることを確かめる

さきほどの縦長の行列で を計算します。

対称であることは見ればわかります。2 乗しても同じ行列になり、べき等性も確かめられます。

トレースは です。射影行列のトレースは像の次元に等しいので、 の列空間が 2 次元であることと合っています。

次の単位行列にはなりません。 の列が張るのは 3 次元空間の中の平面だけだからです。

最小二乗解を与える

に解がないとき、 を最小にする を探します。この最小値を与えるのが です。

理由は射影で説明できます。 が動ける範囲は の列空間で、そこで にいちばん近い点は射影 です。

その点を実現する のひとつが になります。正規方程式 を解くのと同じ答です。

例:直線をあてはめる

3 点 に直線 をあてはめます。係数行列と右辺は次のとおりです。

3 点は一直線に乗らないので、この連立方程式に解はありません。そこで を計算します。

列が一次独立なので左逆の公式が使えます。必要な量を並べます。

の行列式は です。逆行列を掛けて係数が求まります。

あてはめた直線は です。3 点での予測値は になります。

残差は で、2 乗和は です。ほかのどんな直線を引いても、この値より小さくはなりません。

解が複数あるならノルム最小のものを選ぶ

解が無数にあるとき、 はその中でノルムが最小のものを返します。

一般の解は と書けます。第 2 項は核の中を動く部分で、 とは直交します。

直交しているので、ノルムの 2 乗は 2 つの部分の和になります。第 2 項を にしたときが最小で、それが です。

例:横長の行列で最小ノルム解を出す

方程式 を考えます。行列で書けば です。

なので、右逆の公式から になります。

したがって です。ノルムは で、およそ になります。

も同じ方程式を満たしますが、ノルムはどちらも です。 が最小であることが見て取れます。

積を入れ替える公式は成り立たない

逆行列には という公式があります。疑似逆行列では、これが一般には成り立ちません。

の列が正規直交である、 の行が正規直交である、といった条件がつけば成り立ちます。無条件に使ってよい式ではありません。

例:食い違う組を作る

と、次の で試します。

積は です。行が一次独立なので右逆の公式が使え、 になります。

一方 で、 は対称なべき等行列なので です。

とは 倍だけ違います。順序を入れ替える公式が破れる、いちばん小さい例です。

数値計算では小さい特異値を切る

特異値が に近いと、その逆数が非常に大きくなります。もとのデータのわずかな誤差が、答では大きく増幅されます。

そこで実際の計算では、しきい値を決めて、それより小さい特異値を とみなします。切断特異値分解と呼ばれる扱いです。

どこで切るかは問題しだいです。厳密には階数が落ちていなくても、数値的には落ちていると見なしたほうがよい場面が多くあります。

他の話題とのつながり

特異値分解そのものの構成は特異値分解の記事にあります。疑似逆行列は、その分解を使ういちばん素直な応用のひとつです。

最小二乗法を射影の立場から述べたものが直交補空間と直交分解定理の記事です。数値的には正規方程式より QR 分解のほうが有利で、そちらは QR 分解の記事で扱っています。

の性質は射影行列とべき等行列の記事とつながります。統計では、回帰係数の推定式が疑似逆行列そのものです。

よくある誤り

が単位行列になるのは、列が一次独立なときだけです。一般には射影行列にとどまります
は逆行列の公式をまねただけの式で、一般には誤りです
条件 だけを満たす行列は一般化逆行列と呼ばれ、無数にあります。一意なのは 4 条件をすべて課したときです
正則な行列にも疑似逆行列はあります。逆行列と一致するので、別の行列を考える必要はありません
最小二乗解が一通りとは限りません。複数あるとき が返すのは、その中でノルムが最小のものです
特異値が のところまで逆数にしてはいけません。 のまま残すのが定義です
数値計算では、小さすぎる特異値をそのまま逆数にすると誤差が暴れます。しきい値で切る扱いが要ります
疑似逆行列は連続に変化しません。階数が変わる境目で値が飛ぶので、近い行列どうしでも は近いとは限りません

参考文献

Moore–Penrose inverse - Wikipedia
Pseudoinverse - Wikipedia(ドイツ語)
Pseudo-inverse - Wikipédia(フランス語)
伪逆矩阵 - 维基百科(中国語)
正方でなくても階数が落ちていても定まる、逆行列の拡張が疑似逆行列です。特異値の逆数を取って作る仕組み、積が列空間と行空間への直交射影になること、直線あてはめの計算、逆行列の公式をまねた式が成り立たない反例、小さい特異値を切る数値計算上の扱いを、計算例をつけて示します。