무냐의 개발일지
[3/8] 딥러닝 심화3 (가중치 초기화, 배치정규화) 본문
1. 가중치 초기화(Weights Initialization)
- 모델의 활성화 값이 골고루 분포되도록 하는 방법
- 모델이 학습하기 전 가중치 값을 부여하는 것으로 적절한 가중치 값이 주어지지 않을 경우 가중치 중 활성화되는 부분이 매우 적거나 편향될 수 있기 때문에 필요
| 문제가 있는 가중치 초기화 (선형함수를 사용할
- 제로 초기화는 최악이라는데. 0이라서. 어차피 쓸 수가 없음.
- 여전히 신경망의 분포를 제한한다
| 제일 좋은 초기화 방법들
- Xavier는 선형에 더 적합하다
- HE는 비선형에 더 적합하다
2. Reuters 딥러닝 모델 예제
로이터 기사 데이터를 분류하는 모델을 베이스라인으로 삼아서 오늘 배운 내용을 적용해봅니다.
3. 배치 정규화(Batch Normalization)
- 모델에 입력되는 샘플들을 균일하게 만드는 것
- 학습 속도 증가와 과대적합을 방지할 수 있다
- Dense이후, activation 이전에 활용한다 (아래와 같은 느낌이다)
import tensorflow as tf
from tensorflow.keras import models, layers
model = models.Sequential()
model.add(layers.Dense(128, input_shape=(10000,
), name='input'))
model.add(layers.BatchNormalization())
model.add(layers.Activation('relu'))
model.add(layers.Dense(128, name='hidden'))
model.add(layers.BatchNormalization())
model.add(layers.Activation('relu'))
model.add(layers.Dense(46, activation='softmax', name='output'))
model.compile(optimizer='rmsprop',
loss='categorical_crossentropy',
metrics=['accuracy'])
model.summary()
* 딥러닝 모델에서
구조적으로 이미지를 입력으로 사용할 때 적합한 CNN(Convolution Neural Network) 계열의 아키텍처가 있고,
텍스트를 입력으로 사용할 때 적합한 RNN(Recurrent Neural Network) 계열의 아키텍처가 있습니다.
즉, 기본적인 신경망 구조가 아닌 입력되는 데이터의 특성을 고려한 아키텍처가 필요합니다.
이러한 아키텍처와 모델들은 컴퓨터비전과 자연어처리 과정을 통해서 학습하실 수 있습니다.
'Data Scientist Bootcamp' 카테고리의 다른 글
[3/12] 컴퓨터비전2_ CNN(Convolutional Neural Network) (0) | 2024.03.12 |
---|---|
[3/11] 컴퓨터비전1 (0) | 2024.03.11 |
[3/8] 딥러닝 심화2 (모델의 과소적합, 과대적합을 방지하기 위한 방법 3가지) (0) | 2024.03.08 |
[3/8] 딥러닝 심화 (학습시킨 모델 저장, 관리/ 모델학습기술 optimizer, activation function 등) (1) | 2024.03.08 |
[3/7] 딥러닝 기초 (퍼셉트론, 인공신경망) (1) | 2024.03.07 |