머신러닝을 더욱 쉽게 이해하기 위해서는, 선형대수(Linear Algebra)에 대한 이해가 선행되어야 한다. 문과생들이라면 아예 귓동냥으로만 들어봤지 아예 생소한 과목일지도 모르겠는데 '모든 수학과 공학의 뼈대' 라고 부르는 공대과목의 꽃이라고 한다. 따라서 대충 아무 공대생들이 모두 아는 쉬운 개념이라고 생각하고 접근해보자. 사실 수학이 레벨업이 될수록, 고등학교때 한번씩 짚어봤던 문제를 조금 더 어렵고 있어보이는 단어로 바꾸고 추상적인 개념으로 바꾸는 과정이라고 할수 있을터인데, 마찬가지로 이 포스팅에서도 직관적으로 아는 시시한 개념이 어떻게 모르는 단어로 그럴듯하게 포장되어있는지에 대해 최대한 간단하게 이해만 하고 넘어가면 될것이다.
일단 행렬(Matrix)에 대한 이해가 필요하다. 행렬은 데이터들을 2차원 배열에 열심히 그려놓은 것이다.
2 10 20 30
2 30 20 10
위의 행렬은 2 X 4 행렬이다.
3 4 5
2 1 4
2 6 6
위의 행렬은 3 X 3 이다.
다음은 벡터(Vector)에 대한 이해를 해보자. 벡터는 N X 1 행렬이다. 즉,
2
4
10
12
이렇게 나열되어있는 열이 하나뿐인 행렬(열벡터)이라고 할수 있다. 옆으로 늘어선것은 행벡터이다. (참고로 말하면 자바와 같은언어에서도 이 데이터 나열을 Vector라는 클래스로 구현하고 있으며 이 클래스를 구현해 이것저것을 만든다. 이를 생각하면 이해가 쉽다. 프로그래밍르 모르면 걍 이해할 필요도 없다.)
$$\mathbf{x} = [ x_{1}, x_{2}, \cdots, x_{D} ] \in \mathbb{R}^{D}$$
행렬덧셈은 그냥 냅다 더하는 것이다. 뭐 딴게 있겠는가
2 4
3 4
더하기
1 1
2 2
은 그냥 각자위치에 있는걸 더하면 된다. 답은,
3 5
5 6
이다.
그렇다면 스칼라(Scalar)는 무엇인가? 진짜숫자이다. 뭔가 추상적인 개념이 아니라 3,4와 같이 실체가 있는 숫자를 말한다. 이 숫자들을 행렬에 곱해줄수도 있고, 나눠줄수도 있다.
3 4
5 3
에 2를 곱해보자.
6 8
10 6
이 나올것이다. 이 과정은 스칼라 곱 (Scalar Multiplication) 이라고 하며, 2는 스칼라 (Scalar)라고 말할수 있다. 처음 들었을때는 중딩도 아는문제를 뭐 이렇게 포장해서 말하나란 생각이 들겠지만 자꾸 보면 적응이 된다.
행렬 -> 벡터 -> 스칼라로 내려올수록 뭔가 차원이 한단계씩 줄어든다고 생각하면 되려나..
## 행렬에 관련된 영단어 매핑
한국어로 누가 처음에 해석한지는 모르겠지만 단어로부터 유추하기가 힘든 한자어다. 바꾸든지 혼나야할것 같지만, 아래와 같다.
Commutative - 교환법칙이 성립하는
Associative - 결합법칙이 성립하는
Identity Matrix - 항등행렬, (단위행렬)
Inverse - 역 (Identity를 결과로 만듬)
transpose - 전치 (열과 행을 바꿈)
'데이터분석 > Machine Learning' 카테고리의 다른 글
일반인들을 위한 머신러닝 (6) - 신경망 알고리즘 (1) | 2015.08.31 |
---|---|
머신러닝 전용 프로그래밍 툴 Octave 튜토리얼 - (3) 그래프 (0) | 2015.08.27 |
일반인을 위한 머신러닝 (3) - Cost Function 비용함수 (0) | 2015.08.17 |
일반인을 위한 머신러닝 (2) - 지도/비지도학습 (0) | 2015.08.16 |
일반인을 위한 머신러닝 (1) - 참고자료 (0) | 2015.08.16 |