ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 헤시안 행렬
    Math/Pattern Recognition & Machine Learning 2021. 8. 1. 21:23

    헤시안 행렬

    다변수 스칼라함수 $f(x, y, z ,...)$를 다차원 입력의 각 원소들로 미분한 이차미분값을 담은 행렬을 헤시안 행렬이라고 하고 $\mathbf H(f), \mathbf Hf, \mathbf H_f$등으로 표기한다.

    $$\mathbf H(f) = \begin{bmatrix} \partial^2f \over \partial x^2 & \partial^2f \over \partial x \partial y & \partial^2f \over \partial x \partial z & \cdots~~ \\ \partial^2f \over \partial y \partial x & \partial^2f \over \partial y^2 & \partial^2f \over \partial y \partial z & \cdots~~ \\ \partial^2f \over \partial y \partial x & \partial^2f \over \partial y^2 & \partial^2f \over \partial y \partial z & \cdots~ \\ \vdots & \vdots & \vdots & \ddots \end{bmatrix}$$

    • 다변수함수가 연속이라면 헤시안 행렬은 대칭행렬이 된다.
    • 다변수함수는 스칼라 함수여야 헤시안 행렬을 정의할 수 있다.

    자코비안 행렬과의 차이점 :

    • 자코비안 행렬은 다변수 벡터함수를 벡터로 미분한 결과이다.
    • 즉, 헤시안 행렬은 스칼라함수의 그래디언트에 대한 자코비안 행렬이다.
    • 비선형변환을 미소구간에 대해 선형변환으로 근사시킬 때 사용한다.
    • 그러므로 Jacobian의 행렬의 행렬식의 의미는 원래 좌표계에서 변환된 좌표계로 변환될 때의 넓이의 변화 비율을 말해준다

     

    이계도함수

    $$f^{\prime \prime}(x) = {d^2f(x) \over dx^2}$$

    변화량 자체가 어떻게 변하는지를 나타내는 함수로 함수의 볼록과 오목의 정도를 결정한다.

    • 따라서 헤시안 행렬의 대각성분들은 스칼라함수가 특정 원소에 대해 볼록한 정도를 나타낸다.
    • 선형대수에서 모든 행렬은 선형변환으로 생각할 수 있다고 배웠다.
    • 기하학적으로 Hessian matrix가 시행하고 있는 선형 변환은 함수를 좀 더 볼록하거나 오목하게 만드는 변환이다.

     

    양의 정부호 행렬

    행렬의 고윳값이 모두 양수( 0 초과)인 행렬로 행렬을 곱해서 벡터를 변환시켰을 때 부호가 바뀌지 않게 만드는 행렬이다.

    • 고윳값이 0 이상인 조건이면 *준정부호 행렬이라고 한다.
    • 벡터를 same-general (90도 이하) 방향으로 선형변환하게 된다.
    • 양의 정부호 조건이 중요한 이유는 이 조건이 없으면 이차미분값을 통한 지역적 근사를 진행할 때, 그에 대한 수렴을 보장하지 못하게 된다.

     

    왜 헤시안 행렬이 필요한가?

    • 뉴럴네트워크에 사용되는 몇몇 비선형 최적화 알고리즘 ex) 반복 재가중 최소제곱법(뉴턴랩슨), 레벤버그 마쿼트 에 사용된다.
    • 뉴턴랩슨의 경우 극소점 부근에서는 유용하지만 안장점 부근에서는 해가될 수 있다.
    • 헤시안 행렬의 역행렬이 가중치 가지치기(weight prunning)에 사용된다.
    • 헤시안 행렬은 라플라스 근사를 하는데 필요하다. 헤시안의 역행렬로 네트워크의 예측 분포를 결정하는데 사용되고, 헤시안 행렬의 고윳값들은 하이퍼파라미터를 결정하는데 사용된다. 마지막으로 헤시안의 행렬식은 모델 증거를 계산하는데 사용된다.

    대각근사

    • 라플라스 근사에서 헤시안 행렬의 대각행렬을 구하면 매우 유용하다.
    • 즉, 헤시안 행렬을 구하는데 대각성분을 제외한 모든 원소를 0으로 설정한다.
    • 이렇게 하면, 헤시안 행렬의 역행렬은 그냥 역수를 취하고 반대로 배열하면 되기 때문이다.

    n개의 데이터들을 통해 구한 오류들의 합을 고려해보자.

    $$E = \sum_nE_n$$

    한 번에 하나의 입력패턴에 대해 혼합 미분을 계산한 다음, 전체를 합해서 헤시안 행렬을 구할 수 있다. 앞의 역전파 파트에서 보았듯이 feed-forward 계산을 위해 필요한 식들은 아래와 같다.

     

    $$\sum_k w_{kj} \times \bigg \lbrack {\partial \over \partial a_j} {\partial E_n\over \partial a_k} \cdot h^\prime(a_j) ~+~ {\partial E_n\over \partial a_k} {\partial h^\prime(a_j) \over \partial a_j} \bigg \rbrack$$

    결국 식은 다음과 같이 된다.

    $${\partial^2E_n \over \partial a^2_{j}} = h^\prime(a_j)^2\sum_k \sum_{k^{\prime}}w_{kj}w_{k^{\prime}} {\partial^2E_n \over \partial a_{k}a_{k^\prime}} ~ + ~ h^{\prime \prime}(a_j) \sum_kw_{kj} {\partial E_n \over \partial a_{k}}$$

     

    [출처]

    1. https://darkpgmr.tistory.com/141
    2. https://ko.wikipedia.org/wiki/헤세_행렬
    3. https://towardsdatascience.com/what-is-a-positive-definite-matrix-181e24085abd

     

    'Math > Pattern Recognition & Machine Learning' 카테고리의 다른 글

    [PRML] 8.4.4 Sum-Product Algorithm  (0) 2021.12.27
    정보이론 간단 요약  (0) 2021.08.10
    랜덤 프로세스  (0) 2021.08.07

    댓글

Designed by Tistory.