본문 바로가기

Deep Learning

Tensor: 딥러닝에서는 왜 텐서를 기본 데이터 구조로 사용하는가?

1. 딥러닝: 데이터로 학습한다.

딥러닝이란 복잡한 패턴과 데이터를 학습하는 방법을 말한다.

여기서 딥(deep)은 신경망의 여러 층을 의미하는데, 이러한 깊은 구조가 다양한 수준의 추상화를 통해 데이터로부터 학습을 가능하게 하는 것이다.

 

딥(deep), 신경망, 층에 대해서는 더 자세하게 공부하는 것으로 하고, 이번에는 데이터로 학습을 가능하게 한다는 것에 집중해보자.

 

2. 데이터로 학습하려면

우리의 일상은 데이터로 가득 차 있다.

이메일에서부터 사진, 비디오까지 우리는 매일 수많은 데이터와 상호작용하고 있는 것이다.

 

이러한 일상의 복잡한 데이터를 먼저는 기계 학습 모델이 이해하고 처리할 수 있는 형식으로 만들어야 하고, 만들어진 형식속에서 규칙을 찾고 학습을 하는 것이다.

 

기계 학습 모델이 이해하고 처리할 수 있는 형식으로 만드는 것을 전처리 라고 하며, 전처리가 된 데이터를 기계 학습 모델에 입력하여 학습 과정을 거친다.

 

모델 학습의 목표는 여러 연산과정을 통해 데이터 내의 패턴이나 규칙을 찾아내어 예측이나 분류와 같은 작업을 수행할 수 있도록 하는 것이다.

 

연산을 하려면 일반화된 타입이 필요할 것이다. 또 효율적으로 하기 위해서도 일반화된 타입이 필요하다.

 

이를 위해 딥러닝에서는 일반화된 기본 데이터 구조로 텐서를 사용한다.

 

3. 텐서(Tensor) 란?

 

텐서(Tensor)는 기본적으로 다차원 배열 또는 데이터의 컨테이너이다.

스칼라, 벡터, 행렬 등을 포함한 더 높은 차원의 배열로 일반화된 개념이다.

데이터 과학, 머신러닝등 다양한 분야에서 널리 사용되는데,

 

특히 딥러닝에서는 텐서를 기본 데이터 구조로 사용한다.

 

스칼라, 벡터, 행렬, 텐서에 대하여 정리해보자.

  • 스칼라 (0차원 텐서):
    • 단일 숫자로만 구성된 텐서.
    • 예를 들어, 5 또는 3.14 등이 스칼라다.
  • 벡터 (1차원 텐서):
    • 숫자의 배열로, 데이터의 리스트를 나타낸다.
    • 예를 들어, [1, 2, 3]은 세 개의 요소를 갖는 벡터다.
  • 행렬 (2차원 텐서):
    • 숫자가 행과 열로 구성된 2차원 배열입니다.
    • 예를 들어, [[1, 2, 3], [4, 5, 6]]은 2x3 행렬입니다.
  • 텐서(고차원):
    • 모든 차원의 배열을 일반화한 개념이다.
    • 예를 들어, 3차원 텐서는 [[[1, 2], [3, 4]], [[5, 6], [7, 8]]]과 같이 표현될 수 있다.
    • 특히 딥러닝에서는 이러한 다차원 배열을 통해 데이터를 표현하고 연산을 수행한다.

 

4. 다차원 데이터의 자연스러운 표현

딥러닝은 주로 이미지, 비디오, 텍스트, 오디오와 같은 다차원 데이터를 다룬다. 예를 들어

  • 텍스트
    • 시퀀스 데이터는 보통 시간 또는 시퀀스 차원을 갖는 2차원 텐서로 표현됩니다.
  • 이미지
    • 이미지는 보통 높이, 너비, 색상 채널의 3차원 텐서
  • 비디오 
    • 비디오는 시간을 추가한 4차원 텐서(시간, 높이, 너비, 채널)

텐서를 사용하면 이러한 데이터를 효과적으로 조작하고, 다룰 수 있으며, 학습 모델의 입력, 출력 및 내부 상태를 효율적으로 표현할 수 있다.

 

5.  텐서의 효율

1. 연산 효율성

텐서는 고성능 컴퓨팅 환경에서 병령 처리와 벡터화를 지원한다.

 

대부분은 딥러닝 프레임워크는 GPU나 TPU 같은 하드웨어 가속기를 사용하여 텐서 연산을 최적화하고, 대량의 데이터에 대한 빠른 계산을 가능하게 한다.

 

모델 훈련과 추론속도를 향상시키고, 더 크고 복잡한 네트워크를 실시간으로 학습할 수 있게 해준다.

 

2. 유연성과 확장성 그리고 최적화

텐서는 모양, 크기, 데이터 타입을 동적으로 변경할 수 있어, 다양한 종류의 딥러닝 아키텍처와 알고리즘에 유연하게 적용될 수 있다.

 

딥러닝 모델은 주로 그래디언트 기반의 최적화 기법을 사용하여 학습된다.

 

텐서는 자동 미분(Automatic Differentiation) 기능을 지원하는 라이브러리(PyTorch, TensorFlow)와 통합되어, 각 연산에 대한 그래디언트를 효율적으로 계산하고 저장할 수 있다.

 

복잡한 모델에서 파라미터를 효과적으로 업데이트하는 데 필수적이다.

 

6. 딥러닝에서는 왜 텐서를 기본 데이터 구조로 사용하는가?

공부한 내용을 바탕으로 텐서는 딥러닝의 다양한 요구를 충족시키는 매우 강력하고 유연한 데이터 구조다.

 

텐서를 사용함으로써 딥러닝 모델은 다차원 데이터를 효율적으로 처리하고, 빠르게 학습하며, 복잡한 연산을 수행할 수 있다.

 

특히 앞으로 공부할 PyTorch는 이러한 연산을 최적화하여 GPU에서 실행할 수 있도록 지원한다. 

 

텐서는 현대의 복잡한 인공지능 애플리케이션에서 필수적인 요소이다.

 

'Deep Learning' 카테고리의 다른 글

머신러닝의 종류와 활용방법  (0) 2024.04.27