티스토리 뷰
안녕하세요
프로그래밍을 배우는 빛나는 샤트입니다.
경사 하강법을 배우다 보면 나오는 SGD!
기울기를 따라 손실함수의 값이 최소가 되는 곳을 찾는 과정인데
과연 SGD가 무엇인지 그리고 BGD는 무엇인지 알아봅시다.
<용어 정리>
여기서는 배치 크기 = 전체 데이터셋 크기
미니배치 = 학습을 진행할 때 전체 데이터셋을 얼마나 나눠서 진행할 것인지 단위(변수명은 batch_size)
아래 내용은 해당 출처에 나온 내용을 재구성했습니다. - www.kakaobrain.com/blog/113
⭐SGD(stochastic gradient descent) & BGD(batch gradient descent)
- 미니배치 크기에 따른 학습 시간
미니배치 크기가 커질수록 학습 시간 줄어든다.
- 미니배치 크기에 따른 최적화 탐색 경로
1) SGD: 데이터 셋 크기가 N, 미니배치 크기가 1
최적화 함수는 하나의 학습 데이터마다 오차를 계산하며 모델의 가중치를 1 에폭당 N번 갱신
-> 학습이 꼼꼼하게 이뤄짐
-> 시간이 오래 걸림
-> 전체 훈련 데이터의 분포에서 비정상적으로 떨어진 특이값에 따라 가중치 업데이트에 큰 편차가 발생
(특이값에 의해 구해지는 기울기가 실제 최적화 탐색 경로를 크게 벗어나기 때문)
2) BGD: 데이터 셋 크기가 N, 미니배치 크기가 N
최적화 함수는 N개의 데이터를 상대로 오차를 계산하며 모델 가중치를 1 에폭당 1번 갱신
-> 주어진 모든 훈련 데이터의 평균 특성을 파악함으로써 한번의 훈련만으로 최적의 가중치 조합을 제대로 찾아감.
에폭을 기준으로 했을 때, 배치가 클수록 기울기 방향이 더 안정적으로 작은 손실을 내는 가중치 조합을 찾아감을 확인해볼 수 있다.
미니배치 크기 | 가중치 갱신 per 1epoch | 최적화 탐색 경로 | 비고 | |
SGD | 1 | N(데이터 셋 크기) | 불안정 | 특이값에 의해 가중치 업데이트 큰 편차 발생 |
BGD | N(데이터 셋 크기) | 1 | 안정 | 한 번의 훈련만으로 최적의 가중치 업데이트 |
> 결론1: 미니배치가 큰 편이 학습 시간이 빠르고 최적화 탐색 경로 안정적
❓그렇다면 BGD로 다 하면 되는 것 아닐까?
문제1: 미니배치 크기가 크게 되면 모델 최적화(Optimization)와 일반화(generalization) 어렵다.
이유는??
최소값임을 보장할 수 없는 극소값 또는 안장점 근처에서 학습이 진행된다고 가정해보자. 배치 크기가 큰 상황에서는 이 구간을 빠져나오기가 어렵다. 반면, 배치 크기가 작을 때는 이 구간에서 빠져나오기가 훨씬 수월하다.
다시 한번 ❓ 최적화란?
> 손실 함수 그래프에서 오차를 최소화하는 가중치 탐색
❗왜 미니배치 크기가 크면 최소값을 찾기 어려울까?
> 비유: 위 그래프를 흘기듯이 스윽 보고 대충 판단하면 '뭐 대충 이정도 기울기면 최소겠네. 결정 땅땅땅' 이렇게 되어 버립니다.
>> 반대의 경우는 데이터 하나하나 살펴보기 때문에 '아 여기가 제일 작은 값이려나...? 좀 더 볼까? 아 역시 더 작은 값이 있었어!' 이렇게 생각하면 될 것입니다. 좀 더 설명을 하면 특이값 데이터로 인해 실제와는 다른 방향의 기울기가 구해지면 가중치 값이 급격하게 변할 가능성이 커지기 때문입니다. (위에서는 특이값때문에 최적화 탐색 경로가 불안정해서 안 좋아보였는데 최적화 측면에선 좋았네요)
❗결론❗
미니배치 크기 | 가중치 갱신 per 1epoch | 최적화 탐색 경로 | 비고 | 최적화 | |
SGD | 1 | N(데이터 셋 크기) | 불안정 | 특이값에 의해 가중치 업데이트 큰 편차 발생 |
극소값에 갇힐 수 있음 |
BGD | N(데이터 셋 크기) | 1 | 안정 | 한 번의 훈련만으로 최적의 가중치 업데이트 |
최소값을 잘 찾음 |
> 결론2: 학습 시간과 최적화 탐색은 BGD가 우수하나 최적화 측면에서는 좋지 못하다. SGD의 경우 최적화 측면에서는 우수하지만 다른 측면에서는 좋지 못하다.
즉, 미니배치 사이즈를 적절히 설정하는 것(SGD와 BGD 사이)이 매우 중요
'ML DL' 카테고리의 다른 글
[지시딥2] RNN을 사용한 문장 생성 p289 ~ 310 (0) | 2022.02.16 |
---|---|
[지시딥] chapter6. 배치 정규화, 드롭아웃, 하이퍼파라미터 갱신 p210~226 (0) | 2022.02.16 |
[지시딥] chapter 6 .학습 관련 기술들(p189~208) (0) | 2022.02.16 |
[논문읽기][STARK]Learning Spatio-Temporal Transformer for Visual Tracking (0) | 2022.02.16 |
[논문읽기][SSD]Single Shot MultiBox Detector (0) | 2022.02.16 |
- Total
- Today
- Yesterday
- 모두의연구소
- IT
- 자율주행로봇
- 멘탈관리
- AIFFEL인공지능과정
- AIFFEL교육
- 인공지능 교육
- AIFFEL
- Python
- 광주인공지능사관학교
- 배달로봇
- 서빙로봇
- SLAM강의
- 인공지능교육
- 모두의 연구소
- 광주AI
- 인공지능
- SLAM공부
- 실내자율주행
- 도전
- Slam
- 광주
- 멋쟁이사자처럼
- AIFFEL후기
- 자율주행기술
- 대전 인공지능
- 해커톤
- ros
- 아이펠
- 양정연SLAM
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |