본문바로가기
[인공지능, 수학으로 타파] 최소제곱법으로 딥러닝 따라하기
수학동아 2020.05.26 17:24

 

 

Mathematics for AI #2

최소제곱법으로 딥러닝 따라하기

 

 

 

 

*출제자의 한 마디*

 

저번 시간에는 행렬 곱으로 표현된 연산망에서 결과값이 실제값과 같아지도록 행렬의 성분을 직접 바꿔봤어요. 이번 시간에는 인공지능이 자동으로 행렬의 성분을 예측하고 조정하는 방법 즉, 학습하는 과정을 살펴볼게요.

 

코딩할 때는 지난 시간에 배운 명령어 중 변수에 입력된 값 또는 행렬을 보여주는 show(변수) 명령어를 함께 활용하세요!

 

 

 

 

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

 

학습과 최소제곱법

 

학습은 입력된 데이터로부터 나온 결괏값과 실제값의 차이(오차)를 줄이는 방향으로 진행됩니다. 오차가 작을수록 학습이 잘됐다고 말하는데, 인공지능은 최소제곱법_Least Squared Method를 이용해 오차를 줄입니다.  

 

최소제곱법은 오차값들을 제곱한 값을 모두 더하는 방법인데요, 아래 간단한 예시를 통해 그 과정을 이해해봅시다!

 

 

 

 

 

 

 

위 오른쪽 그래프에서 빨간 점은 왼쪽 표에 적힌 아메리카노의 가격과 구매자 수를 통해 얻은 데이터입니다. 딱 봐도 아메리카노 가격이 올라가면 구매자 수가 줄어든다는 걸 알 수 있죠. 

 

파란 선분은 빨간 점을 통해 만든 선형 모형입니다. 표에 없는 아메리카노 가격에 대한 구매자 수를 예측하고 싶으면 선형 모형을 이용하면 되죠. 녹색 점선은 실제값(빨간 점)과 선형 모형으로 계산한 결괏값(파란 선분 위의 점) 사이의 차이, 즉 오차를 나타냅니다.

 

직관적으로 녹색 점선의 길이를 모두 합쳤을 때 길이가 가장 짧은 선형 모형이 '좋은 선형 모형'이라는 걸 알 수 있습니다. 그런데 오차값은 빨간 점이 파란 선분 위에 있으면 양수고 아래에 있으면 음수이므로, 오차값을 더했을 때 값이 상쇄되지 않게 하려면 오차값을 제곱한 뒤 더하면 됩니다. 이 과정이 바로 '최소제곱법'이죠.

 

'인공지능이 xxx를 학습한다'는 건 최소제곱법을 통해 연산망을 나타내는 행렬의 성분을 예측하고 조정하고 있다는 걸 말합니다. 데이터의 양이 많아도 최소제곱법을 잘 이해하고 있다면 효율적인 알고리듬을 만들어 코딩으로 쉽게 결과를 얻을 수 있습니다. 

 

 

 

 

 

 

 

 

 

*최소제곱법의 창시자 '아드리앵-마리 르장드르' 

프랑스 수학자 아드리앵-마리 르장드르는 수학의 여러 분야에 두루 기여했어요. 1805년 논문 ‘혜성의 궤도를 결정하기 위한 새로운 방법’에서 18세기 최고의 수학자로 꼽히는 카를 프리드리히 가우스 보다 앞서 최소제곱법을 발표했고, 1830년에는 n이 5일 때 페르마의 마지막 정리가 참임을 증명했습니다.

수학을 체계적으로 설명하는 능력이 뛰어나 르장드르가 지은 책 ‘정수론’, ‘기하학의 원리’, ‘적분학 연습’, ‘ 타원함수론’은 오랫동안 교과서로 쓰이기도 했습니다. 1889년에는 프랑스 에펠탑에 새길 72인의 프랑스 수학자·과학자·공학자 가운데 한 명으로 선정됐으며 현재 르장드르의 이름은 에펠탑 남서쪽 면의 오른쪽에서 두 번째에 새겨져 있습니다.

 

 

 

 

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

 

 

