Acdong
Learn by doing
Acdong
전체 방문자
오늘
어제
  • 분류 전체보기
    • Economy
      • Saving Money
    • Self-improvement
    • Thoughts
    • Machine learning
      • Deep Learning
      • Chatbot
      • NLP
    • MLops
      • AWS
      • Container
      • Serving
    • Computer Vision
    • Data Science
      • ADsP
      • R
    • Project
    • Python
      • Data Structure & Algorithm
    • C,C++
    • API
      • ElasticSearch
    • Error Note
    • Network
    • RDBMS
      • SQL

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • [GitHub]

인기 글

태그

  • pandas
  • 기계학습
  • 이미지 전처리
  • 존댓말 반말 분류
  • sbert
  • 어텐션
  • nlp
  • Python
  • plot()
  • 데이터 전처리
  • R시각화
  • R
  • 회귀계수
  • SentenceTransformer
  • Numpy
  • c포인터
  • 머신러닝
  • 다중공선성
  • 포인터
  • R그래프

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Acdong

Learn by doing

[기계 학습]. SGD 와 mini batch ( 최적화 기법 )
Machine learning

[기계 학습]. SGD 와 mini batch ( 최적화 기법 )

2021. 3. 22. 16:56
728x90

Batch size 의 개념

3명의 학생이 있고 100개의 문제를 주어졌을 때 여러가지 상황이 있다.

 

1번 학생 ( Batch size == 100 ) : Full-batch

1번 학생은 100개의 문제를 다 풀고 난 뒤 정답을 확인하고 수학문제 정답률을 증가시킨다.


2번 학생 ( Batch size == 10 ) : Mini-batch

2번 학생은 100개의 문제중 10개의 문제를 보고 답안지를 보고 정답률은 향상시키고

       또 다시 10개의 문제를 보고 정답률을 향상시킨다 ( 10회 반복 )


3번 학생 ( Batch size == 1 ) : SGD

 

3번 학생은 100개의 문제를 하나 풀고 정답보고 정답률 향상 시키고 , 하나 풀고 정답보고 ....(100회 반복)

즉 문제하나를 풀 때마다 수정 , 개선 방법을 반복한다.


위 내용과 같이 Batch Size 란 머신러닝이 데이터를 학습하는 과정에서 최적화(Gradient descent) 할 때 한번에 몇개의 데이터를 가지고 하는 지를 나타낸다.

즉 1번 학생은 100개의 데이터를 보고 최적화 하고 2번학생은 10개의 데이터를 보고 최적화 한다.

 

Batch Size 는 왜 생겼을까?

- 데이터가 엄청나게 많은 경우 전체데이터를 보고 최적화를 할 때 엄청난 시간이 할애할 수 있다.

- 그래서 정확도는 좀 떨어지지만 Batch Size를 줄여서 시간을 단축시키는 것이다.

 


SGD ( Stochastic Gradient Descent ) : 확률적 경사 하강법 ( 3번 학생의 방법 )

하나의 Training data ( Batch size = 1 ) 마다 Cost 를 계산하고 바로 Gradient descent를 적용하여 weight 를 빠르게 updatae

 -  한개의 Training data 마다 매번 weight 를 갱신하기 때문에 신경망의 성능이 들쑥날쑥 변함( Cost 값이 안정적으로 줄어들지 않음 )

 - 최적의 Learning rate 를 구하기 위해 일일이 튜닝하고 수렴 조건 ( early - Stop ) 을 조정해야함.

 

6hour -> 55min

SGD 는 batch size 가 1 을 뜻하는 최적화 방법으로 위의 그림처럼 시간을 기하급수적으로 단축 시킬 수 있다.

 

시간만 봤을 때 효율 최고 !! 

 

하지만 정확도 측면을 고려하면 데이터확인을 적게하기 때문에 그만큼 정밀한 정확도를 얻기 힘들다.

 

그럼 그 중간은 없을까?

 

그게 바로 mini-batch 기법이다. batch size를 1또는 max 가 아닌 적당한 값을 정해서 최적화 하는 방법이다.


Mini-Batch Stochasic Gradient Descent ( 2번 학생의 방법 )

Training data 에서 일정한 크기 ( == Batch size ) 의 데이터를 선택하여 Cost function 계산 및 Gradient descent 적용

 - 앞선 두 가지 Gradient descent 기법의 단점을 보완하고 장점을 취함

 - 설계자의 의도에 따라 속도와 안정성을 동시에 관리할 수 있으며, GPU 기반의 효율적인 병렬 연산이 가능해진다.

 

위 그래프 처럼 SGD 는 변동성이 아주크고 정확하지 않지만 속도가 빠르다, 그에 비에 Batch ( Full Batch : 기존의 사용한 GD ) 는 정확하게 수렴하지만 시간이 너무 오래걸린다.

그 중간 Mini-Batch를 통해 어느정도 시간을 절약하면서 납득할 만한 결과를 얻을 수 있다.


Batch vs Epoch , and Iteration 

Batch 와 Epoch 의 차이점

총 데이터 수가 10,000개, batch size가 1,000일 경우

 

1 iteration = 1,000개 데이터에 대한 1회의 Gradient descent 

1 epoch = 10,000 / batch size = 10 iteration ( 10회의 경사하강법 실행 )

반응형
저작자표시 비영리 (새창열림)

'Machine learning' 카테고리의 다른 글

[설치]. 리눅스 환경에서 Anaconda 설치하기  (0) 2021.07.18
[데이터 전처리]. tqdm pandas , apply & map progress_bar 생성  (0) 2021.04.15
[기계 학습] sklearn.pipeline 파이프 라인  (0) 2021.02.10
[데이터 전처리]. 날짜 데이터 전처리  (0) 2021.02.09
[기계학습] Stacking (스태킹)  (0) 2021.02.03
    'Machine learning' 카테고리의 다른 글
    • [설치]. 리눅스 환경에서 Anaconda 설치하기
    • [데이터 전처리]. tqdm pandas , apply & map progress_bar 생성
    • [기계 학습] sklearn.pipeline 파이프 라인
    • [데이터 전처리]. 날짜 데이터 전처리
    Acdong
    Acdong
    E-mail : alswhddh@naver.com / 자연어처리와 MLops 를 연구하고 있는 스타트업 개발자입니다.

    티스토리툴바