셔먼-모리슨-우드버리 공식(Sherman–Morrison-Woodbury formula)

written by jjycjn   2017. 6. 20. 04:39

지난 글에서는 주어진 행렬 A의 행렬식과 역행렬을 알고 있을 때, 이 행렬을 계수(rank)가 1인 행렬 unvnT을 이용하여 갱신한 새로운 행렬 A+unvnT의 행렬식을 구하는 방법에 대하여 알아보았다. 이번 글에서는 이 새로운 행렬의 역행렬을 구하는 방법을 제공하는 셔먼-모리슨 공식(Sherman–Morrison formula)에 대해서 알아보도록 하자.


셔먼-모리슨 공식(Sherman–Morrison formula)

1949년 셔먼(Jack Sherman)과 모리슨(Winifred J. Morrison)이 발표한 이 공식은 주어진 행렬 A의 역행렬을 알고 있을때, A+uvT의 역행렬을 비교적 빠르게 구할 수 있는 방법을 제공한다.


    정리. 셔먼-모리슨 공식(Sherman–Morrison formula)

    ARn×n가 가역행렬(invertible matrix)이고, u,vRn가 열벡터라 하자. 그러면 A+uvT의 역행렬이 존재할 필요충분조건은 1+vTA1u0인 것이다.

    나아가 A+uvT의 역행렬이 존재한다면 다음 공식이 성립한다.

    ()(A+uvT)1=A1A1uvTA11+vTA1u.


    증명. 먼저 1+vTA1u0이라 가정하자. (이 경우, 사실 행렬식 보조정리(matrix determinant lemma)에 의해 행렬 A+uvT의 역행렬이 존재한다는 사실은 바로 얻을 수 있지만, 역행렬이 실제로 어떻게 구해지는지는 알 수 없다.) 그러면 식 ()가 잘 정의된다. 이제 X=(A+uvT)이고 Y를 식 ()의 오른변으로 정의하자. 그러면 1+vTA1u가 스칼라(scalar)라는 사실로부터

    XY=(A+uvT)(A1A1uvTA11+vTA1u)=AA1+uvTA1AA1uvTA1+uvTA1uvTA11+vTA1u=I+uvTA1uvTA1+uvTA1uvTA11+vTA1u=I+uvTA1u(1+vTA1u)vTA11+vTA1u=I+uvTA1uvTA1=I

    를 얻는다. 마찬가지 방법으로

    YX=(A1A1uvTA11+vTA1u)(A+uvT)=I.

    따라서 XY=YX=I이므로 X=A+uvT의 역행렬이 존재함을 알 수 있다.


    이제 반대로 A+uvT의 역행렬이 존재한다고 가정하자. 그러면 A+uvT의 행렬식이 0이 아님을 알수 있다. 이제 행렬식 보조정리에 의해

    0det(A+uvT)=det(A)(1+vTA1u)

    이므로 1+vTA1u0를 바로 얻는다.


    우드버리 공식(Woodbury formula)

    셔먼-모리슨 공식은 우드버리 공식의 특수한 경우로 볼 수 있는데, 이 공식은 1950년 우드버리(Max A. Woodbury)에 의해 처음으로 발표되었다. 셔먼-모리슨 공식은 주어진 행렬 A를 계수가 1인 행렬로 갱신했을 경우를 다루었지만, 더 나아가 우드버리 공식은 주어진 행렬 A를 계수가 1kn인 행렬로 갱신했을 경우를 다룬다.


    먼저 다음의 사실을 증명 없이 받아들이기로 하자.

    1. ARn×n, BRn×k, CRk×n, DRk×k라 하자. 만약 A의 역행렬이 존재하는 경우,
      det(ABCD)=det(A)det(DCA1B). 만약 D의 역행렬이 존재하는 경우,
      det(ABCD)=det(D)det(ABD1C).


    정리. 우드버리 공식(Woodbury formula)

    ARn×nCRk×k 가역행렬(invertible matrix)이고, U,VRn×k라 하자. 그러면 A+UCVT의 역행렬이 존재할 필요충분조건은 C1+VTA1U의 역행렬이 존재하는 것이다.

    나아가 다음 공식이 성립한다.

    ()(A+UCVT)1=A1A1U(C1+VTA1U)1VTA1.


    증명. 셔먼-모리슨 공식을 증명했을 때와 비슷하게 직접 계산을 통해 위 공식이 성립함을 보일 수도 있지만, 이번에는 다른 방법을 이용하여 공식 ()을 증명해 보도록 하자. 먼저 아래와 같이 블록행렬(block matrix)들로 이루어진 방정식을 생각해 보자.

    [AUVTC1][XY]=[IO].

    이 때, XRn×n이고 YRk×n이다. 또한 위 방정식의 왼변에 있는 블록행렬의 행렬식이 0이 아니므로 위 방정식의 해가 (유일하게) 존재한다는 사실을 알 수 있다. 이제 위 방정식을 전개하면,

    AX+UY=I,VTXC1Y=O.

    여기서 두번째 식을 먼저 풀면, Y=CVTX를 얻고 이를 첫번째 식에 대입하면, (A+UCVT)X=I를 얻는다. 따라서 X가 우리가 원하는 A+UCVT의 역행렬이 됨을 알 수 있다.


    이제 X를 다른 방법으로 구해보자. 이번에는 첫번째 식을 먼저 풀어 X=A1(IUY)를 얻는다. 이제 이를 두번째 식에 대입하고 Y에 대하여 정리하면, Y=(C1+VTA1U)1VTA1를 얻는다. 이제 마지막으로 이 Y 값을 첫번째 식에 다시 대입하고 X에 대하여 정리하면,

    X=A1A1U(C1+VTA1U)1VTA1

    를 얻는다. 따라서 방정식의 해의 유일성에 의해,

    (A+UCVT)1=X=A1A1U(C1+VTA1U)1VTA1.

    따라서 공식 ()가 성립한다.


    참고1. 우드버리 공식의 특수한 경우로, k=1이고 C=[1]이라고 가정하면, 셔먼-모리슨 공식을 얻을 수 있다. 이과 같은 이유로 셔먼-모리슨 공식과 우드버리 공식을 합쳐서 셔먼-모리슨-우드버리 공식(Sherman-Morrison-Woodbury formula), 또는 간단히 역행렬 보조정리(matrix inversion lemma)라고도 한다.


    참고2. 우드버리 공식이 성립하기 위해서는 A1의 존재성과 함께 C1(C1+VTA1U)1의 존재성이 보장되어야 한다. 하지만 행렬 CC1+VTA1U의 크기가 모두 k×k이므로, 만약 k값이 작다면 이 두 행렬의 역행렬의 존재성을 확인하는 것이 (A+UCVT)1의 역행렬의 존재성을 직접 확인하는 것보다 계산적으로 이득임을 알 수 있다.

      ::  
    • 공유하기  ::