미해결
딥러닝 CNN 완벽 가이드 - TFKeras 버전
Mini-batch GD와 역전파 시 Gradient 계산 횟수관계에 대한 질문입니다.
안녕하세요 선생님! 이제 선생님 강의만 듣게 되네요 ㅎㅎ 이번에도 좋은 기초 강의 감사인사 드립니다!(최근에 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번의 순차적인 [순전파->역전파] 과정이 수행되는 것인가요?
혹여나 질문이 이해가 잘 안가신다면 답글 남겨주시면 제가 보충 질문설명 드리도록 하겠습니다!