일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- unity
- gameplay effect
- widget
- rpc
- 보안
- Unreal Engine
- attribute
- listen server
- stride
- ability task
- 게임 개발
- C++
- MAC
- CTF
- Multiplay
- Aegis
- photon fusion2
- os
- gas
- 언리얼엔진
- animation
- Replication
- gameplay tag
- level design
- 언리얼 엔진
- 유니티
- gameplay ability system
- local prediction
- 게임개발
- UI
- Today
- Total
Replicated
신경망 학습 관련 기술들 본문
확률적 경사하강법 단점
- 비등방성 함수에서는 탐색 경로가 비효율적임
* 비등방성 함수: 방향에 따라 성질(여기선 기울기)이 달라지는 함수
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%에 도달하지 않게 됨
- 표현력을 높이면서 과대적합을 억제 가능
'빅데이터마이닝' 카테고리의 다른 글
순환 신경망 (RNN, Recurrent Neural Network) / LSTM (0) | 2025.06.08 |
---|---|
합성곱 신경망 (CNN, Convolutional Neural Network) (0) | 2025.06.08 |
오차 역전파법 (Backward Propagation) (0) | 2025.06.08 |
신경망 학습 / 수치미분 (0) | 2025.06.08 |
신경망 손글씨 분류 (MNIST), 순전파(forward propagation) (0) | 2025.06.08 |