신경망을 위한 데이터 표현
1. 텐서?
최근의 머신러닝 시스템은 일반적으로 텐서를 기본 데이터 구조로 사용한다. 텐서 : 데이터를 위한 컨테이너, 임의의 차원을 개수를 가지는 일반화된 행렬 텐서에서는 차원을 축으로 부른다.
2. 텐서의 종류
1. 스칼라 텐서(0D텐서)
- 하나의 숫자만 담고있는 텐서를 말한다.
- 텐서 축의 개수는 랭크라 부르는데 이 축이 0개인것을 말한다.
2. 벡터(1D 텐서)
- 숫자배열을 벡터 텐서라고 부른다.
3. 행렬(2D 텐서)
- 벡터의 배열이 행렬 또는 2D인 텐서를 말한다.
- 2개의 축이 존재하며 이를 각각 행 과 열이라고 부른다.
4. 3D텐서와 고차원 텐서
- 각 행렬들을 하나의 새로운 배열로 합치면 숫자가 채워진 직육면체 형태로 나타나는 3D텐서가 만들어진다.
- 3D텐서들을 하나의 배열로 합쳐 4D텐서를 만드는 식으로 이어진다.
2. 텐서의 속성
- 축의 개수 : 축의 개수는 넘파이 라이브러리에 ndim에 저장되어있다.
- 크기 : 텐서의 각 축을 따라 얼마나 많은 차원이 있는지를 나타낸 파이썬의 튜플을 말한다.(배열 스칼라는 크기가 존재하지 않음)
- 데이터 타입 : 넘파이 라이브러리에서 dtype에 저장되며 텐서에 포함된 데이터의 타입을 나타낸다. 텐서는 사전에 할당되어 연속된 메모리에 저장되어야 하므로 넘파이 배열은 가변길이의 문자열을 지원하지 않는다.
3. 배치(batch)
-
딥러닝 모델은 한 번에 전체 데이터셋을 처리하지 않고 각각의 작은 배치로 나눈다.
-
딥러닝에서는 다양한 데이터 셋을 다룬다.(벡터 데이터, 시계열, 이미지, 비디오 등등)
4. 브로드 캐스팅
- 텐서의 축의 개수가 다를경우 작은 텐서가 큰 텐서에 맞추어 브로드캐스팅 된다.
- 큰 텐서의 ndim에 맞도록 작은 텐서에 축을 추가한다.
- 작은 텐서가 새 축을 따라서 큰 텐서의 크기에 맞도록 반복한다.
5. 스칼라곱(벡터 점곱)
- 유클리드 공간에서의 두 벡터로 실수 스칼라를 얻는 연산을 말한다.
- 크기를 맞추는 동일한 규칙을 따른다면 고차원 텐서 간의 점곱을 구할 수 있다.
6. 텐서의 기하학적 해석
- 텐서 연산이 조작하는 텐서는 어떤 기하학적 공간에 있는 좌표 포인트로 해석될 수 있기 때문에 모든 텐서 연산은 기하학적 해석이 가능하다.
- 신경망은 텐서 연산의 연결로 구성되어 있고 모든 텐서 연산은 입력 데이터의 기하학적 변환이다.
- 즉, 기초적인 연산을 길게 연결해 복잡한 기하학적 변환을 조금씩 분해하는 방식이라고 볼 수 있다. 층을 다중으로 쌓으면 복잡한 문제도 풀 수 있다.
Leave a comment