안녕하십니까 다제입니다.
오늘은 머신러닝을 위한 반드시 알아야할 미분에 대해서 알아보도록 하겠습니다.
먼저 미분이 왜 필요한지?? 미분은 무엇인지?? 에 대해 이야기를 해야할 거 같아요~
머신러닝에서 미분의 필요성
우리는 머신러닝이 경험을 통해 특정 작업에 대한 성능이 좋아지는 프로그램이라는 것을 알고 있습니다.
그렇다면 해당 머신러닝의 성능이 좋은지 안좋은지를 어떻게 알 수 있을까요?
결론부터 말씀드리면, (미분)함수를 통해 해당 머신러닝의 성능평가를 진행하게 됩니다.
정말 단순화하여 설명드려보겠습니다.
위 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종류로 나뉠 수 있습니다.
보통 위 점들이 머신러닝의 최적화 지점이 되는 경우가 많다.
극소점 : 주위의 모든 점의 함숫값 이하의 함숫값을 갖는 점
극대점 : 주위의 모든 점의 함숫값 이상의 함숫값을 갖는 점
안장점 : 어느 방향에서 보면 극대값이지만 다른 방향에서 보면 극소값이 되는 점
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
이렇게 산출된 편미분을 백터에 넣어주면 해당 백터가 다변수함수의 기울기가 된다
또한, 이 기울기는 가장 가파르게 올라갈 수 있는 방향을 알려주게 된다.
자! 최종적으로 정리를 해보면 우리는 미분을 통해서
극소점, 극대점, 안장점, 기울기 가파른 방향을 알 수 있습니다.
위와 같은 수학적 개념을 이용하여
머신러닝의 성능평가와 최적화를 할 수 있다!
그래서 미분에 대한 정확한 이해가 필요하다고만 알아주시면 됩니다.
공부하시다가 모르시는 부분이 있으시면 댓글 부탁드립니다!
오늘도 방문해주셔서 감사합니다.
'Code > 머신러닝(ML)' 카테고리의 다른 글
[DataScience] 머신러닝, k means clustering( feat. just go ) (1) | 2021.01.18 |
---|---|
[DataScience] 머신러닝을 위한 차원축소 ( feat. PCA) (0) | 2021.01.18 |
[Datascience] 머신러닝을 위한 선형대수학 (Feat. 머신러닝 pandas) (0) | 2021.01.11 |
[Datascience] 선형대수학? 머신러닝? So what? (Feat. AI pandas) (4) | 2021.01.11 |
[Datascience] 프로그래밍을 위한 기초통계4(feat. 베이즈정리, 베이즈규칙, Bay's) (0) | 2021.01.10 |