본문 바로가기

Machine Learning52

32. 자율적으로 학습하기 (Unsupervised Learning) : Clustering 지금까지 우리는 Supervised Learning에 대해서 배웠습니다. 그동안에 Linear regression, logistic regression, Neural Networks 그리고 Support Vector Machine 까지의 알고리즘들을 공부했었습니다.이번에는 Unsupervised Learning에 대해서 알아보겠습니다. Unsupervised Learning은 결과가 주어지지 않는 입력되는 데이터들(Unlabled dataset)만을 분석하여 연관있는 것들을 찾고 그룹핑을 하는 머신 러닝의 방식입니다. 아래 그림은 Supervised Learning에서의 데이터와 Decision Boundary를 그래프로 나타낸 것입니다. 각각의 데이터는 x 인지 o 인지의 결과를 이미 가지고 있으며 이.. 2016. 8. 16.
31. SVM (Support Vector Machine) 사용하기 SVM을 사용할때 선택해야 하는 내용이 두가지 있습니다.하나는 prarmeter C를 선택해야 하고 또 하나는 kernel을 선택해야 합니다. 커널이 없는 경우는 linear kernel이라고 하며 이것은 f 함수(similarity function)을 사용하지 않고 x features 를 사용하는 것입니다. 주로 n 이 크고 m이 작은 즉 features는 많은데 dataset 사이즈가 적은 경우에 사용이 됩니다.그리고 우리가 배운 Gaussian kernel을 사용하는 경우에는 앞에서 배운것처럼 아래 그림의 하단 공식과 같이 표현이 가능하며 이때에는 sigma^2 값을 선택해야 합니다. 이것은 n 이 작고 m 이 큰 non-linear 에서 유용하게 사용이 됩니다. SVM에서 Kernel functi.. 2016. 8. 15.
30. SVM (Support Vector Machine) - Kernel에 대하여 Kernel이번에는 non-linear 에 대해서 알아보겠습니다. 아래 그림과 같이 dataset이 있고 h 함수가 오른쪽 공식과 같습니다. x 에 대한 다항식을 f로 치환하면 아래쪽의 함수와 같이 나타낼 수 있었습니다. 여기서 f를 어떻게 하면 잘 선택을 할 수 있을지에 대해서 살펴보려고 합니다. 임의로 세개의 점을 아래 그래프와 같이 지정을 해보겠습니다. 이 점들을 l 이라고 표현하고 landmarks라고 읽습니다. 어떠한 data x에 대해서 f를 x, l에 대한 similarity(유사성)의 함수라고 하겠습니다. 이것은 또 수학적으로 표현을 하면 다음과 같이 됩니다.exp(- (|| x - l1 ||^2 ) / 2σ^2)이것의 의미는 x와 l1과의 euclidean distance 값에 제곱을 s.. 2016. 8. 14.
29. SVM (Support Vector Machine) - Margin에 대하여 SVM의 강점인 Large Margin에 대해서 벡터를 이용해서 한번 원리를 이해해보도록 하겠습니다. 어떤 원리로 margin이 생기는지를 알면 더 효율적으로 알고리즘을 사용할 수 있을 것 같습니다.아래 그림과 같이 두개의 벡터 u, v가 있습니다. 각각 2개의 값을 가지고 있고 이 두개의 벡터의 곱에 대해서 생각해보겠습니다. 각각의 벡터를 그래프 상에 표현을 하면 아래 왼쪽과 같이 됩니다. u 벡터는 파란색의 u1, u2의 좌표를 갖는 원점에서 시작하는 벡터가 되고 v 벡터는 v1, v2의 좌표를 향하는 원점에서의 벡터로 분홍색으로 표시가 되었습니다. 여기서 v 벡터를 u 벡터에 투영을 한다고 생각을 하고 녹색의 직각의 선을 그어볼 수 있습니다. 그럼 빨간색으로 표현된 길이만큼의 새로운 p가 생깁니다... 2016. 8. 13.
28. SVM (Support Vector Machine) - 강력한 classification 지금까지 우리는 Supervised learning algorithms 에 대해서 알아보았습니다. 여러가지 알고리즘이 있었고 성능상에도 알고리즘들간에 큰 차이가 없다는 것을 알았습니다.이번에는 조금 다른 알고리즘에 대해서 알아보려고 합니다. 현재 널리 이용되고 있으면서 강력한 알고리즘으로 유명한 Support Vector Machine 혹은 Large Margin Classification 이라고 불리우는 알고리즘 입니다. 이 알고리즘은 logistic regression이나 neural network과 비교해서도 보다 복잡한 non-linear functions을 처리하는데 유용합니다.SVM을 설명하기 위해서 logistic regression에서 시작하여 어떻게 변하여 만들어지는지 하나씩 살펴보겠습니.. 2016. 8. 9.
27. 머신러닝 시스템을 디자인 하는 방법 (Machine Learning System Design) 지금까지 머신러닝에 대한 중요한 내용들을 배웠습니다. 이번에는 조금 다른 방향으로 생각해보려고 합니다. 스팸 메일을 분류하는 시스템을 만든다고 생각해 보겠습니다.이 시스템은 분류(classification)에 대한 내용임으로 Supervised Learning에 속하는 문제가 됩니다.이메일의 features를 x라고 하고 스팸인지 아닌지 여부를 y라고 합시다. (스팸은 1, 정상은 0)이중에서 100개의 단어를 선택하여 이메일과 대조를 해보면서 각 features가 이메일 내용에 포함이 되어 있으면 1과 그렇치 않으면 0으로 표현을 할 수 있습니다. 아래 그림과 같이 x는 각 단어를 포함하는지 여부에 대한 vector가 될 것입니다. 100의 기본 단어로 시작을 했지만 점차적으로 5만여개까지 늘어날 수도.. 2016. 8. 6.
26. 머신러닝에서 문제를 해결하는 방안 바로 이전 내용에서 처음 슬라이드로 다시 돌아가서,아래 그림과 같이 머신 러닝을 적용할 때 문제가 발생하면 조치를 할 수 있는 옵션들이 약 6가지 정도 있습니다.그냥 감으로 이것저것 해보는 것은 시간이 오래걸리기 때문에 효율적으로 판단하는 방법을 이전 내용에서 배웠습니다. 이제 이것을 통해서 어떠한 조치를 취하는 것이 현재 내가 격고 있는 어려움에 효과적인지를 정리하면서 알아보겠습니다. 앞의 방법들을 사용해서 진단한 결과가 어떠한가에 따라서 방안을 선택하시면 됩니다.만약 현재 내가 격고 있는 문제가 High Variance라고 진단 결과가 나왔다면 다음과 같은 조치들이 효과적입니다.- training 데이터를 더 많이 모는 것- features set을 줄여 보는 것- lambda 크기를 크게 변경해 보.. 2016. 7. 27.
25. 머신러닝을 적용할때 고려할 내용들 (Model Selection, Bias, Variance, Learning Curves) 이번에는 머신러닝을 적용하여 여러분이 원하시는 무언가를 진행하고자 할때 생각해보면 좋은 내용들을 알아보겠습니다. 여러분이 정규화된 linear regression을 예측하는 모델을 만들었다고 생각해보겠습니다. 그런데 실제 학습된 결과가 실제 결과 보다 생각보다 많이 차이가 나서 적용하기 어렵다고 느껴질 때가 있을 것입니다. 이때 무엇을 해야 할까요 일반적으로 사람들은 다음과 같은 내용들을 하려고 생각합니다.1. 더 많은 데이터가 필요하다 - 2배, 10배 되는 데이터가 있으면 더욱 정확한 결과가 가능할 것이다라고 생각하지만 실제로는 그렇치 않습니다.2. features를 더 줄이자- overfitting 이 일어나는것 같아서 이를 방지하기 위해서 더 줄이려고 하는 경향이 생깁니다.3. features를 .. 2016. 7. 26.
24. 뇌신경망을 이용한 머신러닝 (Neural Networks) 구성방안 지금까지 NN에 대해서 하나씩 살펴봤는데요. 이번에는 전체적으로 정리하면서 살펴보도록 하겠습니다. NN의 구성에 대해서 먼저 알아봅니다.아래 그림과 같이 3가지 케이스의 NN이 구성되어 있습니다. 3가지 모두다 동일한 input, output activation을 가지고 있습니다.다른점은 hidden layer가 첫번째는 1개, 두번째 구성은 2개, 세번째 구성에서는 3개를 가지고 있습니다. Input units NN을 구성할때 input units의 수는 자연스럽게 x features의 크기로 결정이 됩니다. 우리의 dataset이 가지고 있는 features들을 input 으로 주어야 하기 때문이지요 Output units output units의 수는 어떻게 결정이 될까요. 마찬가지로 결과로 분류가.. 2016. 7. 25.
23. 뇌신경망을 이용한 머신러닝 (Neural Networks) 구현하기 여기까지 여러분은 NN에 대한 모든 기본 개념을 배웠습니다.이제 구현을 하기 위해서 몇가지 더 알아야 할 것들을 배우고 실제로 구현이 어떻게 되는지를 살펴보도록 하겠습니다. Unrolling Parameters 아래 그림에서와 같이 Octave로 실제 구현을 할때 사용되는 values에 대해서 알아보겠습니다.costFunction의 입력 값이 되는 theta와 Advanced Optimization Algorithm을 사용할때 입력 값이 되는 initialTheta는 각 layer별로 theta들이 있기 때문에 Matrix가 되어야 하는데, 이것을 하나의 Vector로 만들면 좋습니다. 계산하고 사용하기가 편리하겠죠. 이것을 하는 방법이 Unrolling 입니다. 마찬가지로 costFunction의 계산.. 2016. 7. 24.