베이지안 최적화를위한 GP 회귀 분석에서 조건부 공분산 행렬


12

배경과 문제

회귀 및 후속 베이지안 최적화 (BO)에 가우시안 프로세스 (GP)를 사용하고 있습니다. 회귀를 위해 MATLAB 용 gpml 패키지를 여러 가지 맞춤형 수정과 함께 사용 하지만 문제는 일반적입니다.

입력 공간에서 두 개의 훈련 입력이 너무 가까울 때 공분산 행렬이 확실하지 않을 수 있습니다 (이 사이트에는 이에 대한 몇 가지 질문이 있음). 결과적으로 다양한 GP 계산에 필요한 공분산 행렬의 hole 레 스키 분해가 수치 오류로 인해 실패 할 수 있습니다. 이것은 내가 사용하는 목적 기능으로 BO를 수행 할 때 여러 경우에 발생했으며 문제를 해결하고 싶습니다.

제안 된 솔루션

불량 조건을 완화하는 표준 솔루션 인 AFAIK는 공분산 행렬의 대각선에 융기 또는 너깃을 추가하는 것입니다. GP 회귀 분석의 경우 이는 관측 노이즈를 추가하거나 이미있는 경우 증가시킵니다.

여태까지는 그런대로 잘됐다. 나는 정확한 추론에 대한 코드를 수정 gpml 촐레 스키 분해가 실패 할 때마다, 나는 영감의 Frobenius의 규범에 가까운 대칭 긍정적 인 확실한 (SPD) 매트릭스에 공분산 행렬을 해결하기 위해 시도 할 수 있도록 이 MATLAB 코드 존 디부 에리코로. 이론적 근거는 원본 매트릭스에 대한 개입을 최소화하는 것입니다.

이 해결 방법이 효과가 있지만 알고리즘이 일부 영역에서 확대해야 할 때마다 (예 : 최소값에 가까워 지거나 길이 스케일 때문에) BO의 성능이 일부 기능의 경우 실질적으로 감소 함을 알았습니다. 문제의 불균일하게 작아짐). 두 개의 입력 포인트가 너무 가까워 질 때마다 노이즈를 효과적으로 증가시키기 때문에이 동작은 의미가 있지만 물론 이상적이지는 않습니다. 또한, 난 그냥 문제 점을 제거 할 수 있습니다, 그러나 다시, 가끔은 필요 가까이하기 위해 입력 점을.

질문

GP의 공분산 행렬의 Cholesky 인수 분해와 관련된 수치 문제는 새로운 문제라고 생각하지 않지만 놀랍게도 노이즈를 늘리거나 서로 너무 가까운 점을 제거하는 것 외에는 지금까지 많은 솔루션을 찾을 수 없었습니다. 다른 한편으로, 내 기능 중 일부가 잘못 작동하는 것이 사실이므로 내 상황이 그렇게 일반적이지 않을 수 있습니다.

여기에 도움이 될만한 제안 / 참조가 있습니까?


공분산 행렬의 항목을 구성하고 Cholesky 인수 분해를 계산하거나 업데이트하는 것뿐만 아니라 고정밀, 예를 들어 쿼드 정밀도 이상으로 계산할 수도 있습니다. 번거 로움을 제외하고는 계산 속도가 느릴 수 있습니다. MATLAB에는 임의의 정밀 애드온이 있습니다. 나는 이것이 이상적이라고 말하지는 않지만 옵션 일 수 있습니다. 나는 그들이 gpml로 얼마나 잘 플레이하는지 모르겠지만 gpml 소스 코드 (m 파일)를 변경할 수 있다면 아마 할 수 있습니다.
Mark L. Stone

공분산 행렬의 대각선에 작은 지터를 추가하려고 했습니까?
Zen

@ MarkL.Stone 제안 해 주셔서 감사합니다. 불행히도 훈련 코드가 빠르면 고정밀 숫자가 내 응용 프로그램에 적합하지 않을 수 있습니다.
lacerbi

2
이 질문은 정말 흥미 롭습니다. 와 같은 코 바레인 행렬에 너겟 효과를 추가 할 때 가능성에 따라 시그마를 최적화합니까, 아니면 입니다. 내가 발견 한 그 그가 gausssian 과정 너겟 효과 캡처 측정 소음과 도움 최적화σ2Iσ
위스콘신

1
나는 보통 최적화합니다. 몇 가지 경우에 나는 그것을 극복하려고 노력했지만 개선 된 wrt 최적화를 많이 얻지 못했습니다 (후자는 매우 좁다 고 가정합니다).
lacerbi

답변:


7

