Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

최소제곱(모델 피팅) 알고리즘

최소제곱 정의

일반적으로 최소제곱은 제곱합인 함수의 국소 최소점인 벡터 x를 구하는 문제이며, 일부 제약 조건이 적용될 수 있습니다.

minxF(x)22=minxiFi2(x)

적용되는 조건은 A·x ≤ b, Aeq·x = beq, lb ≤ x ≤ ub, c(x) ≤ 0, ceq(x) = 0입니다.

다양한 유형의 F(x)와 다양한 유형의 제약 조건에 대해 여러 Optimization Toolbox™ 솔버를 사용할 수 있습니다.

솔버F(x)제약 조건
mldivideC·x – d없음
lsqnonnegC·x – dx ≥ 0
lsqlinC·x – d범위, 선형
lsqnonlin일반 F(x)일반 선형 및 일반 비선형
lsqcurvefitF(x, xdata) – ydata일반 선형 및 일반 비선형

Optimization Toolbox 솔버에는 mldivide에서 사용되는 알고리즘 외에 다음과 같은 여섯 가지 최소제곱 알고리즘이 있습니다.

  • lsqlin의 interior-point

  • lsqlin active-set

  • Trust-region-reflective(비선형 또는 선형 최소제곱, 범위 제약 조건)

  • Levenberg-Marquardt(비선형 최소제곱, 범위 제약 조건)

  • 비선형 최소제곱 솔버 lsqnonlinlsqcurvefit에 대해 수정된 fmincon 'interior-point' 알고리즘(일반 선형 제약 조건 및 일반 비선형 제약 조건)

  • lsqnonneg에서 사용하는 알고리즘

lsqlin active-set를 제외한 모든 알고리즘은 대규모 알고리즘입니다. 대규모 알고리즘과 중간 규모 알고리즘 비교 항목을 참조하십시오. 비선형 최소제곱 방법에 대한 일반적인 설문 조사는 Dennis의 문헌 [8]을 참조하십시오. Levenberg-Marquardt 방법에 대한 구체적인 세부 사항은 Moré의 문헌 [28]에서 확인할 수 있습니다.

선형 최소제곱: Interior-Point 또는 Active-Set

lsqlin 'interior-point' 알고리즘은 quadprog의 interior-point-convex 알고리즘을 사용하고, lsqlin 'active-set' 알고리즘은 active-set quadprog 알고리즘을 사용합니다. quadprog 문제 정의는 다음과 같이 2차 함수를 최소화하는 것입니다.

minx12xTHx+cTx

여기에는 선형 제약 조건과 범위 제약 조건이 적용됩니다. lsqlin 함수는 벡터 Cx – d에 대한 2-노름의 제곱 값을 최소화하며, 여기에는 선형 제약 조건과 범위 제약 조건이 적용됩니다. 다시 말해서, lsqlin은 다음을 최소화합니다.

Cxd22=(Cxd)T(Cxd)=(xTCTdT)(Cxd)=(xTCTCx)(xTCTddTCx)+dTd=12xT(2CTC)x+(2CTd)Tx+dTd.

이는 H 행렬을 2CTC로 설정하고 c 벡터를 (–2CTd)로 설정하면 quadprog 프레임워크에 잘 맞습니다. 부가 항 dTd는 최솟값의 위치에 아무런 영향도 미치지 않습니다. 이렇게 lsqlin 문제를 다시 정식화한 후, quadprog는 해를 계산합니다.

참고

quadprog'interior-point-convex' 알고리즘에는 두 개의 코드 경로가 있습니다. 하나는 헤세 행렬 H가 double형으로 구성된 일반(비희소) 행렬인 경우 실행하고, 다른 하나는 H가 희소 행렬인 경우 실행합니다. 희소 데이터형에 대한 자세한 내용은 희소 행렬 항목을 참조하십시오. 일반적으로, 이 알고리즘은 H를 sparse로 지정하는 경우 0이 아닌 항이 상대적으로 적은 큰 문제에서 더 빠릅니다. 이와 유사하게, 이 알고리즘은 H를 full로 지정하는 경우 상대적으로 조밀한 문제 또는 작은 문제에서 더 빠릅니다.

