brunch

You can make anything
by writing

C.S.Lewis

by 코싸인 Aug 02. 2017

[코싸인의 인지과학 이야기] 인공지능(13)

[인공지능 4주차 - 응용과학] 3. 머신러닝을 구현하는 관점(2)

C. 진화주의


자연선택설: 여러 개체 중 생존에 유리한 개체가 불리한 개체보다 살아남을 확률이 높기 때문에 여러 세대를 거치게 되면 결국 생존에 유리한 개체가 남게(자연선택되게) 된다.                                                                                                  

[1] 자연선택설


 한편, 생물의 진화과정을 머신러닝에 접목시킨 사람들도 있습니다. 바로 다윈의 진화이론을 모방하여 컴퓨터를 진화시키는 알고리즘을 만든 진화주의자들입니다. 다윈의 진화이론에서는 생물이 긴 시간 수많은 세대교체를 통해 생존에 더 우수한 형태로 진화하는 과정을 자연선택설을 이용해 풀어냅니다. 진화주의는 이런 자연선택설을 컴퓨터 알고리즘으로 구현하여 컴퓨터가 여러 세대의 진화를 통해 스스로 똑똑해지도록 구현하였습니다. 진화를 모방하여 머신러닝을 구현한 알고리즘을 유전 알고리즘이라고 부릅니다.

 유전 알고리즘의 시작은 개체의 여러 특징을 정하는 것입니다. 예를 들어, 물과 조명을 비춰 식물을 키우는 프로그램을 만든다고 생각해봅시다. 이 프로그램에서는 물을 주는 주기, 조명을 비추는 시간 등을 특징으로 정할 수 있겠죠. 특징을 정하고 나면 다음으로 이 특징들을 무작위로 섞어 만든 수많은 개체를 만들어냅니다. 그리고 이 개체들을 이용해 식물을 키우는 테스트를 진행합니다. 어떤 개체는 물을 많이 주는 반면에 조명을 거의 비추지 않을 것이고, 또 어떤 개체는 물을 적당히 주고 조명을 최대한으로 비출 것입니다. 이제 다양한 개체들 사이에서 식물을 잘 키운(우수한) 개체만 남기고 그 개체들을 교배하여 다음 세대를 만들어냅니다. 물과 조명을 식물에 맞게 적당히 제공한 개체가 이 과정에서 살아남을 것이고, 세대가 수백, 수천,  수만 번 반복되면 물과 조명을 가장 알맞게 제공하는 식물 키우기 프로그램이 등장하게 될 것입니다.  

     

교배: 두 개체의 특질의 일부를 가져와 다음 세대의 개체를 만든다.


[2] 교배


 하지만 이 방법으로는 인공신경망과 마찬가지로 local maximum에 도달했을 때 더 개선되지 못한다는 문제가 있습니다. 우연히 물을 많이 주고 조명을 적게 비추는 개체가 많이 살아남아 다음 세대를 장악한다면 앞으로는 물을 많이 주는 개체들만 많이 살아남을 것입니다. 하지만 사실은 조명을 많이 비추고 물을 적게 주었을 때 더 잘 자라는 식물일 수도 있습니다. 그렇지만 조명을 많이 비추는 개체는 거의 없거나 이미 다 죽었을 수 있으므로 다음 세대에 나타나기 어렵겠죠. 그래서 유전 알고리즘에서는 교배뿐만 아니라 돌연변이라는 전략을 같이 사용합니다.        


돌연변이: 한 개체를 임의로 변형시켜 새로운 개체를 만든다.


[3] 돌연변이

 

 이제 물만 많이 주는 개체 사이에서도 간혹 조명을 많이 비추는 개체가 등장할 수 있을 것입니다. 만약 그 개체가 우수한 개체라면 다음 세대에 유전될 수 있겠죠.

 유전 알고리즘은 별다른 학습 데이터 없이도 스스로를 변형시키며 학습할 수 있다는 장점이 있지만 그 학습 시간이 너무 오래 걸린다는 단점이 있습니다. 오로지 운에 의존하여 다음 세대에 우수한 개체가 등장하기만을 기다려야 하기 때문이죠. 또 문제를 어느 정도 정의를 할 수 있어야 하기도 합니다. 식물을 더 잘 키우기 위해서는 물과 조명뿐만 아니라 온도, 바람, 토질 등 더 많은 특징들을 정의해야겠죠.


D. 베이즈 주의        


