-
헤시안 행렬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}}$$
[출처]
- https://darkpgmr.tistory.com/141
- https://ko.wikipedia.org/wiki/헤세_행렬
- 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