재귀 최소제곱

오류 제보
수치해석 통계 마지막 수정: 2026-10-17 04:42:35

○ 공개 검수 대기 AI 보조 작성 표시 기준 보기

1. 개요

재귀 최소제곱
Recursive Least Squares (RLS)
푸는 것데이터가 하나씩 들어오는 선형 최소제곱의 온라인 갱신
핵심 도구셔먼-모리슨 공식 (랭크-1 역행렬 갱신)
계산량샘플당 O(n²), 메모리 O(n²)
조절 손잡이망각 인자 λ, 초기 공분산 P0 = δ−1I
친척칼만 필터 (상수 상태판) · LMS (기울기 근사판)

데이터가 한 줄 들어올 때마다 정규방정식을 처음부터 다시 푸는 건 현생 낭비다. 어제의 답에 오늘의 오차만 더하면 된다.

재귀 최소제곱(recursive least squares, RLS)은 선형 모형 yk=xkTθ+vky_k = \mathbf x_k^{\mathsf T}\boldsymbol\theta + v_k 의 최소자승 추정치 θ^\hat{\boldsymbol\theta} 를, 새 관측 (xk,yk)(\mathbf x_k, y_k) 가 들어올 때마다 이전 추정치에 예측 오차 × 이득을 더하는 방식으로 갱신하는 알고리즘이다. 정규방정식 행렬에 랭크-1 항이 더해질 뿐이라는 점을 셔먼-모리슨 공식으로 이용해, 매 샘플 O(n3)O(n^3) 대신 O(n2)O(n^2) 으로 배치 최소제곱과 같은 답을 낸다.

여기에 오래된 데이터를 지수적으로 잊는 망각 인자 λ\lambda 를 넣으면, 천천히 변하는 파라미터를 실시간으로 따라가는 추정기가 된다. 적응 필터·에코 제거·온라인 시스템 식별·자기 동조 제어기의 표준 부품이다. 현대적 형태는 플래킷(Plackett, 1950)의 정리로 거슬러 올라가며, 사실상 칼만 필터의 가장 단순한 특수형이다.

2. 유도

망각 인자 0<λ≤10<\lambda\le1 을 넣은 가중 비용

Jk(θ)=∑i=1kλk−i (yi−xiTθ)2J_k(\boldsymbol\theta) = \sum_{i=1}^{k} \lambda^{k-i}\,\bigl(y_i - \mathbf x_i^{\mathsf T}\boldsymbol\theta\bigr)^2

을 최소화하는 해는 Rkθ^k=rkR_k \hat{\boldsymbol\theta}_k = \mathbf r_k, 여기서 Rk=λRk−1+xkxkTR_k = \lambda R_{k-1} + \mathbf x_k\mathbf x_k^{\mathsf T}, rk=λrk−1+xkyk\mathbf r_k = \lambda\mathbf r_{k-1} + \mathbf x_k y_k 이다. Pk=Rk−1P_k = R_k^{-1} 로 두고 셔먼-모리슨을 적용하면 역행렬을 다시 구할 필요 없이

gk=Pk−1xkλ+xkTPk−1xk,\mathbf g_k = \frac{P_{k-1}\mathbf x_k}{\lambda + \mathbf x_k^{\mathsf T} P_{k-1}\mathbf x_k}, θ^k=θ^k−1+gk(yk−xkTθ^k−1),\hat{\boldsymbol\theta}_k = \hat{\boldsymbol\theta}_{k-1} + \mathbf g_k\bigl(y_k - \mathbf x_k^{\mathsf T}\hat{\boldsymbol\theta}_{k-1}\bigr), Pk=1λ(Pk−1−gkxkTPk−1)P_k = \frac{1}{\lambda}\bigl(P_{k-1} - \mathbf g_k \mathbf x_k^{\mathsf T} P_{k-1}\bigr)

의 세 줄이 나온다. 괄호 안 ek=yk−xkTθ^k−1e_k = y_k - \mathbf x_k^{\mathsf T}\hat{\boldsymbol\theta}_{k-1} 은 선험 예측 오차(새 데이터를 보기 전 추정치로 예측한 오차)이고, 이득 gk\mathbf g_k 는 “지금 불확실한 방향일수록 크게 고친다”는 뜻을 담는다. 분모가 스칼라라 나눗셈 한 번이면 되고, 행렬-벡터 곱과 외적만 남아 샘플당 O(n2)O(n^2) 이다.

