일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Kaggle
- CPP
- petal to metal
- pre-trained
- 추천 시스템
- SVM
- Unsupervised learning
- 백준
- OpenGL
- Vision
- Support Vector Machine
- SGD
- 컴퓨터 비전
- 비용함수
- 인공지능
- 딥러닝
- C++
- cs231n
- 컴퓨터 그래픽스
- 그래픽스
- neural network
- CNN
- 머신러닝
- 신경망
- 로지스틱 회귀
- 파이썬
- recommender system
- Computer Vision
- Regularization
- logistic regression
- Today
- Total
kwan's note
Mini batch gradient descent 본문
출처: machine learning by andrew ng, stanford cousera lecture
수강일시: 2021.02.07
reminder-by-kwan.tistory.com/109
이번시간에도 저번시간에 이어 데이터가 매우 많은경우 작업량을 줄이기 위한 방법에 대해 알아보도록 하겠습니다.
이는 일반적인 gradient descent 방법과 stochastic gradient descent 방법의 중간 방법으로도 볼 수 있습니다.
즉 한번의 스텝마다 모든 m에 대해 학습을 하는것이 아닌 작은 부분에 대해서 학습을 진행하고 다음으로 넘어가는 방식입니다. 즉 stochastic 한 방법의 성공확률을 높이기 위한 방법정도로 생각해 볼 수 있습니다.
SGD방법은 원하지 않는 방향으로 진행할 확률이 너무 높기 때문에 b를 2~100개정도로 batch size를 정하고 이에대한 평균 방향으로 step을 정의하는 것 입니다.
아래 예시는 b=10 일때의 예시입니다.
이로써 SGD와 minibatchGD를 알아보았습니다.
이제 이러한 방법들의 성능을 평가하는 방법에 대해 알아보겠습니다.
실제로 잘 학습되는지 보려면 J를 그려보면 되는데 그냥 그려봐도 되지만 일반적으로는 매 p번마다 그 평균값만큼을 plot 합니다. 이는 batch 의 사이즈가 작으면 J가 커지는경우가 자주 발생하므로 매 점마다 찍으면 성능 혹은 경향성 파악이 어렵기 때문입니다.
너무 움직임이 많으면 p를 더 높여서(ex) 5000정도로) 다시 그려서 경향을 파악하는것도 좋다.
SGD 나 미니배치에서는 마지막에 수렴시 진동이 발생하는데 이를 방지하기 위한 방법으로 step의 크기 즉 a의 크기를 조금씩 줄이는 방법도 가능하다.
'ML and AI > Machine learning - Andrew Ng' 카테고리의 다른 글
머신러닝 성능을 높이는 방법 (1) | 2021.02.09 |
---|---|
online learning , map reducing -온라인 학습, 병렬 학습 (0) | 2021.02.08 |
Stochastic gradient descent(SGD) -확률적 경사 하강법 (0) | 2021.02.07 |
Collaborative filtering - 협업 필터링 (0) | 2021.02.07 |
recommendation system - 추천 시스템 (content based) (0) | 2021.02.07 |