4. Numerical Computation

기계 학습 계산에서 수치적으로 주의해야 할 점은 뭘까?

4.1. Overflow and Underflow

반올림 오차 중 심각한 것은 언더플로우로 0 근처의 작은 값이 0이 되는 것이다. 또 다른 심각한 오차는 오버플로우로 큰 수치가 ∞나 -∞로 근사되는 것이다. 이러한 문제점을 겪는 함수의 예로 소프트맥스 함수가 있다. 이는 \mathbf{z} = \mathbf{x} - \max_{i} x_{i}에 대해 softmax(\mathbf{z})를 구해 해결한다. 언더플로우는 로그를 취해 해결한다.

4.2. Poor Conditioning

행렬이 고유값 분해를 가질 때 그 조건수\max_{i, j} \lvert \frac{\lambda_{i}}{\lambda_{j}} \rvert이라 하는데, 이 숫자가 커지면 행렬의 역행렬 연산이 입력 오차에 민감해진다.

4.3. Gradient-Based Optimization

기계 학습 알고리즘에서 최소화/최대화시키고자 하는 함수를 목적 함수 또는 기준값이라 한다. 최소화시키고자 할 때 이를 비용 함수, 손실 함수, 오차 함수라고도 한다. 그 도함수를 통해 최적화 하는 것을 경사 하강법이라 한다. 도함수가 0인 점을 임계점, 고정점이라 한다. 극소값은 인접한 구간과 비교해 함수값이 최소가 되는 값이다. 극대값은 인접한 구간과 비교해 함수값이 최대가 되는 값이다. 극소값도 극대값도 아닌 임계점을 말안장점이라 한다. 전 구간과 비교해 함수값이 최소가 되는 값을 전역 최소값이라 한다.

입력이 여러 개인 함수에 대해서는 편도함수의 개념을 생각할 수 있다. 경사는 이 경우에 도함수의 개념을 일반화한다. 방향도함수는 특정 방향에 대해 도함수를 취한 것이다. 이를 이용해 함수가 가장 빠르게 감소하는 방향을 찾는 방식을 최급강하법 또는 경사 하강법이라 한다. 이 때 방향도함수에 곱하는 상수값을 학습율이라 한다. 학습율을 선택하는 방법에는 선 탐색 등이 있다. 경사 하강법을 이산공간에 확장한 것을 언덕 오르기법이라 한다.

4.3.1. Beyond the Gradient: Jacobian and Hessian Matrices

모든 편도함수를 포함하는 행렬을 자코비안 행렬이라 한다. 도함수의 도함수를 이계도함수라 한다. 일변수함수에서 이는 곡률이라 할 수 있다. 다변수함수에서는 이계도함수의 행렬을 헤시안 행렬이라 한다. 이계도함수를 통해 임계점이 극대값인지 극소값인지 말안장점인지 테스트할 수 있는데 이를 이계도함수 판정법이라 한다. 헤시안 행렬을 이용한 뉴턴법으로 경사 하강법의 계단 크기를 정하는 데 도움을 줄 수 있다.

경사만 사용하는 최적화법을 일차 최적화 알고리즘이라 한다. 헷안도 사용하는 최적화 알고리즘을 이차 최적화 알고리즘이라 한다. 심층 학습에서는 함수가 리프시츠 연속임을 보장하면 도움이 될 때가 있는데 이는 함수의 변화율이 리프시츠 상수 이하로 제한된다는 특성이다. 이는 경사 하강법에서 입력의 작은 변화가 출력에 있어 큰 변화를 유도하지 않음을 보장하므로 도움이 된다. 또 다른 특별한 최적화 분야는 볼록 최적화가 있다.

4.4. Constrained Optimization

함수를 정의역 전체가 아닌 특정 실현 가능한 지역에 대해서만 최소/최대값을 찾고자 할때 이를 제한된 최적화라 한다. 카루시-쿤-터커(KKT) 접근법은 제한된 최적화에 대해 일반적인 해를 제공한다. 이 경우 일반화된 라그랑지안(일반화된 라그랑주 함수)를 쓴다. 이는 일련의 등식 조건부등식 조건에 대해 최적화를 진행한다. 이 때 쓰이는 조건식에서 h^{(i)}(\mathbf{x}^{\ast})=0일 때 이 조건식이 활성화되었다고 한다. 조건식이 활성화되지 않았다면 그 조건식을 통해 찾아낸 문제의 해는 그 조건식이 삭제되었어도 국소적 해로 남아있을 수 있다.

4.5. Example: Linear Least Squres

선형 최소 제곱법 알고리즘에 대한 적용례는 다음과 같다:

f(\mathbf{x}) = \frac{1}{2} \lVert \mathbf{A} \mathbf{x} - \mathbf{b} \rVert_{2}^{2}\mathbf{x}에 대해 최소화시키려면, 먼저 \epsilon > 0\delta > 0을 작은 값으로 정한 뒤, \lVert \mathbf{A}^{T} \mathbf{A} \mathbf{x} - \mathbf{A}^{T} \mathbf{b} \rVert_{2} > \delta인 동안 \mathbf{x} = \mathbf{x} - \epsilon(\mathbf{A}^{T} \mathbf{A} \mathbf{x} - \mathbf{A}^{T} \mathbf{b}를 수행한다.

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google photo

Google의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중