다른 옵션은 근본적으로 원인을 평균화하는 것입니다. 예를 들어 1000 개의 점과 50 개의 원인 문제가있는 경우 처음 950 개의 고유 값 / 벡터를 사용하여 최적의 낮은 순위 근사값을 얻을 수 있습니다. 그러나 이것은 그렇지 않다고 말한 데이터 포인트를 서로 가깝게 제거하는 것이 아닙니다. 지터를 추가하면 자유도가 감소합니다. 즉, 각 점이 예측에 미치는 영향이 적으므로 점을 적게 사용하는 것보다 나쁠 수 있습니다.

개인적으로 깔끔하다고 생각되는 다른 옵션은 두 가지 점을 조금 더 똑똑하게 결합하는 것입니다. 예를 들어 2 개의 점을 가져 와서 하나로 결합 할 수 있지만 그래디언트의 근사도 결정하는 데 사용할 수도 있습니다. 커널에서 필요한 그래디언트 정보를 포함하려면 및 를 찾는 입니다. 파생 상품은 일반적으로 관측치와 상관 관계가 없으므로 컨디셔닝 문제가 발생하지 않고 지역 정보를 유지하지 않습니다.dxk(x,x)dxdxk(x,x)

편집하다:

의견을 바탕으로 파생 된 관측을 포함하여 의미하는 바를 구체화 할 것이라고 생각했습니다. 가우스 커널을 사용하는 경우 (예 :)

kx,x=k(x,x)=σexp((xx)2l2)

그 파생 상품은

kdx,x=dk(x,x)dx=2(xx)l2σexp((xx)2l2)

kdx,dx=d2k(x,x)dxdx=2l22(xx)l4σexp((xx)2l2)

이제 데이터 포인트가 있다고 가정하자. 및 의 미분은 이라고 부릅니다 .{xi,yi;i=1,...,n}x1m1

하자 , 다음, 우리가 공분산 행렬과 하나의 표준 GP를 사용Y=[m1,y1,,yn]

K=(kdx0,dx0kdx0,x0kdx0,xnkdx0,x0kx0,x0kx0,xnkdx0,xnkx0,xnkxn,xn)

GP의 나머지 부분은 평소와 동일합니다.


대략적인 그래디언트 정보의 제안 된 사용에 대한 세부 사항을 확장 하시겠습니까?
Mark L. Stone

@j Thanks-낮은 순위 근사에 대해 생각했는데 시도해 볼 수 있습니다 (코드의 큰 부분을 다시 작성해야하기 때문에 지금까지 피했습니다). 두 점을 하나로 결합하는 것과 관련하여 이전 질문 에서 제안 했지만 파생 정보를 얻는 것에 대해서는 생각하지 않았습니다. 원칙적으로 깔끔하게 들리지만 입력 차원 당 하나의 GP를 추가 해야하는 몇 가지 파생 관측치 (병합 된 점에 해당) 만 있기 때문에 어떻게 사용할 것인지 잘 모르겠습니다.
lacerbi

@j 추가 설명에 감사드립니다. 이것은 매우 깔끔하게 보입니다. 이 접근법에 대한 참조가 있습니까?
lacerbi

2
Mike Osborne의 논문 페이지 67 ( robots.ox.ac.uk/~mosb/public/pdf/136/full_thesis.pdf )을 확인하십시오. 그는 미분 및 적분 관측을 소개합니다. 도움이
되길 바랍니다

4

우리가 사무실에서 시작한 한 가지 해결책은 번거로운 점을 변경하는 것입니다. 이는 일직선 삭제 또는보다 복잡한 형태 일 수 있습니다. 본질적으로, 근접 점은 중복성이 높다는 사실이 관찰됩니다. 실제로 중복되어 공분산 행렬의 순위가 줄어 듭니다. 같은 점에서, 한 지점은 어쨌든 현재 문제에 거의 정보를 제공하지 못하므로, 하나 또는 다른 것을 제거 (또는 평균화하거나 한 지점에서 다른 지점에서 "허용되는 최소한의 거리로"수신 "하는 것과 같은) 다른 일을하는 것입니다. 실제로 솔루션을 많이 변경하지는 않습니다.

두 지점이 "너무 가까워진"시점을 판단하는 방법을 잘 모르겠습니다. 아마도 이것은 사용자에게 남겨진 튜닝 옵션 일 수 있습니다.

(이 게시물을 게시 한 후이 답변을 훨씬 더 정교한 솔루션으로 발전시키는 귀하의 질문을 찾았습니다 . 내 답변에서 링크를 통해 SEO를 도울 수 있기를 바랍니다.)


이것은 매우 도움 됩니다. 가능하다면 이것에 대해 약간의 빛을 비추어 주시겠습니까 ?
GENIVI-LEARNER
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.