njs03332 / ml_study

3 stars 0 forks source link

2022/12/31 ~ 2023/01/11 #53

Open givitallugot opened 1 year ago

givitallugot commented 1 year ago

~1/6 (금) 10시 30분~ 1/11 (수) pm 9:00

image

njs03332 commented 1 year ago

11장. 심층 신경망 훈련하기

11.1 그레이디언트 소실과 폭주 문제

11.1.1 글로럿과 He 초기화

keras.layers.Dense(10, activation="relu", kernel_initializer="he_normal")
he_avg_init = keras.initializers.VarianceScaling(scale=2., mode='fan_avg', distribution='uniform')
keras.layers.Dense(10, activation="sigmoid", kernel_initializer=he_avg_init)
givitallugot commented 1 year ago

11.1.3 배치 정규화

배치 정규화, 테스트 적용 방법

배치 정규화 장점

  1. 그래디언트 소실 문제가 크게 감소하여 하이퍼볼릭 탄젠트나 로지스틱 활성화 함수 등 사용 가능
  2. 가중치 초기화에 네트워크가 훨씬 덜 민감
  3. 훨씬 큰 학습률을 사용하여 학습 과정의 속도를 높임
  4. 다른 규제 기법(ex 드롭아웃)의 필요성 줄임

배치 정규화 단점

  1. 모델의 복잡도를 높임
  2. 실행 시간 면에서 손해

keras로 배치 정규화 구현하기

model = keras.models.Sequential([
    keras.layers.Flatten(input_shape=[28, 28]),
    keras.layers.BatchNormalization(),
    keras.layers.Dense(300, activation="relu"),
    keras.layers.BatchNormalization(),
    keras.layers.Dense(100, activation="relu"),
    keras.layers.BatchNormalization(),
    keras.layers.Dense(10, activation="softmax")
])

배치 정규화 구현하기

danbi5228 commented 1 year ago

11.1.2 수렴하지 않는 활성화 함수

LeakyReLU 활성화 함수 사용

모델에서 적용하려는 층 뒤에 추가하면 됨

model = keras.models.Sequential([ ... keras.layers.Dense(10, kernel_initializer="he_normal"), keras.layers.LeakyReLU(alpha=0.2) ... ])

PReLU 사용

keras.layers.PReLU()

RReLU는 따로 구현되어있지 않음. 직접 구현에서 사용 가능

SELU 활성화 함수 사용

keras.layers.Dense(10, activation="selu", kernel_initializer="lecun_normal")