Replicated

신경망 학습 관련 기술들 본문

빅데이터마이닝

신경망 학습 관련 기술들

라구넹 2025. 6. 8. 13:30

확률적 경사하강법 단점

- 비등방성 함수에서는 탐색 경로가 비효율적임

* 비등방성 함수: 방향에 따라 성질(여기선 기울기)이 달라지는 함수

 

f(x, y) = 1/20x^2 + y^2

- 기울기를 그려보면 y축 방향은 크고 x축 방향은 작음

- SGD 수행 시 심하게 시그재그로 여러번 움직여 탐색 -> 비효율

- 기울어진 방향이 본래의 최솟값과 다른 방향을 가리키기 때문

 

 

모멘텀(Momentum)

- 관성처럼 과거의 기울기 값을 일정한 비율만큼 반영

- 경사 방향이 일정한 축에서는 속도가 누적되어 빠르게 이동

- 진동하는 축에서는 속도가 상쇄되어 진동 억제

- W: 모델의 가중치 벡터

- : 속도 벡터 (momentum)

- : 모멘텀 계수 (보통 0.9 정도로 설정)

- : 학습률 (learning rate)

- ∇L(W): 손실 함수 의 가중치에 대한 그래디언트

 

 

AdaGrad

- 학습률 감소 (learning rate decay): 학습을 진행하면서 학습률을 점차 줄여가는 방법

- 전체 매개변수 학습률을 일괄적으로 낮추지 않고, 개별 매개변수에 적응적으로 학습률을 조정

- 매개변수 중 이미 갱신이 많이 된 원소는 학습률을 낮게 만듦 -> 과한 업데이트 방지

- 기울기가 처음에 큼 -> 그 큰 움직임에 비례해 갱신 정도도 큰 폭으로 작아짐

- : 누적된 제곱 그래디언트

- : 요소별 곱 (element-wise multiplication)

 

 

Adam (Adaptive Momentum Estimation)

- 모멘컴과 AdaGrad를 융합한 효과를 보이는 방법

 

 

풀어야 할 문제, 하이퍼파라미터 등에 따라서 어떤 갱신 방법이 효율적인지 달라짐

어떤게 무조건 좋진 않음


 

초기값 설정

- 상황 가정: 시그모이드를 사용하는 5층 신경망, 각 층 뉴런 100개

- 무작위로 생성한 1000개의 입력 데이터 -> 활성화 값 분포 확인

 

가중치가 표준편차가 1인 정규 분포로 초기화 시 ( 1 * np.random.randn(num_node, num_node) )

- 활성화 값들이 0과 1에 치우쳐 분포됨

- 시그모이드 함수는 0 또는 1과 가까워질 경우 미분값이 0과 가까워져 역전파 기울기 값이 점점 작아지다 사라짐

=> 기울기 소실 (Gradient Vanishing)

* 시그모이드 범위가 0 ~ 1인데, 입력이 매우 크거나 작으면 출력은 0 또는 1에 수렴. 

* 시그모이드 출력이 0, 1에 치우침 -> 출력이 치우쳐서 기울기 소실됨 -> 학습이 안됨

* 가중치를 표준 정규분포로 초기화 시 분산이 커지고 뉴런 입력값이 너무 크거나 작아짐

 

가중치를 표준 편차가 0.01인 정규 분포로 초기화 시 ( 0.01 * np.random.randn(num_node, num_node) )

- 활성화 값들이 0.5 부근에 집중. 다수의 뉴런이 같은 값을 출력함

- 표현력이 제한되고 뉴런을 여러 개 둔 의미가 없어짐

 

 

Xavier 초기값

- 활성화 값들을 광범위하게 분포시킬 목적으로 가중치의 적절한 초기값 분포를 제안

- 초기값의 표준편차가 1/√n 이 되도록 설정 (n은 앞 층의 노드 수)

 

배치 정규화 (Batch Normalization)

- 각 층이 활성화 값을 적당히 퍼뜨리도록 강제

- 각 층의 입력 데이터를 평균이 0, 분산이 1이 되게 정규화

 

Affine - Batch Norm - ReLU => Affine - Batch Norm - ReLU => Affine -> Softmax ->

 

- 학습 도중 각 층의 입력 분포가 계속 변하면 학습이 느려지고 불안정해짐

- 배치 정규화 사용해서 적절한 분포로 정규화

 

배치 정규화의 효과

1. 학습 속도 개선

2. 초기값에 크게 의존하지 않음

3. 과대적합 억제

 

평균 계산

μB = 현재 미니 배치의 평균

- xi: 배치 내 데이터 샘플

- m: 배치 크기

 

분산 계산

σB^2 = 현재 미니 배치의 분산

- 평균에서 얼마나 퍼져 있는지를 계산

 

정규화

- 각 입력 값을 평균 0, 분산 1이 되도록 정규화

- ε는 분모가 0이 되는 것을 방지하는 아주 작은 수

 

배치 정규화 계층마다 정규환 데이터에 고유한 확대(스케일)와 이동(시프트) 변환 수행

-> 모델 표현력 유지를 위함

- 감마: 확대

- 베타: 이동

- 초기값은 감마 1 베타 0부터 시작하고 학습하면서 적합한 값으로 조정

 

 

- 거의 모든 경우 배치 정규화를 사용하면 학습 진도가 빠름

- 배치 정규화를 이용하면 가중치 초기값에 크게 의존하지 않아도 됨

- 이용하지 않는 경우, 초기값이 잘 분포되어 있지 않으면 학습이 전혀 진행되지 않기도 함

 

 

드롭 아웃 (Drop Out)

- 과대 적합을 억제하는 방법 중 하나

- 특정 뉴런에 과도하게 의지하지 않도록 함

* 테스트 데이터의 다른 예외사항을 처리하지 못하게 되는 경우 방지

 

- 데이터를 입력할 때마다 삭제할 뉴런을 무작위로 선택

- 시험 때는 모든 뉴런에 신호 전달

- 각 뉴런의 출력에 훈련 때 삭제하지 않은 비율을 곱하여 출력

 

드롭 아웃의 효과

- 훈련 데이터와 시험 데이터에 대한 정확도 차이가 줄어듦

- 훈련 데이터에 대한 정확도가 100%에 도달하지 않게 됨

- 표현력을 높이면서 과대적합을 억제 가능