250x250
반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- BigQuery
- 상관관계
- XAI
- tensorflow text
- integrated gradient
- Airflow
- session 유지
- spark udf
- top_k
- requests
- 유튜브 API
- correlation
- youtube data
- login crawling
- grad-cam
- API
- flask
- GCP
- GenericGBQException
- API Gateway
- hadoop
- airflow subdag
- subdag
- TensorFlow
- UDF
- 공분산
- chatGPT
- Counterfactual Explanations
- gather_nd
- Retry
Archives
- Today
- Total
데이터과학 삼학년
Batch normalization 적용으로 train set 데이터의 정규화 대체! 본문
반응형
딥러닝 학습 과정 중 gradient vanishing 과 gradient exploding 문제는 매우 크리티컬한 문제이다.
gradient 소실, 폭주와 관련한 문제의 원인은 크게
-
초기화
-
활성화 함수
문제로 확인되었다.
글로럿과 벤지오에 의해서 세이비어 초기화, 글로럿 초기화, 그리고 Relu (변형된 relu -> 일부 뉴런이 0이외의 값을 출력하지 않는 dying Relu 문제로 인해 파생) 로 인해 gradient와 관련한 문제를 해결하였다.
여기에, 위 문제를 추가적으로 해소할 수 있는 방법이 Batch normalization 이다.
(이외 gradient clipping 을 쓸 수도 있다)
Batch normalization의 일반적 특징
-
과적합을 피하기 위한 기능 : dropout 과 유사
-
빠른 학습 : layer 마다 출력값들을 다시 정규화하기 때문
-
입력 평균과 표준편차의 이동평균을 이용하여 훈련하는 동안 최종 통계 추정
-
-
그래디언트 소실, 폭주 문제 해소
-
학습 데이터 표준화를 대체 가능
모델의 첫번째 layer로 활용시 훈련세트를(standardScaler, minmaxScaler 등) 표준화할 필요가 없다!!! 라는 것이다.
tf.keras.layers.BatchNormalization(
axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True,
beta_initializer='zeros', gamma_initializer='ones',
moving_mean_initializer='zeros',
moving_variance_initializer='ones', beta_regularizer=None,
gamma_regularizer=None, beta_constraint=None, gamma_constraint=None,
renorm=False, renorm_clipping=None, renorm_momentum=0.99, fused=None,
trainable=True, virtual_batch_size=None, adjustment=None, name=None, **kwargs
)
Batch normalization을 이용한 학습 데이터 표준화 불필요 코드 예시
from keras.models import Sequential
from keras.layers import Dense, Activation, Flattten, BatchNormalization
model = Sequential([
Flattten(input_shape=[28,28],
BatchNormalization(),
Dense(256, activation='elu',kernel_initializaer='he_normal',input_shape=(784,)),
BatchNormalization(),
Dense(128, activation='elu',kernel_initializaer='he_normal',input_shape=(784,)),
BatchNormalization(),
Dense(10,activation='softmax')
])
728x90
반응형
LIST
'Machine Learning' 카테고리의 다른 글
PCA (Principal Component Analysis) 종류 (0) | 2021.02.02 |
---|---|
PCA (Principal Component Analysis) - 주성분 분석 (0) | 2021.01.13 |
[Clustering] DBSCAN (0) | 2021.01.01 |
Anomaly Detection 종류(Point, Contextual, Collective) (0) | 2020.12.01 |
tf.keras serving function을 이용한 feature transform 적용 방법 (0) | 2020.11.25 |
Comments