본문 바로가기

머신러닝/[단단한 머신러닝]

(9)
서포트 벡터 머신 해당 개념 역시 관련한 좋은 글들이 이미 그득하니, 제가 인상깊었던 내용만을 쌓아두겠습니다. 서포트 벡터 머신(Support Vector Machine, SVM)은 어떤 그룹과 어떤 그룹을 잘 분류하는(좋은 마진을 갖는) 초평면을 찾겠다-라는 아이디어로 구성된 알고리즘입니다. 분류-라 함은 이진분류의 개념에서 생각해볼때, 어떤 인풋으로부터 다듬어진 결과가 0이냐 1이냐를 구분하는 문제입니다. 이러한 상황에서의 가장 기본적인 손실함수는 다듬어진 결과 x가 있을 때, 이 결과가 어떤 임계값(=0로 가정)보다 작으면 0, 크면 1으로 생각해볼 수 있습니다. 보통 0/1 손실함수라고 지칭합니다. 다만 이 함수는 일종의 스텝 함수(Step function)입니다. 비연속적임과 동시에 논컨벡스(Non-convex)..
쌍대문제 / 라그랑주 승수법 / KKT 조건 쌍대 문제(Dual problem), 라그랑주 승수법(Lagrange multiplier method), KKT 조건(Karush-Kuhn-Tucker Condition)은 머신러닝에서 자주 언급되는 목적함수(Object function, Loss function, Cost function, ...)의 해를 구할 때 언급되는 용어들입니다. 각각에 대한 수식적이고, 깊은 설명은 Ratsgo's blog와 같은 멋진 분들이 잘 설명해주신 글들이 많기에, 저는 간단히 흐름만 체크해보겠습니다. 저희가 머신러닝을 공부하는 과정 중에 마주치는 어떤 목적함수를 떠올려봅시다. 어떤 것이라도 괜찮아요. RMSE 따위를 가정해보면, 저희가 어떤 모델에게 원하는 학습의 방향은, 이 RMSE를 최소화하는 것입니다. 어떤 함수..
인공 신경망 / 로컬 미니멈 인공 신경망과 로컬 미니멈에 대한 내용을 다루는 글들은 많으니, 기본적은 내용은 기록하지 않고, 제가 이 책을 읽으며 인상깊은 내용만 기록하였습니다. 신경망 구조, 그러니까 네트워크 구조를 설명할 때, Bias는 Threshold라고 표현되기도 한다. Activation function, Response function, Squashing function은 유사한 의미를 지닌다. Feed-forword는 단순히 뒤로 전달할 수 없다는 뜻이 아니라, 단지 네트워크 구조상에 순환이나 회로가 없다는 것을 의미한다. [Hornik et al. 1989]는 은닉 노드가 충분히 많다면, 활성 함수로 무엇을 사용하든 다층 순방향 신경망은 어떤 함수라도 원하는 정확도만큼 근사화할 수 있다는 것을 증명했다. 그러나 은닉..
가지치기 가지치기(Pruning)은 의사결정 나무 알고리즘에서 과적합(Overfitting)에 대응하기 위한 대표적 수단입니다. 실제 의사결정 나무 알고리즘을 적용할 때, 나무의 깊이는 얼마나 나아갈지, 최하위 노드의 개수는 몇 개로 할지 등의 하이퍼 파라미터 등을 선택하는데, 어느 정도가 좋은 값인지 저희는 전혀 알 수 없습니다. 다만 미쳤다고 이걸 할 수 있는 최대치로 잡아버리면, 당연히 나무의 가지가 미친듯이 세부적으로 생겨날테고, 이건 학습데이터에 정말 꽉 맞게되는, 과적합이 발생할게 분명하겠지요. 이를 해결하기위해서는 가지들을 좀 잘라서, 모델을 좀 느슨하게 만들 필요가 있습니다. 이렇게하면, 모델의 일반성도 높아질테고, 모델의 무게도 가벼워진다는 장점이 있겠지요. 그렇게 어떻게 가지치기를 할 건지 생각..
의사결정 나무 / 정보 이득 / 이득율 / 지니 인덱스 의사결정 나무(Decision Tree)의 알고리즘 자체는, 누구라도 생각할 수 있을 법한 그런 아이디어입니다. 다만 그 과정 중 '어떤 잣대를 들이밀어 가지를 분기(또는 분할)시킬 것인가'-는 꽤나 고민이 필요한 문제일 겁니다. 어떤 가지가 뻗어나갈 때, 저희는 당연히 뻗어나가는 가지들이 최대한 같은 클래스에 속하는 샘플을 포함하기를 원하겠죠. 이러한 상황을, 저희는 노드의 순도(Purity)가 높다고 말합니다. 가령, 어떤 데이터가 키, 몸무게, 혈액형 등을 특성으로 갖는다면, 키, 몸무게, 혈액형이 노드가 되고, 저희의 목표는 이러한 노드(특성) 중 어떤 놈들을 우선적으로 선택하여 분기를 시작할 것인지, 생각해야하고, 이러한 우선적 선택의 기준의 해당 노드의 순도입니다. 이런 순도가 높고 낮음을, ..
선형 모델 / LDA / 클래스 불균형 머신러닝을 이용한 사업 예측이라는 프로젝트의 복잡한 PPT가 대개는 선형 모델을 이용한 예측이더라-라는 우스꽝 스러운 글과 그림을 어디선가 본 적이 있는데, 막상 찾으려니 안보이네요. 이번 3단원에서는 이 선형 모델으로 이야기를 시작합니다. f(x) = wx + b 라는 수식으로 표현되는 이 모델은, 매우 간단하면서도 머신러닝의 중요한 사상을 담고 있습니다. 머신러닝의 대장격인 딥러닝도 결국은 많은 선형모델을 쌓아올리되 사이사이 비선형성을 추가시킨 개념입니다. 선형 모델은 w,b라는 놈들의 최적해(Optimum solution)을 찾기 위해 최소제곱법(Least square method)를 활용하는데, 그 목적함수(Objective function)은 컨벡스(Convex)한 덕에, w에 대해 미분한 식과..
추론 / 가설 / 공짜 점심은 없다. 머신러닝을 곧이 곧대로 해석하면, 공부하는 기계-라고 생각할 수 있을 것 같습니다. 그런데, 얘들은 대체 뭘, 어떻게 공부한다는 걸까요. 이에 대한 설명에 앞서 저자는 연역(Reduction)과 귀납(Deduction)에 대해 언급합니다. 연역 소크라테스는 인간이다 모든 인간은 죽는다. 따라서, 소크라테스는 죽는다, 귀납 소크라테스는 죽었다. 피타고라스는 죽었다. 노가다김씨는 죽었다. 따라서, 모든 인간은 죽는다. 위의 예시에서 쉽게 알 수 있듯, 연역은 일반에서 특수로 추론하는 것이며, 귀납은 특수에서 일반을 추론하는 것입니다. 그렇다면 저희가 다루는 머신러닝은, 분명한 귀납적 추론으로 학습을 진행하겠네요. 다양한 샘플 데이터에 학습(Fitting)시킴으로써, 세상의 다양한 데이터에 일반화되기를 목적으..
추천사 / 머리말 지금으로부터 약 1년전 처음 머신러닝을 접했을 때에는, 각각의 모델들이 정확히 어떻게 정답을 내놓는가-에 대한 구체적 고민없이 그저 sklearn에 있는 코드 몇 줄을 따라적어봤던 것이 전부인지라, 막연히 '사람들이 머신러닝 머신러닝하드만 신기하네'라고 생각했었습니다. 모델 내부가 어떤 모델링을 따라가는지 조금씩 알게되면서 들었던 생각은, '이게 기존에 하던 수학적/통계학적 모델링이랑 다른게 뭔가?'였죠. 지금도 여전히 머신러닝과 기존의 통계학이 뭐가 다르냐-한다면, 솔직히 잘 모르겠습니다. 그럼 아예 같은건가-라고 생각을 해봐도. 여전히 모르겠습니다. 제 이러한 생각에서, 이 책에서 서술되는 아래의 내용이 인상깊네요. (주: 저자의 의견이 아닌 책에 등장하는 다양한 권위자들의 의견이 종합되어 있습니다...