그라디언트 기반 옵티 마이저에 대략적인 그라디언트를 제공하는 것이 쓸모 없습니까?


9

숫자 형 그래디언트 만 제공 할 수있는 경우 그래디언트 기반 최적화 알고리즘을 사용하는 것이 의미가 없습니까? 그렇지 않다면, 최적화 라이브러리 자체에 유한 한 차별화를 수행하는 것이 사소한 경우 왜 처음에 수치 적 그라디언트를 제공합니까?

[편집하다]

  • 명확히하기 위해, 내 질문은 실제로 특정 응용 프로그램보다 더 일반적인 의미입니다. 내 응용 분야는 다양한 통계 프레임 워크에서 가능성 최적화입니다.

  • 자동 차별화의 문제는 항상 캐치가있는 것 같습니다. AD 라이브러리는 외부 라이브러리 호출 (예 : BLAS)로 전파 할 수 없거나 워크 플로를 매우 재 작업하여 처리해야하는 어려움을 겪습니다. 특히 유형에 민감한 언어로 작업하는 경우에는 더욱 그렇습니다. AD와의 그립은 완전히 별개의 문제입니다. 그러나 나는 믿고 싶다!

  • 내 질문을 더 잘 공식화해야하지만 그 일을 잘하고 있지 않습니다. 파생 미사용 최적화 알고리즘 또는 파생 기반 최적화 알고리즘을 사용하여 수치 기울기를 줄 수 있다는 경고가있는 경우 평균적으로 어느 것이 우수합니까?


2
유한 차분을 사용하여 근사한 것을 계산하는 대신 왜 분석 그라디언트를 제공 할 것인지 묻고 싶습니까?
spektr

1
내 질문은 다른 방법으로 말하면 방정식이 분석 그라디언트를 계산하기에 너무 복잡하다고 가정하고 그라디언트 종속 최적화 알고리즘이 그래디언트가 전혀 필요없는 알고리즘보다 여전히 우수 할 수 있습니까?
bigglesworth 교수

그것은 당신이 위에서 제기 한 것과 다른 질문입니다. 유한 요소와 같은 다른 방법으로 수치 미분을 계산할 수 있습니다.
nicoguaro

