당신이 말한 것을 기반으로 : 나는 당신이 50 개의 변수를 최적화해야한다고 가정합니다. 또한 분석 파생 상품을 찾는 데 비용이 많이 들고 (숫자 만 알아낼 수는 없음) 최적화가 제한되지 않는 상황이라고 가정합니다.
스트레스를 줄이자, 당신은 불행히도 25-30에서 100 사이의 변수를 유발합니다. 대규모 또는 소규모 최적화 루틴 중에서 선택할 때 약간의 황혼 지대입니다. 그럼에도 불구하고 아무것도 잃어 버리지 않습니다.
1 차 도함수조차도 그 종류를 없애는 데 비용이 많이 들기 때문에 뉴턴의 방법에 대한 아이디어를 죽입니다. Hessian이 약간 대각선으로 시작하는 경우 Quasi-Newton (BFGS)과 함께 운이 좋을 수도 있습니다. CG는 일반적으로 BFGS보다 약간 느리므로 아마도 많은 것이 향상되지는 않을 것입니다. 메모리도 문제가있는 경우 사용하십시오 (또는이 경우 L-BFGS를 사용하십시오). 또한 함수를 평가하는 속도가 느리면 가장 가파른 하강 / 라인 검색 알고리즘은 엄청나게 느립니다. Simulated Annealing 및 기타 임의 검색 변형도 마찬가지입니다 (HMC 및 모든 재즈에 액세스 할 수 없다고 가정합니다).
따라서 단일 기능 평가와 관련하여 벅을위한 최상의 강타가 필요할 때 : Powell의 방법으로 이동하여 COBYLA를 테스트하십시오. 제한적인 최적화 알고리즘 임에도 불구하고 사물의 속도를 높이기 위해 함수의 기울기와 근사 적으로 선형화하기 때문에 함수의 선형성을 활용할 수 있습니다. 또한 확실히 하려고 파이썬 NLopt을 . 그라디언트가없는 옵티마이 저가 많이 있습니다. UOBYQA를 시도하십시오. 그것은 파월의 두뇌의 자식이기도합니다 (제곱 근사에 의한 제약없는 최적화).
아주 간단히 : N-CG 알고리즘은 Hessian 계산에 의존하며, Hessian은 계산하는 데 비용이 많이 드는 것 같습니다. NLCG와 BFGS는 첫 단계에서 한 번 계산하려고 시도 할 수 있지만 필요하지 않습니다.
심플 렉스 알고리즘은 완전히 다른 짐승이기 때문에 의도적으로 생략했습니다. 그래디언트와는 아무런 관련이 없습니다. 그것을 시도하지만 그것에 대해 실제로 언급 할 수는 없습니다. 그것은 실제로 문제의 본질에 달려 있습니다.
수치 최적화에 대한 첫 번째 좋은 참고 자료를 보려면 CTKelly의 책 ' Iterative Methods for Optimization '을 참조하십시오 .