혼공단/혼공단 5기

혼자 공부하는 머신러닝 + 딥러닝 7장 - 심층 신경망

하양훈 2021. 3. 5. 22:43
반응형

1. 심층 신경망

 

- 2개 이상의 층을 포함한 신경망. 

- 다층 인공 신경망, 심층 신경망, 딥러닝을 같은 의미로 사용하기도 한다.

 

- 은닉층 : 입력층과 출력층 사이에 있는 모든 층

- 출력층에 적용하는 활성화 함수는 종류가 제한된다(이진 분류면 시그모이드, 다중 분류면 소프트맥스)

- 은닉층에 사용하는 활성화 함수는 비교적 자유롭다. (시그모이드, 볼 렐루 함수등이 사용됨)

 

 

2. 렐루 함수

 

- 이미지 분류 모델의 은닉층에 많이 사용하는 활성화 함수

- 층이 많을 수록 활성화 함수 양쪽 끝에서 변화가 작기 때문에 학습이 어려워지지만 렐루 함수는 이런문제가 없으며, 계산도 간단하다.

 

[실습코드]

model = keras.Sequential()
model.add(keras.layers.Flatten(input_shape=(28, 28)))
model.add(keras.layers.Dense(100, activation='relu')) # 렐루 함수 적용
model.add(keras.layers.Dense(10, activation='softmax'))

 

 

3. 옵티마이저

 

- 신경망의 가중치와 절편을 학습하기 위한 알고리즘 또는 방법.

- 케라스에는 다양한 경사 하강법 알고리즘이 구현되어 있다.

 

 

<경사하강법 알고리즘 종류>

 

1) SGD

sgd = keras.optimizers.SGD()
model.compile(optimizer=sgd, loss='sparse_categorical_crossentropy', metrics='accuracy')

- learining_rate로 학습률을 지정하며 기본값은 0.01

- 가장 기본적인 옵티마이저로 확률적 경사 하강법을 사용한다.

- 1개의 샘플을 뽑아서 훈련하지 않고 미니배치를 사용한다.

 

 

2) 모멘텀

sgd = keras.optimizers.SGD(momentum=0.9)

- SGD클래스의 momentum 매개변수를 0보다 큰 값으로 지정하면 이전의 그레이디언트를 가속도 처럼 사용하는 모멘텀 최적화를 사용하게 된다. 보통 매개변수는 0.9이상을 지정한다.

 

 

3) 네스테로프 모멘텀

sgd = keras.optimizers.SGD(momentum=0.9, nesterov=True)

- SGD 클래스의 nesterov 매개변수를 True로 바꾸면 네스테로프 모메텀 최적화를 사용한다.

- 모멘텀 최적화를 2번 반복하여 구현한다. 

- 대부분의 경우 네스테로프 모멘텀 최적화가 기본 확률적 경사 하강법보다 더 나은 성능을 제공한다.

 

 

※ 모델이 최적점에 가까이 갈수록 학습률을 낮출 수 있다. 이렇게 하면 안정적으로 최적점에 수렴할 가능성이 높다. 이런 학습률을 적응적 학습률이라고 한다.

 

 

4) Adagrad

adagrad = keras.optimizers.Adagrad()
model.compile(optimizer=adagrad, loss='sparse_categorical_crossentropy', metrics='accuracy')

- 적응적 학습률을 사용하는 대표적인 옵티마이저 중 하나.

- 그레이디언트 제곱을 누적하여 학습률을 나눈다.

- learining_rate로 학습률을 지정하며 기본값은 0.001

- initial_accumulator_value 매개변수에서 누적 초깃값을 지정할 수 있으며 기본값은 0.1이다.

 

 

5) RMSprop

rmsprop = keras.optimizers.RMSprop()
model.compile(optimizer=rmsprop, loss='sparse_categorical_crossentropy', metrics='accuracy')

- 적응적 학습률을 사용하는 대표적인 옵티마이저 중 하나.

- Adagard처럼 그레이디언트 제곱으로 학습률을 나누지만 최근의 그레이디언트를 사용하기 위해 지수 감소를 사용한다.

- learining_rate로 학습률을 지정하며 기본값은 0.001

- rho 매개변수에서 감소 비율을 지정하며 기본값은 0.9

 

 

6) Adam 

model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics='accuracy')

- 모멘텀 최적화와 RMSprop의 장점을 접목한 것이 Adam이다.

- keras.optimizers 패키지 아래에 있다.

- learining_rate로 학습률을 지정하며 기본값은 0.001

- beta_1으로 모멘텀 최적화에 있는 그레이디언트의 지수 감소 평균을 조절하며 기본값은 0.9

- beta_2으로 RMSprop에 있는 그레이디언트 제곱의 지수 감소 평균을 조절하며 기본값은 0.999

 


전체 실습 코드 : bit.ly/hg-07-2

반응형