Trust-Region-Reflective 최소제곱

Trust-Region-Reflective 최소제곱 알고리즘

Optimization Toolbox 솔버에 사용되는 대부분의 방법이 최적화의 단순하지만 강력한 개념인 신뢰 영역을 기반으로 합니다.

최적화에 대한 trust-region 접근법을 이해하기 위해 제약 조건이 없는 최소화 문제를 살펴보고, f(x)를 최소화해 보겠습니다. 여기서 함수는 벡터 인수를 받고 스칼라를 반환합니다. n 공간에서 점 x에 있고 향상, 즉 더 낮은 함수 값을 가지는 점으로 이동하기를 원한다고 가정해 보겠습니다. 기본적인 발상은 점 x 주위에 있는 이웃 N에서 함수 f의 동작을 잘 반영하는 더 간단한 함수 q를 사용하여 f를 근사하는 것입니다. 이 이웃을 신뢰 영역이라고 합니다. 시행 스텝 s는 N에 대한 최소화(또는 근사 최소화)를 수행하여 계산됩니다. 이를 trust-region 하위 문제라고 하며, 다음과 같습니다.

mins{q(s), sN}.(1)

현재 점은 f(x + s) < f(x)인 경우 x + s가 되도록 업데이트됩니다. 그렇지 않은 경우 현재 점은 변경되지 않고 그대로 유지되며 신뢰 영역 N은 축소되고 시행 스텝 계산이 반복됩니다.

f(x)를 최소화하기 위한 특정 trust-region 접근법을 정의할 때 고려해야 할 핵심 질문은 근삿값 q(현재 점 x에서 정의됨)를 선택하고 계산하는 방법은 무엇인가, 신뢰 영역 N을 선택하고 수정하는 방법은 무엇인가, 그리고 trust-region 하위 문제를 얼마나 정확하게 풀 수 있는가입니다. 이 섹션에서는 제약 조건이 없는 문제를 집중적으로 설명합니다. 뒷부분에 나오는 섹션에서는 변수에 대한 제약 조건이 존재함으로 인해 복잡성이 얼마나 가중되는지에 대해 설명합니다.

표준 trust-region 방법([48])에서는 2차 근삿값 q가 x에서 F에 대한 테일러 근사의 처음 두 항으로 정의되며, 이웃 N은 일반적으로 구면 또는 타원 형태입니다. 수학적으로 trust-region 하위 문제는 대개 다음과 같이 표기됩니다.

min{12sTHs+sTg  such that  DsΔ},(2)

여기서 g는 현재 점 x에서 f의 기울기이고, H는 헤세 행렬(2계 도함수의 대칭 행렬)이고, D는 대각 스케일링 행렬이고, Δ는 양의 스칼라이며, ‖ . ‖는 2-노름입니다. 수식 2을 푸는 데 사용할 수 있는 좋은 알고리즘이 있습니다([48] 참조). 이러한 알고리즘은 일반적으로 다음과 같은 고유방정식에 적용되는 뉴턴 과정 및 H의 모든 고유값에 대한 계산을 포함합니다.

1Δ1s=0.

이러한 알고리즘은 수식 2에 대한 정확한 해를 제공합니다. 하지만, 이 알고리즘을 사용하려면 H에 대한 여러 행렬 분해에 비례하는 시간이 필요합니다. 따라서, trust-region 문제에 대해서는 다른 접근법이 필요합니다. 수식 2 기반한 여러 근사법과 발견법 전략이 참고 문헌([42][50])에서 제안되었습니다. Optimization Toolbox 솔버에서 따르는 근사 접근법은 trust-region 하위 문제를 2차원 부분공간 S([39][42])로 제한하는 것입니다. 부분공간 S가 계산되고 나면 수식 2를 푸는 방법은 간단합니다. 비희소 고유값/고유벡터 정보가 필요한 경우에도 마찬가지입니다. 그 이유는 부분공간에서는 문제가 2차원뿐이기 때문입니다. 이제 수행해야 하는 주된 작업은 부분공간을 결정하는 것입니다.