2.1. 초기화는 숨은 정규화다

R0R_0 이 없으므로 보통 P0=δ−1IP_0 = \delta^{-1} I (δ\delta 작음), θ^0=0\hat{\boldsymbol\theta}_0 = \mathbf 0 으로 시작한다. 이것은 아무 의미 없는 시작값이 아니라, 비용에 λkδ∥θ∥2\lambda^k\delta\lVert\boldsymbol\theta\rVert^2 를 더한 것과 정확히 같다. 즉 RLS 는 처음부터 능형회귀를 하고 있고, 그 벌점이 λk\lambda^k 로 사라져 갈 뿐이다.

검산. 3차원 파라미터, 잡음 표준편차 0.1, λ=1\lambda=1 로 처음 20개 샘플만 넣은 뒤 배치 최소제곱 해와의 최대 차이를 쟀다.

δ\delta20 샘플 후 배치 LS 와의 차이
10−610^{-6}6×10−86\times10^{-8}
10−210^{-2}6×10−46\times10^{-4}
110.0560.056
1001000.820.82

δ\delta 를 크게(= P0P_0 를 작게) 잡으면 “처음엔 0 이 정답일 것”이라는 사전 믿음이 강해져 초반 추정이 0 쪽으로 끌린다. 500 샘플을 다 넣으면 δ=10−6\delta=10^{-6} 에서 배치 해와의 차이는 2×10−92\times10^{-9} 까지 줄었다. 반대로 δ\delta 를 극단적으로 작게 잡으면 첫 몇 스텝의 PP 가 거대해 반올림 오차가 커지니, “데이터 규모 대비 아주 약한 사전”을 고르는 게 요령이다.

3. 망각 인자와 추적

λ<1\lambda<1 이면 ii 스텝 전 데이터의 가중치가 λi\lambda^{i} 라, 유효 기억 길이는 대략 1/(1−λ)1/(1-\lambda) 샘플이다. 파라미터가 시점 250 에서 갑자기 바뀌는 문제(잡음 0.1)로 추적 성능을 쟀다. “회복”은 추정 오차 노름이 0.05 아래로 10 샘플 연속 유지된 첫 시점이다.

λ\lambda기억 길이점프 후 회복정상상태 오차 (샘플 400~500 평균)
1∞못 함0.99
0.99100250 샘플 안에 못 함0.23
0.952081 샘플0.028
0.91037 샘플0.040

λ=1\lambda=1 은 과거 250 개와 새 데이터를 똑같이 믿어 영원히 두 파라미터의 중간쯤에 머문다. λ\lambda 를 줄이면 빨리 따라가지만 적은 샘플로 추정하는 셈이라 정상상태 잡음이 커진다(λ=0.9\lambda=0.9 가 0.950.95 보다 오차가 크다). 추적 속도와 잡음 민감도의 교환이고, 최적 λ\lambda 는 파라미터가 변하는 속도와 잡음 크기의 비가 정한다.

4. 칼만 필터와의 관계

상태가 변하지 않는 계 θk=θk−1\boldsymbol\theta_k = \boldsymbol\theta_{k-1} (과정 잡음 Q=0Q=0)에 관측 yk=xkTθk+vky_k = \mathbf x_k^{\mathsf T}\boldsymbol\theta_k + v_k 를 붙인 칼만 필터를 쓰면, 관측 잡음 분산을 1로 둔 경우 갱신식이 λ=1\lambda=1 인 RLS 와 한 글자도 안 다르다. PkP_k 는 추정 오차 공분산(을 잡음 분산으로 나눈 것)이다.

λ<1\lambda<1 은 매 스텝 PP 를 1/λ1/\lambda 배 부풀리는 것이니, 칼만 필터 쪽에서 보면 과정 잡음을 넣거나 앙상블 칼만 필터의 공분산 팽창을 거는 것과 같은 정신이다. 차이는 RLS 가 “파라미터가 어떻게 변하는지” 모형을 갖지 않고 그냥 잊는다는 것뿐이다. 변화의 모형(랜덤워크 분산 등)을 알면 칼만 필터가 더 낫고, 모르면 λ\lambda 하나로 버티는 RLS 가 다루기 쉽다.

5. 수치적 함정

5.1. 대칭성 붕괴

