# 학습의 초기화

인공신경망(ANN, Artificial Neural Networks)의 학습에서 초기화는 모델의 성능에 중요한 영향을 미친다. 초기화가 잘못되면 기울기 소실(Vanishing Gradient) 또는 기울기 폭주(Exploding Gradient)와 같은 문제가 발생할 수 있다. 이러한 문제는 신경망의 학습 속도를 늦추거나, 최악의 경우 학습을 불가능하게 만들 수 있다.

#### 초기화 방법의 역사적 발전

초기의 신경망 모델에서는 가중치를 작은 임의의 값으로 초기화하는 방법이 주로 사용되었다. 이러한 방식은 간단하지만, 깊은 신경망에서는 기울기 소실(Vanishing Gradient)이나 폭발(Exploding Gradient) 문제를 일으킬 수 있었다. 이를 해결하기 위해 다양한 초기화 전략이 제안되었다.

#### 초기화 방법

대표적인 초기화 방법으로는 제비에 초기화(Xavier Initialization)와 He 초기화(He Initialization)가 있다.

**무작위 초기화 (Random Initialization)**

초기화 방법 중 가장 기본적인 방법은 무작위 초기화이다. 여기에서는 각 가중치를 작은 무작위 값으로 설정한다. 이러한 초기화는 각 뉴런이 서로 다른 입력 패턴에 대해 학습하도록 해준다. 일반적으로 가중치는 0을 중심으로 대칭적으로 분포된 값으로 초기화된다. 대표적인 방법으로는 작은 표준 편차를 가진 정규분포(Normal Distribution)에서 값을 샘플링하는 방식이 있다.

**제비에 초기화**

제비에 초기화는 Glorot et al.에 의해 제안된 방법으로, 입력과 출력의 노드 수에 따라 가중치의 분산을 조절한다. 이 방법은 기울기 소실 문제를 완화하는 데 효과적이다. Xavier 초기화에서는 가중치를 $ \sqrt{\frac{1}{n}} $ (여기서 n은 이전 층의 뉴런 수)로 초기화한다. 이 방법은 주로 활성화 함수로 시그모이드(Sigmoid)나 하이퍼볼릭 탄젠트(Tanh)를 사용할 때 적합한다.

**He 초기화**

He 초기화는 ReLU (Rectified Linear Unit) 활성화 함수에 최적화된 초기화 방법이다. He 초기화는 가중치를 $ \sqrt{\frac{2}{n}} $로 초기화한다. 여기서 n은 이전 층의 뉴런 수이다. 이 방법은 Xavier 초기화보다 ReLU와 같은 비선형 활성화 함수에 더 적합하며, 기울기 폭주 문제를 완화하는 데 도움이 된다.

**Lecun 초기화**

Lecun 초기화는 Xavier 초기화와 비슷하지만, 시그모이드와 같은 특정 활성화 함수에 더 적합한다. 이 방법에서는 가중치를 $ \sqrt{\frac{1}{n}} $ (여기서 n은 입력 뉴런 수)로 초기화한다. 이는 주로 Lecun Tanh 활성화 함수와 함께 사용된다.

**Orthogonal 초기화**

Orthogonal 초기화는 초기 가중치 행렬이 직교 행렬(Orthogonal Matrix)을 따르도록 설정하는 방법이다. 이 방법은 딥러닝 모델의 깊이에 상관없이 안정적인 학습을 지원할 수 있다. 주로 RNN (Recurrent Neural Networks)에서 많이 사용된다. 직교 행렬을 사용함으로써 정보가 각 층을 통해 잘 전달되도록 보장할 수 있다.

**Variance Scaling 초기화**

Variance Scaling 초기화는 가중치의 분산을 입력 및 출력의 크기에 맞추어 조정하는 방법이다. 이 방법은 다양한 활성화 함수와 네트워크 구조에 맞게 가중치를 조정할 수 있도록 설계되었다. 기본적으로 Xavier와 He 초기화를 포함하는 일반화된 방법으로 볼 수 있다.

**Bias 초기화**

가중치 초기화뿐만 아니라, 바이어스 초기화도 중요하다. 바이어스는 일반적으로 0으로 초기화한다. 이는 초기 단계에서 네트워크가 과도한 편향을 가지지 않도록 하기 위함이다. 그러나 경우에 따라 비제로 값으로 초기화하는 것이 유리할 수도 있다.

#### 초기화의 실험적 조정

신경망의 구조나 학습 문제의 특성에 따라 초기화 방법은 실험적으로 조정될 필요가 있다. 특정 초기화 방법이 항상 최적의 결과를 보장하지는 않기 때문에, 학습 데이터를 기반으로 한 실험적 접근이 필요하다. 이를 통해 가장 적합한 초기화 방법을 찾을 수 있다.

***

관련 자료:

* Glorot, X., & Bengio, Y. (2010). Understanding the difficulty of training deep feedforward neural networks. In Proceedings of the Thirteenth International Conference on Artificial Intelligence and Statistics (pp. 249-256).
* He, K., Zhang, X., Ren, S., & Sun, J. (2015). Delving deep into rectifiers: Surpassing human-level performance on ImageNet classification. In Proceedings of the IEEE international conference on computer vision (pp. 1026-1034).
* Lecun, Y., Bottou, L., Orr, G. B., & Muller, K. R. (1998). Efficient backprop. In Neural networks: Tricks of the trade (pp. 9-50). Springer, Berlin, Heidelberg.