1
@nicoguaro 네, 부분 미분 방정식을 사용한 최적화의 맥락에서 그렇습니다. (그리고 이것은 제 연구 분야 중 하나이기도합니다. 그러나 질문은 그 방향으로 아무것도 언급하지 않습니다 (이 일반성에 더 유용합니다).
Christian Clason

1
또한이 경우에도 합리적인 질문입니다. PDE 시스템이 너무 복잡하여 구배를 얻기 위해 수치 적으로 풀어야 할 인접 방정식을 도출 할 수없는 경우에는 어떻게해야합니까? (이것은 특히 비표준 경계 조건이 관련된 경우 상당히 불쾌해질 수 있습니다.)
Christian Clason

답변:


11

Brian의 훌륭한 답변을 보완하기 위해 약간의 (편집) 배경을 드리겠습니다. 파생없는 최적화 방법이 유일한 기능 평가의 활용, 기본적으로 모든 유사있는 방법으로 정의된다 "허용 가능한 세트 다소 체계적으로 샘플링하고 최적의 함수 값 저장"- 모든이의 할 수 있는 정보를 제공 할를. 이러한 방법은 크게 세분화 될 수 있습니다.

  1. 표본 선택이 기본적으로 무작위 인 확률 론적 방법 (임의성은 중요한 요소이며 다른 결정적인 요소가있을 수 있음을 의미). 이러한 방법들은 종종 물리적 또는 생물학적 과정에 의해 동기를 부여받으며 "시뮬레이션 어닐링", "유전자 알고리즘"또는 "입자 떼 / 반딧불 / 안티 힐 방법"과 같은 해당 이름을 갖습니다. "충분히 오래 시도하면 모든 지점 (최소화 기 포함)을 확률로 맞출 수 있습니다.1"(그렇게 여부 - 어떤 확률로 - 우주의 열 죽음 ... 또 다른 문제입니다 전에) 수학자로서, 나는 최후의 수단으로이 방법을 고려할 것입니다 : 당신이 모르는 경우 아무것도 에 대해 기능, 이것은 당신이 할 수있는 전부이며 운이 좋을 수도 있습니다.

  2. 시료 선택이 무작위가 아닌 결정 론적 방법 , 즉 이전의 기능 평가를 기반으로합니다. 가장 유명한 예는 아마도 Nelder--Mead simplex 방법 일 것입니다. 다른 사람들은 세트 검색 방법을 생성하고 있습니다. 이것은 서로 다른 지점에서 함수의 가치, 즉 함수의 부드러움 사이에 (탐색 가능한) 관계가있는 경우에만 작동 할 수 있다는 점을 이해하는 것이 중요합니다. 실제로, 예를 들어 Nelder-Mead 방법에 대한 수렴 이론은 불균일 한 구성에 기초합니다.심플 렉스의 꼭짓점에서 함수 값을 기반으로 한 그라디언트의 유한 차분 근사값은 심플 렉스가 점으로 축소됨에 따라 정확한 그라디언트와 0으로 수렴 함을 보여줍니다. 표준 유한 차분 근사를 기반으로하는 변형을 나침반 검색 이라고 합니다.

  3. 모델 - 기반 방법을 다음 기준을 사용하여 최소화되는 함수 값 (예를 들면, 보간함으로써) 함수의 로컬 모델을 구축하는 데 사용되는, 방법 (그라데이션 - / 독일인 계). 유한 차분 근사는 다항 보간법의 정확한 도함수와 동일하므로 고전적인 "숫자 기울기"접근 방식도이 등급에 속합니다.

보시다시피, 이러한 클래스 사이의 경계는 유동적이며 종종 해석의 문제입니다. 그러나 도덕은 분명해야합니다 . 최소화하려는 기능에 대한 모든 정보를 사용하십시오. Cornelius Lanczos를 인용하려면 :

정보 부족은 수학적 속임수로 해결 될 수 없습니다.

결국, 함수에 대해 아무것도 모른다면 완전히 무작위 일 수 있으며 임의의 값을 최소화하는 것은 바보의 심부름입니다 ...


17

목표가 부드러 우면 미분 계수 최적화 알고리즘을 사용하는 것보다 미분 계수에 대한 유한 차분 근사법을 사용하는 것이 더 효과적입니다. 미분 값을 정확하게 계산하는 코드가있는 경우 유한 차분 근사값을 사용하는 대신 일반적으로 해당 코드를 사용하는 것이 가장 좋습니다.

일부 최적화 라이브러리는 휴리스틱을 사용하여 단계 크기 매개 변수를 자동으로 유한 차분 근사값을 계산하지만 적절한 단계 크기에 대한 지식이 많기 때문에 자신의 루틴을 사용하여 유한 차분 근사치를 계산하는 것이 좋습니다 코드에서 악용 할 수있는 특수 구조.

종종 가치가있는 또 다른 옵션은 자동 미분 기술을 사용하여 목적 함수 자체를 계산하기 위해 소스 코드에서 분석 파생물을 계산하는 서브 루틴을 생성하는 것입니다.


3
+1 자동 차별화 . 이것은 종종 구배에 대한 선험적 상징적 표현 또는 유한 차분 근사법보다 훨씬 낫습니다.
leftaroundabout

자동 차별화를 사용하는 것이 좋습니다. 포트란의 경우, 소스 변환을 기반으로하는 INRIA Sophia-Antipolis의 tapenade를 사용해보십시오. C / C ++의 경우 adol-c, adept, sacado (Trilinos의 일부)와 같은 선택이 더 있습니다. 이들 모두는 운영자 과부하를 기반으로하며 사용하기가 쉽지만 큰 문제에는 그다지 효율적이지 않습니다.
cfdlab

AD (Automatic Differentiation)를 적용하기 어려운 상황도 있지만 때로는 AD와 거의 같은 수준에 해당하는 복잡한 단계 차별화 (역방향 모드로 한 번에 전체 기울기를 계산할 수있는 경우 제외) AD의 적용 가능하고 비교적 적용하기 쉬울 수있다.
Mark L. Stone

수정 된 질문에 대한 응답으로 : 목표가 매끄러운 경우 (미분 기반 최적화 알고리즘을 사용하지 않는 경우 아무런 의미가 없음) 변수 수가 적을 경우 (유한 차이 미분은 PDE 제한 최적화에서 작동하지 않음) )을 사용하면 DFO 기술을 사용하는 것보다 유한 차분 근사값을 사용하여 미분 기반 최적화 방법을 사용하는 것이 좋습니다.
Brian Borchers

