최적화에 있어서 뉴턴의 방법

Newton's method in optimization
기울기 강하(녹색)와 뉴턴 방법(빨간색)의 비교(스텝 크기가 작은) 함수 최소화 방법. 뉴턴의 방법은 곡률 정보(즉, 2차 도함수)를 사용하여 보다 직접적인 경로를 취합니다.

미적분학에서 뉴턴의 방법(Newton–Raphson이라고도 함)은 미분 가능함수 F의 근을 구하는 반복적인 방법으로, F(x) = 0의 해를 구하는 방법입니다. 이와 같이 뉴턴의 방법은 미분 가능한 함수 f의 도함수 f'에 적용하여 도함수의 근을 구할 수 있습니다(solutions에서 f'(x) = 0). 중요한 지점이라고도 합니다. 이러한 솔루션은 최소점, 최대점 또는 안장점일 수 있습니다. 중요점(수학)의 "여러 변수" 섹션과 이 문서의 "기하학적 해석" 섹션을 참조하십시오. 이것은 함수 f의 (글로벌) 최소값을 찾는 것을 목표로 하는 최적화와 관련이 있습니다.

뉴턴의 방법

최적화의 중심 문제는 기능의 최소화입니다. 먼저 단변량 함수, 즉 단일 실수 변수의 함수의 경우를 고려해 보겠습니다. 우리는 나중에 보다 일반적이고 실제적으로 유용한 다변량 사례를 고려할 것입니다.

