본문바로가기
[인공지능, 수학으로 타파] 도함수로 딥러닝 따라하기
수학동아 2020.07.24 12:39

 

 

Mathematics for AI #4

도함수로 딥러닝 따라하기

 

 

 

 

*출제자의 한 마디*

 

인공지능은 딥러닝으로 학습해서 나온 결괏값과 원래 값의 차이(오차)를 '손실 함수'로 나타냅니다. 즉 손실 함수의 최솟값을 찾는 게 바로 오차를 최소화하는 거지요. 

손실 함수의 값이 최소가 되는 값인 '최적해'를 찾을 때는 도함수를 활용해야 합니다. 오늘 배울 코딩 명령어에 다양한 함수를 입력해 그 함수의 최솟값을 구해보고, 최솟값이 없는 경우 그 이유가 뭔지 생각해보세요!

 

 

 

--------------

 

분류와 확률분포

 

저번 시간에는 확률 분포를 통해 분류하고 판단하는 방법에 대하여 간단히 살펴봤어요. 특히 어떤 데이터의 분포에 맞는 확률 분포 함수를 찾은 뒤 예컨대 '이 사진의 동물이 고양이일 확률이 얼마일까?'라는 질문에 대해 '고양이일 확률이 95% 이상이면 고양이로 분류한다’와 같이 확률적으로 수치화한 기준값을 바탕으로 직접 분류 및 판단을 할 수 있었습니다.

 

 

이번 시간에는 딥러닝 과정에서 인공지능이 여러 가지 요소를 고려해 자동으로 가장 최선의 결과를 도출하는 '최적화' 과정을 살펴볼게요. 사실 최적화는 우리 일상 속에서 자연스럽게 이뤄지고 있어요. 예를 들어 어떤 일들을 가장 빨리 해결하도록 순서를 정하거나 특정 지역들을 모두 들렀다 목적지로 갈 때 시간과 거리, 비용을 최소로 하는 경로 찾기 등에서 자연스럽게 최적화 과정을 거칩니다.

 

 

이런 최적화 과정은 수학적으로 나타낼 수 있는데, 시간, 거리, 비용 등 최적화의 대상이 되는 값을 함숫값으로 갖는 함수에서 최솟값, 최댓값 등의 최적의 해를 찾는 것이 바로 최적화입니다. 

 

 

학교에서 배우는 일차함수 또는 이차함수 같이 변수가 하나인 함수는 함수의 그래프를 그려서 최적의 해를 찾을 수 있지만, 딥러닝에서는 수많은 변수를 다뤄야하므로 함수가 복잡해지고 그래프로 표현할 수 없는 경우가 대부분입니다. 이렇게 복잡한 함수들은 미분을 해서 도함수_derivative를 구한 뒤 최적의 해를 찾죠.

 

도함수(derivative)는 어떤 함수 그래프 위의 점에서 그 그래프에 접하는 직선의 기울기를 함숫값으로 갖는 함수로, 함수를 미분해 구할 수 있습니다. 보통 함수는 접하는 직선의 기울기가 0이 되는 지점에서 최솟값 또는 최댓값을 갖기 때문에 도함수를 이용하면 복잡한 함수에서 쉽게 최솟값을 찾을 수 있죠.

 

 

다양한 종류와 차원에서 함수의 도함수를 다루는 수학 분야인 미적분학에서 극한과 연속 그리고 급수의 합 등의 개념을 체계적으로 확립한 사람은 프랑스의 수학자 오귀스탱 루이 코시_Augustin Louis Cauchy입니다. 

 

 

그럼 이제 코딩 명령어를 이용해 함수의 최솟값을 구하는 방법을 알아볼까요?

 

 

 

 

 

*미적분학의 선구자 '오귀스탱 루이 코시' 

프랑스 수학자 오귀스탱 루이 코시는 무려 789편의 논문을 발표한 수학자다. 대표적인 업적으로는 수열의 각 항을 계속 더했을 때 그 값이 수렴하는지 발산하는 지 계산하지 않고 알 수 있는 판정법을 발 견한 것과 정의역과 치역이 모두 복소수인 함수를 연구하는 ‘복소함수론’ 분야에서 오늘날까지 유용하게 쓰는 부등식과 공식을 발견한 것 등이 있다.

 

다방면에 걸친 업적 외에도 코시는 논문을 엄밀하게 기술하려고 주의를 기울였는데, 이는 당시 직관에 의존했던 미적분학이 논리적인 체계를 갖도록 하는 계기가 됐다.

 

코시는 프랑스 파리의 에펠탑에 이름이 새겨진 72명의 위인 중 한 명이다.

 

 

 

 

--------------

 

 

a를 포함하는 구간에서 정의한 함수 y=f(x)가 있다. 이 함수의 극한값 \lim_{h\rightarrow 0}\frac{f(a+h)-f(a)}{h}가 존재할 때 이 값을 f(x)의 a에서의 미분계수라고 부르며 기호로 f′(a)로 나타낸다.

f(x)의 a에서의 미분계수는 그래프 위의 점 (a, f(a))에서 접선의 기울기를 뜻한다. 함수의 그래프는 보통 접선의 기울기가 0인 지점에서 최솟값 또는 최댓값을 갖는다.

 

 

 

 

 

어떤 구간의 모든 점에서 y=f(x)의 미분계수가 존재하면 ‘x’에서 ‘f(x)의 x에서의 미분계수’에 대응하는 함수를 정의할 수 있다. 이를 f(x)의 ‘도함수’라 하고 아래 기호 중 하나로 나타낸다.

 

\LARGE f'(x),      \LARGE y',      \LARGE \frac{dy}{dx},      \LARGE \frac{dy}{dx}f(x),      \LARGE Dy

 

 

다시 말해 어떤 함수를 미분한 함수가 도함수고, 도함수의 x에 어떤 값을 대입해 나온 함숫값이 그 점에서의 미분계수다.

 

 

 

 

 

 

문제

인공지능은 학습한 결과와 실제값의 오차를 ‘손실 함수’로 나타내고, 손실함수의 최솟값을 찾아 오차를 최소화한다. 인공지능이 데이터를 학습한 결과 손실함수가 f(x)=x2-8x+22로 나타났을 때 손실함수의 도함수 f′(x)의 그래프를 그리고, 함숫값이 0이 되는 x값을 찾아보자.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

--------------

 

 

 

풀이에 필요한 SageMath 코딩 명령어

 

 

var('x')

f(x)=x^2-8*x+22

x를 변수로 지정한 뒤, 함수 f(x)에 다항식 x2-8x+22를 입력한다.

 

 

df(x)=diff(f(x), x)

print(df(x))

x를 변수로 하는 함수 f(x)의 도함수 f′(x)를 계산하고, 그 결과를 출력한다.

 

 

show(plot(df(x), x, 0, 10))

도함수 f′(x)의 그래프를 0≤x≤10에서 보여준다.

 

 

 

 

-끝-

 

 

  • 폴리매스 문제는 2019년도 정부의 재원으로 한국과학창의재단의 지원을 받아 수행된 성과물입니다.

  • ☎문의 02-6749-3911