퀵바


강호정담

우리 모두 웃어봐요! 우리들의 이야기로.



알파고의 일부 원리 - 2

작성자
Lv.96 강림주의
작성
16.03.15 15:49
조회
913

어제 약속한대로 오늘은 뉴런연결망에 대해 얘기해보....려 했는데 요즘 왕겜이 너무 재밌어가지고 지도학습 밖에 얘기 못했네요.


뉴런연결망을 향해 나아가는 과정은 저번 강화학습때보다는 좀 더 깁니다. 저번엔 강화학습을 큰 범주내에서만 좀 두루숭하게 얘기하고 지나갔지만, 이번엔 지도학습을 여전히 얕게나마 좀 더 깊숙히 파고 들어간다음 뉴런연결망이란 알고리즘 하나를 직접적으로 콕 집어 꺼내야만 하기 때문입니다. 그리고 그러기 위해서 우선 지도학습이란게 무엇인지부터 얘기해봐야합니다.


지도학습(Supervised Learning)은 기계학습의 3가지 큰 갈래들중 하나입니다. 기계학습에서 통계학의 영향을 가장 많이 받았다 개인적으로 생각하는 분야이기도 하죠. 비지도학습과 통계학이 연관이 없는건 아닌데, 지도학습은 그 특성상 아무래도 통계학과 연관이 깊을 수 밖에 없어서요. 


그렇다면 지도학습이 무엇인가. 지도학습은 한 무더기의 올바른 정답을 가지고 또다른 정답(근사치)를 예측해내는 학문입니다. 이것을 좀 더 기술적으로 말하자면 함수근사예측(Function approximation)이라고도 할 수가 있습니다. 이것이 정확히 무슨 말인지 예를 들어 설명해보겠습니다.


셜록 홈즈가 한명 있다고 해봅시다. 홈즈는 부자동네에 가서 행인 한명을 붙잡고 연소득이 얼마인지를 물어봅니다. 행인은 연소득이 10만달러라 답합니다. 


홈즈는 부자동네에서 좀 더 가난한 동네 방향으로 일백미터를 이동한 다음 다시 행인 한명에게 연소득을 물어봅니다. 이번엔 연소득이 7만 5천달러라 합니다. 


홈즈는 다시 가난한 동네로 일백미터를 더 이동한 다음 또다시 행인의 연소득을 물어봅니다. 이번엔 연소득이 오만달러입니다. 


홈즈는 마지막으로 다시 걸음을 옮겨 가난한 동네 쪽으로 일백미터를 더 이동합니다. 홈즈는 지나가는 행인 한명을 보고 이렇게 생각합니다.


'부자동네에서 출발한 내가 가난한 동네로 일백미터를 이동할 때마다 지나가는 행인들의 연소득이 이만오천달러씩 줄었다. 그렇다면 지금 저 행인의 연소득은 아마 이만오천달러가 아닐까?'


이것이 바로 지도학습입니다. 비슷한 자료가 여러개 주어졌을 때 그 자료의 연장선상에 놓인 예측을 내놓는 학습요. 방금 저 홈즈의 예에서 홈즈에게 주어진 자료는 부자동네와의 거리 그리고 그 거리에서 발견한 행인의 소득 두가지였습니다. 홈즈는 부자동네에서 일백미터 멀어질 때마다 행인의 소득이 이만오천달러씩 줄어든다는 패턴을 발견했습니다. 그렇다면 그 자료가 홈즈에게 주어진 유일한 자료라 가정할 때, 부자동네에서 삼백미터 떨어진 곳을 지나가던 행인의 연소득에 대해 홈즈가 내놓을 수 있는 가장 논리적인 예측은 이만오천달러입니다.


