본문 바로가기
AI 학교, AI 환경

타이타닉 문제를 LLM으로 풀기

by 격암(강국진) 2024. 11. 25.

오늘은 타이타닉 문제라는 것을 앤스로픽의 LLM 클로드로 푸는 것에 대해서 이야기해 보겠습니다. 이것은 형식상 AI를 만드는 것에 대한 것이지만 이 이야기의 핵심은 AI의 기초에 대해서 이야기하는 동시에 AI를 AI로 만드는 것에 대한 이야기입니다. 그래서 AI를 만들지만 코딩 실력은 필요없습니다.

 

먼저 타이타닉 문제라는 것이 무엇인가? 타이타닉 사건은 영화로도 만들어진 유명한 배사고지요. 1912년에 일어난 이 사건에서 승선자 1316명 중 706명만 생존했다고 합니다. 타이타닉 문제라는 것은 이렇게 승선한 사람들의 정보중 일부를 보고 나머지 사람들의 경우에서 이 사람이 생존했을까 하지 않았을까를 맞추는 문제입니다.

 

이 문제는 kaggle 이라는 사이트에서 인공지능 개발 초보자를 위한 경쟁 문제로 쓰이고 있기도 합니다. 그래서 거기서 훈련 데이터와 테스트 데이터를 다운 받을 수 있지요. 이 데이터는 아래 처럼 생겼습니다.

 




타이타닉 문제는 이 사람에 대한 정보를 기반으로 우리가 이 사람이 생존했을까 사망했을까를 예측할 수 있는가 하는 것입니다. 문제를 간단하게 하기 위해 이 사람의 이름이나 승선한 부모의 숫자 그리고 방의 위치와 승선한 항구는 생존에 영향을 미치지 않거나 다른 정보에 이미 반영되어져 있다고 해 봅시다. 그러면 위의 표는 더 간단히 써지게 됩니다. 예를 들어 첫번째 사람은 이런 숫자로 나타내어 집니다.



[0, 3, 1, 22, 1, 7.25]



여기서 0은 사망을 뜻하고 (1은 생존), 3은 3등칸을 의미하며, 1은 남성 (-1은 여성), 22는 나이미고, 1은 같이 승선한 자녀와 배우자의 수 그리고 7.25는 티켓의 가격입니다. kaggle에서 제공하는 데이터를 보면 훈련 데이터에 대해서는 891명에 대해서 이런 데이터가 주어져 있습니다. 그리고 나중에 테스트를 위한 데이터를 위해서는 418명에 대해서는 같은 데이터가 주어져 있지만 생존여부는 알려져 있지 않습니다. 타이타닉 문제란 이런 418명에 대해서 데이터만 보고 이 사람이 생존했을까 사망했을까를 추정하고 그걸 실제 결과와 비교하는 문제입니다.



앞에서 준 숫자를 보면 한명의 사람을 나타내는 하나의 정보는 다차원 공간위의 한 점 내지 하나의 다차원 벡터로 표시됩니다. 예를 들어 아래의 2차원 그래프의 점들처럼 나타나 지는 것이죠.

 




위의 그림을 보면 파란 점들과 빨간 점들을 보라색 선이 잘 구분하는 것을 볼 수 있습니다. 이렇게 다차원 공간의 점으로 표시된 사람 하나 하나는 생존과 사망의 두 부류로 나눠지게 되는 것이며 AI 학습의 목표는 두 그룹을 잘 나누는 경계를 찾는 거라고 할 수 있습니다.



그러면 어떻게 하면 될까요? 여기서 우리는 llm인 클로드를 쓸 수 있습니다. 물론 챗GPT를 서도 마찬가지입니다. 먼저 kaggle에서 다운받은 훈련 데이터와 실험 데이터를 위에서말한 형식으로 바꿔야 합니다. 그걸 파이선 프로그램으로 하려고 합니다. 그래서 클로드에게 나는 이러저러한 형식으로 데이터를 쓰려고 하니 그렇게 변환해 주는 프로그램을 짜달라고 합니다.



이런 식이 되는 겁니다. 공간상 다 올려드리지는 않지만 파이선 프로그램을 짜달라고 해서 그걸 그냥 실행만 시키면 됩니다. 그러면 처음에 말한 데이터 형식대로 데이터가 변환됩니다.



그 다음에는 AI를 만들어야죠. 그런데 어떤 학습 모델을 써야 할까요? 이 말은 어떤 데이터 분류 방법을 써야 할까라는 말과 같습니다. 이것도 클로드에게 물어볼 수 있습니다. 그러자 클로드는 여러개의 학습 모델을 제안해 주었습니다. 예를 들어 로지스틱 회귀 모델, 결정 트리 모델, 랜덤 포레스트 모델같은 것들이 있다고 말해주고 각각의 모델의 장단점을 말해 주며 이 문제의 경우 어떤 모델을 쓰는 것이 좋겠다고 제안도 해줍니다. 이런 학습모델들이 무엇인가를 설명하는 것은 이 글의 목적이 아닙니다. 우리는 그냥 클로드의 제안을 듣고 다음과 같이 명령해 볼 수 있습니다.





그러면 클로드가 AI 학습을 하는 프로그램을 만들어 줍니다. 이것도 프로그램을 PC에 복사해서 실행만 시키면 결과가 나옵니다. 이제 우리가 학습시킨 AI가 테스트 데이터에 있는 418명에 대해서 생존했을 것인지, 사망했을 것인지를 예측하게 됩니다. 그리고 우리는 그 예측치를 kaggle에 업로드 할 수 있도록 csv 파일로 만들어 주는 코드도 클로드에게 부탁할 수 있습니다.



이러한 우리의 AI 모델은 다음과 같이 더 복잡하게 개선할 수도 있습니다.




즉 여러개의 모델로 각각 답을 낸 후에 그걸 다시 가중치를 줘서 합쳐서 최종 결과를 내는 앙상블 모델을 만드는 것입니다. 이 가중치도 학습을 할 수 있죠.



오늘의 글은 AI 학습을 구체적으로 보여줄 뿐만 아니라 그것이 어떻게 클로드 같은 AI를 써서 실행될 수 있는가를 보여줍니다. 물론 코드나 AI에 대해 아무 것도 모르면 이렇게 하기 어렵죠. 하지만 자세한 디테일을 알 필요가 없고 그런 것은 AI가 알아서 해줄 수 있다는 것을 보여주는 예입니다.



중요한 것은 '공부할 필요가 없다'는 것이 아니고 '중요한 것은 디테일이 아니고 전체적 문제의 이해'라는 점이 되겠습니다. 이같은 것은 제가 AI를 설명하는데 있어서 강조하는 것인데 오늘은 구체적인 예를 들어서 설명해 보았습니다. 이 예는 우리가 문제를 정의하고 데이터 포맷을 정의할 필요가 있다는 것을 보여줍니다. 물론 앞으로 이런 부분도 자동화되는 부분이 있겠지만 이 부분은 기본적으로 인간의 선택이 더 많이 필요합니다.



 

댓글