텐서(Tensor)
What is Tensor?
인공지능의 기본이자 기초인 Tensor에 대해 알아보도록 하겠습니다.
텐서가 뭐노? 첨들어보는데? 라는 분이 대부분 이실 겁니다.
텐서는 인공지능에서 다루는 데이터의 기본 단위입니다.
인공지능에서 단위는 크게 3개로 나뉘게 되는데 바로
- 벡터, 행렬, 텐서
이렇게 3개가 대표적인 인공지능에서 다루는 기본적인 단위 입니다.
그럼 벡터가 뭐고 행렬은 뭐고 텐서는 뭐임?
기본적으로 1차원 데이터를 벡터 ,2차원 데이터는 행렬 ,3차원 데이터는 Tensor라고 부릅니다.
물론 데이터 사이언스 분야에서 4차원 5차원 넘어가면은 다차원 행렬 또는 배열로 간주한다고는 하는데 난 데이터 사이언스 분야 아니라서 자세하게는 몰?루
인공지능하는 우리는 이것만이라도 제대로 알아둡시다.
인공지능은 뭐 심화적인거 복잡한거 아는 것보다 그 아래에 있는 기본기를 탄탄하게 가지면서 정확하게 이해하는게 더 중요해요 어짜피 그 위에 것들은 이러한 기본기를 바탕으로 만든거라 기본기만 알아도 상위 모델들 새로운 알고리즘이나 모델 등등 다 이해하기 쉽습니다.
저 그림을 보면은 선 1개를 1차원이라고 하고 선과 선을 이어서 만든 평면을 2차원
이러한 선(1차원 벡터) 과 선(1차원 벡터)을 이어선 만든 평면(2차원 행렬)을 합쳐서 만든 3차원의 정육면체를 우리는 3차원인 Tensor라고 합니다.
4차원 이상부터는 그냥 4차원 Tensor, 5차원 Tensor라고 부르고요
그런데 1차원인 벡터와 2차원인 행렬을 그냥 1차원 Tensor 2차원 Tensor라고도 부르기도 합니다.(근데 나는 이게 더 편해서 이렇게 부름)
싫은데? 그냥 상위 모델들 오픈 소스 Ctrl c+ Ctrl v 하고 프로젝트 할건데?
어짜피 프로젝트 하려면 해당 모델을 뜯어보고 분석을 해봐야 돼요.
그래야 내가 하는 프로젝트의 목적에 맞는 모델인지 알 수 있고 해당 모델의 목적에 맞게 데이터를 전처리하고 토큰화 하고 패딩하고 등등 이런 저런 작업을 할 수 있어요
그리고 해당 모델을 뜯어보고 하기 위해선 이번에 다루는 기초인 Tensor부터 시작해서 기본기를 탄탄하게 다져야지 처음 보는 상위모델도 뜯어보고 ㅇㅎ 이런 원리구나 하고 이해가 됩니다.
그래도 기본 내용과 이론은 재미 없어서 하기 싫은 경우
그럼 텐서는 어떻게 구성되어 있음?
-
먼저 1차원 텐서는 벡터라고 했습니다. 선 하나가 띡 그어진 1차원 형태의 선이구요.
데이터 1개당 점 1개이고 크기가 1이라고 예시를 들어봅시다.
데이터가 10개가 되면 점이 10개가 될거에요. 그리고 해당 점들을 모두 모은 뒤 이으면 선이 하나 그어지고 길이가 10인 선이 그려질 겁니다. 그리고 우리는 이거를 1차원 Tensor라고 불러요.
이와 같은 개념은 앞으로의 2차원 Tensor 3차원 Tensor부터 해서 인공 신경망의 Input크기까지 이어지는 매우 ! 매우 !중요한 개념입니다.
-
그럼 2차원 Tensor는 뭐임?
2차원 Tensor(행렬)는 1차원 Tensor(벡터)들을 이용해서 만든 평면이라고 했습니다.
2차원 Tensor부터 매우 중요한데 그림을 보면서 한번 해봅시다.
2차원 Tensor는 위와 같이 평면이죠 가로를 dim 세로를 batch size라고 정의를 합니다.
2차원 Tensor는 2D Typical Simple Setting이라고도 불리는데요
수식으로 표현하자면 t =(batch size, dim)이라고 표현 합니다 이 수식에서 ,(comma)는 곱하기를 의미합니다. 즉 (batch size x dim)이라고 표현 할 수 있습니다.
-
그럼 batch size는 뭐고 dim은 뭐임?
여기서 dim은 데이터의 크기 입니다. 아까 말했죠 1차원 Tensor인 벡터에 대해 설명할 때의 개념 매우 중요하다고 여기서도 쓰입니다. 앞으로도 쭉 쓰일 예정이니 꼭! 꼭! 이해하고 넘어 옵시다.
아까 든 예시를 인용하자면 10개의 데이터가 있는 1차원 Tensor의 크기는 10이죠 그럼 여기서 dim=10이 됩니다.
어때요 참 쉽죠?
그 다음은 batch size입니다. batch size는 뒤에서 더 자세하게 다룰 내용이라 여기서는 간단하게만 다룰게요 (애초에 어려운 개념이 아니라 되게 쉽고 간단한 개념임)
여러분들이 프링글스를 먹고 있다고 가정합시다.
아무리 여러분들이 과자를 좋아하고 잘 먹는다고 해도 한 통에 300개의 포테이토 칩이 있는 프링글스를 한번에 입에 넣을 수는 없을 겁니다.
입에 넣을 수는 있지만 모든 프링글스의 맛을 음미하면서 제대로 씹고 삼킬 수가 없고 이 행위
자체가 고문이겠죠.
그럼 어떻게 먹나요? 조금씩 2개 3개씩 나누어서 먹죠.
여기서 조금씩 2개 3개씩 나누어서 먹는게 바로 batch size입니다.
한 입에 300개나 되는 프링글스를 한번에 못 먹기 때문에 나누어서 먹는다는 개념이 batch size인데요.
인공지능에서도 똑같습니다. 한번에 적게는 몇 만개의 데이터~ 몇 십만개의 데이터를
한번에 다 때려 넣으면 학습을 하기에 너무 힘들기 때문에 해당 데이터를 정해 놓은 단위로 쪼개어서 조금씩 데이터를 학습시키는 방식입니다. 여기서 정해 놓은 단위가 바로 batch size입니다.
전체 데이터에서 한번에 몇개를 꺼내서 쓸지 정하는 데이터의 개수라고 생각하시면 편합니다.
-
그럼 3차원 텐서는 뭐임?
3차원 Tensor는 기본적으로 우리가 생각하는 큐브 즉 정육면체를 생각하시면 편합니다.
3차원 Tensor는 2차원 Tensor를 층층히 잘 쌓아놓은 형태라고 생각하면 됩니다.
예를 들어 단면이 한 개인 A4용지를 많이 쌓으면 육면체 형태의 책이되는 원리와 같습니다.
그림 못 그린다고 뭐라하지 마세요 잘 그렸으면 미대 갔지 공대 안 왔어요이게 정육면체의 모양을 가지고 있는 3차원 Tensor입니다.
만약에 여러분들이 자연어처리 분야를 공부하게 된다면 많이 볼 친구입니다.
-
그럼 컴퓨터 비전이나, 이미지 등등 이러한 영상이나 이미지 관련 분야는?
거기서는 더 높은 차원의 Tensor들을 다룹니다.
그래도 4차원 Tensor든, 5차원 Tensor든 기본적인 개념은 같으니
“나는 어짜피 컴퓨터 비전으로 갈꺼니까~ 3차원 Tensor 공부 안해야지” 하지 마시고
공부하세요. 어짜피 다 기본적인 개념은 같고 3차원 Tensor 기반으로 4차원 5차원이 나오는거니까 이거 모르면 어짜피 님 4차원이든 5차원이든 간에 머리 박아도 모름
자연어처리 분야 같은 경우
height=dim=단어 벡터의 차원
width=Length=문장 길이라고 표현합니다.
이 3차원 Tensor를 수식으로 표현하면 t =(batch size,width,height)로 표현합니다. 여기까지가 인공지능의 가장 기초이며 가장 기본 단위인 Tensor에 대해 알아 보았습니다.
실습코드는 따로 올려드릴게요.
제발 복사 + 붙여넣기 하지말고 직접 치시면서 처음 보는 함수나 문법에 대해서도 고민하고 분석하며 여러가지 실험도 해보시길 바랍니다.
-
-
-
-
근데 이제 뭐함?
아 이거 한번 봤으니 나도 인공지능 기본 마스터~ 하지 마시고
따로 이론 적인 부분도 그림 그려 보면서 이론 공부도 하고 실습도 따라 해보세요.
-
싫어요 따라하기 귀찮아요
아래에 Numpy , Pytorch 실습 기초 부분 링크 있으니 타고 가십쇼
댓글남기기