수학적으로 얘기하자면, 홈즈가 방금 한 행위는 주어진 자료로부터 하나의 패턴을 찾아내고 주어진 자료 말고 다른 것들에도 적용할 수 있는 하나의 가설을 유추해낸 것이였습니다. 부자동네로부터 일백미터 멀어질 때마다 행인의 연소득이 이만오천달러씩 줄어들은다는 가설요. 이 가설을 함수로 보자면 그 함수는 다음과 같습니다.


hΘ(x) = Θ0 + Θ1 * x


여기서 hΘ(x)는 Θ라는 변수를 가진 h라는 함수고, Θ0과 Θ1는 Θ안에 들어있는 두개의 원소이며, x는 그 함수 안에 들어가는 자료입니다. 여기서 Θ는 1x2 벡터인데, 벡터가 뭔지 모르셔도 무방합니다. 벡터를 아는 분이라면 왜 여기서 벡터가 나오나 싶으실 수도 있는데, 컴공에서는 원래 선형대수학을 좀 요상하게 써먹습니다. 그냥 자료를 저장하는데 써먹을 수 있는 유용한 데이터형식으로 여기니까요.


홈즈의 예로 돌아가봅시다.


Θ0 + Θ1 * 0 = 1억


저희는 아직 이 Θ라는 변수벡터가 무엇인지 모릅니다. 하지만 한가지 아는 것은 있는데, 그건 바로 자료입니다. 저희가 가진 자료에는 두가지 정보가 들어있습니다. 부자동네로부터의 거리, 그리고 행인의 연소득. 저희가 예측하려는건 행인의 연소득입니다. 그럼 부자동네로부터의 거리를 인풋 부분인 x에 집어넣고, 수식의 반대편에는 행인의 연소득을 집어넣어봅시다. Θ1 * 0 = 0이니 오른쪽의 Θ1는 빼봅시다. 


그럼 Θ0 = 1억이 나옵니다. 자료가 2개 더 있으니 비슷한 연산을 두번 더 해봅시다.


1억 + Θ1 * 100 = 7천5백만, Θ1 * 100 = -2천5백만

1억 + Θ1 * 200 = 5천만, Θ1 * 200 = -5천만

Θ1 = -25만

hΘ(x) = 1억 + (-25만 * x)


이렇게, 주어진 자료에 맞춰서 가설을 학습해내는 과정을 지도학습이라 부르고, 이런 식으로 선형적인 가설을 학습하는 지도학습 알고리즘들을 선형회귀(Linear Regression)이라 부릅니다. 간단하죠? 이 가설을 학습하는 과정은 그리 간단하지 않습니다. 실제 환경에서는 저희가 방금 한 것 처럼 직접적이고 원시적인 방법을 쓸 수 없기 때문입니다. 다른 방법을 써야합니다. 그러기 위해 일단 새로운 개념을 하나 정의해보겠습니다.


hΘ(x)는 이미 여러차례 말했다시피 변수벡터 Θ로 구축되어있습니다. 저희의 목적은 가설함수가 모든 자료와 가능한한 정확히 맞아떨어지게 하는 것입니다. 여기서 저희가 가지고 있는 자료는 두 부분으로 나뉘어질 수 있습니다. 저희가 예측하고자 하는 값, 그리고 그 값을 예측해내는데 사용할 수 있는 정보. 


위에 들었던 홈즈의 예시에서는, 행인의 연소득이 예측하고자하는 값이였고 부자동네로부터의 거리가 그 값을 예측해내는데 사용할 수 있는 정보였습니다. 이중 예측하는데 사용할 수 있는 정보를 보통 특징(feature)이라 부르고 예측하고자 하는 값은 라벨(label)이라 부릅니다, 자료가 m개 있다면 그 m개의 자료마다 각기 다른 특징값과 라벨값을 가지고 있습니다. 


홈즈의 예시에서는 자료가 3개 있었고, 특징값과 라벨값은 다음과 같았습니다.


특징(부자동네로부터의 거리) ㅣ 라벨(연소득)

0미터                              1억

100미터                           7천5백만

