반응형

인공지능에서는 빅데이터를 다루기 때문에 스칼라, 벡터, 행렬, 텐서는 중요한 개념이다. 따라서 본 포스팅에서는 이들을 학습하고자 한다.

1. 스칼라

스칼라(scalar)는 1, 2, 3, -3, -5, 0 등 흔히 우리가 일반적으로 쓰는 보통의 수치를 뜻한다.

수식에서의 알파벳, 또는 그리스 문자의 소문자는 스칼라를 나타낸다.

· 스칼라 표시 예: a, p, α, θ

파이썬 실습

Python에서 다루는 대부분의 수치는 스칼라에 대응

 

2. 벡터

벡터(vector)는 스칼라를 직선 상에 나열한 것으로 알파벳의 소문자에 화살표를 올린 것으로 벡터를 나타낸다.

벡터에는 세로로 수치를 나열하는 '세로 벡터'와 가로로 수치를 기록하는 '가로 벡터'가 있다.

AI와 Data Science를 학습하는 입장에서는 이렇게 복잡하게 받아들이기 보다는 '수의 순서쌍'이라고 생각하자.

집합(set)과 비교해보면 집합은 순서가 중요하지 않지만 벡터(vector)는 수의 순서쌍이기 때문에 순서가 매우 중요하다.

예를 들어, 국어 점수, 수학 점수, 영어 점수를 나타내는 score vector가 있다고 가정하자.

이때 (100, 80, 70)과 (70, 100, 80)이 같은 벡터일까?

그렇지 않다. 그 이유는 앞서 설명한 것과 같이 벡터는 순서가 매우 중요한데 순서가 다르기 때문에 같은 벡터가 아니다.

다시 정리하면, 순서를 정해서 수를 나열한 순서쌍을 벡터라고 하고, 각각의 수에 해당하는 것이 벡터의 성분이라 한다.

파이썬 실습

실습 결과를 보면 수치들이 직선 상에 나열되어 있음을 확인할 수 있다.

 

3. 행렬

행렬(matrix)은 이미 다룬 적이 있는데(https://psleon.tistory.com/16), 스칼라를 격자 형태로 나열한 것으로 아래의 예와 같이 표기한다.

행렬에서 수평 방향의 스칼라의 나열을 행(row), 수직 방향의 스칼라 나열을 열(column)이라고 한다.

파이썬 실습

 

4. 텐서

텐서(tensor)는 스칼라를 여러 개의 차원으로 나열한 것으로 스칼라, 벡터, 행렬을 포함한다.

출처: https://dev.to/mmithrakumar/scalars-vectors-matrices-and-tensors-with-tensorflow-2-0-1f66

위 그림은 스칼라, 행 벡터, 열 벡터, 행렬, 텐서의 관계를 나타낸 그림이다.

각 요소에 붙은 첨자의 수를 그 텐서의 차원수라고 말한다.

→ 스칼라에는 첨자가 없으므로 0차원 텐서, 벡터는 첨자가 1개이므로 1차원 텐서, 행렬은 2차원 텐서, ...

사실상 텐서는 더욱 복잡한 방법으로 정의되지만 이번에는 간략하게만 알아보고자 한다.

파이썬 실습

NumPy의 다차원 배열을 이용하여 3층의 텐서를 나타낼 수 있다.

이런 다차원 배열을 활용하면 더욱 층수가 많은 텐서를 표현이 가능하다.