딥러닝 기초이론

[딥러닝 기초이론3-2] 미니 배치 학습(mini-batch learning)과 텐서(Tensor)

컴퓨터비전 LCK 2024. 3. 13. 15:53

 

 

우리는 지금까지 적은 데이터들을 가지고 인공지능의 학습과정을 살펴보았지만, 실제로 인공지능을 학습시킬때는 굉장히 많은 데이터 쌍을 이용하게 되고, 그에 따라 처리해야하는 연산량이 증가하고 학습에 많은 시간이 소요된다.

 

선형 행렬 연산을 통해 배치 학습을 진행시켜 학습에 필요한 연산들을 효과적이고 빠르게 실행할 수 있다.

 

배치란, 일괄적으로 처리되는 집단이나 무리를 의미한다. 밑의 사진을 통해 배치학습을 이해해보자.

왼쪽이 기존의 계산방식이고, 오른쪽이 배치 학습을 적용한 학습방법이다.

 

왼쪽에서는 N개의 데이터 쌍으로 구성된 학습데이터 쌍에 대해서 N번의 반복계산을 거친다.

 

그러나 배치학습을 적용하면 한번의 선형 행렬 연산을 통해 계산 속도를 증가시킬 수 있다.(행렬 연산을 GPU상에서 하게 되면 훨씬 빠른 속도로 배치학습을 진행시킬 수 있다.)

 

 

이렇게 많은 데이터들을 기반으로 한 AI 학습에 배치 학습은 필수적인데, 이를 구현하기 위해 텐서(Tensor)가 사용된다.

 

변수 a는 1차원, b는 2차원, c는 3차원 텐서라고 볼 수 있다.

 

한가지 주의점으로는 새로 만들어진 차원 순서대로 (dim=0,1,2,,,) 축의 번호가 정해진다.

 

이렇게 텐서화된 데이터들을 사용하여 인공지능 학습을 진행한다.

 

 

하지만 실제로 많은 양의 데이터셋을 활용한 인공지능 학습에서, 모든 데이터를 한번의 배치학습으로 연산시키는 것은 실질적으로 어렵다.

 

그 이유는 이 많은 양의 데이터들을 한번의 선형 연산으로 처리하기 위해 요구되는 메모리량이 너무 크기 때문이다.

 

그래서 이 데이터를 일정한 크기로 나누고 각 미니배치에 대해서 순차적으로 학습시킨다.

 

100개의 데이터가 있다면 이를 20개씩 5묶음으로 나누고 한 묶음씩 배치 학습을 시킨다고 보면 된다.