200미터                           5천만


저희의 진짜 목적은 각 자료의 특징값을 함수 hΘ(x)에 넣을 때마다 그 자료의 라벨값과 최대한 흡사한 결과를 내놓도록 변수벡터 Θ를 학습하는 것입니다. 즉, 


hΘ(0) = Θ0 + Θ1 * 0 = 1억

hΘ(100) = Θ0 + Θ1 * 100 = 7천5백만

hΘ(200) = Θ0 + Θ1 * 200 = 5천만


이 나오도록 변수벡터 Θ를 학습하는겁니다. 


그럼 이제 이렇게 가설함수 hΘ(x)를 더 엄밀하게 정의했으니, 이걸 가지고 아까 얘기했던 새로운 개념을 정의해봅시다. 무언가를 학습할 때 가장 중요한 것은 무엇일까요? 실수를 저질렀을 때 그 실수를 파악하는 능력입니다. 저희 역시 마찬가지로, 학습을 하기 위해서는 일단 실수를 파악할 수 있는 무언가를 정의해야합니다. 선형학습(그리고 일부 비지도학습)에서는 그것을 오차함수(Cost function)이라 부릅니다. m을 보유하고 있는 자료의 숫자라 하고 x^i를 i번째 특징값 그리고 y^i를 i번째 라벨이라 할 시, 오차함수는 다음과 같이 정의됩니다.

                      m

J(Θ) = (1/2) * ∑(hΘ(x^i) - y^i)^2

                      i=1


처음 보시는 분에게는 제법 복잡해 보일 수도 있지만, 전혀 복잡한 수식 아닙니다. 이 수식 안에는 매우 간단한 정보만 담겨 있습니다. 그걸 차근차근 풀이해드리겠습니다.


1. 오차함수는 Θ에 대한 함수이다. 즉 오차함수 J(Θ)는 변수벡터 Θ를 집어넣을시 그에 대응해 합당한 값을 내놓는 함수이다. 


2. hΘ(x^i)는 x^i, 즉 i번째 자료의 특징값에 대한 함수이다. 


3. y^i는 i번째 자료의 라벨값이다.


4. (hΘ(x^i) - y^i)는 i번째 자료를 인풋으로 집어넣은, 변수벡터 Θ로 구축 된 가설함수의 값으로부터 i번째 자료의 라벨값 y^i를 빼는 것이다.


5. (hΘ(x^i) - y^i)^2는 그걸 제곱한다. 제곱을 하는 것에는 여러가지 이점이 있는데, 우선 제곱을 하게 되면 무조건 양수가 나온다. 이것은 사실상 필수불가결한 특징인데, 생각해보면 아주 당연한 것이다. 표적을 향해 화살을 쏘는데 낮게 쏘던 높게 쏘던 결국 빗나간건 다 마찬가지 아닌가?  

좀 더 직접적으로 표현하자면, 홈즈의 예에서 가설함수 hΘ(x)가 첫번째 자료에 대해 7천5백만이란 값을 내놓을시 그건 라벨값 1억에서 2천5백만이나 빗나간 값을 내놓은 것이다. 제곱을 하지 않는다면 (hΘ(x^1) - y^1) = (7천5백만 - 1억) = -2천5백만이 된다. 2천5백만이나 빗나갔다고 말하는게 아니라 2천5백만이나 더 정확하게 예측했다고 말하는 꼴이 되버린다. 오차함수를 정의함에 있어, (7천5백만 - 1억) 와 (1억2천5백만 - 1억)는 동일해야만한다. 왜냐면 둘 모두 표적에서 정확히 2천5백만씩 틀린 것이기 때문이다.


   m

6. ∑(hΘ(x^i) - y^i)^2

   i=1


