Gauss-Newton Method
Gauss-Newton Method 정의
- Gauss-Newton은 뉴턴법(Newton’s Method)의 변형으로, 비선형 최소제곱 문제(Non-Linear Least Squares) 를 해결하기 위한 반복적 최적화 방법이다.
- 모델이 데이터에 얼마나 잘 맞는지 측정하는 잔차(Residuals)의 제곱합을 최소화하는 파라미터를 찾는 데 사용되며, 뉴턴법과 달리 Hessian을 직접 계산하는 대신 Jacobian을 사용하여 근사함으로써 계산 비용을 줄인다.
- 뉴턴법에서는 목적 함수 f(x) 자체를 2차 테일러 급수로 근사하지만, 가우스-뉴턴에서는 목적 함수가 ∣∣r(β)∣∣2와 같은 잔차 제곱합 형태일 때, 뉴턴법의 아이디어를 적용하되, 잔차 함수 r(β)를 선형 근사하는 것이 더 효율적이라는 접근이다.
- Least Squares 문제는 n개의 변수 β=(β1,β2,…,βn)와 m개의 데이터에 대한 잔차 벡터가 r=(r1,r2,…,rm) 일 때, 잔차의 제곱합을 최소화하는 β를 찾는다.
βmini=1∑mri(β)2 = βmin∣∣r(β)∣∣2
Non-Linear Least Squares
- Least Squares 문제는 모델이 예측한 값과 실제 관측값의 차이인 Residual의 제곱합을 최소화하는 것 이다.
- Linear Least Squares는 Residual이 최적화 변수에 θ 에대해 선형인 문제이며 다음과 같다.
θmin∣∣r(θ)∣∣2, r=y−Xθ
y≈Xθ
- 이러한 Linear Least Squares 는 정규 방정식(Normal Equation) 등의 방법으로 최적 파라미터를 계산할 수 있다.
XTXθ=XTy
θ=(XTX)−1XTy
- Non-Linear Least Squares는 Residual이 최적화 변수 θ 에 대해 비선형인 문제이다.
- 잔차 제곱합의 형태는 동일하지만 잔차 함수, 즉 구하고자 하는 함수 또는 Fitting하고자 하는 함수의 형태가 비선형인 경우를 말한다.
θmin∣∣r(θ)∣∣2, r=Non-Linear Function
- 예를 들어, 아래 지수함수의 최적 파라미터를 구하는 Least Squares는 다음과 같다.
y^i=aebxi
ri=y−aebxi, θ=[ab]
θmini=1∑m(y−aebxi)2
- Gauss-Newton Method는 이러한 Non-Linear Least Squares를 반복적 계산을 통해 최적해를 구하는 방법이다.
Gauss-Newton Method 방법
목적함수와 잔차함수의 정의
- Non-Linear Least Squares 문제는 잔차들의 제곱합을 최소화하는 파라미터 β를 찾는 것이며 따라서, 목적함수는 다음과 같다.
βmini=1∑mri(β)2 = βmin∣∣r(β)∣∣2
- 여기서 r(β)는 잔차 벡터이며, m개의 데이터에 대한 잔차 벡터는 다음과 같다.
r(β)=r1(β)r2(β)⋮rm(β)
- 잔차함수 ri(β)는 다음과 같이 정의된다.
ri(β)=f(xi,β)−yi
- 여기서 f(xi,β)는 비선형이라 가정하며, f(xi,β)가 비선형이라면 잔차 함수 ri(β) 역시 비선형이 된다.
- 이처럼 잔차 함수가 비선형이기 때문에, 잔차의 제곱합을 최소화하는 문제에서는 Least Square Method에서 사용되는 정규방정식처럼 직접적인 대수적 해를 구할 수 없다.
현재 추정값과 업데이트량 정의
- 현재 파라미터 추정값을 βk라고 할 때, 다음 스텝으로 이동할 변화량을 Δβ라고 할 수 있다.
- 다음 스텝의 파라미터 βk+1은 다음과 같이 표현할 수 있다.
βk+1=βk+Δβ
- Gauss-Newton Method는 반복적으로 Δβ를 계산하고 파라미터를 업데이트해 나간다.
잔차 함수의 선형 근사
- Gauss-Newton Method는 현재 파라미터 추정치 βk에서 잔차 함수 r(β)를 테일러 급수 (Taylor series)의 1차 항까지 선형 근사한다.
- 일변수 스칼라 함수 f(x)의 xk 위치에서 1차 테일러 전개의 표준은 다음과 같다.
f(x)≈f(xk)+f′(xk)(x−xk)
- 이 테일러 전개를 현재점(xk) + 변화량(Δx) 로 나타내면 아래와 같다.
Δx=x−xk
f(xk+Δx)≈f(xk)+f′(xk)Δx
- 즉, 현재 위치에서 Δx 만큼 이동 했을 때의 변화량은 기울기 f′(xk)에 이동량 Δx를 곱한 것 정도로 본다.
- 현재 추정값에서 조금 이동한 βk+Δβ 에서 잔차의 각 성분에 대해 1차 테일러 전개를 적용하면 다음과 같다.
ri(βk+Δβ)≈ri(βk)+j=1∑n∂βj∂riΔβj
- 여기서 두 번째 항은 다변수 함수의 테일러 전개의 일반화 형태이며 파라미터 벡터 β 의 각 요소 βj에 대한 편미분을 모두 고려해야 한다.
- 이 식을 벡터 형태로 정리하면 다음과 같다.
r(βk+Δβ)≈r(βk)+JkΔβ
r(β)≈r(βk)+Jk(β−βk)
r(β)≈r(βk)+JkΔβ
- 위 식들은 모두 같은 의미를 가지며, 현재 파라미터 βk에서 Δβ만큼 이동했을 때의 잔차를 계산하는 것이다.
Jacobian의 활용
- 잔차 함수를 1차 테일러 전개로 근사한 식에서 Jacobian은 잔차 벡터 r을 파라미터 벡터 βk 에 대해 미분한 행렬이다.
r(βk+Δβ)≈r(βk)+JkΔβ
J(βk)=Jk=∂βk1∂r1∂βk1∂r2⋮∂βk1∂rm∂βk2∂r1∂βk2∂r2⋮∂βk2∂rm⋯⋯⋱⋯∂βkn∂r1∂βkn∂r2⋮∂βkn∂rm
- 데이터 수 : m
- 파라미터 수 : n
- 파라미터 벡터 : β=[β1,β2,…,βn]T
- 잔차 함수 : ri(β)=yi−f(xi,β)
- 잔차 벡터 : r(β)=[r1(β),r2(β),…,rm(β)]T
선형 최소제곱 문제로의 변환
- 목표는 목적 함수 ∣∣r(β)∣∣2을 최소화하는 β를 찾는 것이며, 현재 반복 단계 k에서 βk를 기준으로 잔차 함수를 선형 근사했으므로, 이제 이 선형 근사된 잔차 벡터의 제곱합을 최소화하는 Δβ를 찾아야 한다.
- 목적 함수에 현재 파라미터 βk에 대한 근사 식을 대입하면 다음과 같다. 편의상 r(βk)를 rk라고 한다.
S(Δβ)=∣∣rk+JkΔβ∣∣2
ATAx=ATb
- 정규방정식을 이용해 ∣∣rk+JkΔβ∣∣2 가 최소가 되는 Δβ 에 대한 표현은 다음과 같다.
JkTJkΔβ=−JkTrk
- 이 식이 Gauss-Newton의 정규방정식이 된다.
파라미터 업데이트
- 다음 스텝의 파라미터 βk+1는 현재 스텝의 파라미터와 파라미터 변화량을 더한 βk+Δβ 로 표현할 수 있다.
- 정규방정식을 Δβ에 대해 정리하면 다음과 같다.
Δβ=−(JkTJk)−1JkTrk
- 다음 스텝 파라미터의 최종 업데이트 식은 다음과 같다.
βk+1=βk−(JkTJk)−1JkTrk
- 여기서, 실제 계산에서는 (JkTJk)−1 를 직접 계산하지 않고, QR 분해나 Cholesky 분해 등의 선형 시트템 풀이 방법을 사용한다.
Gauss-Newton을 이용한 Circle Fitting 예시
문제 정의
- 다음 5개의 데이터 (x,y)가 주어지고, 이 점들을 가장 잘 설명하는 원 방정식의 파라미터 β를 구한다.
(8,5), (5,8), (2,5), (5,2), (7,7)

