Adam 이 보니깐 100장을 넣는다고 100장 이런식이 아니라 설정값에 따라 20장 20장 20장 20장 20장 이런식으로 넣고
20장 하면 업데이트 하던 방식이던데
그러면 L1, L2 .... L20 으로 총 loss값이 20개 있잖아요
그럼 역전파 할 때 이 로스 L1~L20 다 더하고 20으로 나눈 뒤(L = (L1 + L2+ ... + L20)/20)
w-> w - 학습률(δL/δo * δo/δz * δz/δw)
이렇게 하나요?
Adam 이 보니깐 100장을 넣는다고 100장 이런식이 아니라 설정값에 따라 20장 20장 20장 20장 20장 이런식으로 넣고
20장 하면 업데이트 하던 방식이던데
그러면 L1, L2 .... L20 으로 총 loss값이 20개 있잖아요
그럼 역전파 할 때 이 로스 L1~L20 다 더하고 20으로 나눈 뒤(L = (L1 + L2+ ... + L20)/20)
w-> w - 학습률(δL/δo * δo/δz * δz/δw)
이렇게 하나요?
batch gradient, stochastic gradient, minibatch gradient
일단 총 100장에 20장 나누어넣기 라 표현한거 보니까 mini batch 구조인거같고, 보통 배치안에서 학습의 시작과 끝 한 사이클이 다 굴러감. 뭔말이냐 하면 , 학습은 데이터 입력>모델 출력>레이블(ground truth)과 loss 계산>옵티마이저 스텝(back prop)으로 이루어져있고, 이 전체과정이 배치마다for loop를 도는거임. 배치안에 로스는 보통 그냥 다 더함(디폴트가 그냥 더함이고, 옵션으로 평균으로 바꿀수있다 pytorch기준 ). 그리고 바로 역전파계산및 업데이트 가 이루어짐. 부연설명이 길었는데 암튼 너가 질문한건 정답임 - dc App
단순히 그거에 대한 정답을 알려주기 보단 생각을 하게끔 하는게 더 좋아보이네. 데이터 샘플 하나가 들어가고, 출력값이 나오고, 정답이랑 비교해서 로스를 계산하지. 그 로스의 값을 가지고 어떤 방향으로 웨이트가 이동할지를 결정하고. (Gradient) 다만 이 gradient는 샘플마다 크기와 방향이 각각 다 다를거고 100번 움직이면 엄청 우왕좌왕 하겠지? batch_size 20으로 학습을 하겠다는건 나는 이 20개의 샘플로 얻을 수 있는 gradient의 평균 gradient로 weight를 업데이트 하겠다는거임. 총 다섯번. 그렇게 되면 한번 한번 업데이트가 이루어질때마다 전반적인 데이터의 분포를 좀더 담고있는 방향으로 나아간다고 생각할 수 있겠지? (global minima)
열심히 답글달았는데 추가질문이 사라졌네..............