관리 메뉴

Fintecuriosity

[패턴인식] 선형대수와 확률통계 review_part 1 본문

Artificial Intelligence/패턴인식

[패턴인식] 선형대수와 확률통계 review_part 1

DataHolic26 2020. 7. 23. 14:18

 

 

이번 글의 내용은 고려대학교 컴퓨터공학과 김승룡 교수님의 강의를 정리 및 참조 하였음을 먼저 밝힙니다.

(다른 참조한 논문과 자료들은 아래에 기재되어 있습니다.) 

 

혹시 제가 잘못 알고 있는 점이나 보완할 점 있다면 댓글로 알려주시면 감사하겠습니다. 

 

 


먼저 선형대수와 확률론에 대해서 배우기전에 저는 이런 생각을 했습니다. 그냥 코딩만 할 줄 알고 라이브러리만 잘 가져와서 필요한 기능만 잘쓰면 머신러닝 알고리즘을 잘쓸 수 있지 않을까? 굳이 수학을 다시 배우는 것이 시간적인 측면에서 효율적일까?

 

위 2가지 생각은 제 주관적 생각이므로 무시하셔도 무방합니다. 그러면 왜 머신러닝을 하는데 있어서 선형대수를 배워야 할까요? (아래에 https://opentutorials.org/에서 머신러닝에서 선형대수가 하는 역할 및 존재이유를 잘 설명해주어서 인용했습니다.)

 


머신러닝을 학습할 때, 왜 선형대수학을 배워야할까요?

 

컴퓨터가 "배운다"는 행위를 하기 위해서는,

엄청난 양의 데이터를 받아들여, 처리할 줄 알아야 합니다.

 

데이터를 처리한다는 것은 정말 단순히 보자면

방정식을 풀어서 해를 구하는 데에 있습니다.

 

이 방정식을 푸는 방법을 다루는 학문이 바로 선형 대수입니다.

 

 

가장 단순히 보자면, 머신 러닝은 이런 형태의 수식을 수천억차례 그 이상으로 반복적으로 계산해야 합니다.

컴퓨터 입장에서도, 이러한 단순반복 계산을 그렇게 많이 반복하는 것은 굉장히 부담스럽습니다. 

그렇기에 컴퓨터를 학습시켜야 하는 사람 입장에서는 이러한 질문을 마주하게 됩니다. 

이러한 수식을 어떻게 쉽고, 효율적으로 풀 수 있을까? 

 

이러한 문제 상황을 해결해주는 학문이 바로, 선형 대수입니다. 

 

[출처: https://opentutorials.org/


◎ 스칼라(Scalar)

 

사진 출처: Wikipedia

 

- 선형대수에서 스칼라는 "하나의 수치만으로 완전히 표시되는 양"을 뜻합니다. Single number 이기도 합니다.

- 스칼라의 형태는 integers ℤ (정수) ,real number (실수) , rational numbers ℚ (유리수) 등등이 있습니다.

- italic으로는 a, n, x 로  표시(denote)할 수 있습니다.

 

ex) ℤ =  +1, +2, +3, ... -1, -2, -3 (양과 음의 정수)

    ℝ =0, 1, 2, 3, 4, 3/4, 0.125, 0.333..., 1.1,π, √2 (유리수와 무리수를 통틀어 실수라 함)

    ℚ =  2, 3, 2/3, 0.667

 


◎ 벡터(Vector)

 

- 원래 벡터는 물리학 및 공학에서 벡터는 위치, 속도, 힘 등과 같이 크기와 방향성을 갖는 물리량을 나타내는데 사용하는 기하학적 대상

 

- 벡터는 1차원 배열이라고 합니다. (1-d array of numbers)

- 벡터는 ℝ^n 으로 표시할 수 있습니다. 왜냐하면 벡터는 실수들로 이루어져 있기때문입니다. 

- X ∈ ℝ^n

 


◎ 행렬 (Matrix)

 

사진 출처: wikipedia

- 행렬은 2차원 배열이라고 합니다. (2-d array of numbers)

- 행렬은 ℝ^m*n으로 표시할 수 있습니다. m=row(행), n = column(열)

- 즉 행과 열에 실수 값들을 2*2, 3*3 행렬등으로 표기 할 수 있는 것입니다. 

- A ∈ ℝ^m*n 은 행렬의 사이즈를 표기

 

ex)

- A는 2*2 행렬, B는 3*3행렬, C는 2*3행렬( m=2 & n=3)

 


◎ 텐서 (Tensor)

 

- 텐서또한 배열 형태를 가지고 있습니다.

- 0차원의 스칼라, 1차원의 벡터, 2차원의 행렬, 그리고 더 많은 차원들이 텐서 안에 포함되는 개념입니다.

- 텐서는 주로 딥러닝의 이미지 분석을 하는데 많이 활용됩니다.

 

사진 출처: a brief survey of tensors by Berton Earnshaw

- 텐서는 다차원의 배열을 의미합니다.

- 1차원 벡터는 64개의 숫자로 이루어짐

- 2차원 행렬 8*8 (rows, columns)

- 3차원 텐서는 4*4*4 (row, columns, channels)


◎ 이미지에서의 텐서 (Tensor)

 

사진 출처: a brief survey of tensors by Berton Earnshaw

- 이미지는 3차원에 텐서로 표현함

- 이미지는 3개의 채널 Red, Green, Blue(R,G,B)로 이루어짐 , c= {R,G,B}

- pixel intensity(밝기)의 3개 겹쳐진 layer (Three stacked layers of pixel intensities)

- 한 행렬에서 각 채널은 각각 행렬 A_c  ℝ^m*n 로 표기

- 값들의 범위는 [0, 255], (Values range from [0, 255])

 

 

 

 

긴 글 읽어주셔서 감사합니다.


References

 

[1] S. Kim (2020). Graduate Course

 

[2] https://www.slideshare.net/bertonearnshaw

 

[3] (2020). Standford computer science lecture, http://cs231n.stanford.edu/

 

[4] https://opentutorials.org/