2차원 부분공간 S는 아래에 설명되어 있는 선조건 적용 켤레 기울기법 과정을 통해 결정됩니다. 솔버는 S를 s1 및 s2에 의해 생성되는 선형 공간으로 정의합니다. 여기서 s1은 기울기 g의 방향이고 s2는 근사 뉴턴 방향, 즉 다음 수식에 대한 해를 말합니다.

Hs2=g,(3)

또는 다음과 같은 음의 곡률 방향입니다.

s2THs2<0.(4)

이러한 S 선택의 바탕이 되는 철학은 (최속강하법 방향 또는 음의 곡률 방향을 통해) 전역 수렴을 강제 적용하고 (존재하는 경우 뉴턴 스텝을 통해) 신속하게 국소 수렴을 달성한다는 것입니다.

trust-region 알고리즘을 사용한 제약 조건이 없는 최소화 과정은 이제 다음과 같이 간단하게 요약할 수 있습니다.

  1. 2차원 trust-region 하위 문제를 정식화합니다.

  2. 수식 2를 풀어서 시행 스텝 s를 결정합니다.

  3. f(x + s) < f(x)이면 x = x + s입니다.

  4. Δ를 조정합니다.

이 네 단계는 수렴할 때까지 반복됩니다. trust-region 차원 Δ는 표준 규칙에 따라 조정됩니다. 특히, 시행 스텝이 받아들여지지 않은 경우, 즉 f(x + s) ≥ f(x)인 경우에는 trust-region 차원이 축소됩니다. 이 사항에 대한 자세한 내용은 [46] 항목과 [49] 항목을 참조하십시오.

Optimization Toolbox 솔버는 비선형 최소제곱, 2차 함수, 선형 최소제곱 등의 특화된 함수를 사용하여 f에 대한 몇 가지 중요한 특수 사례를 처리합니다. 하지만, 기반이 되는 알고리즘적 발상은 일반적인 사례와 동일합니다. 이러한 특수 사례에 대해서는 뒷부분에 나오는 섹션에서 설명합니다.

대규모 비선형 최소제곱

f(x)의 중요한 특수 사례는 다음과 같은 비선형 최소제곱 문제입니다.

minxifi2(x)=minxF(x)22,(5)

여기서 F(x)는 F(x)의 성분 i가 fi(x)와 동일한 벡터 값 함수입니다. 이 문제를 푸는 데 사용되는 기본 방법은 비선형 최소화를 위한 Trust-Region 방법에 설명되어 있는 일반적인 사례와 동일합니다. 그러나, 효율성을 높이기 위해 비선형 최소제곱 문제의 구조가 이용됩니다. 특히, 근사 가우스-뉴턴 방향, 즉 다음에 대한 해 s가

minJs+F22,(6)

(여기서 J는 F(x)의 야코비 행렬임) 2차원 부분공간 S를 정의하는 데 도움이 되도록 사용됩니다. 성분 함수 fi(x)의 2계 도함수는 사용되지 않습니다.

각 반복마다 선조건 적용 켤레 기울기 방법이 정규 방정식, 즉 다음에 대한 근사해를 구하기 위해 사용됩니다.

JTJs=JTF,

정규 방정식이 명시적으로 구성되지 않은 경우에도 마찬가지입니다.

대규모 선형 최소제곱

이 경우, 풀려는 함수 f(x)는 다음과 같습니다.

f(x)=Cx+d22,

여기에는 선형 제약 조건이 적용될 수 있습니다. 이 알고리즘은 제한 내에서 국소해로 수렴하는 엄밀히 실현 가능한 반복을 생성합니다. 각 반복에는 대규모 선형 시스템(차수가 n, 여기서 n은 x의 길이)의 근사해가 포함됩니다. 반복 행렬은 행렬 C의 구조를 갖습니다. 특히, 선조건 적용 켤레 기울기법은 정규 방정식, 즉 다음에 대한 근사해를 구하기 위해 사용됩니다.

