Scipy에서 실용적인 최적화를 위한 가이드(Scipy lecture notes 한국어 번역)
2.7.5. Scipy에서 실용적인 최적화를 위한 가이드
2.7.5.1. 기법 선택
모든 기술은 scipy.optimize.minimize() 의 method
인수로 사용할 수 있습니다.
그라디언트가 알려지지 않은 경우 :
이들은 모두
method
인수를 생략했을 경우의 디폴트로, 문제에 구속 조건이나 경계가 있을지에 의해 선택됩니다. 기울기가 알려진 경우:
BFGS 또는 L-BFGS.
헤세 행렬이 있는 경우:
소음이 있는 측정값의 경우:
Nelder-Mead 또는 Powell을 사용합니다.
2.7.5.2. 최적화 가속화
tol
인수를 사용하여 허용 오차를 푸십시오. 2.7.5.3. 기울기 계산
그라디언트 계산, 심지어 헤세 행렬 계산은 지루한 작업이지만 힘든 가치가 있습니다. 심피 에 의한 기호 계산은 도움이 될 수 있습니다.
매우 흔한 최적화가 수렴하지 않는 원인은 그라디언트 계산에서 인간 오류입니다. scipy.optimize.check_grad() 을 사용하여 그라디언트가 올바른지 확인할 수 있습니다. 이 함수는 주어진 기울기와 수치적으로 계산 된 기울기의 차이의 규범을 반환합니다.
>>> optimize.check_grad(f, jacobian, [2, -1])
2.384185791015625e-07
실수를 찾으려면 scipy.optimize.approx_fprime()도 참조하십시오.
2.7.5.4. 종합 연습
연습 문제: 단순(?) 2차 함수
다음 함수를 K[0] 을 시작점으로 최적화합니다.
np.random.seed(0)
K = np.random.normal(size=(100, 100))
def f(x):
return np.sum((np.dot(K, x - 1))**2) + np.sum(x**2)**2
시간을 측정해 봅시다. 가장 빠른 방법은? BFGS는 왜 잘 작동하지 않습니까?
소스 코드
2.7.4.10. Alternating optimization — Scipy lecture notes
연습 문제: 국소적으로 편평한 최소값
exp(-1/(.1*x**2 + y**2)
함수를 고려하십시오. 이 함수는 (0, 0) 에서 최소가 됩니다. (1, 1)의 초기 값부터 시작하여이 최소값에서 1e-8 이내가 될 때까지 시도해 봅시다.소스 코드
2.7.4.5. Finding a minimum in a flat neighborhood — Scipy lecture notes
관련 링크
전 기사
2.7.5. Practical guide to optimization with scipy — Scipy lecture notes
이전 버전의 일본어 번역
2.7.3. scipy에서 실용적인 최적화를 위한 가이드 — Scipy lecture notes
Reference
이 문제에 관하여(Scipy에서 실용적인 최적화를 위한 가이드(Scipy lecture notes 한국어 번역)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/alchemist/items/bbe6c892bea8978241ab텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)