의사결정나무

이해할 수 있는 AI

by 이연곤

AI가 뭔가 결정을 내렸는데 왜 그런 결정을 내렸는지 도무지 알 수가 없다면 좀 답답하겠죠.

대부분의 AI가 바로 이런 블랙박스 같거든요. 속을 들여다볼 수가 없어요.

AI가 "정답은 이거야" 하고 알려는 주는데, 어떻게 그 답을 찾았는지는 마치 짙은 안개속처럼 전혀 보여주지 않는 거죠. 그러니까 우린 결과만 받아들고 그 이유는 전혀 알 수가 없는 상황인 겁니다.


그런데 그 상자를 활짝 열어 볼 수 있는 아주 투명하고 이해하기 쉬운 AI가 있습니다.


복잡하고 뭐가 뭔지 모를 블랙박스 말고, 결정 과정을 처음부터 끝까지 마치 순서도처럼 아주 명확하게 보여 주는 그런 투명한 AI, 정말 좋지 않을까요?


그 투명한 AI가 실제로 어떻게 작동하는지 한번 들여다 보겠습니다.






의사결정나무

첫 질문은 뿌리에서부터 시작됩니다.

그리고 그 질문에 "예" 혹은 "아니요"로 답을 하다보면,


나무가 가지를 뻗어나가듯이 다음 단계로 넘어가게 되죠.


이 과정을 몇 번 반복하면, 마침내 최종 결론이 있는 잎에 도달하게 되는 겁니다. 간단하죠?




이것은 마치 어릴 때 하던 스무고개 놀이를 생각해 보시면 됩니다.

"이거 동물이야?", "그럼 날개가 있어?", ... 이런 식으로 질문을 하나씩 던지면서 정답의 범위를 점점 좁혀 나가잖아요.

'의사결정나무'가 작동하는 방식도 바로 이겁니다. 정말 똑같아요.




작동 방식


다음은 축구 예시 입니다.

오늘 날씨가 어때?

첫 번째 질문, 뿌리 질문이죠.

만약 "흐림"이라고 답하면 끝. 바로 "축구하러 가자" 라는 결론이 나옵니다. 간단하죠?


근데 만약 "맑음"이라면 그럼 다음 질문으로 넘어가요.

습도는 높아?

이 질문에 만약 "비"가 온다고 답한다면, 다음 질문으로 넘어가죠.

바람은 불어?


자, 이렇게 간단한 질문 몇 개가 모여서 하나의 최종 결정을 만들어내는 겁니다.



여기서 진짜 중요한 포인트가 있습니다. 이 질문 순서, "날씨 먼저 물어보고 그다음에 습도를 물어보자", 이런 것을 사람이 정해 주는 게 아니라는 거예요.

알고리즘이 데이터를 쫙 훑어 보더니 "아, 이 시점에서 가장 중요한 질문은 바로 이거구나" 하고

스스로 찾아내는 겁니다. 이게 바로 의사결정나무가 학습하는 방식이에요. 정말 똑똑하죠.




강점


이렇게 직관적이고 똑똑한 의사결정나무, 정말 좋아 보이죠? 네. 물론 엄청난 강점이 있습니다.

하지만 그 이면에는 생각지도 못한 약점도 숨어 있거든요.

지금부터 그 강점과 약점을 하나씩 파헤쳐 보겠습니다.



가장 큰 강점은 "투명성"입니다.

[일일AI][10] image _도표.png

보시는 것처럼 구조가 너무나 직관적이라서 "왜 그런 결론이 나왔는지" 그 경로를 하나하나 다 따라가 볼 수 있어요. 블랙박스가 전혀 아니죠.


이게 왜 중요하냐면, 예를 들어

금융 분야에서 "고객님, 이러이러해서 대출이 거절됐습니다" 라고 설명해 줘야 할 때 혹은

의료 분야에서 "이런 근거로 이렇게 진단했습니다" 라고 말해야 할 때

이런 투명성은 정말 어마어마한 강점이 되는 겁니다.




약점


그런데 말이죠. 이렇게 모든 걸 설명할 수 있다는 게 가끔은 문제가 될 수도 있어요.

만약에 이 나무가 너무 많은 걸 배워서 너무 똑똑해지면 어떻게 될까요? 어떤 문제가 생길 것 같으세요?


바로 '과적합(Overfitting 오버피팅)'이라는 문제가 생깁니다.


이게 뭐냐면 모델이 공부할 때 썼던 그 학습 데이터에만 너무 완벽하게 적응해 버리는 거예요.

심지어 데이터에 섞여있던 아주 사소한 잡음이나 오류까지 싹 다 외워 버리는 거죠.