CTCx=CTd,

정규 방정식이 명시적으로 구성되지 않은 경우에도 마찬가지입니다.

부분공간 trust-region 방법은 탐색 방향을 결정하는 데 사용됩니다. 하지만, 비선형 최소화 사례에서처럼 스텝을 (가능한) 하나의 반사 스텝으로 제한하는 대신 2차 문제의 사례에서와 마찬가지로 각 반복마다 조각별 반사 직선 탐색이 수행됩니다. 직선 탐색에 대한 자세한 내용은 [45] 항목을 참조하십시오. 궁극적으로, 선형 시스템은 해에서의 1차 최적성 조건을 포착하는 뉴턴 접근법을 나타내며, 그 결과 강한 국소 수렴 속도가 실현됩니다.

야코비 행렬의 곱셈 함수.  lsqlin은 행렬 C를 명시적으로 사용하지 않고 선형 제약 조건이 있는 최소제곱 문제를 풀 수 있습니다. 대신, 다음과 같이 야코비 행렬의 곱셈 함수 jmfun을 사용합니다.

W = jmfun(Jinfo,Y,flag)

이 함수는 사용자가 직접 제공합니다. 이 함수는 행렬 Y에 대해 다음 곱을 계산해야 합니다.

  • flag == 0이면 W = C'*(C*Y)입니다.

  • flag > 0이면 W = C*Y입니다.

  • flag < 0이면 W = C'*Y입니다.

이는 C가 크지만 그 구조가 C를 명시적으로 구성하지 않고 jmfun을 작성하는 것으로 충분한 경우에 유용할 수 있습니다. 예제는 Jacobian Multiply Function with Linear Least Squares 항목을 참조하십시오.

Levenberg-Marquardt 방법

최소제곱 문제는 제곱합인 함수 f(x)를 최소화합니다.

minxf(x)=F(x)22=iFi2(x).(7)

이 유형의 문제는 다수의 실제 응용 사례에서 나타나며, 특히 비선형 파라미터 추정과 같이 모델 함수를 데이터에 피팅하는 응용 사례에서 나타납니다. 이 문제 유형은 목적 함수가 벡터 x와 스칼라 t에 대한 연속 모델 궤적 φ(t)를 따르는 출력값 y(x,t)를 구하는 함수인 경우 제어 시스템에도 나타납니다. 이 문제는 다음으로 표현할 수 있습니다.

minxnt1t2(y(x,t)φ(t))2dt,(8)

여기서 y(x,t)와 φ(t)는 스칼라 함수입니다.

다음과 같이 적분을 이산화하여 근삿값을 구합니다.

minxnf(x)=i=1m(y(x,ti)φ(ti))2,(9)

여기서 ti는 간격이 균일합니다. 이 문제에서 벡터 F(x)는 다음과 같습니다.

F(x)=[y(x,t1)φ(t1)y(x,t2)φ(t2)...y(x,tm)φ(tm)].

이러한 유형의 문제에서는 현실적으로 실현 가능한 타깃 궤적을 설정하는 것이 보통이므로 잔차 ‖F(x)‖는 최적해에서 작은 값이 될 가능성이 큽니다. 제약 조건이 없는 최적화 관련 기본 사항의 설명에 나와 있듯이, 수식 7의 함수는 제약 조건이 없는 일반적인 최소화 기법을 사용하여 최소화할 수 있지만 문제의 특정한 특성은 풀이 절차의 반복 효율성을 향상시키는 데 종종 이용될 수 있습니다. 수식 7의 기울기와 헤세 행렬은 특수한 구조를 가집니다.

F(x)의 m×n 야코비 행렬을 J(x)로 나타내고, f(x)의 기울기 벡터를 G(x)로 나타내고, f(x)의 헤세 행렬을 H(x)로 나타내고, 각 Fi(x)의 헤세 행렬을 Di(x)로 나타내면 다음을 얻게 됩니다.

G(x)=2J(x)TF(x)H(x)=2J(x)TJ(x)+2Q(x),(10)

여기서

