안녕하세요.
종강했으니까 머신러닝 또 다시 달려보겠습니다 🤓
SGD(Stochastic Gradient Descent)
원래 배치 경사하강법은 데이터 전체에 대해 따져보고 역전파를 진행했었는데요,
이게 문제가 데이터 배치 하나를 통으로 살펴보다 보니 데이터 사이즈가 커질 수록 시간이 무지막지하게 오래 걸립니다.
그래서 SGD, Stochastic Gradient Descent를 사용하게 되는데요
전체 Train 세트를 쓰는 게 아니고 랜덤하게 미니 배치만 사용하게 되어 한 단계 당 걸리는 시간이 단축되게 됩니다!
또한 Local minimum 문제에서 조금 더 자유롭다는 장점이 있어 최저점에 도달하기 더 쉬워집니다.
다만 이 경우에 노이즈가 조금 더 크고 더 많은 단계가 필요하다는 장점이 있습니다.
물론이겠죠? 데이터를 다 쓰는 게 아니다보니
요즘에는 더 나은 옵티마이저들이 많이 개발되어 사용되고 있습니다.
Adam
그 중 하나인 Adam에 대해 살펴보겠습니다.
model.compile(loss='sparse_categorical_crossentropy', optimizer='adam', metrics=['acc'])
history= model.fit(x_train, y_train,
batch_size=32, epochs=10,
validation_data=(x_test, y_test))
이런 식으로 케라스 코드에서도 많이 쓰는 옵티마이저인데요,
Adam은 ADAptive Moment estimation을 줄인 것으로, SGD에서 발달한 AdaGrad 알고리즘에서
모멘텀 및 RMSProp을 결합하여 경사 하강법의 효율성을 크게 향상시킨 옵티마이저입니다.
참고로 RMSProp은 파라미터 변화량을 지수 가중 평균을 사용하여 스텝 사이즈를 최적화하는 알고리즘입니다.
일단 모르겠으면 Adam 박고 보라네요.
스텝의 방향과 크기를 잘 최적화해준다고 합니다.
NAdam, RAdam 등도 있다고 합니다.
Dropout

그래서 옵티마이저를 잘 활용했어도 이걸로 과적합을 막을 수 있냐? 는 아니죠...
그래서 과적합 방지용으로 Dropout이 있습니다.
일부러 학습시킬 때 몇몇 요소들의 영향을 없애면서 학습을 시키는 것입니다.
특정 노드를 꺼버린다고 표현하는데, 특정 노드에서의 가중치를 0으로 만들어서 효과를 내지 못하게 만듭니다.
학습 시에만 사용하고, 실제 테스트 때에는 사용하지 않습니다.
'CS > AI' 카테고리의 다른 글
| [부스트캠프 AI Tech 프리코스] 경사하강법과 딥러닝 학습 방법 (0) | 2025.06.24 |
|---|---|
| [ML, DL] 간단한 합성곱 신경망의 개념과 AlexNet (0) | 2025.06.20 |
| [ML] 퍼셉트론, 활성화 함수 그리고 역전파 (0) | 2025.05.13 |
| [ML] K-NN (K-Nearest Neighbor) 이미지 분류 (0) | 2025.04.08 |
| [ML] Scikit-learn을 활용해서 캐글 데이터 분석하기! (0) | 2025.04.02 |