이 시그마는 사실 이 식에서 가장 간단한 부분이다. 왜냐면 이 시그마가 하는 일은 딱 하나이기 때문이다. 주어진 자료가 m개 있다고 할 시, 첫번째 자료부터 마지막 m번째 자료까지 i번째 특징값에 대한 가설함수의 예측값을 i번째 라벨과 비교한다음 모두 더하는 것이기 전부이다.


정리하자면, m개의 자료가 있을 시 각 자료들마다 한번씩 가설함수의 예측값과 자료의 실제 라벨을 비교해서 서로간의 차이를 구하고, 그걸 제곱해 모두 다 더하는 함수입니다. 이렇게하면 변수벡터 Θ에 대해 그 변수벡터를 이용해서 가설함수를 구축할 시 어느정도의 오차값이 나올지를 측정할 수 있습니다.


이렇게 오차값을 아주 엄밀하게 정의하고나면 제법 재밌는 일을 할 수 있게 됩니다. 일반적인 함수 최소화 기법을 이 오차함수에 그대로 적용해가지고 오차함수를 줄일 수 있게 되지요. 오차함수는 Θ에 대한 함수이니 오차함수를 줄인다는 것은 Θ를 수정한다는 말과 동일합니다. 그리고 오차함수가 줄어든다는 말은 저희의 가설함수가 점점 더 완벽하고 정확하게 바뀐다는 것이지요. 이것을 그래프로 보이자면,


cvx-fun.gif


이런게 됩니다. 학교시간에 이차함수를 배우신 분은 알겠지만 이차함수는 아주 보기 좋은 컵 모양 그래프를 그리는데, 이것 또한 제곱의 여러가지 이점들중 하나죠. 저 그래프에서 시각적으로 보이다시피 이제부터 저희가 할 일은 오차함수 그래프의 벽면을 따라 아래로 계속 내려가는 일입니다. 오차함수가 가장 낮은 부분에 도달하기 위해서요. 그걸 어떻게 할까요? 


미분으로 하지 그럼 뭘로 합니까. 각 지점에서 도함수를 구한 다음 그 도함수를 가지고 Θ값을 수정하면 미분의 마법이 아름답게 작용해서 오차값은 꾸준히 줄어들게 됩니다. 결국 도함수가 x축에 평행하는 직선이 되어서 가장 낮은 지점에 도달할 때 까지요. 이걸 기울기 하강(Gradient descent) 기법이라 부르고, 지도학습의 '학습' 부분은 모두 이 기울기 하강 기법 혹은 속도증강을 위한 변형버젼을 이용해 이루어집니다. x := x - y 를 x의 값을 x에서 y를 뺀 값으로 수정하는 것이라 정의한다면 이 기울기 하강은 다음과 같이 수학적으로 표현됩니다.


Θ := Θ - a * (d/dΘ)*J(Θ)


이것 역시 내용은 별 것 아닙니다. (d/dΘ)*J(Θ) 는 변수 Θ에 대한 J(Θ)의 도함수고, a는 학습의 속도를 결정해주는 학습도(Learning Rate)라는겁니다. 도함수는 간단하게 말하자면 이차함수 J(Θ)와 변수 Θ에서 접하는 직선의 경사도를 뜻하는데, 그 경사도를 Θ에서 빼면 자연스레 Θ는 경사도가 0인 위치로 서서히 흘러들어가게 됩니다. 학습도는 그냥 좀 기술적인 부분이기에 굳이 언급하지 않고 넘어가겠습니다. 그냥 학습속도를 결정해주는 자그마한 상수라 이해하시면 무방합니다.


변수 Θ가 2개보다 많은 경우, 고차가설함수, 균등화(Regularization) 이 3가지는 언급하지 않고 넘어가겠습니다. 지도학습이 어떤 식으로 돌아가는지를 간략하게 이해하고 넘어가는데는 이정도면 충분한 것 같아서요.


정리하자면, 지도학습은 다음과 같은 과정을 거쳐 이루어집니다.


1. 특징값과 라벨값을 담고 있는 자료 무더기를 획득.