Q(x)=i=1mFi(x)Di(x).

행렬 Q(x)에서 xk가 해에 접근함에 따라 잔차 ‖F(x)‖가 0에 가까워지며 Q(x)도 0에 가까워집니다. 따라서 ‖F(x)‖가 해에서 작은 값을 갖는 경우, 최적화 절차의 근간으로 가우스-뉴턴 방향을 사용하는 것이 효과적입니다.

각각의 주 반복 k에서 가우스-뉴턴 방법에서는 다음과 같은 선형 최소제곱 문제의 해인 탐색 방향 dk가 구해집니다.

mindknJ(xk)dk+F(xk)22.(11)

이 방법에서 도출된 방향은 항 Q(x) = 0일 때 뉴턴 방향과 동일합니다. 이 알고리즘에서는 탐색 방향 dk를 직선 탐색 전략의 일부로 사용하여 각 반복 시 함수 f(x)가 감소하도록 할 수 있습니다.

2차 항 Q(x)를 무시할 수 없는 경우 가우스-뉴턴 방법에서 종종 문제가 발생할 수 있습니다. Levenberg-Marquardt 방법으로 이 문제를 해결할 수 있습니다.

Levenberg-Marquardt 방법([25][27] 참조)은 다음 선형 방정식 세트의 해인 탐색 방향을 사용하거나,

(J(xk)TJ(xk)+λkI)dk=J(xk)TF(xk),(12)

또는, 선택적으로 다음 방정식의 해인 탐색 방향을 사용합니다.

(J(xk)TJ(xk)+λkdiag(J(xk)TJ(xk)))dk=J(xk)TF(xk),(13)

여기서 스칼라 λk는 dk의 크기와 방향을 모두 제어하고, diag(A)A의 대각 항으로 구성된 행렬을 의미합니다. 수식 12를 선택하려면 옵션 ScaleProblem'none'으로 설정하고, 수식 13을 선택하려면 ScaleProblem'Jacobian'로 설정하십시오.

InitDamping 옵션을 사용하여 파라미터 λ0의 초기값을 설정할 수 있습니다. 경우에 따라, 이 옵션의 디폴트 값 0.01이 적합하지 않을 수 있습니다. Levenberg-Marquardt 알고리즘이 초기에 거의 진척이 없는 것으로 확인되면 InitDamping을 디폴트 값과는 다른 값(예: 1e2)으로 설정해 보십시오.

λk가 0이면 방향 dk는 가우스-뉴턴 방법의 방향과 동일합니다. λk가 무한대로 가려 함에 따라 dk는 최속강하법 방향을 향하려 하며, 크기는 0에 가까워지려 합니다. 따라서 충분히 큰 어떤 λk에 대해 항 ‖ F(xk + dk)‖ < ‖ F(xk)‖가 성립한다는 것을 의미합니다. 여기서 ‖는 유클리드 노름을 나타냅니다. 따라서 알고리즘에서 가우스-뉴턴 방법의 효율성을 제한하는 2차 항이 발생할 때도 하강을 계속하도록 항 λk를 제어할 수 있습니다. 스텝이 성공적(낮은 함수 값을 제공함)일 경우 알고리즘은 λk+1 = λk/10을 설정합니다. 스텝이 성공적이지 않을 경우 알고리즘은 λk+1 = λk*10을 설정합니다.

내부적으로, Levenberg-Marquardt 알고리즘은 최적성 허용오차(중지 기준) 1e-4에 함수 허용오차를 곱한 값을 사용합니다.

따라서 Levenberg-Marquardt 방법은 가우스-뉴턴 방향과 최속강하법 방향을 번갈아 이용하는 탐색 방향을 사용합니다.

Levenberg-Marquardt 방법의 또 다른 이점은 야코비 행렬 J의 랭크가 부족할 때 발휘됩니다. 이 경우에는 수식 11에서 최소화 문제의 조건이 나쁘기 때문에 가우스-뉴턴 방법에 수치적 문제가 있을 수 있습니다. 이와 반대로, Levenberg-Marquardt 방법에서는 각 반복 시 완전 랭크를 가지므로 이런 문제를 피할 수 있습니다.