이걸 아주 쉽게 설명하는 비유가 있어요. 시험 전에 족보만 달달 외운 학생은 족보에 나온 문제는 토시 하나 안 틀리고 완벽하게 풀어요. 그런데 실제 시험에서 문제가 살짝만 바뀌어 나오면 아예 손도 못 되죠.


과적합된 모델이 바로 이 족집게 과외만 받은 학생이랑 똑같은 상태인 겁니다.




우리가 원하는 것은

"너무 복잡하고 지저분하게 얽혀 있어서 자기가 아는 것 외에는 아무것도 못 할 것 같은 나무"가 아니라,

"단순하고 견고해서 어떤 상황에도 잘 적응할 것 같은 나무" 입니다.




가지치기


과적합된 나무는 그냥 포기해야 할까요? 아니요. 방법이 있습니다. 정원사들이 그 해답을 알고 있거든요.


해결책은 바로 '가지치기(Pruning)'입니다.


정말 말 그대로예요. 정원사가 나무를 더 건강하게 만들려고 불필요한 가지들을 쳐내는 것처럼

우리도 모델의 예측 성능에 별 도움이 안 되는 자잘한 가지들을 쳐내는 겁니다.

그럼 나무가 훨씬 단순하고 튼튼해지겠죠.


가지치기에도 방법이 크게 두 가지가 있어요.

하나는 '사전 가지치기'.

이건 나무가 너무 커지기 전에 "이 정도면 됐어" 하고 미리 성장을 멈추게 하는 거고요.


다른 하나는 '사후 가지치기'인데 이건 일단 나무를 최대한 크게 키운 다음에 별로 중요하지 않은 가지들을 나중에 보고 쳐내는 방식입니다.


각자 장단점이 있겠죠. 결국 가지치기의 목표는 딱 하나입니다.

너무 복잡하지도, 너무 단순하지도 않게 이 단순성과 예측력 사이에서 완벽한 균형을 찾는 거죠.


그냥 시험 문제만 외운 학생이 아니라 어떤 새로운 문제가 나와도 잘 풀어내는 그런 일반화를 잘하는 튼튼한 나무를 만드는 게 최종 목표인 겁니다.





지금까지는 나무 한 그루에 대해서만 얘기를 했어요. 근데, 나무 한 그루보다는 숲 전체가 훨씬 더 강력하죠.


이제부터는 한 그루 나무의 약점을 극복하기 위해 아예 숲을 만들어 버리는 '앙상블 기법'에 대해 알아볼게요.



의사결정나무 한 그루가 있습니다. 물론 이것만으로도 훌륭하지만

가끔은 엉뚱한 판단을 하거나 실수를 할 수도 있겠죠. 그래서 사람들이 생각한 거예요.

나무 한 그루만 믿지 말고 아예 수백 그루의 나무를 만들어서 물어보면 어떨까?


이를 '랜덤 포레스트' 라고 부릅니다. 마치 한 명의 전문가 의견만 듣는 게 아니라 수백 명의 전문가 집단에게 자문을 구해서 최종 결정을 내리는 것과 똑같은 원리죠.



랜덤 포레스트의 핵심 원리는 아주 간단해요. 바로 "다수결"입니다.


숲을 이루는 나무들은 각각 조금씩 다른 데이터로 조금씩 다른 관점에서 학습을 하거든요.

그래서 어떤 나무는 틀린 답을 낼 수도 있어요. 하지만 수백 개의 나무가 다 같이 투표를 하면 어떻게 될까요?

개별적인 실수들은 서로 상쇄되고, 전체적으로는 훨씬 더 정확하고 안정적인 예측이 가능해지는 겁니다.


이게 바로 우리가 말하는 "집단 지성"의 힘이죠.






지금까지 '의사결정나무'를 살펴보았는데, 이를 '설명 가능한 AI' 라는 더 큰 그림 안에서 어떤 의미를 갖는지 한 번 생각해 보면서 마무리해 볼까 합니다.


결국 우리는 처음의 질문으로 다시 돌아오게 됩니다. 의사결정나무는 우리에게 AI의 속을 들여다볼 수 있다는 투명성의 가능성을 보여줬어요.




그렇다면 앞으로 우리 삶에 더 깊숙이 들어올 자율주행차나 나를 평가할 AI 면접관 같은 훨씬 복잡한 시스템에 대해서는 어떨까요?


우리의 삶에 직접적인 영향을 미치는 AI의 결정 과정을 이해하는 것.


이건 우리가 요구할 수 있는 당연한 권리가 아닐까요?




이전 07화강화학습