xy에 관한 n개의 2차원 데이터 (x1, y1), …, (xn, yn)가 있다. 이 데이터로부터 xy의 관계를 가장 잘 나타내는 선형방정식 y=a+bx를 찾아보자. 가장 이상적인 방정식은 아래처럼 모든 데이터 (xi, yi)를 대입했을 때도 방정식을 만족하는 것이다(1≤in).

 

 

y1 = a + bx1

y2 = a + bx2

\LARGE \vdots

yn = a + bxn

 

 

 

이를 행렬로 나타내면 다음과 같다.

 

 

AX=B

 

\large A=\begin{pmatrix} 1 & x_1\\ 1 & x_2 \\ \vdots & \vdots \\ 1 & x_n \end{pmatrix} , X=\begin{pmatrix} a \\ b \end{pmatrix]}, B=\begin{pmatrix} y_1 \\ y_2 \\ \vdots \\ y_n \end{pmatrix]}

 

 

 

데이터가 3개 이상이면 즉, n≥3이면 미지수의 개수보다 많은 선형 연립방정식이 생긴다. 이때 AX=B를 만족하는 해가 단 하나도 없는 경우가 대부분이므로 오차 ||AX-B||를 최소화하는 근사해를 찾는다. 이 방법을 ‘최소제곱법’이라고 한다.

 

 

 

 

 

문제1

좌표평면 위의 4개의 점 (0, 1), (1, 3), (2, 4), (3, 4)의 선형 모형(최소제곱직선) y=a+bx의 그래프를 구하라. 

 

 

 

 

 

 

 

문제2

다음은 어떤 학생의 하루 평균 공부 시간에 따른 평균 수학 성적을 조사한 표다. 선형 모형(최소제곱직선) y=a+bx의 그래프를 구하고, 그 결과를 해석해보자.

 

 

 

 

 

 

문제3

다음은 일반 가정에서 구성원 수에 따른 한 달 평균 전력소비량을 조사한 결과다. 두 변수 사이의 관계를 잘 나타내는 선형 모형을 구하고 그 결과를 해석해보자.

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

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

 

 

① list = [ (x1, y1), (x2, y2), … , (xn, yn) ]

대괄호 [ ] 안에 n개의 데이터 (x1 , y1), (x2, y2), …, (xn, yn)을 적어 하나의 목록으로 만들고 list라고 이름 붙인다. 이때 각 데이터를 목록의 ‘요소’라고 부른다.

 

 

② model(x) = a+b*x

변수 x에 대한 선형방정식 y=a+bx를 함수로 정의하고, model이라고 이름 붙인다.

 

 

sol=find_fit(list,model)

최소제곱법으로 가장 적합한 해를 찾는 ‘find_fit’ 명령어로 입력한 데이터와 선형방 정식에 따라 변수 ab를 자동으로 계산해 sol에 저장한다.

 

 

--------그래프를 그리고 싶으면 아래 명령어를 이용해보세요--------

 

 

④ points( list, color='red' )

리스트에 해당하는 점들을 좌표평면 위에 표시한다. 이때 점의 색깔은 빨간색(red)으로 나타낸다.

 

 

⑤ plot( a*x+b, (x,0,5) )

x값의 범위가 0부터 5까지인 직선 y=ax+b를 좌표평면 위에 나타낸다. 

 

 

 

-끝-

 

 

  •  
    이용현 Lv.1 2020.06.01 11:25

    최소제곱법을 통해서 다음 예측 값을 알 수 있겠군요!

    실생활에서 유용하게 사용할 수 있을 것 같아요.

    댓글 작성하기 좋아요0 댓글수0
  •  
    je Lv.1 2020.06.01 11:42

    AI에 관련해서 어떤 수학자가 기여했는지도 알게되어서 정말 유익한 것 같아요!

    댓글 작성하기 좋아요0 댓글수0
  •  
    서재헌 Lv.1 2020.06.01 13:17

    그래프를 직접 그려볼 수 있어서 너무 좋은거같아요!

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

  • ☎문의 02-6749-3911