반응형

안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.

코딩유치원에서는 파이썬 기초부터 사무자동화, 웹크롤링, 데이터 분석, 머신러닝 등의 다양한 패키지까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.

업무는 물론 투자에도 도움이 될만한 전자공시시스템(DART) 텔레그램(Telegram) 관련 패키지도 배울 수 있으니 많은 관심 부탁드립니다.

 

 

<머신러닝 관련 지난 글>

 

2021.07.19 - [파이썬 패키지/데이터분석] - [코딩유치원] 비전공자도 쉽게 이해할 수 있는 인공지능/머신러닝/딥러닝 개념 총정리

 

2021.09.01 - [파이썬 패키지/머신러닝] - [Python/Scikit-learn] 머신러닝 라이브러리_1편. 머신러닝과 Scikit-learn 소개(ft. 지도학습, 비지도학습, 강화학습)

2021.09.07 - [파이썬 패키지/머신러닝] - [Python/Scikit-learn] 머신러닝 라이브러리_2편. Scikit-learn 학습용 데이터 셋 불러오기(ft. 붓꽃 데이터)

2021.09.11 - [파이썬 패키지/머신러닝] - [Python/Scikit-learn] 머신러닝 라이브러리_3편. 머신러닝 준비물! 학습/검증/예측 데이터(ft.과대적합과 과소적합)

2021.09.13 - [파이썬 패키지/머신러닝] - [Python/Scikit-learn] 머신러닝 라이브러리_4편. 모델 학습과 분류 (ft. 붓꽃의 꽃잎, 꽃받침 데이터로 종류 예측하기)

2021.09.16 - [파이썬 패키지/머신러닝] - [Python/Scikit-learn] 머신러닝 라이브러리_5편. 머신러닝 주요 분류(Classification) 알고리즘 5가지 총정리

 


오늘은 머신러닝을 공부하면서 반드시 알아야 할 개념에 대해서 간단히 정리하는 시간을 가져보려 합니다.

 

그 개념은 아래와 같습니다.

 

1) 가설 함수(Hypothesis)

2) 손실 함수(Loss Function) = 비용 함수 (Cost Function) 

 

 

1. 가설 함수

 

가설 함수를 설명드리기 위해서 잠시 머신러닝의 개념을 다시 상기해보겠습니다.

 

머신러닝이란 데이터를 모델에 넣어주면 스스로 학습을 하는 말그대로 기계가 학습하는 것입니다.

 

머신러닝 중에서 비교적 이해가 쉬운 선형 회귀(Linear regression)를 예로 들어보면, 학습이란 것은 데이터들의 추세선을 긋고 그 선의 함수식을 구하는 것과 같습니다. 우리가 학창 시절 배우던 y = f(x)의 f(x)를 구해주는 것이죠.

 

 

아래의 식은 우리가 오늘 배울 가설 함수 식입니다. 참고로 W는 Weight, b는 Bias의 약자입니다.

 

그리고 f(x)가 아닌 H(x)인 이유는 가설을 뜻하는 hypothesis의 H인 듯 하네요.

 

다시 본론으로 돌아와서, 아까의 데이터에서 추세선을 긋고 함수를 구해줘볼까요?

 

계산 과정 생략하고 답은 Y = 3X + 1이 될 것입니다. 바로 이 함수가 '가설 함수'입니다.

 

 

2. 손실 함수 (비용 함수)

 

쉬운 이해를 위해서 간단한 데이터와 정확도 100%의 가설 함수를 계산으로 구했지만, 실제 데이터와 컴퓨터가 학습하는 과정은 단순하지 않습니다.

 

현실에서의 데이터는 직선 1개로는 모든 데이터들을 커버할 수 없을 정도로 흩어져 있고, 컴퓨터는 W와 b를 계속해서 바꾸어 가며 입력한 x(feature)와 출력되는 y값(label)을 만족시키는 최적의 W와  b를 바꾸는 과정을 반복하기 때문입니다.

 

실제 데이터 느낌

 

그렇다면 컴퓨터는 어떻게 무슨 기준으로 최적의 가설 함수를 찾는걸까요?

 

이를 위해 필요한 개념이 손실 함수입니다. 아래의 식이 좀 어렵게 느껴질 수 있지만 최대한 쉽게 설명드려 보겠습니다.

 

 출처. 파이토치로 시작하는 딥러닝 기초 (부스트코스 강의)

 

아까 가설 함수를 추세선에 비유했었는데, 추세선이란 모든 데이터들을 최대한 아우르며 그어지는 직선을 뜻 합니다.

 

그말은 즉, 추세선(가설 함수)의 Y값(예측값 = Prediction)과 실제 데이터의 Y값(실제값 = Label = Target)들과의 차이가 최소화 되어야 최적화된 추세선인 것입니다.

 

이 때, 단순히 차이값들을 더해주면 진짜 차이가 작아서 0에 가깝게 나올 수도 있고, 엄청 큰 차이들이 더해지고 빼지면서 0이 될 수도 있으므로 제곱을 해줍니다.

 

거기다가 데이터 갯수가 많아질 수록 손실 함수가 커지는 영향을 제거 해주기 위해서 평균을 구합니다.

 


 

 

반응형

+ Recent posts