두 배 미분 가능한 f → R {\ \ \에서 최적화 문제를 해결하려고 합니다

뉴턴의 방법은 추측(시작점) ∈ R 0}\ {R}에서 f{\displaystyle x_{*}의{*}}로 수렴하는시퀀스 {x k} {\를 구성하여 이 문제를 해결하려고 합니다. 번째 차수의 테일러 근사 f{\ f는 반복률을 중심으로 합니다. 경의 2차 테일러 전개는

다음 반복 + 1 은 t{\에서 이러한 2차 근사를 최소화하도록 정의되며 + = x + t {\displaystyle x_{k+1} = x_{k}+t}를 설정합니다. 2차 도함수가 양수이면 2차 근사는 t의 볼록 함수이며 도함수를 0으로 설정하면 최소값을 찾을 수 있습니다. 부터

에 대한 최소값이 달성됩니다.

모든 것을 종합하면 뉴턴의 방법은 반복을 수행합니다.

기하학적 해석

뉴턴의 방법에 대한 기하학적 해석은 각 반복에서 {\x)}의 그래프에 포물선을 맞추는 것과 같고 그 점의 그래프와 같은 기울기와 곡률을 갖는 이며, 그리고 포물선의 최대 또는 최소(높은 차원에서는 안장점일 수도 있음)로 진행합니다. 아래를 참조하십시오. f{\ f 가 이차 함수일 경우, 정확한 극값은 한 단계에서 찾을 수 있습니다.

고차원

위의 반복 스킴은 도함수를 그래디언트으로써 d >{\ d> 차원으로 일반화할 수 있습니다(각 저자는 그래디언트에 f = ∇f() = f()∈ R d {\'(x) =\n 등 다른 표기법을 사용합니다.), 그리고 헤센 행렬역수를 갖는 2차 도함수의 역수( 저자들은 ) = ∇ 2f( =H f() ∈ R × d {\ f''(x) =\n을 포함하여 헤센에 대해 다른 표기법을 사용합니다.). 따라서 반복 스킴을 구합니다.

종종 뉴턴 방법은 γ = 1 {\displaystyle \gamma =1} 대신 작은 스텝 크기 < γ ≤ 1 {\ 0<\leq 1}을 포함하도록 수정됩니다.

이것은 종종 방법의 각 단계에서 울프 조건, 즉 훨씬 단순하고 효율적인 Armijo의 조건이 만족되도록 하기 위해 수행됩니다. 1이 아닌 다른 스텝 크기의 경우 이 방법을 종종 완화 또는 감쇠 뉴턴 방법이라고 합니다.

파이썬에서의 기본 알고리즘 구현

부터 타자 치기 수입품 목록., 투플, 호출 가능 수입품 무뚝뚝한 ~하듯이 np  디프 뉴턴 경이다.(x: np.nd 배열, f: 호출 가능, 여자친구: 호출 가능, hf: 호출 가능, lr=0.01, lr_decr=0.999, 맥시미터=100, =0.001) -> 투플[np.nd 배열, 목록.[np.nd 배열], 인트의]:     """     업데이트 기준을 사용하여 다차원 함수의 최소값을 찾는 뉴턴 방법을 적용합니다.      k번째 반복의 경우 x_k+1 = x_k - lr * inverse(hf(x)) * gf(x)).      Args:         x(np.ndarray): 알고리즘이 시작되는 초기 지점을 나타내는 배열입니다.         f(통화 가능): 최소화할 목적 기능입니다.         gf(통화 가능): 목적 함수의 기울기입니다.         hf(통화 가능): 목적 함수의 헤시안.         lr(float, 옵션): 초기 학습률. 기본값은 0.01입니다.         lr_decr(float, 옵션): 학습률에 대한 감쇠 계수입니다. 기본값은 0.999입니다.         최대값(int, 옵션): 최대 반복 횟수입니다. 기본값은 100입니다.         tol(float, 옵션): 수렴을 결정하는 구배 표준에 대한 공차입니다. 기본값은 0.001입니다.      반환:         Tuple[np.ndarray, List[np.ndarray], int]: 세 가지 요소가 있는 튜플:             - 대략적인 최소점.             - 최적화 중에 계산된 중간 지점(배열)의 목록입니다.             - 수행된 반복 횟수입니다.      예제:          # 2차원 이차함수를 정의합니다: f(x, y) = x^2 + 2y^2     defobject_function(x):         반품 x[0] ** 2 + 2 * x[1] ** 2      # 목적 함수의 구배를 정의합니다. f'(x, y) = [2x, 4y]     def gradient_function(x):         np.array 반환([2 * x[0], 4 * x[1])      # 목적 함수의 헤시언 정의: f''(x, y) = [[2, 0], [0, 4]     defessian_function(x):         np.array 반환([2, 0], [0, 4])      # 최적화를 위한 초기점     initial_point = np.array([3.0, 2.0])      # 최적화를 위해 뉴턴 방법 적용     결과, 중간_점, 반복 = 뉴턴(initial_점, 목적_함수, 구배_함수,                                                                                             hessian_function)     """     포인트들 = [x]     니트 = 0     구배의 = 여자친구(x)     헤센의 = hf(x)          하는 동안에 니트 < 맥시미터 그리고. np.리날그.상투적인(구배의) >= :               x = x - lr * np.(np.리날그.인비 인비(헤센의), 구배의)  # np.dot(m1, m2)을 사용한 행렬 곱셈         lr *= lr_decr  # 학습률 업데이트: tk+1 = tk * ρ, ρ이 붕괴 요인입니다.         포인트들.보따리를 달다(x)         니트 += 1         구배의 = 여자친구(x)         헤센의 = hf(x)      돌아가다 x, 포인트들, 니트 

수렴

f가 Lipschitz Hessian의 강한 볼록 함수인 경우, 이 x ⁡ min f (x ) {\{*}=\arg \min f (x x 0, x 1, x x_{0}, x_{1}, {2},뉴턴 방법으로 생성된 은(는) f f}의 (필수적으로 고유한) 최소화기 x {\ x_에 2차적으로 빠르게 수렴됩니다. 그것은,

뉴턴 방향 계산

뉴턴 방향 =-( ″ (x k)) - 1 f' (x k) {\displaystyle h =-(f''(x_{k})^{-1}f'(x_{k})}를 계산하기 위해 고차원에서 헤시안의 역을 찾는 것은 값비싼 연산이 될 수 있습니다. 이러한 경우, 헤시언을 직접 뒤집는 대신 벡터 선형 방정식 체계의 해로 계산하는 것이 좋습니다.

다양한 인수분해 또는 반복적인 방법을 사용하여 대략적으로(그러나 매우 정확하게) 해결할 수 있습니다. 이러한 방법의 대부분은 특정 유형의 방정식에만 적용됩니다. 예를 들어, 인수분해공액 구배″(k) {\x_{k})}가 양의 정행렬인 경우에만 작동합니다. 이것이 한계처럼 보일 수 있지만, 종종 문제가 발생했음을 보여주는 유용한 지표가 됩니다. 예를 들어 최소화 문제에 접근하고 k ) ''(x_{k})}가 양의 확증이 아닌 경우 반복은 최소가 아닌 안장점으로 수렴됩니다.

반면, 제한된 최적화가 수행되면(예를 들어, 라그랑주 승수를 사용하여) 문제는 안장점 찾기 중 하나가 될 수 있으며, 경우 헤시안은 무한대로 대칭되며 k + {\의 솔루션은 이에 적합한 방법으로 수행되어야 합니다. 를 들어 ⊤ {\LDL^{\top}} 변형의 촐레스키 인수분해 또는 공액 잔차법과 같습니다.

또한 다양한 준뉴턴 방법이 존재하며, 여기서 헤센(또는 그 역방향)에 대한 근사는 기울기의 변화로부터 구축됩니다.

헤시안이 가역 행렬에 가까운 경우, 반전 헤시안은 수치적으로 불안정할 수 있고 해가 발산할 수 있습니다. 이 경우 과거에 시도된 특정 해결책이 있으며, 이는 특정 문제에 대해 다양한 성공을 거두었습니다. 를 들어, )+ Bk {\x_{k})를 만들기 위해 보정 행렬 를 추가하여 헤시언을 수정할 수 있습니다. 양의 확정. 한 가지 접근법은 Hessian을 대각선으로 하고 를 선택하여 ″( k )+ {\x_{k})를 선택하는 것입니다.는 Hessian과 동일한 고유 벡터를 갖지만 각 음의 고유 값이 > 0 \ >0}으로 대체됩니다.

Levenberg-Marquardt 알고리즘(대략적인 Hessian을 사용하는)에서 활용되는 접근 방식은 필요에 따라 모든 반복에서 스케일을조정하여 스케일된 항등 행렬을 Hessian, I I에 추가하는 것입니다. 및 작은 Hessian의 경우 반복은 계단 가 1/ {\ 1기울기 하강처럼 작동합니다 결과적으로 Hessian이 유용한 정보를 제공하지 않는 느리지만 더 신뢰할 수 있는 수렴이 이루어집니다.

몇가지 주의사항

뉴턴의 방법은 원래 버전에서 다음과 같은 몇 가지 주의 사항이 있습니다.

  1. 헤시안이 가역적이지 않으면 작동하지 않습니다. 이것은 헤센의 역수를 취하는 뉴턴의 방법에 대한 정의를 보면 분명합니다.
  2. 전혀 수렴하지 않을 수 있지만 1점 이상의 사이클에 진입할 수 있습니다. 뉴턴 방법의 "고장 분석" 항목을 참조하십시오.
  3. 로컬 최소값 대신 안장 지점으로 수렴할 수 있습니다. 이 문서의 "기하학적 해석" 섹션을 참조하십시오.

위에서 언급한 준뉴턴 방법이나 레벤버그-마르카르트 알고리즘과 같은 뉴턴 방법의 일반적인 변형에도 주의할 점이 있습니다.

예를 들어, 일반적으로 비용 함수가 (강력하게) 볼록하고 헤시안이 전역 경계이거나 립시츠 연속이어야 합니다. 예를 들어, 이는 이 기사의 "수렴" 섹션에서 언급됩니다. 언급한 방법의 원천이 되는 Levenberg-Marquardt 알고리즘에 대한 참고문헌에서 Levenberg와 Marquardt의 논문을 살펴보면, 기본적으로 Levenberg의 논문에는 이론적 분석이 없음을 알 수 있고, Marquardt의 논문은 지역적 상황을 분석할 뿐 글로벌 수렴 결과를 증명하지는 않습니다. 보다 일반적인 가정 하에서 이론적 보장이 좋고, 심층 신경망과 같은 실제적인 대규모 문제에서 구현이 가능하고 잘 작동하는 그래디언트 하강에 대한 Backtracking line search 방법과 비교할 수 있습니다.

참고 항목

메모들

  1. ^ Nocedal, Jorge; Wright, Stephen J. (2006). Numerical optimization (2nd ed.). New York: Springer. p. 44. ISBN 0387303030.
  2. ^ Nemirovsky and Ben-Tal (2023). "Optimization III: Convex Optimization" (PDF).

참고문헌

외부 링크