코딩일기

[DataScience] 머신러닝을 위한 미분 ( feat. 평균변화율 -> 순간변화율 ) 본문

Code/머신러닝(ML)

[DataScience] 머신러닝을 위한 미분 ( feat. 평균변화율 -> 순간변화율 )

daje 2021. 1. 12. 15:29
728x90
반응형

 

 

 

안녕하십니까 다제입니다. 

 

오늘은 머신러닝을 위한 반드시 알아야할 미분에 대해서 알아보도록 하겠습니다. 

 

먼저 미분이 왜 필요한지?? 미분은 무엇인지?? 에 대해 이야기를 해야할 거 같아요~ 

 


머신러닝에서 미분의 필요성

우리는 머신러닝이 경험을 통해 특정 작업에 대한 성능이 좋아지는 프로그램이라는 것을 알고 있습니다. 

그렇다면 해당 머신러닝의 성능이 좋은지 안좋은지를 어떻게 알 수 있을까요?

 

결론부터 말씀드리면, (미분)함수를 통해 해당 머신러닝의 성능평가를 진행하게 됩니다. 

 

정말 단순화하여 설명드려보겠습니다.

위 2차 그래프에서 극소점으로 내려갈수록 성능이 좋아진다고 가정해보겠습니다.

그렇다면 현재 위치를 확인한 후 극소점이 있는 방향으로 가야겠지요?

이때 기울기를 가지고 덜 가파른 지점으로 이동을 하게 됩니다.

(일반적으로 성능이 좋은 지점이 극소점, 극대점인 경우가 많습니다.)

 

 

머신러닝의 성능을 판단하기 위해서 우리는 미분을 알 수 밖에 없겠죠?

아무리 좋은 기능이더라도 요즘은 느리면 안쓰고, 빠른데 부정확하다 생각되면 없어지는 세상입니다..

바르게 공부하여 효율적인 머신러닝을 함께 만들어 보시죠!

 


자! 충분히 우리가 미분을 배우게 될 이유는 알았고 이제부터 

천천히 미분을 공부해볼까 합니다! 제 글을 정독해 보니 딱 10분이면 가능했습니다. 

바로 고고고! 

 

 

우리는 그 동안 pandas를 통해 직선그래프를 쭉~ 연습해왔습니다. 

이런 직선그래프의 기울기 보면서 얼마나 빠르게, 얼마만큼 변했는지를 한 눈에 볼 수 있었습니다.  

 

1. 곡선그래프 기울기 구하기 

그런데,, 두둥 이런 곡선 그래프에서는

기울기를 어떻게 알 수 있을까요? 음.. 고민이 되시죠?

지금까지 직선만 봤는데... 이때 미분이 필요합니다!

1) 일단, a에서 b로 직선을 하나 그어볼까요?

2) 두 점에 대한 기울기는 f(b) - f(a) / b - a라고 기재할 수 있고 우리는 이를 평균변화율이라고 부릅니다. 

 

3) 그리고 a부터 b까지의 길이를 h라고 정의해 보겠습니다.

4) 우리는 b를 b = a + h 정의할 수 있고 그래프도 이렇게 바꿀 수 있습니다.  

 

 

5) 기울기를 f(a+h) - f(a) / h로 바꿀 수 있습니다. 

6) 그럼 h가 점점 줄어든다고 가정해볼까요? 그러다가 a와 아주 근접하게 되며

    a의 순간변화율을 구할 수 있게 됩니다. 

7) 이렇게 함수의 "특정 지점의 순간적인 변화를 구하는 방법"을 미분이라고 합니다. 

 

그런데 매번 이렇게 미분을 구할 수가 없으니 

아래와 같이 간단하게 미분을 진행할 수 있습니다. 

 

 

2. 간단한 미분 방법 & 기울기의 의미 

1) 차수를 그대로 변수 앞으로 내린다. 

2) 내린 차수는 -1을 해주고 기존 차수 위치에 기재한다. 

 

y = x^2 - 2x + 1   ->   y = 2x - 2

 

혹시 이해가 안되신다면 유튜브에 간단한 미분이라고 검색하시면 훨씬 쉽게 이해하실 수 있습니다. 

저도 쉽게 이해시켜드리기 위해 노력하나... 기술이 부족하여....

 

자 그럼 이렇게 기울기를 구하여 우리는 어디에 사용할 수 있을까요?

 1. 그래프가 해당 지점에서 얼마나 기울어져 있는지  
 2. 어떤 방향으로 가야 가장 가파르게 올라갈 수 있는지 
 -> 성능평가에 사용

 

 

3. 극소점 & 극대점 & 안장점 

순간변화율이 0인 지점은 아래와 같이 크게 3종류로 나뉠 수 있습니다. 

보통 위 점들이 머신러닝의 최적화 지점이 되는 경우가 많다.  

 

극소점 : 주위의 모든 점의 함숫값 이하의 함숫값을 갖는 점

극대점 : 주위의 모든 점의 함숫값 이상의 함숫값을 갖는 점

안장점 : 어느 방향에서 보면 극대값이지만 다른 방향에서 보면 극소값이 되는 점

https://ko.wikipedia.org/wiki/%EA%B7%B9%EA%B0%92

 

 

4. 다변수함수의 미분 

지금까지는 input 변수가 1개인 경우를 살펴보았습니다. 

이제 input 변수가 두개인 경우를 살펴보겠습니다. 

 

input 변수가 x,y로 두가지인 경우 편미분을 해야합니다. 

편미분이란? 두 변수 중 하나만 골라서 미분을 하는 것을 말합니다. 

 

f(x, y) = x^2 + y^2라고 한다면 

 

x에대한 편미분

x 외에 다른 변수를 상수항 취급함  ->  f(x, y) = 2x

 

y에 대한 편미분 

y 외에 다른 변수를 상수항 취급함  ->  f(x, y) = 2y

 

이렇게 산출된 편미분을 백터에 넣어주면 해당 백터가 다변수함수의 기울기가 된다

또한, 이 기울기는 가장 가파르게 올라갈 수 있는 방향을 알려주게 된다. 

 

 

자! 최종적으로 정리를 해보면 우리는 미분을 통해서

극소점, 극대점, 안장점, 기울기 가파른 방향을 알 수 있습니다. 

 

위와 같은 수학적 개념을 이용하여 

머신러닝의 성능평가와 최적화를 할 수 있다! 

그래서 미분에 대한 정확한 이해가 필요하다고만 알아주시면 됩니다. 

 

 

공부하시다가 모르시는 부분이 있으시면 댓글 부탁드립니다! 

오늘도 방문해주셔서 감사합니다. 

728x90
반응형
Comments