본문 바로가기

Programmer Jinyo/Machine Learning

머신러닝,딥러닝 초보를 위한 튜토리얼 강의 4 ( linear classification , SVM Loss Function)


투명한 기부를 하고싶다면 이 링크로 와보세요! 🥰 (클릭!)

바이낸스(₿) 수수료 평생 20% 할인받는 링크로 가입하기! 🔥 (클릭!)

2018/06/30 - [전체보기] - Pytorch 초보를 위한 튜토리얼 강의 1 ( linear classification , SVM Loss Function)


2018/06/28 - [Programmer Jinyo/Machine Learning] - 머신러닝,딥러닝 초보를 위한 튜토리얼 강의 3 ( Supervised Unsupervised Learning , Classification , Regression )



지난 글에서는 Classification과 Regression이 무엇인지에 대해서 알아보았다.


그리고 Classification이나 Regression을 수행할 때, 많은 이름을 가진 모델들과 이를 어떻게 적용시킬 것인지에 대한 방법론이 존재한다.



많은 이름들 종류의 예로, Linear Model로 Classification을 한다면 Linear Classification이라고 부르고 Logistic Model로 Regression을 한다면 Logistic Regression이라고 부른다.


그리고 이번 글에서는 Classification 문제를 어떻게 머신러닝으로 해결하는지에 대해 여러 예측모델 중 하나인 Linear Model을 예로 들어 알아보려고 한다. 

(Linear Model이 무엇인지는 아래에서 다시 다루도록 한다. )






Linear Model


Linear Model 은 우리가 파라미터를 '선형 결합'으로 표현할 수 있는 식으로 모델을 예측한다면 그것을 Linear Model이라고 부른다.


선형결합에 대해서 배경지식이 없는 분들을 위해 간단하게만 설명하자면

우리가 데이터 와 

파라미터 를 가지고 모델을 예측한다고 했을 때, 


각각을 벡터로 보고  서로 곱해서 더한 식도 선형결합에 포함되며,


우리의 가설 함수를 같은 식으로 표현하면 이 모델을 Linear Model 이라고 한다. ( y = WX + b 형태 )


조금 더 자세한 설명이 필요하다면 아래의 링크를 통해서 보도록 하자.


( 선형결합 참고 : https://ratsgo.github.io/linear%20algebra/2017/03/23/linearity/ )

( 선형모델 참고 : https://brunch.co.kr/@gimmesilver/18 )





Linear Model을 어떻게 적용하는지는 Linear ModelClassification을 하는 것을 보며 감을 잡아보자.





Linear Classification


우리가 어떤 사진이 개인지, 고양이인지, 배인지를 구분하는 모델을 만들고 싶다고 하자.


우리는 다음과 같은 데이터를 가지고 있다.


사진의 특징을 나타내는 4개의 속성을 가진 벡터 값 x

사진의 실제 label y ( 개 , 고양이 , 배 )



이런 상황이라면, 우리는 Linear Model을 가지고 예측하기로 하였으므로 다음과 같이 식을 세워볼 수 있다.



 : 이 데이터와 고양이의 유사도

 : 이 데이터와 개의 유사도

 : 이 데이터와 배의 유사도


그리고 이 중 가장 높은 유사도를 가진 가설함수를 해당 Label 에 속하는 사진으로 결정하도록 하는 것이다.


행렬로 변환한 그림으로 표현하자면 다음과 같이 표현될 수 있을것이다.


위의 모델은 예측을 엄청 못하고 있는 것으로 보인다.

고양이 사진인데 고양이 점수가 제일 낮고, 개의 점수가 제일 높다.


만약 이를 평가할만한 Cost Function을 만들어서 저 사진 Data의 Cost를 낮추도록 Gradient Descent를 시행하게 되면 W와 b의 값이 변하며 cat의 score이 높아지고 Dog와 Ship은 낮아질 것이다.


혹시 저 그림의 식이 조금 버겁다면 아래의 링크도 참고하자


( 기초적인 행렬연산 : https://ratsgo.github.io/linear%20algebra/2017/03/14/operations/ )




Cost Function ( 다른 말로는 Loss Function )


그렇다면 Cost Function은 어떻게 설정하는 것이 좋을까?


예측 모델도 Linear Model 이외에 여러가지 모델들이 있었던 것과 마찬가지로,  Cost 함수의 종류 또한 다양한 종류가 있다.


오늘은 그 중, SVM (Support Vector Machine ) Loss에 대해서 배워보자.





Support Vector Machine Loss


기본적으로 식은 다음과 같다.


 : 데이터  에서 발생하는 Loss ( Loss는 머신러닝에서는 손실, 손해라는 의미에서 Cost를 대신하는 단어로도 쓰인다 )


 : 데이터 의 정답 class (위의 데이터에서는 고양이)


: j라는 class로 예측한 점수


 : 적당한 양수 값



이 식이 의미하는 바에 대해서 생각해보자.


Loss는 0이 될 때 까지 오답 class의 score가 정답 class를 예측한 score와 차이가 많이 나면 날수록 줄어들게 되어있다.


식을 다시 문장으로 풀어서 쉽게 말하면,


모든 class에 대해서 ( 오답점수 - 정답점수 + a 와 0 중에 큰 수) 의 총 합이 되는 것이다.


이렇게 식을 세우고 gradient descent를 적용하면 오답은 열심히 정답보다 작아지려고 노력하게 되고, 정답은 크면 클 수록 좋기 때문에 커지려고 노력하게 된다.


저 가 크면 클 수록, Loss를 0으로 만들기 위해서 정답과 오답 사이의 거리는 더 벌어지게 된다.






-


이 글에서 다룬 내용을 다시한번 정리하자면 다음과 같다.


Model -

Linear Classification Model : 선형 모델로 class를 나눔.


Loss -

SVM Loss : (오답 - 정답) 을 오차라고 결정함.





다음 글에서는 한번 코딩을 해보겠다.



* 이 글은 당분간 더이상 쓰지 않을 것 같습니다.


Sung kim님의 pytorch zero to all 강의 영상을 번역 해 놓은


2018/07/02 - [Programming Project/Pytorch Tutorials] - Pytorch 머신러닝 튜토리얼 강의 1 (Overview)


에서 다시 시작해보시기 바래요!