본문 바로가기
AI/Stanford Univ. cs231n

5강 Training Neural Networks 1

by coco88 2025. 4. 4.

Activation function

sigmoid function

saturation

넓은 범위의 숫자를 0,1 사이의 숫자로 스쿼시 하며, 입력값에 대해 가중치 영향력 주기에 적합하다.


단점
1. 뉴런이 포화(0 또는 1의 매우 가까운 결과값)되어 gradient를 없애버린다. (vanishing gradient)
2. 결과가 0을 중심으로 이루어지지 않아 수렴(convergence)이 매우 느려진다. 
3. exp()는 연산적으로 매우 비싼 함수이므로 성능의 저하를 가져올 수 있다. 
 
tanh(x)


-1부터 1까지 스쿼시하고, 0 중심이다. 


문제점: x의 값이 매우 작거나 큰 경우에 saturaion이 발생 가능한다. 
saturation(포화 현상): activation function의 출력값이 한쪽 끝에 가까워지는 현상
 
ReLU 

f(x)=max(0,x)
saturation이 발생하지 않으며 연산이 효율적이고 수렴이 빨리 된다. 


문제점: 0 중심이 아니며, x가 음수일 때는 gradient가 0이 된다. (vanishing gradient)
dead ReLU: data cloud를 벗어난 경우 (training 할 때 learning rate를 크게 잡은 경우) 
 
Leaky ReLU 


f(x) = max(0.01x, x)
saturation이 발생하지 않아, 죽는 경우가 발생하지 않는다. 
 
Patametric Rectifier(PReLU)
f(x) = max(αx, x)

Backprop의 학습을 통해 α를 구함
 
Exponential Linear Units (ELU)

f(x) = x (if x>0), α (exp(x)-1) (if x<=0)
ReLU의 모든 장점을 가지고 있다. 죽지 않으며 zero mean output에 가까운 형태를 가진다.


단점: exp()를 연산하는데 비용이 비싸다. 
 
Maxout "Neuron"

saturation이 일어나지 않으며, 값도 죽지 않는다.


단점: 두 개의 파라미터를 가지므로 연산이 두배로 증가한다.
 
총 정리
일반적으로는 ReLU를 사용한다. 
실험을 하는 경우에는 Leaky ReLU, Maxout, ELU를 사용한다.
tanh는 가급적 사용하지 않도록 하고, sigmoid는 더 이상 사용하지 않는다. (LSTM에서는 여전히 sigmoid를 쓰기도 함)
 
 

data processing (데이터 전처리)

 

원본 데이터에서 데이터의 평균을 0으로 맞춰준 후에, 정규화(normalization)를 진행한다.
(이미지 처리 시 zero-centered data는 하지만, 정규화는 잘 진행하지 않는다. 이미지는 이미 0~255 픽셀 범위에 들어있기 때문에)
 
*평균을 0으로 맞추는 방법
평균 이미지를 빼주는 것  ex) mean image = [32,32,3] array
각 채널별로 빼주는 것  ex) mean along each channel = 3 numbers
 
 

decorrelated data(주성분 분석, PCA): 데이터를 비상관화하여 차원을 줄이는 과정이다.
whitened data: 인접한 데이터 간의 중복성을 줄여주는 작업이다.
(이미지 처리 시에는 잘 사용하지 않는다.)
 

Weight Initialization (가중치 초기화)

 모든 가중치가 0으로 초기화된다면 모든 뉴런들이 동일한 연산을 수행하게 되고, Backprop 경우에도 동일한 gradient 연산을 수행할 것이다. 


1. small random numbers

W = 0.01 * np.random.randn(D,H) #0.01을 곱해주고 정규화

 
매우 작은 random number를 사용하는 것
-> 네트워크가 커지게 되면 문제가 생길 수 있다. 
 
2. Xable initialization

W = np.random.randn(fan_in, fan_out) / np.sqrt(fan_in)

input의 개수가 많으면 가중치가 작아지고, input의 개수가 적으면 가중치가 커지는 방법이다. 
-> ReLU를 사용할 때 문제가 생긴다.
 
3. He initialization (카이밍 초기화)

W = np.random.randn(fan_in, fan_out) / np.sqrt(fan_in/2)

ReLU에 최적이다. 
 
 

Batch Normalization

vanishing gradient가 일어나지 않게 하는 방법이다. 학습 속도를 가속화시키며 안정화시킬 수 있다. 

normalize

미니 배치 단위로 각 층 입력의 평균과 분산을 구한 후에, 각 layer에서 normalization을 진행한다.

scale and shift

정규화한 것에 대해 적절한 분포로 조정

 

batch normalization에서 mean과 variance를 구할 때, 

training 할 때는 batch 기준으로 test 할 때는 전체를 기준으로 한다.
 

Hyperparameter Optimization

network architecture, learning rate, regularization 등등을 튜닝해 나가는 것

 

cross-validation strategy: coarse -> fine 
 
하이퍼 파라미터를 찾는 방법
 

Grid search
미리 정의된 하이퍼파라미터 후보들을 모든 조합으로 완전 탐색하는 방법이다. (좋은 정보를 찾아내는 것이 불가)
Random search
하이퍼파라미터 공간에서 임의의 조합을 랜덤하게 샘플링하여 탐색하는 방법이다. 

'AI > Stanford Univ. cs231n' 카테고리의 다른 글

7강 Convolutional Neural Networks  (0) 2025.04.05
6강 Training Neural Networks 2  (0) 2025.04.04
4강 Introduction to Neural Networks  (0) 2025.04.04
3강 Loss Functions and Optimization  (0) 2025.04.04
2강 Image classification  (1) 2025.04.04