티스토리 뷰

Introduction


# 딥러닝에서의 행렬

 - 딥러닝에서는 행렬 연산 및 행렬 표현식을 매우 많이 필요로 함

 - 신경망 구축 전에 적어도 기본적 행렬 표현은 반드시 이해해야한다.

 - NumPy 라이브러리를 사용하여 파이썬에서의 행렬을 효율적으로 사용하기 위한 방법을 알아보자






Data Dimensions

 - Neural network는 수많은 데이터를 토대로 수많은 수학적 연산을 한다.

 - 가장 먼저 이해해야할 부분은 데이터를 어떻게 나타낼 것인지에 관한것이다.

 - 특히 데이터가 가질 수 있는 모양(생김새)에 대해서 먼저 알아보자.

 - 예를들어 우리는 사람에 대한 데이터를 숫자로 표현 할 수 있다.

 - 키가 180cm, 무게가 80kg, 나이가 25살 등..

 - 또한 특정 인물에 대한 사진을 찍었을때 이를 픽셀로 나타내어

 - 한 픽셀당 RGB값에 해당하는 숫자로도 표현할 수 있다.(ex. R : 255 / G : 84 / B : 131)

 - 이러한 묘사된 데이터에 대해 우리는 그것의 차원(dimensions)의 수의 관점에서 살펴보도록 하자.



 · Scalars

 - 먼저, 가장 작고 간단한 형태인 single value가 있다.(ex. 1, 2.4, -0.3 과 같이..)

 - 이것들을 스칼라(scalars)라 부른다.

 - 스칼라는 0차원이라 여긴다.

 - 따라서 위의 예시에서 키, 무게 나이에 해당하는 정수값들은 스칼라가 될 수 있다.



 · Vectors

 - 그다음 값들의 리스트(lists of values)인 벡터가 있다.

 - 벡터는 행벡터와 열벡터 두종류로 나뉜다.

 - 벡터는 1차원이라 불리고 그 길이라고 표현한다.

 - 따라서 위 벡터들은 길이가 3이 된다.

 - 앞서 언급한 예제를 바탕으로 키, 무게, 나이를 벡터로 표현하면 [180 80 25]와 같이 표현할 수 있다.



 · Matrices

 - 다음으로 행렬이 있는데, 행렬은 값들을 2차원의 격자형태로 표현한 것이다.

 - 우리는 행렬을 열과 행이 개수의 관점에서 설명한다.

 - 좌측에 보이는 행렬은 2x3 행렬이 되는것이다.

 - 우측에 보이는 이미지의 경우, 픽셀의 값들을 가지고만 있다면 이 픽셀값들을 행렬로 나타내고 저장할 수 있다.



 · Tensors

 - 마지막으로 Tensors가 있다.

 - 앞으로 딥러닝을 진행함에있어서 TensorFlow라는 라이브러리를 엄청나게 사용할 것이기 때문에

 - 이 개념에 대해 완벽히 이해해두는것이 중요하다.

 - 참고로 TensorFlow는 데이터를 모두 tensor의 형태로 관리한다.

 - tensor라는 용어는 어떠한 n차원 집합의 값들이건 지칭할 수 있다.
 - 즉, 어떤 차원의 값이건 모두 tensor라는 용어로 설명 할 수 있다.

 - 예를들어, 스칼라는 0차원 텐서이다.

 - 마찬가지로, 벡터는 1차원 텐서, 행렬은 2차원 텐서이다.

 - 그 이상의 다차원 값들에 대해선 그냥 텐서라 부른다.


 - 문제는 다차원 값들은 그 값을 시각화하여 나타내기가 어렵다는 것이다.

 - 3차원의 경우 2차원 행렬을 쌓아놓은 형태로 생각할 수 있다.


 - 또는 위와같이 벡터의 형태로 이해할 수 있다.

 - 어찌됐건, 3차원은 쉽게 머릿속에 그려질 수 있다고 본다.


 - 근데 4차원부터는 머릿속에 형태를 그려넣기가 곤란해진다.

 - 행렬의 각 값들 자체가 행렬이라 이해할 수도 있고


 - 이렇게 각 층별로 3차원씩 쌍을 이루고 있다고 생각 할 수도 있다

 - 어찌됐건, 차원이 더 올라가면 그걸 시각적으로 이해하려는 시도 자체가 너무 곤혹스럽다;


 - 여기서 중요한점은, 어떻게 시각화 하여 이해할것인지 가 아니다.

 - 데이터가 어떤식으로 배열 또는 나열되었건간에 우리는 어쨌건 수리적 연산을 할 수 있다는것이다.


 - 앞의 예시를 다시 들자면, 만약 각각의 컬러채널(R, G, B)값과 각 픽셀에 대한 데이터가 있다면

 - 우리는 그 데이터들을 R, G, B값을 각각의 평면으로 3차원 텐서에 저장할 수 있다.






차원에 대한 얘기를 정리하며 마지막으로 짚고 넘어가야할 부분은

 - 우리는 원래 행렬을 공부할때 인덱스를 a11과 같이 표시하였으나

 - 프로그래머에게 있어 행렬은 이와같이 인덱스가 00부터 시작한다는 점이다.



댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함