[4] 베이즈 정리

 

 이 식은 베이즈 정리라고 부르는 식입니다. P(X)는 X라는 사건이 일어날 확률을 말합니다. P(A|B)는 B라는 사건이 일어났을 때 A라는 사건이 일어날 확률을 말합니다. 예를 들어, P(독감|발열)이라고 한다면 발열이 있을 때 독감을 가지고 있을 확률이라는 뜻이 되죠. 위의 식을 독감과 발열의 관계로 풀어쓰면, P(독감|발열)= P(독감) P(발열|독감)/ P(발열)입니다. 이제 베이즈 정리에서 이 관계를 정리해봅시다. 먼저 발열이 있을 때 독감이 일어날 확률 [P(A독감|B발열)]은 그 반대인 독감이 있을 때 발열이 있을 확률[P(B발열|A독감)]과 비례합니다. 그렇지만 만약 발열 [P(B발열)]이 독감과 관계없이 일반적인 상황에서도 나타날 가능성이 높은 사건이라면 P(A독감|B발열)은 작아지게 됩니다. 반대로 독감[P(A독감)]이 발열과 상관없이 나타날 확률이 높다면 발열이 나타났을 때 독감이 나타날 확률 [P(A독감|B발열)] 또한 높아지겠죠. 베이즈 정리는 짧은 식으로 이 모든 관계를 나타내고 있습니다.

 그럼 이 정리를 가지고 베이즈 주의자들은 어떻게 머신러닝을 구현할까요? 우리가 병원에서 환자의 독감 여부를 판단하는 프로그램을 작성해야 한다고 생각해봅시다. 우리는 과거에 병원을 다녀간 환자들의 모든 증상과 질병 여부에 대한 많은 데이터를 가지고 있습니다. 이제 우리는 이 데이터와 베이즈 정리를 사용해서 새로 방문한 환자의 독감 여부를 판단하는 프로그램을 작성할 수 있습니다. 편의상 데이터에 정리된 발열, 구토, 두통 등 여러 증상들을 증상 1, 증상 2, 증상 3…으로 부릅시다. 새로 방문한 환자가 증상 1, 증상 2, 증상 4를 가지고 있다면 이 환자가 독감을 가지고 있을 확률은 P(독감|증상 1, 증상 2, 증상 4)입니다. 그러면 우리는 과거에 증상 1, 증상 2, 증상 4를 가졌던 환자들의 독감 여부를 조사해 이 확률을 구할 수 있습니다. 만약 이 증상을 가진 환자 중 85명이 독감이었고 15명이 아니었다면 새로 방문한 환자가 독감일 확률은 85%겠죠. 하지만 만약 과거에 증상 1, 증상 2, 증상 4를 동시에 가졌던 환자가 없었거나 아니면 한 두명만 있었다면 어떻게 될까요? 확률을 바로 계산하지 못하거나 아니면 확률의 신뢰도가 굉장히 떨어지겠죠. 이런 경우에는 베이즈 정리에서 P(A|B)가 P(B|A)에 비례한다는 점을 이용할 수 있습니다. P(독감|증상 1, 증상 2, 증상 4) 대신 P(증상 1, 증상 2, 증상 4|독감)를 조사해보는 것이죠. 이 확률을 수학적으로 동등하게 이렇게 다시 쓸 수 있습니다.


                  P(증상 1, 증상 2, 증상 4|독감) = P(증상 1|독감) * P(증상 2|독감) * P(증상 4|독감)


 이제 우리는 독감에 걸린 환자들의 증상을 조사하는 것으로 여러 특정 증상의 조합을 가진 환자의 독감 발병 확률을 알 수 있게 되었습니다.

 베이즈 주의는 이처럼 데이터에 기반하여 확률을 조사합니다. 데이터가 많을수록 더 다양한 케이스를 더 정확하게 예측할 수 있게 되죠. 또한 수학적인 식에 근거하여 확률을 추정하기 때문에 알고리즘으로 계산된 확률에 대한 신뢰도도 가질 수 있습니다. 이 알고리즘은 명확한 동작원리를 가지고 있고, 데이터만 많이 넣어주면 좋은 성능을 보여준다는 장점으로 스팸 메일 분류나 검색엔진과 같은 분야에서 주로 사용되어 왔습니다. 하지만 데이터에 의존적이기 때문에 데이터가 충분하지 않은 분야에서는 적용하기 어렵다는 단점이 있습니다. [코싸인 응용과학팀]


참고문헌

[1] dic.kumsung.co.kr

[2] doc.ic.ac.uk

[3] doc.ic.ac.uk

[4] posterior.egloos.com

[5] 마스터 알고리즘, 페드로 도밍고스, 2016, 비즈니스북스

매거진의 이전글 [코싸인의 인지과학 이야기] 인공지능(12)
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari