CS/기계학습심화

CS/기계학습심화

[기계학습심화] 12. 딥러닝 (3) - CNN

지난 글에서는 뉴럴 네트워크와 역전파에 대해 정리하였다. 뉴럴 네트워크는 기계학습에서 학습시키는 함수의 새로운 형태로, 여러 단위 함수의 중첩함수 형태이다.뉴럴 네트워크를 학습시킬 때도 로스를 구해서 로스의 값이 줄어드는 방향으로 학습시키게 되는데, 경사하강법을 사용하는 경우 미분 값이 필요하다. 여러 함수들이 합성된 뉴럴 네트워크에서 미분값을 구하기 위해, 데이터를 넣어서 전체 값을 계산하는 추론 과정과, 해당 값을 이용해서 각 레이어의 미분값을 구하는 학습 과정이 일어난다.학습 과정에서는 역전파를 통해 각 레이어의 미분값을 구해두고, 업데이트 하려는 값에 대해서만 미분값을 활용하여 경사하강법과 같은 방식으로 다음 w 값을 업데이트 한다. 이번 글에서는 CNN 에 대해서 정리해보려고 한다.사실 딥러닝..

CS/기계학습심화

[기계학습심화] 11. 딥러닝 (2) - Neural Network & Back Propagation

Neural Network이제 딥러닝의 기본적인 아이디어인 인공 신경망과 역전파(back propagation) 에 대해 정리해보려고 한다.사실 딥러닝도 기존의 전통적인 기계학습과 크게 보면 다르지 않다. 전통적인 기계학습 파이프라인을 간단하게 정리해보면 데이터를 모아서 전처리하고, 해당 데이터를 인풋으로 넣었을 때 원하는 결과를 내보내는 함수를 찾기 위해 함수의 형태를 정의하고, 함수의 계수를 찾는 문제였다. 뉴럴 네트워크는 여기에서 함수의 형태만 바꾼 것이다.전통적인 기계학습에서는 간단하게 선형 함수를 사용했다면, 뉴럴 네트워크에서는 입력 데이터에 대해 리니어 매핑을 해주고, 논 리니어 매핑을 해준다. 이 결과를 다시 어떤 함수의 입력으로 넣어서 리니어 매핑하고, 논 리니어 매핑하고 내보내고, 다시..

CS/기계학습심화

[기계학습심화] 10. 딥러닝 (1) - 선형 분류 모델

Linear Classification지금까지 선형회귀, kNN, SVM, k-menas, PCA 등 지도/비지도 학습으로 회귀 및 분류 모델을 만드는 과정을 살펴보았다.이번 글에서부터는 분류 모델 중 선형 분류 모델에 대한 일반적인 이야기에서 시작하여 딥러닝에 대한 정리를 시작한다. 기계학습은 결국 입력값과 출력값이 주어졌을 때 이 둘을 잘 매핑하는 함수를 찾는 문제였다.이때 지도 학습은 입력값과 출력값을 모두 활용해서 함수를 찾고, 비지도 학습은 입력값만 가지고 함수를 찾는다는 차이가 있었다. 하지만 함수를 쌩으로 찾는 것은 쉽지 않다보니 함수의 형태를 정의하고, 그 함수식에서 비어있는 계수를 찾자는 parameteric approch가 등장했다.파라미터를 찾을 때는 Loss function 과..

CS/기계학습심화

[기계학습심화] 9. PCA (Principal Component Analysis)

PCA비지도 학습의 일종으로 한국어로 번역하면 '주성분 분석'이라고 부른다.지금까지 정리한 내용들 중에 중요도 순위를 매기면 1, 2위를 다툴 정도로 머신러닝에서 매우 중요한 개념이다. 차원의 저주 지금까지는 데이터나 데이터들을 다루는 작업과 관련된 함수를 찾았었다.회귀는 데이터 자체와 직접 관련된 함수였고, 분류와 클러스터링은 데이터를 다루는 작업과 관련된 함수였다. 그런데 28*28 크기의 작은 흑백 이미지 데이터를 분류하려고 하면, 하나의 데이터당 28*28 = 784 개 픽셀 정보를 다루다보니 kNN같은 단순한 알고리즘에서도 동작 시간이 오래 걸렸다.게다가 흑백 이미지가 아니라 실제와 비슷한 이미지라면 rgb 값이 들어가면서 차원이 하나 더 늘어나 784 * 3 이 된다. 그래서 이렇게 실..

CS/기계학습심화

[기계학습심화] 8. K-Means

K-Means지금까지는 지도학습의 예시로 대표적인 회귀와 분류 모델의 학습 알고리즘을 정리하였다.이번 글에서는 비지도학습의 예시로 K-Means 를 정리해본다. K-means는 라벨링이 되어있지 않은 데이터들을 비슷한 특징을 가진 데이터들끼리 묶어서 라벨링하는 '클러스터링' 에 사용하는 알고리즘이다. 이때 k는 클러스터의 개수를 가리키는 하이퍼파라미터이다.K-means는 클러스터링 알고리즘으로 굉장히 간단하고 유명하면서 또 강력하다. K-Means 는 라벨이 없는 비지도학습 알고리즘이므로, K-Means 알고리즘을 적용하면 그제서야 데이터들이 어떤 클러스터에 속해있는지 라벨이 생기게 된다. 클러스터링은 이미지에 적용해서 비슷한 rgb 값을 갖고 있는 픽셀들끼리 분류할 수도 있고,의류회사의 경우 사람들..

CS/기계학습심화

[기계학습심화] 7. SVM (support vector machine)