4

귀하의 질문은 그라디언트 기반 최적화 프로그램에 대해 묻기 때문에 Brian이 옳았다 고 생각합니다. 나는 현재 그 자신과 어려움을 겪고 있기 때문에 몇 가지 문제 만 공유 할 것입니다.

유한 한 차이의 문제점은 1) 성능입니다. 각 차원에 대해 함수를 다시 평가해야하기 때문입니다. 2) 적절한 단계 크기를 선택하는 것이 까다로울 수 있습니다. 단계가 너무 크면 함수의 선형성 가정이 유지되지 않을 수 있습니다. 단계가 너무 작 으면 미분이 잡음을 증폭시키기 때문에 함수 자체에서 잡음이 발생할 수 있습니다. 함수가 미분 방정식을 풀어야하는 경우 후자는 실제 문제가 될 수 있습니다. 그래디언트를 분석적으로 계산하거나 감도 방정식을 사용하여 계산하는 것이 더 정확하고 빠를 수 있습니다.

소프트웨어에 이미 너무 많은 시간을 투자하지 않은 경우 시도 할 수있는 또 다른 방법이 있습니다. 즉, 복잡한 산술로이를 실행하는 것입니다. 이를 복잡한 단계 차별화 라고 합니다. 기본 아이디어는 함수를 평가할 때 매개 변수 X에 대한 기울기를 원한다면 X의 허수 부분을 매우 작은 수의 eps로 설정하는 것 입니다. 계산을 수행 한 후 함수 값의 허수 부분을 eps 로 나눈 값 은 X에 대한 그라디언트입니다. Y에 대한 그라디언트를 원할 때는 물론 다시 수행해야합니다. 흥미로운 점은 eps입니다.아주 작게 만들 수 있습니다. 그것이 작동하는 이유는 미분 미적분의 일반 규칙이 복잡한 산술 규칙에 정확하게 반영되어 있기 때문입니다.

말했다, 내가로 간주 되지 는 복잡한 연산의 복잡한 기능을 수행하는 것이 쉽지 않다 때문에, 만병 통치약, 기울기가 분석적으로 계산 될 수 있다면 그것은 가치가 없어, 미분 방정식의 경우는 정확히 동등의 감도 방정식 필요에 따라하고 있습니다.


주된 이점 중 하나는이 복잡한 유한 차분 식에서 뺄셈을하지 않는다는 것입니다. 얼마 전이 방법에 대한 도출에 대해 이야기하면서 논문을 읽었을 때, 그것은 다른 유한 차 분식과 비교해 실험적으로 검증 한 것 중 하나였습니다. 이 차이로 인해 반올림 오류가 문제가되기 전에 더 작은 단계 크기를 선택할 수있었습니다.
spektr

@ choward : 그렇습니다. 그게 예쁜 것입니다. 나는 회의적이었다. 내 동료 중 일부는 그것이 마법의 총알이라고 생각하는 것 같았습니다. 나는 그것이 민감도 방정식과 동등하다고 생각했고, 응용 수학자 인 내 동료 중 한 사람이 그것을 증명했습니다.
Mike Dunlavey

그것은 민감도 방정식에 관한 것입니다. 이것은 흥미로운 접근 방식이지만 구현의 절충점을 가질 수 있습니다. 이를 사용한다고 가정하면 복잡한 버전의 함수를 정의한 다음 추가 복잡한 변수 대수 / 계산을 수행하여 각 함수 평가를 더 길게해야합니다. 느린 기능 평가가 미분 정확도를 추가 할 가치가 있는지 알아 내야 할 것들 중 하나입니다.
spektr

@ choward : 그것이 내가 얻은 결론이며, 우리는 일반적으로 벡터를 최적화합니다. 이는 반복적 인 평가를 의미합니다. 물론, 대안으로 감도 방정식을 도출하기가 까다로울 수 있습니다. 나는 상징적 차별화를 사용하지만 여전히 까다 롭습니다. 전체 주제는 약간의 광산 분야입니다.
Mike Dunlavey
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.