Mini-batch GD와 역전파 시 Gradient 계산 횟수관계에 대한 질문입니다.
미해결
딥러닝 CNN 완벽 가이드 - TFKeras 버전
안녕하세요 선생님! 이제 선생님 강의만 듣게 되네요 ㅎㅎ 이번에도 좋은 기초 강의 감사인사 드립니다!(최근에 Object Detection 강의 업데이트한 부분도 너무나 감사드려요! 강의를 이렇게 유지보수 해주시는 분은 처음 뵌 것 같네요 :) ) 본론으로 들어가 질문 한 가지만 드릴게요! 강의 초반부에 (Batch) GD, SGD, Mini-batch GD 개념에 대해 소개하시면서 세 개의 구분하는 큰 특징이 Gradient를 한 번 계산할 때의 데이터 개수라고 알고 있습니다!(예를 들어, Gradient를 1번 계산할 때 데이터 1개를 이용하면 SGD, 모든 데이터를 이용하면 (Batch) GD 인 것 처럼요!) 그렇다면 역전파를 수행할 때 Gradient를 계산하게 되는데, SGD 같은 경우는 데이터 1개 니까 1개를 학습시키고 1번의 역전파를 수행하는 것은 직관적으로 이해가 갑니다! 그런데 데이터를 한꺼번에 집어넣은 (Batch) GD 또는 특정 몇 개만 입력시키는 Mini-batch GD같은 경우는 Gradient가 어떻게 계산되서 업데이트 되는지 잘 체감이 안되더라구요! 예를 한 가지 들어보겠습니다! SGD와 batch_size=32 인 GD를 사용할 때 3가지 케이스를 들어보겠습니다. 1. SGD를 사용한 경우, 데이터 1개의 순전파가 수행되고 역전파가 수행되면 w_old -> w_new 로 업데이트됩니다. 2. batch_size=32인 GD인 경우, 데이터 32개의 순전파 즉, 32번의 순전파가 모두 수행된 후 한 번의 역전파를 수행해서 w_old -> w_new로 한 번만 업데이트 되는 건가요? 아니면 데이터 32개 안에서도 하나씩 차례로 [1번째 데이터 순전파 수행 -> 1번째 역전파 수행 -> w_old 에서 w_new1로 업데이트] 그리고 [2번째 데이터 순전파 수행 -> 2번째 역전파 수행 -> w_new1 에서 w_new2로 업데이트] , ....(32번째까지 반복) ..... [32번째 데이터 순전파 수행 -> 32번째 역전파 수행 -> w_new31 에서 w_new32로 업데이트 후 batch_size=32 GD 수행 종료] 이런식으로 되나요? 결국, batch_size=32라고 해서 32개의 데이터가 동시에(한 번에) 학습되는 것이 아닌 어쨌건 32개 데이터라는 batch_size안에서도 차례차례로 32번의 순차적인 [순전파->역전파] 과정이 수행되는 것인가요? 혹여나 질문이 이해가 잘 안가신다면 답글 남겨주시면 제가 보충 질문설명 드리도록 하겠습니다!
- 역전파
- cnn
- kaggle
- 딥러닝
- tensorflow
- 머신러닝 배워볼래요?
- keras





