[황승진의 AI칼럼] 힌튼 개발 '테스니' 분석서 맹활약
만능선수인 AI는 분석 도구로도 활약이 크다. AI를 어떻게 분석에 사용할까? '차원 축소'와 '랜덤 포레스트' 두 측면에서 살펴보자. ◆차원 축소...여러 알고리즘 있지만 힌튼 개발한 t-SNE(테스니)가 널리 쓰여 AI의 세계에는 임베딩을 비롯해 많은 벡터가 등장한다. 4차원 이상 고차원의 경우, 우리는 시각적 상식을 사용할 수 없다. 따라서 다소 부정확하더라도 고차원 데이터를 2차원이나 3차원으로 줄여 투사할 필요가 있다. 이를 '차원축소'라 부른다. 예로, 50개의 100차원 벡터를 가지고 2차원의 근사치 50개로 바꿔, X-Y 평면에 50개의 점으로 표현한다. 마치 마술사가 날아가는 비둘기를 종이 한 장으로 변형하는 듯하다. 차원 축소 알고리즘으로는 UMAP, PCA, Biplot 등 여럿이 있지만 힌튼(Hinton)이 개발해 AI 사회에서 널리 쓰이는 t-SNE(발음은 '테스니')가 있다. t-SNE 핵심은 고차원의 임의 두 점 '거리'를 2차원에서 그 둘의 '거리'가 가능한 비슷하게 만드는 것이다. 차원 축소로 인해, 많은 다른 디테일은 희생하더라도 '각 쌍의 거리 관계'만은 가능한 살리려고 노력한 것이다. 예로, 유럽의 50개국 각자마다 20개 식품의 일인당 소비량을 벡터로 표시하자. 식품 벡터는(쇠고기, 와인, 맥주, 올리브 오일, …)이고, 국가 마다 (130, 34, 23, 17, …)처럼 표현된다. 잠시 국가 이름을 가리고 이 벡터를 보면 이것이 어느 나라의 것인 지 알 수 없다. 다음, t-SNE를 적용한 후, 50개국을 50개 점으로 X-Y 평면에 표시한다. 이제 국명을 밝힌다. 그러면, 지중해에 위치한 이태리와 그리스는 X-Y 평면에서 서로 가까이 있다. 이웃나라 스페인과 포르투갈도 서로 가까이 있어, 마치 지도를 재생한 듯하다. 다 그런 것은 아니다. 지리적으로 가까운 독일과 불란서는 이 X-Y 평면에서는 꽤 떨어져 있다. 결국, t-SNE 덕택에 이 50개국의 지리적, 문화적, 유전적 특성을 한 평면에서 비교해 볼 수 있다. 모종의 '의미적 패턴'을 볼 수 있다. '차원 축소'의 다른 사용예를 보자. 미중 공동연구팀은 게놈 데이터에 포함된 여러 나라 국민 2054명의 유전자 데이터를 분석했다. SNP어레이라는 DNA 분석 기술의 벡터 결과물에 t-SNE를 적용했더니 유럽인, 미국인, 북아시아인, 남아시아인, 아프리카인이 끼리끼리 몰려 있었다. 다만 미국인과 유럽인 사이에는 일부 중복이 있었다. 이렇게 다른 인종끼리 DNA가 다르다는 것은 잘 알려진 사실이지만, t-SNE가 이를 2차원으로 축소해 구분한다는 사실은 놀랍다. t-SNE는 한 발작 더 나아가 제 1 염색체를 분석해 유럽이나 아시아의 인종 차이도 보여줄 수 있다. 증권가 분석팀들도 t-SNE를 널리 쓴다고 한다. 만약 수 백 개 주가의 움직임을 각자 벡터에 담고 이를 t-SNE로 X-Y 평면에 플롯하면 어느 주식들이 서로 비슷한 지를 알 수 있다. 또 어떤 주식들은 멀리 떨어져 있다면, 이들을 조사해 지금까지 이해하지 못했던 차별 요인을 찾든지, 차익거래(arbitrage) 기회로 이용할 수 있다. ◆ 랜덤 포레스트...한 그루 트리가 아니라 100 그루 숲을 만들어 결정 트리(Decision Tree)란 분석법이 있다. 예로 어느 의류 회사가 여러 종류 셔츠 1000벌을 팔았다. 어떤 제품은 많이, 다른 제품은 덜 팔렸다. 분석이 필요하다. 분석의 요점은 어떤 '속성'의 조합이 판매를 촉진했는가다. 제품들은 성별, 색상, 목 칼라, 소매, 재료 등 다양한 속성을 지니고 있다. 다음과 같이 트리를 그린다. 트리의 꼭대기 노드에 총판매량 1000을 쓴다. 거기에서 목 칼라에 따라 아래로 세 가지로 갈라져 3 노드를 만든다. 세 노드에다가 각각 “칼라 (판매량 600)”, “노칼라 (판매량 250)”, “v넥 (판매량 150)” 이라 쓴다. 다음 층은 각 노드마다 색깔에 따라 가지를 치며 새로 생긴 노드마다 판매량을 적는다. “노칼라-파랑 (200)” 같은 식이다. 이런 분석을 통해 어느 속성의 조합이 시장에서 좋은 반응을 받았는 지 볼 수 있다. 그럼 수많은 속성 중 어느 것으로 가지를 칠까? 차별력을 극대화하는 방향으로 결정한다. 남녀의 구매량이 서로 비슷하다면 성별은 선택하지 않는다. 성별의 차별력이 낮기 때문이다. 기계는 이를 엔트로피라는 수학 공식으로 정한다. 하지만 이 방법은 한 단계 아래만 보는 근시성(myopic)때문에 최상의 결과를 낸다는 보장이 없다. 그래서 데이터 일부를 무작위 축출하고 또 속성 일부를 무작위로 선택한다. 이를 가지고 '트리분석'을 하고, 다음 다른 데이터와 다른 속성으로 트리분석을 한다. 이를 여러 번 되풀이해 나중에 평균을 낸다. 즉 한 그루의 트리가 아니라, 100 그루의 숲을 만든다. 이를 랜덤 포레스트(Random forest)라 한다. 또 트리에서 모든 속성이 동나도록 내려가면 안 된다. 마지막 노드(잎사귀 노드)가 몇 개 안 남을 경우, 오버피팅(overfitting)이 생긴다. 기존 데이터 세트를 너무 우려먹어서 자신 데이터는 설명을 잘 해도, 새로운 데이터를 설명할 능력은 떨어진다. 그래서 언젠가 중간에 멈춰야 한다. 예를 들어, 5층까지 내려가서 멈춰야 한다. 이와 같이 '랜덤 포레스트'는 어떤 조합의 속성이 가장 바람직한가를 알 수 있다. 상업용 패키지가 많이 있고 개념이 간단해 기업에서 제품 개발용으로 매우 자주 쓰인다. 만약 어느 약이 한 그룹의 환자에게는 효과가 있으나 다른 환자 그룹에게는 효과가 없다면, 환자의 어떠한 속성이 이 결과를 결정짓는 지 분석할 수 있다. 성별, 나이, 혈액형, 몸무게, 혹은 제 1 염색체? 만약 85% 성공률의 훌륭한 신약이 어떤 85%에게 약발이 먹히는가를 알면 이는 참 유익한 정보일 것이다. 그러나 같은 기법을 5% 성공률의 실패작 약에게도 적용한다면 이는 더욱 유익할 것이다. 왜냐면 이런 실패작이 수없이 많기 때문이다.