Dropout
Dropout은 학습 과정중에서 무작위로 일정 비율의 뉴런을 비활성화 시키는 방법이다
보통 CNN에 사용하며, 모델 과적합 감소에 도움이 된다
사용 방법은
from tensorflow.keras.layers import Dropout
model.add(Dropout(0.5))
or
h = model.Dropout(0.5)(h)
형태로 사용하면 된다
여기서 0.5는 dropout시킬 비율로 비율이 커질수록 비활성화 정도가 높아진다
Batch Normalization
Batch Normalization은 입력된 층의 평균과 분산을 계산해 데이터를 정규화하고
스케일과 시프트를 이용해 데이터를 변환 후 다음 레이어에 전달한다
학습 과정을 안정화 시키고 초기화에 대한 민감도를 줄이고 학습률 상승에 도움을 준다
주로 Dense를 사용하거나 CNN을 사용할 때 활용한다
사용 방법은 다음과 같다
from tensorflow.keras.layers import BatchNormalization
model.add(BatchNormalization())
or
h = model.BatchNormalization()(h)
Layer Normalization
Layer Normalization은 Batch Normalization과 비슷한데 각 샘플 단위에 대한 평균과 분산을 계산해 데이터를 정규화한다
주로 RNN에 사용한다
사용 방법은 다음과 같다
from tensorflow.keras.layers import LayerNormalization
model.add(LayerNormalizationn())
or
h = model.LayerNormalization()(h)
트랜스포머 모델
트랜스포머 모델은 자기 어텐션 메커니즘으로 시퀀스 데이터를 처리하는 방법으로
번역이나 자연어 모델링을 할 때 주로 사용한다
입력 시퀀스의 요소의 서로의 관련도를 계산해 단어별 의미의 관련도를 파악 할 때 도움을 준다
추후 추가 작성
Embedding
임베딩은 다양한 종류의 데이터를 수치화 하는 것으로 데이터를 수치 벡터로 변환한다
언어와 관련된 데이터를 임베딩 하는 방법은 다음과 같다
from tensorflow.keras.layers import Embedding
model.add(Embedding(88585, 28))
or
H = tf.keras.layers.Embedding(88585, 28)(X)
여기서 88585는 영어 단어의 수를 의미하며 입력된 단어나 토큰을 0부터 88584까지의 정수로 인코딩한다
EarlyStopping
EarlyStopping은 과적합을 방지하기 위해 사용하며 설정 값 이상으로 변화가 없으면 에포크를 중단한다
사용 방법은 다움과 같다
from tensorflow.keras.callbacks import Callback , ModelCheckpoint , EarlyStopping
es = EarlyStopping(monitor='val_loss', # 얼리스토핑을 적용할 관측 대상
min_delta=0, # 성능 개선으로 간주할 최소 Threshold!
patience=3, # 성능 개선이 발생하지 않을 때 진행할 epoch수
verbose=1,
restore_best_weights=True # 최적의 가중치를 모델에 전달
)
model1.fit(callbacks=[es])
'파이썬 > 딥러닝' 카테고리의 다른 글
파이썬 roboflow 와 YOLOv5 를 이용해 마스크 쓴 얼굴 인식하기 (1) | 2023.10.24 |
---|---|
파이썬 딥러닝 - RNN, LSTM으로 주가 예측하기(feat. finance-datareader (0) | 2023.10.22 |
파이썬 딥러닝 코드 작성법 - Sequential / 함수형 (0) | 2023.10.22 |
파이썬 딥러닝 - CNN 이미지 분류하기 (tensorflow.keras (1) | 2023.10.09 |
파이썬 딥러닝 - Dense만 사용해서 이미지 분류하기 (tensorflow.keras (0) | 2023.10.08 |