머신 러닝이란 한국말로 하면 '기계학습'으로, 기계가 데이터를 통한 학습으로 스스로 발전하는 것을 뜻한다.
기계가 학습한다는 건, 프로그램이 특정 작업(T)을 하는 데 있어서 경험(E)을 통해 작업의 성능(P)을 향상시키는 것
by 톰 미첼(Tom Mitchell)
일반 프로그램은 인간이 규칙을 찾아서 알려주면 그대로 업무를 수행하는 반면, 머신 러닝은 데이터를 통해 프로그램이 스스로 규칙을 찾도록 한다.
1. 사용할 수 있는 데이터가 많아졌다.
과거에는 데이터가 아날로그 방식으로 저장되었기 때문에 머신 러닝을 할 수 있을 만큼 데이터의 양이 충분하지 않았다.
하지만 개인 컴퓨터와 스마트폰, 인터넷이 널리 보급되면서 데이터가 빠른 속도로 쌓이기 시작했고 앞으로 사물인터넷(IOT)이 더 보편화되면 더 많은 데이터가 생성될 것으로 보인다.
2. 컴퓨터 성능이 좋아졌다.
머신 러닝으로 의미 있는 결과물을 내기 위해서는 많은 데이터를 갖고 많은 연산을 해야 하는데 이를 위해서는 좋은 성능의 컴퓨터가 필요하다. 따라서 2010년대부터 컴퓨터의 성능이 좋아지면서 머신 러닝 기법들이 사용 가능하게 되었다.
3. 머신 러닝의 활용성이 증명되었다.
머신 러닝을 통해 더 좋은 제품을 제공하고 더 많은 수익을 창출할 수 있기 때문에 머신 러닝이 과거에 비해 많은 관심을 받게 되었다.
머신 러닝에서 기계가 학습하는 유형을 크게 세 가지로 분류된다.1. 지도 학습(Supervised learning)
답이 있고 이 답을 맞추는 것이 목적이다. 학습을 위한 데이터와 그에 대한 답을 프로그램에게 꼭 알려줘야 한다. 이와 같이 수많은 문제를 주고 그 문제들에 대한 답을 가르쳐주며 지도를 했기 때문에 지도 학습이라 부른다. 지도학습은 비지도학습에 비해 직관적이고 더 많이 사용된다.
1-1. 분류(Classification) : 몇 가지 옵션 중 고르는 것
ex) 스팸 메일 분류 프로그램
1-2. 회귀(Regression) : 무수히 많고 연속적인 값들 중 답을 맞히는 것
ex) 아파트의 위치, 크기, 건설, 연도, 교통 정보 등의 정보를 통해 또다른 아파트의 가격을 예측하는 프로그램
2. 비지도 학습(Unsupervised learning)
답이라는 개념이 없고 프로그램이 알아서 기준을 만들어 입력된 데이터를 처리한다. 비지도학습은 지도학습에 비해 덜 직관적이고 수학적으로 복잡한 내용이 많다는 특징이 있다.
가장 간단한 머신 러닝 알고리즘 중 하나로, 영어로는 'k-Nearest Neighbors Algorithm'이라고 한다.
데이터를 입력하고 그 주변에서 가장 가까운 이웃 데이터 k개를 찾아 그 값들을 바탕으로 입력 데이터의 결과를 예측하는 방식이다.
더 많은 경험(데이터)을 할수록 성능이 좋아지면 머신 러닝이라고 할 수 있는데, k-NN 역시 더 많은 데이터가 있을 수록 알고리즘이 주는 결과의 신뢰도가 높아지기 때문에 머신 러닝이라고 할 수 있다.
선형대수학이란 일차식, 일차 함수, 행렬, 벡터를 다루는 학문이다.
머신 러닝은 무수히 많은 데이터를 갖고 다양한 계산을 해서 어떤 예측을 해야 하는데 이때 선형대수학의 가장 기본적인 개념인 '행렬'을 사용하면 편리하다.
행렬을 사용해 많은 정보를 하나로 묶을 수 있고 효율적인 계산이 가능해진다.또한 머신 러닝을 할 때는 데이터를 일차식에 사용하는 경우가 많은데 선형대수학이 일차식에 대해 다루는 학문이기 머신 러닝을 하기 위해서는 선형대수학이 필요하다.
일차식 : 가장 높은 항의 차수가 1인 다항식
일차 함수 : 가장 높은 항의 차수가 1인 함수로, 이때 함수란 x에 어떤 값을 넣느냐에 따라 y의 값이 결정되는 식을 뜻한다.
- 일차 함수 표기법 : 훨씬 많은 변수와 계수를 사용할 때 문자가 너무 다양해지는 것을 방지하기 위해 아래와 같이 표기한다.
행렬(Matrix) : 수를 직사각형의 형태로 나열한 것. 주로 대문자 알파벳으로 나타낸다.
- 원소 : 행렬 안 하나하나의 값
- 행(row) : 행렬의 가로줄
- 열(column) : 행렬의 세로줄
벡터(vector) : 일종의 행렬로, 행이 하나밖에 없거나 열이 하나밖에 없는 행렬을 의미한다. 일반적으로 벡터는 열이 하나뿐인 열벡터를 뜻한다.
행렬과 달리, 주로 소문자 알파벳으로 나타낸다.
1. 덧셈 (+)
2. 스칼라곱 (*)
3. 두 행렬의 곱
3-1. 내적곱 (@ 또는 np.dot(행렬A, 행렬B))
교환법칙이 성립하지 않고, 앞에 있는 행렬의 행의 수와 뒤에 오는 행렬의 열의 수가 같아야 두 행렬의 곱셈이 가능하다.
3-2. 외적곱(요소별 곱하기)
같은 차원을 갖는 행렬 사이에만 연산이 가능하며, 같은 행과 열에 있는 요소들끼리 곱해서 새로운 행렬을 만든다. 동그라미(∘) 기호를 써서 표현한다.
전치 행렬 기존 행렬에서 열과 행을 바꾼 행렬.
전치(transpose)라는 의미에서 기존 행렬 위에 작은 T를 써서 표기한다. 행렬 계산을 할 때 기존 행렬에서 모양이 안 맞으면, 전치 행렬을 사용해서 맞춰주는 역할을 한다.
단위 행렬(Identity Matrix) 대각선의 원소가 모두 1이고 나머지 원소는 0인 정방 행렬.
'Identity'를 줄인 I라는 문자로 항상 표현한다. 어떤 행렬과 곱하든 기존 행렬이 그대로 유지된다.
역행렬(Inverse Matrix) '역수'와 비슷한 개념으로, 기존 행렬과 곱했을 때 단위 행렬 I가 나오도록 하는 행렬.
기존 행렬 위에 작게 -1을 써서 표현한다. 역행렬은 항상 정방행렬이어야 하고 모든 행렬에 역행렬이 존재하지는 않는다.
머신 러닝은 경험을 통해 특정 작업에 대한 성능이 좋아진다.
이때 모델의 성능 평가와 최적화를 위해서는 함수의 극대점/극소점을 찾아야 하고 이를 위해 순간변화율, 미분, 기울기 등의 개념이 필요하다.
함수 : 어떤 인풋에 대해서 딱 하나의 아웃풋만 나오는 경우.
아웃풋은 무조건 한 개여야 하지만 인풋은 여러 개여도 상관없다. 인풋 변수가 2개 이상인 경우에는 "다변수 함수"라고 부른다.
그래프 : 수학식을 시각적으로 표현하는 방법으로, 함수의 특징들을 간편하게 보기 위해 그래프를 그린다.
기울기 : 인풋에 따라 아웃풋이 얼마나 빠르게 늘어나고 빠르게 줄어드는지 나타내는 수치. 기울기가 크면 아웃풋 y의 변화가 빠르고, 기울기가 작으면 아웃풋 y의 변화가 느리다는 것을 뜻한다.
그래프가 해당 지점에서 얼마나 기울어져 있는지뿐만 아니라 어떤 방향으로 가야 가장 가파르게 올라갈 수 있는지에 대한 정보도 제공해준다.
편미분 : 여러 변수가 있을 때, 하나의 변수에 대해서만 미분을 하는 것. 일반적인 미분을 할 때는 d를 쓰지만 편미분을 할 때는 ∂(델)을 사용한다.x에 대해 편미분한다 하면, x를 제외한 모든 나머지 변수는 상수로 취급해주면 된다.
각각의 변수에 대해 편미분한 후 그 결과를 합쳐 벡터로 나타내주면, 그것이 '함수의 기울기'가 된다.2차원 그래프 상에서의 기울기와 마찬가지로, 이 기울기 벡터는 가장 가파르게 올라가는 방향을 가리킨다.
순간변화율이 0이라는 것은 해당 지점에서 x가 변해도 y는 그대로라는 뜻인데, 세 가지 경우에 발생한다.1. 극소점(Local Minimum) : 기울기가 음수 -> 양수로 전환될 때.
그래프 상에서 아래로 볼록 튀어나오는 경우로, 여러 개 존재할 수 있고 극소점 중 가장 작은 값은 최소점(Global Minimum)이라 한다.
2. 극대점(Local Maximum) : 기울기가 양수 -> 음수로 전환될 때.
그래프 상에서 위로 볼록 튀어나오는 경우로, 여러 개 존재할 수 있고 극대점 중 가장 큰 값은 최대점(Global Maximum)이라 한다.3. 안장점(Saddle Point) : 기울기가 계속 양수이거나 계속 음수인 경우지만 그 정도가 평평해졌다가 다시 가팔라지는 경우를 의미한다.