본문 바로가기
IT 와 Social 이야기/Python

[데이터 사이언스 스쿨] math 5.1 최적화 기초

by manga0713 2021. 5. 3.

● 최적화 문제

 

최적화 문제는 함수 f의 값을 최대화 혹은 최소화하는 변수 x의 값 x* 를 찾는 것

 

이 값 x*를 최적화 문제의 해(solution)라고 한다.

 

이때 최소화하려는 함수 f(x) 목적함수(objective function), 비용함수(cost function), 손실함수(loss function) 오차함수(error function) 등으로 부른다. 기호로는 각각 J,C,L,E로 표기하는 경우가 많다.

 

 

 

● 그리드 서치(grid search)와 수치적 최적화(numerical optimization)

 

- 그리드 서치 : 목적함수의 값을 가장 작게 하는 x의 위치를 찾기 위하여 가능한 x의 값을 여러개 넣어 보고 그중 가장 작은 값을 선택하는 것

 

- 수치적 최적화 : 반복적 시행 착오(trial and error)에 의해 최적화 필요조건을 만족하는 값 x*을 찾는 방법

 

수치적 최적화 방법은 다음 두 가지 알고리즘을 요구한다.

  • 현재 위치 xkxk가 최적점인지 판단하는 알고리즘
  • 어떤 위치 xkxk를 시도한 뒤, 다음 번에 시도할 위치 xk+1xk+1을 찾는 알고리즘

 

 

 

● 2차 도함수를 사용한 뉴턴 방법

 

- 뉴턴(newton) 방법 : 목적함수가 2차 함수라는 가정하에 한 번에 최저점을 찾는다. 그레디언트 벡터에 헤시안 행렬의 역행렬을 곱해서 방향과 거리가 변형된 그레디언트 벡터를 사용한다.

 

스텝 사이즈가 필요없고 목적함수가 실제로 2차함수와 비슷한 모양이면 빨리 수렴할 수 있다는 장점이 있지만 1차 도함수(그레디언트 벡터)뿐 아니라 2차 도함수(헤시안 행렬)도 필요로 한다.

 

 

● 준 뉴턴 방법

 

사람이 구한 헤시안 행렬 함수를 사용하는 대신 현재 시도하고 있는 xn 주변의 몇몇 점에서 함수의 값을 구하고 이를 이용하여 2차 도함수의 근사값 혹은 이에 상응하는 정보를 수치적으로 계산하는 방법

 

 

● SciPy를 이용한 최적화

 

사이파이(SciPy)의 optimize 서브 패키지는 최적화 명령 minimize()를 제공한다. 세부적인 알고리즘은 method 인수로 선택할 수 있다. 디폴트 알고리즘은 BFGS(Broyden–Fletcher–Goldfarb–Shanno) 방법이다.

 

 

 

● 전역 최적화 문제

 

만약 최적화하려는 함수가 복수의 국소 최저점(local minima)을 가지고 있는 경우에는 수치적 최적화 방법으로 전역 최저점(global minimum)에 도달한다는 보장이 없다. 결과는 초기 추정값 및 알고리즘, 파라미터 등에 의존한다.

 

 

 

● 컨벡스(convex) 문제

 

목적함수의 2차 도함수의 값이 항상 0 이상이 되는 영역에서만 정의된 최적화 문제

 

다변수 목적함수의 경우에는 주어진 영역에서 헤시안 행렬이 항상 양의 준정부호(positive semidefinite)이라는 조건이 된다.

 

 

 

dss_math5_1_optimization basic 최적화.ipynb
0.33MB

 

 

- 출처 : [데이터 사이언스 스쿨] math 5.1 최적화 기초