머신러닝, 딥러닝에 필요한 기초 수학 - 합성함수 예제

TS2·2021년 7월 15일
0

머신러닝에서 다항함수/지수함수/로그함수/합성함수가 어떻게 활용되는지 웹앱으로 알아본다.

https://metamath1.github.io/noviceml/toyclassifier.html

이미지를 강아지와 고양이로 분류해주는 분류기이다. 벡터가 10개 밖에 안되지만(실제로 분류기가 기능하려면 화소에 따라 최소 몇천개 차원으로 이루어진다) 이미지가 10개 벡터로 변환되었다 가정하고 살펴본다.

  • x1x_1 ~ x10x_{10} 까지는 벡터
  • x축은 벡터의 값이 0, 1으로 표시
  • w축은 임의의 변수(파라미터)
  • wixiw_ix_i축은 벡터와 변수를 곱한 값
  • z축은 wixiw_ix_i축의 값을 모두 더한 값
  • σ(z)는 로지스틱 시그모이드 함수에 입력한 값(σ(z)=11+ez\sigma(z)=\frac{1}{1+e^{-z}})
  • -log(σ\sigma)는 로지스틱 시그모이드 값을 로그함수에 넣은 값

이 분류기의 성능을 높여주려면, -log(σ\sigma) 그래프에 표현된 최종출력값을 최소화해야 함.
즉, 입력값인 σ\sigma를 1에 가깝게 만들면 됨. 1에 가까우면 강아지, 0에 가까우면 고양이

벡터에 대한 값은 정해져 있으니, w의 값을 조절하여 최종적으로 σ\sigma가 최소화되는 w를 찾아내는 것이 분류기의 성능을 높이는 모델(벡터 w)를 찾아내는 것 같다.

만일 강아지를 클릭한 상태에서 w2w_2를 2로 바꾸면 σ\sigma가 0.949로 1에 근접하게 된다. 그러나 고양이를 클릭하면 여전히 강아지로 분류중이다.
w8w_8을 -2로 바꾸면, 고양이일 확률이 0.668로 올라간다. x8x_8의 벡터가 0이므로 w8w_8를 바꿔줘도 강아지 벡터가 입력되었을 때의 성능에 영향을 주지 않는다.

이제, 최종적으로 ww에 아래 값을 입력해보자

w=(1.952,4.002,0.979,1.475,1.753,1.092,0.835,0.151,3.819,0.411)Tw = (-1.952, 4.002, 0.979, -1.475, 1.753, -1.092, 0.835, -0.151, -3.819, 0.411)^T

성능이 좋다.

현실에선 벡터가 10개 일리가 없다. 50000차원인 경우는 ww를 이렇게 손으로 찾는 것은 불가능하다.

ww를 찾기 위해 미분을 공부해보도록 하자.

profile
샴푸아닙니다. TSE입니다.

0개의 댓글