Tuesday, August 15, 2017

Gradient, Jacobian, Hessian, Laplacian, eigenvector, eigenvalue 개념

요약

  • Gradient : (다변수 함수 f에 대한) 각 변수에 대한 1차 미분
  • Jacobian : 1차 미분
  • Hessian : 2차 미분
  • Laplacian: 2차 편미분값의 합

Gradient

  • (다변수 스칼라 함수 f에 대한) 1차 미분을 통해, 함수 f의 값이 가장 가파르게 변하는 방향 및 크기(=기울기)를 표현
    • 어떤 함수를 local하게 linear approximation할 경우
    • gradient descent 방식으로 최소값(또는 최대값) peak를 찾을 경우
    • 영상 입력의 edge 및 edge 방향을 찾을 경우.

Jacobian

  • Jacobian matrix: the matrix of all first-order partial derivatives of a vector-valued function (= 다변수 벡터 함수에서의 1차 미분값을 나타내는 행렬
    • 미분 기울기를 구할 때, $\Delta x$ 후의 $y$값을 선형 근사하여 예측하는 것과 비슷한 원리
    • 복잡하게 얽혀있는 식을 (미분을 통해 linear approximation시킴으로써) 간단한 근사 선형식으로 만들어주는 것
    • 비선형 연립방정식의 해를 구할 때도 활용됨.
  • Gradient는 단일 변수 함수의 1차 미분을 다변수 함수로 확장한 개념이라면, Jacobian은 이를 다시 다변수 벡터 함수로 확장 적용한 개념임.
  • 벡터 함수 vs 스칼라 함수
    • 벡터 함수: 결과값이 다차원인 함수
    • 스칼라 함수: 결과값이 1차원 값인 함수
      • 스칼라 = 크기만 있고 방향을 가지지 않는 양

Hessian

  • 함수의 곡률(curvature)를 나타내는 행렬
    • 2차 편미분값의 행렬
    • symmetric matrix(=편미분의 순서가 바뀌어도 결과 동일)이므로, 항상 고유값 분해가 가능; 서로 수직인 n개의 고유벡터를 가짐.
  • 함수의 1차 미분값이 0이 되는 지점(=critical point=stationary point=peak)의 종류가 {saddle point, 극대점, 극소점} 중 어떤 종류인지를 구별하기 위해, 2차 미분값을 구하여 계산할 수 있음
    • critical point에서 계산한 Hessian matrix의 고유벡터(eigenvector)는 함수의 곡률이 큰 방향 벡터를 나타냄
    • critical point에서 계산한 Hessian matrix의 고유값(eigenvalue)은 함수의 곡률(2차미분값)을 나타냄
      • 모든 고유값이 positive = 극소점
      • 모든 고유값이 negative = 극대점
      • 고유값에 posive & negative 포함 = saddle point(안장점) 
  • 영상 입력에 대한 Hessian은 픽셀의 밝기를 나타내는 함수로 활용됨.

Laplacian

  • 각 변수로의 2차 편미분 값의 합
  • 영상 입력에서의 픽셀 밝기를 나타내는 함수로 활용됨
    • +, - 값을 0~255 사이의 값으로 scale하면 급격한 이미지 밝기 변화를 찾는 필터 효과.
  • vs Gradient
    • Gradient의 크기값은 영상의 밝기 변화가 급격할 수록 큰 값을 나타냄
    • Laplacian의 크기값은 {영상 밝기 변화}의 변화가 급격할 수록 큰 값을 나타냄. 즉, 밝기 변화의 속도가 일정하다면, 작은(0에 가까운) 값을 가짐. 
      • 영상의 밝기 변화가 평면형(planar)를 이룰 때 최소값을 가지며, 극대/극소점에서 처럼 모든 방향으로의 밝기 변화가 심할 때 최대값을 가짐 -> blob이나 corner point 를 찾는 용도로 활용 가능.

Other

  • 영상 특징점 추출방법 (2014.04)
  • Image scale 다루기 (2014.05)
    • 영상 입력에서의 개체 특징을 계산함에 있어 다중의 크기(multi-scale)를 고려하여 분석하기
      • 방법1) image pyramid: 이미지를 단계적으로(예: 1.05배 또는 1.1배씩) 축소시켜 생성된 이미지들의 집합에 대해 (고정 크기의) sliding window(=filter=kernel)을 이용하여 특정 개체 존재 여부를 판단하는 기법
      • 방법2) scale space: 대상이 가질 수 있는 다양한 스케일의 범위를 한꺼번에 활용하고자, Gaussian blurring으로 smoothing된 이미지들을 이용. ->  scale parameter(=sigma) 값이 높아질 수록 blur 정도가 높아져서 흐릿한 이미지가 생성됨. -> 이미지의 blur 정도가 높아지면 세부적인 detail이 사라지고, 보다 큰 scale에서의 이미지 구조를 파악할 수 있다고 함.
      • 기타 방법) Gaussian Pyramid: bluring과 sub-sampling을 반복하여 입력을 1/2씩 축소하여 피라미드를 생성하는 방식. -> scale 변화가 매우 coarse하게 sampling하는 방식이므로 연산 비용 및 시간 단축되나, 개체 비교/매칭이 다소 어려워진다고 함. 
  • eigenvalue, eigenvector (2013.10)
    • eigenvector : (n x n정방행렬 = 선형 변환) $A$에 의한 변환 결과가 자기 자신의 (0이 아닌) 상수배가 되는 벡터 $v$
      • 이 때의 상수배 값을 eigenvalue(고유값)이라고 정의함.
      • $Av = \lambda v$ ($\lambda \neq 0$)
      • 결국, 주어진 선형 변환에 의해 방향이 보존되는 방향 벡터를 의미함 (예를 들어, 지구의 자전운동에 해당하는 회전변환의 경우, 회전변환에 의해 변화하지 않는 회전축을 고유벡터로 간주될 수 있음)
        • 선형변환이 일어나더라도 방향이 변하지 않는 벡터.
      • 예를 들어, 그림을 선형변환 시켰을 때, 변화하지 않는 축 방향의 벡터로 볼 수 잇음.
    • eigendecomposition (고유값 분해)
      • $AP=P\Lambda$ -> $A=P\Lambda P^{-1}$ 
      • 정방 행렬 $A$를 eigenvector 행렬($P$)와 eigenvector 행렬($\Lambda$)을 이용한 행렬 곱으로 대각화 분해하는 기법.
      • 고유값분해를 이용할 경우, A의 행렬식(determinant=선형변환의 scale 및 방향), A 거듭제곱, 역행렬, 대각합(trace), 행렬 다항식을 손쉽게 계산할 수 있다고 한다.
    • eigenvector 개념에 대해서 가장 잘 설명한 블로그

No comments:

Post a Comment

Windows 10 High DPI 에서 Java application의 Font 조절

Reference:  How do I run Java apps upscaled on a high-DPI display?  @superuser.com Summarize 1) Find java.exe you installed.  2) Righ...