- 중심이 (a,b)이고 반지름이 R인 원의 방정식은 다음과 같다.
(x−a)2+(y−b)2=R2
잔차함수 정의
- 원의 방정식은 y=f(x,β) 형태가 아니기 때문에, 원의 방정식 자체를 0으로 만드는 형태로 잔차함수를 정의하여 Gauss-Newton 을 적용할 수 있다.
- 만약 데이터 포인트 (xi,yi)가 완벽하게 원 위에 있다면 다음 식이 성립해야 한다.
(x−a)2+(y−b)2−R2=0
- 따라서 잔차함수 ri(β)를 다음과 같이 나타내면 이 잔차는 i번째 데이터 포인트가 현재 파라미터 β로 정의된 원의 방정식으로부터 얼마나 벗어나 있는지를 나타낸다.
ri(β)=(xi−a)2+(yi−b)2−R2
- 이때, 파라미터 벡터 β 와 잔차 벡터 r은 다음과 같다.
β=abR, r(β)=r1(β)r2(β)r3(β)r4(β)r5(β)
- 잔차 벡터의 제곱합을 최소화하기 위한 목적함수는 다음과 같다.
∣∣r(β)∣∣2=i=1∑5ri(β)2
Jacobian 계산
- Jacobian은 잔차 벡터를 파라미터 벡터에 대해 미분한 행렬이므로, 잔차 5개 x 파라미터 3개로 J5×3은 다음과 같다.
J5×3(β)=∂a∂r1∂a∂r2⋮∂a∂r5∂b∂r1∂b∂r2⋮∂b∂r5∂R∂r1∂R∂r2⋮∂R∂r5
- 잔차함수를 a,b,R 에 대해 각각 편미분한 것은 다음과 같다.
∂a∂ri=2(a−xi)
∂b∂ri=2(b−xi)
∂R∂ri=−2R
- 따라서, 전체 Jacobian은 다음과 같이 정리된다.
J(β)=2(a−x1)2(a−x2)2(a−x3)2(a−x4)2(a−x5)2(b−x1)2(b−x2)2(b−x3)2(b−x4)2(b−x5)−2R−2R−2R−2R−2R
초기 파라미터 설정 및 계산
- 초기 파라미터 β0 를 다음과 같이 설정한다.
β0=665
- 즉, 초기 추정 원의 중심은 (6, 6)이고 반지름은 5이다.
- 초기 파라미터와 데이터를 이용해 대한 잔차 벡터를 계산하면 다음과 같다.
ri=(xi−6)2+(yi−6)2−52
r(β0)=−20−20−8−8−23
- 초기 파라미터와 잔차 벡터에 대해 Jacobian을 계산하면 다음과 같다.
J(β0)=2(6−x1)2(6−x2)2(6−x3)2(6−x4)2(6−x5)2(6−x1)2(6−x2)2(6−x3)2(6−x4)2(6−x5)−10−10−10−10−10=−4282−22−428−2−10−10−10−10−10
파라미터 업데이트
- Gauss-Newtom의 정규방정식을 이용해서 Δβ0 구하여 파라미터를 업데이트 한다.
J0TJ0Δβ0=−J0Tr0
- J0TJ0와 J0Tr0을 계산하면 다음과 같다.
J0TJ0=9220−602092−60−60−60500
J0Tr0=66790
9220−602092−60−60−60500Δβ0=−6−6−790
- 위 정규방정식을 연립방정식을 풀어 Δβ0를 구하면 다음과 같다.
Δβ0≈−1.03−1.03−1.83
- 이 것을 이용하여 다음 스텝의 파라미터 β1을 구할 수 있다.
β1=β0+Δβ
β1=4.974.973.17=665+−1.03−1.03−1.83
- 수렴 조건을 만족할 때 까지 이 과정을 반복하여 최적해에 접근하도록 업데이트 할 수 있다.
- 초기 파라미터 β0의 원과 한 번 업데이트한 β1의 원을 나타내면 다음과 같이 기존 데이터에 더 fitting됨을 알 수 있다.
