머신러닝이란 샘플과 기댓값이 주어졌을 때 데이터 처리 작업을 위한 실행 규칙을 찾는 것이다.
머신러닝을 하기 위해서는 세 가지 요소가 필요하며 다음과 같다.
1. 입력 데이터 포인트(사운드파일, 사진 등)
2. 기대 출력
3. 알고리즘의 성능을 측정하는 방법
머신러닝과 딥러닝의 핵심 문제는 의미 있게 데이터를 변환하는 것이다. 즉, 다른 말로 기대출력에 가까워지도록 입력 데이터의 유용한 "표현"을 학습하는 것이다.
여기서 "표현"이란 데이터를 인코딩하거나 표현하기 위해 데이터를 바라보는 다른 방법이다.
EX) 컬러 이미지는 RGB포맷이나 HSV포맷으로 인코딩될 수 있으며, 이들은 같은 데이터의 두 가지 다른 표현이다. 어떤 표현으로는 쉽게 해결되기 힘든 문제가 다른 표현으로는 쉽게 해결될 수 있다.
딥러닝은 머신러닝의 특정한 한 분야로서 연속된 층(layer)에서 점진적으로 의미있는 표현을 배우는 데 강점이 있으며, 데이터로부터 표현을 학습하는 새로운 방식이다. 딥러닝의 딥(deep)은 단순히 연속된 층으로 표현을 학습한다는 개념이다.
= 층기반 표현 학습 = 계층적 표현 학습
이따금 가중치를 그 층의 파라미터라고 부르며 학습이라는 것은 주어진 입력을 정확한 타깃에 매핑하기 위해 신경망의 모든 층에 있는 가중치 값을 찾는 것을 의미한다. 신경망의 출력을 제어하려면 출력이 기대하는 것보다 얼마나 벗어났는지 측정해야한다. 이는 신경망의 손실함수가 담당하는 일이다. (손실함수(loss function) = 목적함수(objective function), 비용함수(cost function))
모든 층을 거쳐 나온 예측값과 타깃값은 손실함수에 의해 차이를 점수로 계산된다. 기본적인 딥러닝의 방식은 이 점수를 피드백 신호로 사용하여 현재 샘플의 손실 점수가 감소되는 방향으로 가중치 값을 조금씩 수정하는 것이다. 이 과정에서 역전파(backpropagation)가 적용된다.(후에 서술) 네트워크가 모든 샘플을 처리하면서 가중치가 조금씩 올바른 방향으로 조정되고 손실 점수가 감소하는데, 이를 훈련 반복(training loop)이라고 하며, 충분히 반복할 경우 손실 함수를 최소화하는 가중치 값을 산출한다.
나이브 베이즈
나이브 베이즈란 입력 데이터의 특성이 모두 독립적이라고 가정(실제 데이터에는 특성들이 대부분 독립적이지 않다는 단점존재)하고 베이즈정리를 적용하는 머신 러닝 분류 알고리즘이다. 이와 밀접하게 연관된 모델이 로지스틱 회귀이다.(로지스틱 회귀는 회귀알고리즘이 아닌 분류알고리즘이다, 로지스틱 회귀는 데이터 과학자가 분류작업에 대한 감을 빠르게 얻기 위해 적용하는 첫 번째 알고리즘인 경우가 많다.)
여기에서 P(A)는 사전확률(prior)이라고 하며 사건 B가 발생하기 전에 가지고 있던 사건 A의 확률이다. 만약 사건 B가 발생하면 이 정보를 반영하여 사건 A의 확률은 P(A|B)라는 값으로 변하게 되며 이를 사후확률(posterior)이라고 한다.
사후확률값은 사전확률에 P(B|A) / P(B)라는 값을 곱하면 얻을 수 있다. 곱하는 P(B|A)는 가능도(likelihood)라고 하고 나누는 P(B)는 정규화 상수(normalizing constant) 혹은 증거(evidence)라고 한다.
베이즈 정리는 사건 B가 발생함으로써(사건 B가 진실이라는 것을 알게 됨으로써, 즉 사건 B의 확률 P(B)=1이라는 것을 알게 됨으로써) 사건 A의 확률이 어떻게 변화하는지를 표현한 정리다. 따라서 베이즈 정리는 새로운 정보가 기존의 추론에 어떻게 영향을 미치는지를 나타낸다.
즉 베이즈 정리는 조건부확률을 구하는 것이다.(식1)
커널 방법
1990년대 신경망은 관심을 얻기 시작하였지만, 커널 방법이 인기를 얻자 신경망은 빠르게 잊혀졌다. 커널방법(kernel method)은 분류 알고리즘의 한 종류를 말하며 그중 서포트 벡터 머신(SVM)이 가장 유명하다.
SVM은 두 클래스를 나누는 결정경계(decision boundary)를 찾는 알고리즘이다. 결정 경계를 찾는 과정은 두 단계로 다음과 같다.
1. 결정 경계가 하나의 초평면(hyperplane)으로 표현될 수 있는 새로운 고차원표현으로 데이터를 매핑한다.
2. 초평면과 각 클래스의 가장 가까운 데이터 포인트 사이의 거리가 최대가 되는 최선의 결정 경계(하나의 분할 초평면)을 찾는다. 이 단계를 마진최대화(margin maximization)라고 부른다.
SVM은 매우 효율적이고 오랫동안 인기 있었지만, 대용량의 데이터셋에 확장되기 어려우며, 이미지 분류같은 지각에 관련된 문제에서 좋은 성능을 내지 못한다. 이를 극복하려면 특성공학(feature engineering)이 필요하지만 이는 매우 어렵고 불안정하다.
머신러닝의 최근 동향
머신러닝 알고리즘과 도구의 동향에 대한 정보를 얻는 좋은 방법은 캐글의 머신러닝 경연을 보는 것이다. 다양한 종류의 머신러닝 문제를 다루고 있기 때문에 현실적인 잣대가 된다. 2017년부터 19년까지 모든 대회의 상위 5위 안에 드는 팀이 경연대회에서 주로 어떤 소프트웨어 도구를 사용하는지 설문을 진행한 결과, 최상위 팀은 딥러닝 모델과 그레디언트 부스티드 트리(대부분 LightGBM, XGBoost)를 사용하는 것으로 나타났다.
그레이디언트 부스티드 트리는 사이킷런, XGBoost, LightGBM을 많이 사용하고 보통의 대부분의 딥러닝 사용자는 케라스와 케라스의 상위 프레임워크인 텐서플로를 사용한다. 공통점은 이는 모두 파이썬 라이브러리라는 것
댓글