경사 하강법
- 가중치를 업데이트하는 방법으로 우리는 경사 하강법을 배웠음
- 경사 하강법은 정확하게 가중치를 찾아가지만, 한 번 업데이트할 때마다 전체 데이터를 미분해야 하므로 계산량이 매우 많다는 단점이 있음
- 경사 하강법은 불필요하게 많은 계산량은 속도를 느리게 할 뿐 아니라, 최적 해를 찾기 전에 최적화 과정이 멈출 수도 있음
- 이러한 점을 보완한 고급 경사 하강법이 등장하면서 딥러닝의 발전 속도는 더 빨라짐
확률적 경사 하강법(Stochastic Gradient Descent, SGD)
- 전체 데이터를 사용하는 것이 아니라, 랜덤하게 추출한 일부 데이터를 사용함
- 일부 데이터를 사용하므로 더 빨리 그리고 자주 업데이트를 하는 것이 가능해짐
- 속도가 빠르고 최적 해에 근사한 값을 찾아낸다는 장점 덕분에 경사 하강법의 대안으로 사용됨
모멘텀(momentum)
- ‘관성, 탄력, 가속도’라는 뜻
- 모멘텀 SGD란 말 그대로 경사 하강법에 탄력을 더해 주는 것
- 다시 말해서, 경사 하강법과 마찬가지로 매번 기울기를 구하지만, 이를 통해 오차를 수정하기 전 바로 앞 수정 값과 방향(+, -)을 참고하여 같은 방향으로 일정한 비율만 수정되게 하는 방법
- 수정 방향이 양수(+) 방향으로 한 번, 음수(-) 방향으로한 번 지그재그로 일어나는 현상이 줄어들고, 이전 이동 값을 고려하여 일정 비율만큼만 다음 값을 결정하므로 관성의 효과를 낼 수 있음
경사 하강법의 종류
오차 함수의 종류
- 교차 엔트로피는 주로 분류 문제에서 많이 사용되는데(폐암 환자의 생존/사망 분류 같은) 특별히 예측 값이 참과 거짓 둘 중 하나인 형식일 때는 binary_crossentropy(이항 교차 엔트로피)를 씀
- binary_crossentropy를 적용하려면 앞 식의 mean_squared_error 자리에 binary_crossentropy를 입력
- 이를 실행하면 예측 정확도(Accuracy)가 약간 향상되는 것을 알 수 있음
활성화 함수 실험
가중치 초기화 실험
미니배치
확률적 경사 하강법(Stochastic Gradient Descent: SGD)
- 하나의 샘플이 주어지면 오차를 계산하여서 바로 가중 치를 변경하는 방법이다.
배치 학습(batch learning)
- 모든 샘플을 모두 보여준 후 에 개별 샘플의 그래디언트를 전부 더해서 이것으로 모델의 가중치를 변경하는 방법이다
- 온라인 학습과 배치 학습의 중간에 있는 방법이 미니 배치(mini barch)이다.
데이터 정규화
학습률
모멘텀
과잉적합
드롭아웃
앙상블
Keras를 이용한 MNIST 숫자 인식
import matplotlib.pyplot as plt
import tensorflow as tf
mnist = tf.keras.datasets.mnist
(x_train, y_train),(x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Flatten(input_shape=(28,28)))
model.add(tf.keras.layers.Dense(512, activation='relu'))
model.add(tf.keras.layers.Dropout(0.2))
model.add(tf.keras.layers.Dense(10, activation='softmax'))
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test, y_test)
'빅데이터 분석가 양성과정 > Python - 딥러닝' 카테고리의 다른 글
자연어 처리_재정리 (2) | 2024.07.18 |
---|---|
DNN을 이용한 영상 분류_재정리 (0) | 2024.07.18 |
순환 신경망(Recurrent Neural Network, RNN) (0) | 2024.07.17 |
딥러닝을 이용한 자연어 처리 (1) | 2024.07.17 |
이미지 인식 - CNN (0) | 2024.07.17 |