SVM 개요SVM은 전통적인 분류 알고리즘 중 가장 성능이 좋은 알고리즘으로, 딥러닝이 자주 쓰이는 요즘도 종종 사용된다고 한다. SVM의 기본적인 아이디어는 데이터를 분류하는 기준선을 찾는 것이다.예를 들어 고양이 사진과 개 사진을 분류하는 경우를 생각해보자.고양이 사진을 나타내는 점들과 개 사진을 나타내는 점들이 위 그림과 같이 분포되어 있을 때, 이 두 그룹을 나누는 선을 찾아야 한다.그리고 새로운 데이터가 주어졌을 때는 그 데이터의 위치가 구분선 기준으로 어느쪽에 있는지 확인해서 분류하게 된다. 그런데 데이터를 구분하는 선은 위 그림과 같이 다양하게 존재한다.이 중에서 '가장 좋은 선'은 어떤 선일까? 가장 좋은 선을 정하는 기준을 생각할 때 떠올리기 좋은 아이디어는 선형회귀와 비슷하게 ..

CS/기계학습심화

[기계학습심화] 6. KNN 구현

sklearn 라이브러리에는 다양한 데이터 셋이 존재한다.그 중에서 Iris (붓꽃) 데이터 셋을 사용해 붓꽃의 종류를 구분하는 모델을 KNN으로 만들어보자. 먼저 붗꽃 데이터를 가져온다.붓꽃 데이터는 이렇게 4개의 실수로 구성된 리스트의 나열이다. 4개의 실수는 각각 꽃받침과 꽃잎의 크기를 나타낸다.iris 데이터는 data 부분과 target 부분이 있다. target 부분에는 data 영역에 있는 붓꽃이 어떤 class 의 붗꽃인지를 나타내는 정보가 같은 인덱스에 맞춰 들어가있다.이제 이 데이터를 사용하여 새로운 붓꽃의 꽃받침과 꽃잎 길이가 주어졌을 때 이 붓꽃의 class 가 어디에 속하는지 분류해보자. kNN 알고리즘으로 분류 모델을 만들기에 앞서 성능을 테스트할 테스트 데이터를 분리..

CS/기계학습심화

[기계학습심화] 5. KNN & Hyperparameter

지난 글까지 지도학습으로 만들 수 있는 모델 중 선형회귀 모델에 대해서 정리하였다.이번 글부터는 지도학습으로 만들 수 있는 분류 모델 중 KNN 이라는 모델에 대해 정리해본다. KNN내가 사용하던 핸드폰을 중고로 판매한다고 생각해보자.그러면 휴대폰 사양도 올리고, 사진도 올리고, 가격도 올릴 것이다.이때 중고폰의 가격을 정할 때는 '시세'를 참고해서 정한다.'시세'라고 하면 나와 같은 기종, 사양, 상태의 핸드폰이 최근 얼마에 거래되고 있는지를 보는 것이다. 기계학습에서는 '사양, 기종, 상태'와 같은 시세 평가 기준 역할을 하는 것을 가리켜 '피처' 라고 부른다.현재 데이터의 피처를 알고, 이 피처와 비슷한 피처들을 찾아 그 피처들의 가격과 비슷하게 가격을 매기는 것과 같다. KNN 알고리즘을 사용한 ..

CS/기계학습심화

[기계학습심화] 4. 경사하강법의 확장 & SGD

경사하강법의 확장지난 글에서 본 예제는 입력도 1차원이고 출력도 1차원인 간단한 예제였다.그래서 그래프를 그려볼 때도 2차원 좌표평면에 점을 찍고, 해당 점들을 잘 나타내는 직선을 그었다. 하지만 실제로 주어지는 데이터는 이보다 고차원의 데이터가 많이 들어온다.이제 경사하강법을 고차원 데이터에서 어떻게 활용할 수 있을지 확장해보자.  기존에 살펴본 경사하강법의 W, b 값 수정 공식은 위와 같았다.선형회귀에서는 W, b 값 2개만 결정하면 되기 때문에 이를 다음과 같이 행렬로 표현할 수 있다.   위 식에서는 learing rate 를 W, b 에서 서로 다르게 잡았지만, 위 행렬식에서는 같은 learning rate 를 가진다고 가정하였다.이때 learing rate 오른쪽에 곱해진 행렬을 보면 Los..

CS/기계학습심화

[기계학습심화] 3. 선형 회귀 & 경사하강법 구현

지금까지 정리한 내용을 다시 정리해보면, 기계학습은 주어진 데이터들을 잘 설명하는 함수(모델)를 찾는 것인데, 함수를 그냥 찾는 것이 쉽지 않아 그 형태를 정해주고, 해당 형태를 결정하는데 필요한 계수를 찾는 문제로 바꾸어 해결한다고 정리할 수 있다.이때, n차원 공간에 존재하는 데이터를 가장 잘 나타내는 n-1 차원의 직선 또는 하이퍼플레인을 찾는 것이 선형 회귀이다. 이때 '데이터를 가장 잘 나타내는 선형 모델'을 판단하는 기준은 주어진 데이터와 모델 사이의 오차의 합 (=Loss) 이 최소가 되는 모델이고, 선형 모델을 결정하는 변수 (W, b) 에 대한 Loss 값을 나타내는 Loss 함수에 대해 최소값을 찾는 문제로 바꾸어 생각할 수 있다.최소값을 찾는 제일 간단한 방법은 미분값이 0인 극소값을..

에버듀
'CS/기계학습심화' 카테고리의 글 목록