| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 유니티
- Multiplay
- gas
- os
- attribute
- Aegis
- Unreal Engine
- ability task
- photon fusion2
- 보안
- linear regression
- rpc
- 언리얼 엔진
- listen server
- gameplay ability system
- stride
- unity
- animation
- 언리얼엔진
- Replication
- MAC
- CTF
- 게임 개발
- local prediction
- gameplay tag
- C++
- 게임개발
- gameplay effect
- widget
- UI
- Today
- Total
Replicated
DNN 본문
https://lagooneng.tistory.com/561
오차 역전파법 (Backward Propagation)
신경망 학습 과정1. 순전파 (Forward Propagation)2. 손실함수 계산3. 역전파 (Backward Propagation)4. 파라미터 업데이트 수치 미분 vs 오차 역전파법수치미분- 단순하고 구현하기 쉽지만 계산 시간이 오래 걸
lagooneng.tistory.com
싱글 레이어 퍼셉트론은 선형 분리 문제만 풀 수 있음
XOR 같은 문제 해결 불가
-> 멀티 레이어 뉴럴 네트워크
역전파 알고리즘 (Back propagation)
- 에러를 정의하고, 뒤로 전파시킴
에러 -> 뒤쪽에서 썼던 가중치랑 δ (기울기랑 e 곱한 거)를 곱하면 됨
단, 기울기 소실 문제가 있어 활성화 함수를 잘 골라야 함
ReLU
- 활성화 함수의 하나
- 시그모이드보다 계산이 빠르기도 하고, 더 빠르게 수렴함
- 하지만 ReLU는 음수를 모두 0으로 처리, 한 번 음수가 나오면 더이상 그 노드는 학습하지 않음
- 이를 보완한 것이 Leaky ReLU
ReLU
- f(x) = max(0, x)
Leaky ReLU
- f(x)
- x, if > 0
- 0.01x, otherwise
https://lagooneng.tistory.com/562
신경망 학습 관련 기술들
확률적 경사하강법 단점- 비등방성 함수에서는 탐색 경로가 비효율적임* 비등방성 함수: 방향에 따라 성질(여기선 기울기)이 달라지는 함수 f(x, y) = 1/20x^2 + y^2- 기울기를 그려보면 y축 방향은 크
lagooneng.tistory.com
Momentum
- 트레이닝 속도를 올리는데 진동의 리스크는 줄이는 목적
- 관성처럼 과거의 기울기 값을 일정한 비율만큼 반영
Δw = αex
m = Δw + β_m
w <- w + m
_m = m
* _m: 이전 모멘텀, 초기값 0
모멘텀은 가중치 갱신값을 새로 계산할 때 델타 룰 외에 모멘텀을 추가로 더해서 가중치를 변경하는 방식
가중치 갱신값이 바로 바뀌지 않고 어느정도 일정한 방향을 유지하면서 움직이게 됨
관성을 가진 물체가 움직일 때 외부의 힘에 의해 쉽게 휘둘리지 않는 것과 유사
현재 모멘텀은 과거 모멘텀 값이 계속 추가됨으로서 가중치 갱신값이 계속 커지게 됨
β값이 너무 크면 오히려 학습이 안됨
가중치 감쇠 (weight decay)
- 신경망을 학습하는 과정에서 주어진 데이터에 딱 맞게 가중치 조절시 과적합
- 가중치 w를 갱신할 때마다 0~1 가중치 ε를 곱함
W <- ( W + ΔW ) * (1 - ε)
드롭 아웃
- 오버피팅을 막기 위한 방법
- 가중치 감쇠보다 더 좋은데, 학습이 좀 느려짐
- 데이터가 평균보다 좀 많은 경우 효과적인데, 이미 데이터가 충분하면 별 도움 안됨
훈련시
- 각 뉴런은 확률 p에 따라 유지, 비활성화. 일부 뉴런이 꺼진 상태로 학습하게 됨
테스트시
- 전체 네트워크를 모두 활성화
- 학습 때 뉴런이 일부만 켜진 것을 보정하기 위해 가중치를 p 만큼 스케일 다운
드롭아웃 비율 p의 효과
너무 높으면(p<0.3): 학습이 제대로 안됨 (언더피팅)
적당한 비율 : 약 0.5
드롭아웃 안하면(1.0): 오버피팅
데이터셋 크기에 따른 드롭아웃 효과
매우 작으면: 오히려 오류
중간~큰 데이터셋: 개선 효과가 큼
매우 큰 데이터셋: 그냥 별 효과가 없음
Initialize W
가중치 초기화는 성능에 큰 영향
랜덤은 좋지 않음
Xavier initialize
초기값의 표준편차가 1/√n 이 되도록 설정 (n은 앞 층의 노드 수)
import numpy as np
fan_in, fan_out = 3, 4
mn, sd = 0, 0.01 # mean, standard deviation
np.random.seed(123)
W_val = np.random.normal(mn, sd, fan_in*fan_out)/np.sqrt(fan_in)
W = W_val.reshape(fan_in,fan_out)
np.random.normal은 정규 분포로 만들어줌
입력 노드 수에 따라 분산이 너무 커지지 않게 조정
-> 입력과 출력의 분산이 균형
He initialize
- ReLU 그래디언트 소실 문제 완화.. 비선형 활성화 함수에 적합
import numpy as np
fan_in, fan_out = 3, 4
mn, sd = 0, 0.01 # mean, standard deviation
np.random.seed(123)
W_val = np.random.normal(mn, sd, fan_in*fan_out)/np.sqrt(fan_in/2)
W = W_val.reshape(fan_in,fan_out)
ReLU는 He 초기화가
시그모이드나 tanh는 Xavier 초기화가 좋음
'학부 > 딥러닝' 카테고리의 다른 글
| Keras - MNIST (0) | 2025.10.25 |
|---|---|
| Keras 개요 (0) | 2025.10.18 |
| 신경망 학습 (0) | 2025.10.18 |
| 인공신경망 개요 (0) | 2025.10.18 |
| Feature Selection, Model Stacking (0) | 2025.10.18 |