다음 그림은 어렵기로 악명 높은 최소제곱 형식의 최소화 문제인 로젠브록 함수를 최소화할 때 Levenberg-Marquardt 방법의 반복을 보여줍니다.

로젠브록 함수에 대해 실행된 Levenberg-Marquardt 방법

반복 점을 생성하는 스크립트를 포함하여 위 그림에 대한 더 자세한 설명을 보려면 바나나 함수 최소화 항목을 참조하십시오.

Levenberg-Marquardt 방법의 범위 제약 조건

문제에 범위 제약 조건이 포함되어 있을 경우 lsqcurvefitlsqnonlin은 Levenberg-Marquardt 반복을 수정합니다. 제안된 반복 점 x가 범위 밖에 있는 경우, 이 알고리즘은 가장 가까운 실현가능점으로 스텝을 투영합니다. 즉, P가 실현불가능점을 실현가능 영역으로 투영하는 투영 연산자로 정의되어 있을 때, 이 알고리즘은 제안된 점 x를 P(x)로 수정합니다. 다음 정의에 따라 투영 연산자 P는 각각의 성분 xi에 대해 독립적으로 동작합니다.

P(xi)={lbiif xi<lbiubiif xi>ubixiotherwise

또는 다음과 같이 할 수도 있습니다.

P(xi)=min(max(xi,lbi),ubi).

이 알고리즘은 1차 최적성 측정값에 대한 중지 기준을 수정합니다. x를 제안된 반복 점이라고 가정하겠습니다. 제약 조건이 없는 경우 중지 기준은 다음과 같습니다.

f(x)tol,(14)

여기서 tol은 최적성 허용오차 값으로, 1e-4*FunctionTolerance입니다. 유계 문제인 경우, 중지 기준은 다음과 같습니다.

xP(xf(x))2tolf(x).(15)

이 기준을 이해하려면 먼저 x가 실현 가능한 영역 내부에 있는 경우 연산자 P가 아무런 효과도 없다는 점에 주의하십시오. 따라서 중지 기준은 다음과 같이 됩니다.

xP(xf(x))2=f(x)2tolf(x),

이는 제약 조건이 없는 원래 중지 기준 f(x)tol와 같습니다. 경계 제약 조건이 활성 상태여서 x – ∇f(x)가 실현 가능하지 않은 경우, 알고리즘이 중지해야 하는 점에서 그 경계에 있는 점의 기울기는 경계에 수직입니다. 따라서 다음 그림에 표시된 것처럼, 점 x는 최속강하법 스텝의 투영인 P(x – ∇f(x))와 같습니다.

Levenberg-Marquardt 중지 조건

Sketch of x minus the projection of x minus gradient of f(x)

제약 조건이 있는 최소제곱에 대해 수정된 fmincon 알고리즘

선형 제약 조건과 비선형 제약 조건을 처리하기 위해 lsqnonlin 솔버와 lsqcurvefit 솔버의 'interior-point' 알고리즘은 fmincon 'interior-point' 알고리즘의 수정된 버전을 내부적으로 호출합니다. 수정된 버전은 fmincon을 실행할 때 사용되는 근사와는 다른 헤세 행렬 근사를 사용합니다. 기본적으로 fmincon은 BFGS 헤세 행렬 근사를 사용합니다. 이 섹션의 뒷부분에서 최소제곱 솔버가 사용하는 다른 헤세 행렬 근사에 대해 다룹니다. fmincon 'interior-point' 알고리즘과 헤세 행렬 근사에 대한 자세한 내용은 fmincon의 Interior Point 알고리즘 항목을 참조하십시오.

최소제곱의 맥락에서 목적 함수 f(x)는 스칼라가 아니라 벡터입니다. 최소화할 제곱합은 다음과 같습니다.

fT(x)f(x).

풀어야 할 문제는 다음과 같습니다.

minxf(x)22

적용되는 조건은 다음과 같습니다.

c(x) ≤ 0

ceq(x) = 0.

이 문제의 라그랑주는 다음과 같습니다.

L(x,λE,λI)=f(x)22+λETceq(x)+λITc(x).

라그랑주의 x에 대한 기울기는 다음과 같습니다.

xL(x,λE,λI)=2FT(x)f(x)+AET(x)λE+AIT(x)λI.

여기서 F는 목적 함수의 야코비 행렬입니다.

Fi,j(x)=fi(x)xj,

그리고 AE와 AI는 각각 등식 제약 조건 함수 ceq(x)의 야코비 행렬과 부등식 제약 조건 함수 c(x)의 야코비 행렬입니다.

문제에 대한 카루쉬-쿤-터커(KKT) 조건은 다음과 같습니다.

2FT(x)f(x)+AET(x)λE+AIT(x)λI=0SλIμe=0ceq(x)=0c(x)+s=0.

여기서 변수 s 및 λI는 음수가 아니며(S = diag(s), μ는 반복 횟수가 증가함에 따라 대개 0이 되는 장벽 파라미터이며, e는 1로 구성된 벡터입니다.

이러한 방정식을 풀기 위해 소프트웨어는 반복을 수행합니다. 반복 횟수 k를 호출합니다. 알고리즘은 다음과 같은 업데이트된 방정식을 이용해 단계 Δx, Δs, ΔλE, ΔλI를 수행하여 방정식을 풀려고 시도합니다.

[H0AETAIT0Sdiag(λi)0SAE000AIS00][ΔxS1ΔsΔλEΔλI]=[2FT(x)f(x)+AET(x)λE+AIT(x)λISλIμeceq(x)c(x)+s].

여기서 H는 목적 함수의 헤세 행렬입니다. BFGS 헤세 행렬 근사를 사용한 경우 단계 k + 1에서의 대략적인 헤세 행렬 Bk+1은 다음과 같습니다.

Bk+1=BkBkskskTBkskTBksk+ykykTykTsk,(16)

여기서

sk=xk+1xkyk=xL(xk+1,λk+1)xL(xk,λk+1).

이 헤세 행렬 근사의 초기값은 B0 = I입니다.

fmincon에서의 이 접근법에 대한 자세한 내용은 헤세 행렬 업데이트하기 항목을 참조하십시오.

최소제곱 BFGS 헤세 행렬 업데이트는 fmincon 헤세 행렬 업데이트와 비교했을 때 차이점이 있습니다. 즉, 최소제곱 목적 함수의 헤세 행렬은 다음과 같습니다.

xx2f(x)2=2FT(x)F(x)+2ifi(x)xx2fi(x).

최소제곱 헤세 행렬 업데이트는 첫 번째 항 2FTF를 별도의 값으로 사용하고 2FTF 항 없이 BFGS 식을 사용하여 헤세 행렬 근사를 업데이트합니다. 다시 말해, BFGS 헤세 행렬 업데이트는 Bk에 대한 헤세 행렬 업데이트 식(수식 16)을 사용합니다. 여기서 라그랑주에 대한 헤세 행렬 근사는(목적 함수 + 라그랑주 승수에 제약 조건을 곱한 값) 2FTF + Bk이며 값 sk 및 yk는 다음과 같습니다.

sk=xk+1xkyk=xL(xk+1,λk+1)xL(xk,λk+1)2FT(xk+1)F(xk+1)(xk+1xk)=(AET(xk+1)AET(xk))λEk+1+(AIT(xk+1)AIT(xk))λIk+1+2FT(xk+1)f(xk+1)2FT(xk)f(xk)2FT(xk+1)F(xk+1)(xk+1xk).(17)

이 수정된 헤세 행렬 근사는 동일한 문제에 대해 fmincon 반복과 lsqnonlin 반복 또는 lsqcurvefit 반복 간의 차이를 고려합니다. 내부적으로, 최소제곱 솔버는 이 헤세 행렬 근사(수식 16수식 17)를 fmincon 솔버에서 사용자 지정 헤세 행렬 함수로 사용합니다.

참고 항목

| | | |

관련 항목