무냐의 개발일지

[3/8] 딥러닝 심화3 (가중치 초기화, 배치정규화) 본문

Data Scientist Bootcamp

[3/8] 딥러닝 심화3 (가중치 초기화, 배치정규화)

무냐코드 2024. 3. 8. 18:01

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) 계열의 아키텍처가 있습니다.

즉, 기본적인 신경망 구조가 아닌 입력되는 데이터의 특성을 고려한 아키텍처가 필요합니다.

이러한 아키텍처와 모델들은 컴퓨터비전과 자연어처리 과정을 통해서 학습하실 수 있습니다.