미해결
딥러닝 CNN 완벽 가이드 - TFKeras 버전
Gradient Descent와 Mini-Batch Gradient Descent의 차이에 대해 질문이 있습니다.
안녕하세요! 이제 막 강의를 시작한 학생입니다.
강의를 아주 상세하게 설명해주셔서 정말 감사합니다!!
덕분에 아주 재미있고 쉽게 잘 듣고 있습니다ㅎㅎ
제가 하고 싶은 질문은 다음과 같습니다.
Gradient Descent의 한계가 모든 학습데이터에 대해 GD를 적용하기 때문에 computing작업이 많이 들어가서 컴퓨터가 제대로 동작을 안 할 수도 있다고 하셨는데요(ex. 메모리 부족 등의 문제로)
이에 대한 솔루션이 SGD와 Mini-Batch인데 그 중 Mini-Batch에 대해 약간의 의문이 있습니다.
100개의 학습 데이터가 있다고 가정했을 때 batch_size를 10으로 설정하면 기본적인 Mini-Batch는 첫번째 iteration에서 100개의 학습 데이터 중 임의로 10개를 뽑아 GD를 수행하고 두번째 iteration으로 넘어간다는 것은 이해했습니다.
근데 기본적인 방법으로 사용하게 되면 100개의 학습 데이터 중 학습에 참여하지 못하게되는 데이터가 생기기 때문에 이 방법보다 일반적인 방법을 사용한다고 하셨는데요. 일반적인 방법은 첫번째 iteration의 첫번째 step에서 10개의 데이터를 뽑아서 GD를 계산하고 두번째 step에서 다시 10개의 데이터를 뽑아 GD를 계산하는 식으로 총 10번의 step을 완료하면 첫번째 iteration이 끝나고 두번째 iteration으로 넘어간다는 것은 이해했습니다.
다만, 여기서 의문인게 그렇게 하면 100개의 데이터를 매 iteration마다 모두 계산하게 되는 것인데 이러면 gradient descent처럼 메모리 문제가 생기지 않을까입니다. mini-batch gradient descent는 gradient descent의 한계를 극복하기 위한 솔루션이라고 하였는데 이러면 gradient descent와 똑같아 지는 것은 아닌가하는 생각이 듭니다.
제가 모르는 뭔가가 있는 것인지 아니면 제가 잘못이해하고 있는 것인지 몰라서 질문드립니다!!