위 PkP_k 갱신은 대칭 행렬에서 대칭 행렬을 빼는 식이지만 부동소수점에서는 대칭이 조금씩 깨지고, 그 오차가 1/λ1/\lambda 로 매 스텝 증폭된다. 실제로 위 추적 실험을 λ=0.9\lambda=0.9, δ=10−6\delta=10^{-6} 으로 그대로 돌리면 PP 의 최소 고유값이 −3×1012-3\times10^{12} 까지 내려가 양정치성을 잃고 추정치가 발산했다(정상상태 오차 13). 매 스텝 P←(P+PT)/2P \leftarrow (P+P^{\mathsf T})/2 로 대칭화 한 줄만 넣자 같은 조건에서 정상상태 오차 0.040 으로 멀쩡해졌다.

진지한 구현은 더 나아가 다음을 쓴다.

  • 제곱근형·QR-RLS. PP 대신 그 촐레스키 인자나 데이터 행렬의 QR 분해 인자를 기븐스 회전으로 갱신한다. 조건수가 제곱되는 것을 피하고 양정치성이 구조적으로 보장된다.
  • 격자형·고속 횡단 필터. 입력이 시계열의 지연 벡터 (uk,uk−1,… )(u_k, u_{k-1}, \dots) 이면 시프트 구조를 이용해 O(n)O(n) 으로 줄일 수 있다. 대신 수치적으로 더 예민하다.

5.2. 와인드업

λ<1\lambda<1 인데 입력이 어떤 방향으로 여기되지 않으면(예: 입력이 한동안 상수), 그 방향으로는 새 정보가 없는데 PP 는 매 스텝 1/λ1/\lambda 배 커진다. 검산하면 2차원에서 입력이 한 축에만 있을 때 λ=0.95\lambda=0.95 로 200 스텝 뒤 다른 축의 PP 성분이 0.95−200≈2.9×1040.95^{-200}\approx2.9\times10^4 로 정확히 불어났다. 이 상태에서 여기가 돌아오면 이득이 거대해 추정치가 크게 튄다. 공분산 상한 클램프, 여기된 방향만 잊는 방향성 망각, PP 의 대각합을 일정하게 유지하는 정규화 등이 처방이다.1

6. LMS 와의 비교

적응 필터에서 RLS 의 라이벌은 LMS 필터다. LMS 는 θ^k=θ^k−1+μ xkek\hat{\boldsymbol\theta}_k = \hat{\boldsymbol\theta}_{k-1} + \mu\,\mathbf x_k e_k — RLS 의 Pk−1P_{k-1} 자리에 스칼라 μ\mu 를 넣은 확률적 경사하강이다. 샘플당 O(n)O(n) 이라 싸지만, 입력 자기상관 행렬의 고유값이 퍼져 있으면(유색 입력) 수렴이 그 조건수만큼 느려진다. RLS 는 PP 가 입력 상관을 미리 “백색화”해 주므로 수렴 속도가 입력 통계와 거의 무관하고 대략 2n2n 샘플이면 자리를 잡는다. 탭 수 수천의 음향 에코 제거기는 LMS 계열(NLMS 등)을, 파라미터 몇 개짜리 플랜트 식별·배터리 상태 추정은 RLS 를 쓰는 게 대체적인 분업이다.2

7. 관련 문서

8. Footnotes

  1. 제어 쪽 사람들은 적분기 와인드업과 이름이 같아서 처음엔 헷갈려 한다. 둘 다 “아무 일도 안 일어나는 동안 뭔가가 몰래 쌓인다”는 점에서 같은 병이다. ↩

  2. 같은 문제를 두고 RLS 는 O(n2)O(n^2) 으로 똑똑하게, LMS 는 O(n)O(n) 으로 우직하게 푼다. 탭이 4096개면 우직함이 이긴다. 현생의 메모리와 전력은 유한하다. ↩

검증 자료

이 문서의 주요 출처

  1. Plackett (1950), Some theorems in least squares, Biometrika 37(1-2), 149-157
  2. Sherman & Morrison (1950), Adjustment of an inverse matrix corresponding to a change in one element of a given matrix, Ann. Math. Statist. 21(1), 124-127
  3. Kalman (1960), A new approach to linear filtering and prediction problems, J. Basic Eng. 82(1), 35-45
  4. Wikipedia, Recursive least squares filter (망각 인자·초기화·계산량 정리)
이 문서가 문제를 푸는 데 도움이 됐나요? 한 번의 클릭이 다음 검수 순서를 정합니다.

의견을 반영할게요. 감사합니다.

다음으로 읽기 칼만 필터 약 5분 더 탐색 →