mini-batch의 이해
398
작성한 질문수 10
만약 데이터 건수가 400건이고 100건의 미니배치로 경사하강법을 실시하여 파라미터값들을 수정하는데 여기서 수정 되어지는 값들은 뽑아진 100건의 데이터만 업데이트 되며 이렇게 1epoch를 돌면 전체의 데이터의 파라미터들이 업데이트 되는것으로 이해하고있는데 맞을까요?
아니면 100건의 데이터만 뽑아 전체의 파라미터가 업데이트 되고 또 그다음 배치의 100건으로 전체의 파라미터가 업데이트 되는 걸까요?
답변 1
2
안녕하십니까,
이게 academic한 원론적인 부분과 실제 tensorflow와 같은 deep learning framework이 사용하는 방식에 약간의 차이가 있습니다.
먼저 원론적인 미니배치를 기준으로 말씀 드리면 데이터 건수가 400건이고 100건의 미니 배치로 경사하강법을 적용해서 update될 weight값을 계산하는 것입니다. 100건의 데이터가 업데이트 되는게 아니라 weight가 update되는 것입니다. 그러니까 weight update계산을 전체 데이터 건수가 아니라 샘플링으로 100건만 가지고 update될 weight값을 계산하는 것입니다.
여기서 약간 혼돈되는 것이 epoch와 iteration입니다. 원론적인 미니배치는 첫번째 iteration시 weight를 update할 때 무작위로 400건중에 무작외로 100건을 뽑아서 weight update값을 계산하고 update적용, 두번째 iteration 시에 다시 무작위로 100건을 뽑아서 weight update 값 계산및 적용, 세번째, 네번째 iteration시에도 유사하게 무작위로 100건을 뽑습니다. 이걸 iteration이라고도 표현할 수 있고, epoch라고도 표현할 수 있습니다.
하지만 tensorflow와 같은 deep learning framework에서는 다릅니다. 위와 같은 iteration을 tensorflow는 step으로 간주합니다. 즉 첫번째 epoch의 첫번째 step에서는 400건중 100건을 뽑아서 weight update 계산 및 적용, 두번째 step에서 나머지 300건 중 100건을 뽑아서 weight update 계산 및 적용, 세번째 step에서 나머지 200건중 100건으로 weight update 계산 및 적용, 마지막 네번째 step에서 나머지 100건으로 weight update 계산 및 적용을 합니다. 이렇게 400건 모두에 대해서 weight update를 적용했으면 이제 두번째 epoch에서 동일한 방식을 또 반복합니다.
아래에 비슷한 내용을 질문하신 분이 있어서 답변을 달아놓은 내용이 있으니 참조하시기 바랍니다.
https://www.inflearn.com/questions/216570
0
답변감사합니다.!!
미니배치에서 500건중 100건으로 1_iteration 돌리면 그 해당하는 100건에 대해서(100건의 데이터 기반으로 손실함수의(?)편미분 w(1), w(2), w(3)....) 전체 w가 갱신이 되며 그후 선택되지않은 400건중 또 100건으로 전체 w가 갱신이되며 이것을 5번하여 전체 데이터를 한번 돌았으면 1epoch가 된다고 이해하면 잘 이해하고있는 걸까요?!
resize 질문
0
51
1
20251212 Kaggle 런타임에 scikit-learn 설치 실패 트러블 슈팅
0
76
1
Loss와 매트릭 관계
0
62
2
Boston 코랩 실습
0
164
2
배치 정규화의 이해와 적용 2 강의 질문
0
136
2
Augmentation원본에 적용해서 데이터 갯수 자체를 늘리는 행위는 의미가있나요?
0
145
2
Conv함수 안에 activation 을 넣지 않는 이유가 뭔지 궁금합니다.
0
206
2
소프트맥스 관련 질문입니다
0
208
1
강의 관련 질문입니다
0
151
2
residual block과 identity block의 차이
0
190
2
옵티마이저와 경사하강법의 차이가 궁금합니다.
1
240
1
실습 환경
0
165
2
입력 이미지 크기
0
244
2
데이터 증강
0
196
2
albumentations ShiftScaleRotate
0
207
1
Model Input Size 관련
0
281
1
마지막에 bird -> frog 말고도 deer -> frog 도 잘못된것 아닌가요??
0
204
1
일반적인 질문 (kaggle notebook사용)
0
272
2
실무에서 Augmentation 적용 시
0
338
2
안녕하세요 교수님
0
231
1
가중치 초기화(Weight Initialization) 질문입니다.
0
327
1
테스트 데이터셋 predict의 'NoneType' object has no attribute 'shape' 오류
0
409
1
학습이 이상하게 됩니다.
2
1036
2
boston import가 안됩니다
0
229
1