2. 가설함수 hΘ(x)를 구축

3. 그 가설함수와 라벨값을 가지고 오차함수 J(Θ)를 구축.

4. 미분을 이용해 그 오차함수 J(Θ)를 최소화시키고, 그것을 통해 가장 적합한 가설함수 hΘ(x)를 구축.


이렇게 가장 적합한 가설함수 hΘ(x)를 구축하고나면 그 가설함수를 가지고 모든 인풋 x에 대해 적당한 예측값을 얻을 수 있게 됩니다. 홈즈의 예로 돌아가자면, 이제 저희는 부자동네에서 52미터 떨어졌을 때, 561미터 떨어졌을 때, 1123미터 떨어졌을 때 등 저희가 가진 자료에는 들어있지 않던 수많은 상황들에 대해 예측을 내놓을 수 있게 되는거죠.


그럼 부자동네에서 정확히 1킬로미터 떨어졌을 때 저희 가설함수는 어떤 예측을 내놓을까요? 홈즈의 사례에서 저희의 가설함수는 다음과 같았습니다.


 hΘ(x) = 1억 + (-25만 * x)


x에 1천을 집어넣어봅시다.


 hΘ(1천) = 1억 + (-25만 * 1천 = -1억 5천만.


네. 저희의 가설함수에 따르면, 부자동네에서 정확히 1킬로미터 떨어진 곳을 지나가던 행인은 연소득이 '마이너스' 1억 5천만원입니다. 그야말로 갓수 오브 갓수군요. 등골브레이커가 미쳐 날뛰고 있습니다 ㄷㄷ; 한번 다른 경우도 봐봅시다.


빌 게이츠의 연소득은 얼마나 될까요? 한번 이 부자동네를 베벌리 힐즈라 가정한 다음 저희의 가설함수를 가지고 빌게이츠의 연소득을 예측해봅시다. 워싱턴 주에 있는 빌게이츠 저택과 베빌리 힐즈는 총 1837.13 킬로미터 떨어져 있습니다. 그럼,


hΘ(1837130) = 1억 + (-25만 * 1837130) = -459,182,500,000


이 됩니다. 빌게이츠의 연소득은 -4591억원이군요 ㅋ. 빌게이츠 거지네 ㅋ.


이게 바로 지도학습을 사용할 때 가장 조심해야하는 부분입니다. 지도학습은 '현재 주어진 자료'로부터 가장 합당한 가설을 유추해내는 기법입니다. 여기서 핵심은 '현재 주어진 자료' 부분입니다. 현재 주어진 자료로부터 가장 합당한 가설을 유추해낸다해서, 그 가설이 옳은 가설인건 아닙니다. 현재 주어진 자료가 쓰레기라면 아무리 애를 쓴다 한들 쓰레기 가설 말고는 나올 수 있는게 없으니까요. 그래서 기계학습 커뮤니티에는 옛날부터 '가장 좋은 알고리즘이 아니라 가장 좋은 자료가 이긴다'라는 말이 격언처럼 돌아다니고 있습니다. 결국 지도학습의 수많은 알고리즘들은 자료로부터 하나의 거대한 패턴을 추출해내는 것이니까요. 금덩이가 큼지막하게 박혀 있는 광석을 중세장인이 제련하는 경우, 그리고 금이 눈꼽만큼만 함유되어 있는 광석을 현대 전문가가 제련하는 경우. 두 경우중 누가 더 큰 금괴를 얻게 될까요? 대답은 뻔할겁니다. 물론 그렇다해서 알고리즘이 중요하지 않은건 아닙니다. 포항제철이 중세 대장간 식으로 돌아가지는 않는 것 처럼요. 단지 데이터가 있고나서 알고리즘이 있는거라는 당연한 말을 하는 것일 뿐입니다.


오늘은 지도학습에서 선형회귀가 무엇인지를 얘기했고 다음엔 이걸 가지고 로지스틱회귀(Logistic Regression)이란 것에 대해 얘기해보겠습니다. 로지스틱회귀까지 얘기하고 나면 마침내 뉴런연결망을 건드려 볼 예정이고요. 감사합니다.


Comment ' 5


댓글쓰기
0 / 3000
회원가입

강호정담 게시판
번호 제목 글쓴이 날짜 조회
229128 알파고에 대한 부질없는 궁금증 +6 Lv.99 이통천 16.03.15 661
229127 소위 레이드물이라고 불리는 장르 잘 아시는분? +9 Lv.39 맥시마 16.03.15 821
229126 마산 할매집에 놀러왔습니다. +2 Lv.55 짱구반바지 16.03.15 657
229125 선작 중이신갸 다들 조용하네요 +4 Lv.20 스타체이서 16.03.15 695
229124 공모전 하는 줄 몰랐었네요 +4 Lv.8 이재야 16.03.15 919
229123 유료 예정작 +3 Lv.36 옥탈플로 16.03.15 1,255
229122 공모전 베스트 클릭하면 바로 작품읽기로 들어가짐 +7 Lv.9 竹槍 16.03.15 901
229121 이세돌 9단, 수고하셨습니다. +8 Personacon 가디록™ 16.03.15 946
229120 이벤트 스케일 참 쪼잔하네 +3 Lv.88 JuMe 16.03.15 1,079
229119 올리자마자 순식간에 제글이 사라졌습니디ㅡ. +2 Lv.66 장진백 16.03.15 909
229118 웃긴 소설 추천해주세요ㅋㅋ +6 Lv.15 고장났어요 16.03.15 1,273
229117 페이지 상단 광고.... +2 Lv.67 신기淚 16.03.15 969
229116 훈민정음 무서운 게임. +5 Personacon 한자락 16.03.15 1,082
229115 포켓몬 스티커 +2 Personacon 한자락 16.03.15 1,037
229114 이세돌 분위기 좋네요 +3 Lv.89 뽕밭나그네 16.03.15 852
229113 투견 +7 Personacon 한자락 16.03.15 1,148
» 알파고의 일부 원리 - 2 +5 Lv.96 강림주의 16.03.15 914
229111 연예인 웃긴 그림 +2 Personacon 한자락 16.03.15 1,278
229110 상상력을 자극시키는 판타지 바탕화면01 Personacon 한자락 16.03.15 1,033
229109 기원과 종천지애 +2 Lv.88 홀어스로스 16.03.15 858
229108 대전하는거 몇개보고옴 +3 Lv.98 kkeithmo.. 16.03.15 707
229107 공모전이 시작되니 분위기가 좋네요 ^^ Lv.75 아르케 16.03.15 875
229106 12시간 지난 시점의 공모전...순수판타지 초강세. +3 Lv.20 스타체이서 16.03.15 871
229105 문피아 공모전 베스트 집계 +5 Lv.46 레팡 16.03.15 897
229104 음..무섭디;; 공모전;; +4 Lv.66 장진백 16.03.15 933
229103 문피아 앱개발하는분들 최소한.. +1 Lv.90 썬오브비치 16.03.15 746
229102 30대 군인 예비군 실종하니까 +2 Lv.62 사자좌 16.03.15 1,070
229101 다들 공모전 기다리고 있었나보네요 +2 Lv.61 필락 16.03.15 825
229100 출첵이벤트 참여가 안되요 +5 Lv.92 아이스B 16.03.15 865
229099 탑 매니지먼트는 앞으로도 걱정입니다. +13 Lv.38 애랑 16.03.15 1,324

신고 사유를 선택하세요.
장난 또는 허위 신고시 불이익을 받을 수 있으며,
작품 신고의 경우 저작권자에게 익명으로 신고 내용이
전달될 수 있습니다.

신고
@genre @title
> @subject @time