2024 활동

[SW 중심대학 디지털 경진대회 후기] SW와 생성AI의 만남 : SW 부문

은행장 노씨 2025. 2. 18. 14:32
  • 이 페이지는 나의 회고록이다.
  • 대회 진행과 연구 기록을 담았다.

대회 참여 계기

졸업 이슈로 일년이 비어버렸다. 이참에 해보고 싶은거 다 해보기로 했다. 그 중에서 어떤 대회나 연구에 깊게 집중해보고자 이것저것 알아봤다. 예전부터 해커톤에 대한 열망이 있었기 때문이다. 대학을 졸업하기 전에 하나에 집중한 어떤 결과물을 만들어보고 싶기도 하고, 동료와 라이징썬을 하며 고생을 씨게 하는 추억을 만들고 싶었기 때문이다. (마, 청춘 아이가)

그러던 중 아래의 포스터를 보게 되었다.

 

포스터 버전이 다양하다.

 

생성 AI를 이용한 서비스 소프트웨어라니! 현재 트렌드에 맞는 좋은 해커톤을 할 기회라고 생각하여 팀원을 모았다. 다행이 밸런스 좋게 AI 분야와 백엔드 분야에 열정적인 팀원을 구했다. (나는 프론트엔드를 담당하기로 했다)

 

 

 + 신청을 하다가 보니 학교별 하나만 뽑는다는 것을 알았다.

설마설마 했는데, 정말 우리 팀이 선발됐다. (얏호)

학교 대표로 선정된만큼 열심히 해야겠다는 다짐을 했다.

팀명은 앵그리버그 라고 했는데, 오타라고 생각하신건지 표기에 앵그리버드라고 되어 있어 조금 킹받았다.

(팀명은 버그 때문에 앵그리하다는 뜻이다.)

 

 

아이디어레이션

자, 이제 생성 ai 대회가 본격으로 시작됐다.

나에게는 생성 ai == chat GPT 밖에 없었다. 여러 최신 기술을 살펴봤다. 요즘 생성 ai는 신기하고 재밌는 게 많았다. 하지만 은근 응용 sw 아이디어는 진부해서 아이디어를 도출하고 선정하는 과정이 제일 까다로웠던 것 같다.

뇌절의 뇌절을 하고 나서야 다음의 아이디어로 겨우 도달할 수 있었다.

(후보 아이디어로는 다음이 있다. 사투리 손편지 서비스, 역사 인물과의 대화를 통한 인터렉티브 역사교육 서비스)

 

 

💡 Google Gemini를 통한 팩트체크 서비스

생성 ai의 할루시네이션*을 보완하기 위해, RAG를 사용한 더블 펙트체크 서비스였다.

특히 여기에서는 지식의 변화가 깃 브랜치 형식으로 시각화되도록 디자인했는데 이 부분이 마음에 들었다.

할루시네이션 (hallucination)*

AI 할루시네이션(hallucination: 환각)은 정확하지 않거나 사실이 아닌 조작된 정보를 생성하는 것을 의미

 

 

🧨 위기가 기회로

아이디어의 추가적인 검증을 위해 대회 담당 교수님께 피드백을 하는 메일을 보냈다.

회신의 내용은 긍정적이었지만, 서비스의 대상이 제대로 정의되지 않았다는 의견을 말씀해주셨다. 서비스에서 제공되는 분야가 넓기 때문에 ‘재미’보다는 ‘필요성’에 중점을 두고 아이디어를 발전시켜보라 하셨다.

어떤 고객이 어떤 문제로 어떤 불편함을 겪고 있기 때문에 이러한 서비스가 존재하여야 한다.

 

해당 명제를 채우기 위해 서비스의 분야를 좁히다가 다음의 결론을 내게 되었다.

(이때는 7월 5일이었다, 3일 뒤에 예선 자료 제출을 앞둔 아주 간 큰 우리들…)

 

어떤 분야를 해야 할까?
  • 뉴스 및 미디어 검증
  • 과학(과학적 연구 결과, 이론, 발견)
  • 의학 및 건강 정보 검증
  • 역사
  • 비즈니스 및 경제 정보 검증
  • 정치 및 공공 정책 검증
  • 제품 리뷰 및 소비자 정보 검증 

 

이 분야 중에서 지뢰를 제외하면 뉴스, 과학, 의학, 역사 등이 남았다.

그 중 의학이 가장 데이터도 많고, 검증 가능성과 필요성에 있어서 가장 적절할 것 같다고 판단했다.

 

의약품에 대한 정확한 지식을 알려주는 서비스는 어떨까?

최근에 내가 즐겨보는 닥터프렌즈에서 처방연쇄 위험성을 경고하는 영상이 갑자기 떠올랐다.

  • https://www.youtube.com/watch?v=u-9-J3j5_MY&t=252s
    처방연쇄란 약물 복용으로 생긴 부작용을 인지하지 못하고 또 다른 약물을 복용하도록 이어지는 처방 고리를 뜻한다.
  • 나의 할아버지도 건강에 관심이 많으셔서 약을 신봉하시는데, 어느 순간 과복용하신다는 생각이 들어 해당 문제에 대해 진지하게 생각해보기도 했다.

 

 

운이 좋게도, 현재 학부 연구생으로 있는 연구실이 웰니스 컴퓨팅 랩실이라 바로 교수님께 아이디어 검증을 받으러 갔다. 장장 3시간 정도 해당 아이디어에 대한 심도있는 토론을 했다.

 

마침 교수님께서도 약국 업체와 이런 문제(약물 복용)에 대한 문제를 논의중에 있고, 긍정적으로 우리를 아이디어를 평가해주셨다. 처음 계획했을 때, 다약제 복용자들의 약물 기록을 보고 처방연쇄 가능성을 제시해주는 서비스였다. 하지만 의료법에 의해 의사에게 책임을 물게될 수 있다는 한계가 있어서, 현재 복용하고자 하는 약물에 대해 처방 연쇄 시뮬레이션을 생성해주는 아이디어로 최종 수정되었다.

 


 

예선 준비

  • 삼일천하라더니 삼일 만에 세상을 만들어야하는 상황이 되었다.

등줄기에 땀이 줄줄 흘렀지만, 남은 시간에 집중하며 서비스를 구체화하려고 했다.

⏳ 예선 기획서 제출 마감(07.08)

  • 서비스 소개, 개발 동기, 서비스에 대한 기획, 기획 의도

나머지 팀원들에게 자료 조사를 맡기고 나는 서비스 기획에 집중했다. 처방 연쇄의 가장 큰 문제점으로 ‘중장년층의 자의적인 약물 복용’을 제시했기 때문에 중장년층을 위한 어플리케이션을 만들었다.

중장년층을 위한 서비스를 처음으로 기획했기 때문에 나의 ui 디자인 인생상 가장 어려운 도전이었던 것 같다. UX적으로 쉬워야 하면서 글자 크기도 커야 하지만, 무엇보다도 예뻐야 한다. 중장년층은 모바일 사용성에 있어서 이용 편차가 너무 크기 때문에 그걸 고려하여 깔쌈한 디자인을 해야 됐다. 영감이 잘 떠오르지 않아 머리를 쥐어뜯으며 디자인 고심을 했다.

아래는 기획서 내용이다.

 

1차 디자인

 

 

⏳ 예선 종료 및 예선 산출물 제출 마감(07.19)

해당 내용으로 교수님께 피드백을 요청했더니 청천벽력같은 답변이 왔다. 서비스 이용 대상에 있어서 일반 환자가 쓰는 것이 적합하지 않을 것 같다는 의견이었다. (오히려 자의적인 복용에 대한 원인이 될 수 있다고)

의료 보조 도구로써 시뮬레이션을 생성하는 사용자를 의료 전문가도록 다시 서비스 기획을 수정하고 디자인을 했다. 시뮬레이션을 효과적으로 시각화하기 위해 여러 시스템을 참고했었는데, 특히 구글 애널리틱스의 UX Flow 디자인을 참고했다. 마치 시뮬레이션이 진행되는 과정이 하나의 흐름이라는 생각을 했기 때문이다.

디자인부터 구현까지 미친 듯한 해커톤이 진행됐다. 거의 일주일도 주어지지 않았기 때문에 일초도 허투루 쓸 수 없었다. 거진 매일 팀원과 카페에서 만나서 구현하고, 저녁에는 디스코드 미팅을 하면서 이슈를 공유하고 다시 목표를 설정했다.

아래는 최종 산출물의 내용이다. 추가된 페르소나와 발전된 ui를 확인할 수 있다.

2차 디자인

 

⏳ 예선 투표(07.19~07.24)

7월 18일부터 19일은 거의 사건의 지평선처럼 긴 하루였다.

최종 제출 기한인 오전 10시가 되자마자 다른 58개의 대학들의 아이디어를 볼 수 있었다.

프로젝트를 보면서 든 생각은, 다른 대학교들의 구현 수준이 너무 높다는 것이였다. 이미 앱으로 출시하거나, 관련 랩실 연구(논문)가 깊게 진행된 것 같은 팀이 허다했다. (우리만 7월 1일부터 시작했나.. 좀 더 일찍 시작할껄..) 거의 투표 기간으로 일주일 정도 주어져서 당일은 그래도 제출에 자축하면서 마무리했다.

58 개의 대학중에 12 개의 대학만 진출할 수 있기 때문에 투표 결과를 보면서 추가 구현과 본선 준비를 진행하고자 했다. 부푼 기대와 달리, 날이 갈수록 순위가 떨어졌다. 한 대학당 투표권이 5표인데, 투표로 순위가 결정되기에 유력팀에 몰아주거나 아무팀에 표를 던지는 듯한 결과가 보이는 듯 했다. 내가 보기에 같은 참여팀에서 하는 투표는 형평성이 없는 것 같은데 누구 머리에서 나온 걸까 원망도 했다. 우리도 다른팀들의 전략을 쓸까 고민하다가 예선 투표 전날 저녁까지만 해도 29등이길래 소신을 지켜서 투표했다.

다음 날. 세상이 뒤집혔다. 갑자기 순위가 13등이 됐다.

그러다가,, 심사에 들어가더니,, 점수 집계 결과로 12등이 돼서 본선에 진출하게 됐다.

 

말도 안돼 🫢

너무너무 좋으면서도, 본선에 가면 내가 발표해야 한다는 부담감이 덮쳤다.

(내가 리더였기 때문이다..)

 

 

⏳ 본선 산출물 제출 마감(07.26)

이제 본선을 가기 위한 프로젝트 검증 기간이다. 사실 제대로 서버를 사용하여 구현을 하지 못했기 때문에 본선에 못 올라갈 것이라고 생각했다. 다른 대학교의 프로젝트와 비교했을 때, 시간적으로도 비용적으로도 차이가 많이 났기 때문이다. 그래도 포기하지는 말자고 생각해서 프론트를 구글 클라우드 플랫폼으로 배포해보기로 했다. 깃 코드로는 이미 배포를 끝냈기때문에 실제 백엔드 서버와의 연결을 확인하고 구현을 완료해야했다. 처음에는 백앤드와 연결이 안 돼서 너무 답답했다. 하지만 백앤드 보안이슈라는 것을 알고, 다시 하니까 데이터가 잘 전달이 됐다. 똑같은 입력 데이터라도 생성 ai에서 도출되는 결과 데이터가 달랐지만, 그래도 어찌저찌 구현을 끝냈다. 마지막 result 페이지에서 데이터 형식에서의 오류가 있어서 애먹었지만 엣지케이스를 고려하여 보완했기에 비교적 쉽게 해결했다. 하지만 클라우드 도커 빌드가 더럽게 안 됐다. 왜인지 열리지 않아서 완성도가 떨어져 아쉬웠다. 다시 도전해보고 싶다.

 


본선 준비

하지만 어찌저찌 본선에 갈 수 있게 되었다.

본선에 간다는 걸 안 이후로는 발표 준비에 매진했다. 발표 피피티는 이미 2주일 전에 제출했기에 대본만 짜서 줄줄 외우면 되는 것이였다. 하지만 발표 준비의 거의 7할 이상이 마음의 준비였다. 발표 공포증이 있기에, 더 긴장했다. 이렇게 높게 올라갈 줄 알았다면 내가 리더를 안 했을텐데라는 후회도 살짝 했지만, 이왕 하는 거 발표까지 마무리하면 좋은 성취가 될꺼라며 애써 나를 다잡았다.

질문도 정리했다. 냉정하게 생각해서 우리 프로젝트에서 할 수 있는 모든 딴지를 걸었다. 그것도 제법 사납게…

질문을 정리하면서 서비스의 핵심 포인트를 생각해봤는데, 내가 생각해도 살짝 논리가 떨어지는 느낌을 받았다. 최대한 드러나지 않게끔 포장하기 위해 애썼다. 예상 질문 25개 정도 정리하니까 심사위원이 어떻게 질문할 지 감이 왔다.

 

발표 이틀 전부터 나는 대본을 전부 외워야했다. 긴장하면 손을 떨기에 손에 뭐가 더 주어지면 안되기 때문이다.

전술을 세웠는데, 효심을 강조하면서, 발표자료에 없는 새로운 이야기를 하도록 노력했다.

추가된 몇 부분이 입에 붙지는 않아서 당일 오전까지 더듬더듬 외웠다.

 

본선

새벽 차를 타고 갔다. 아침 일찍 도착했는데, 오후 발표라 등록도 못 한다고 해서 카페에 갔다.

가는 길에 비가 억수같이 쏟아내려서 흠뻑 젖었다. 점심으로는 간단하게 먹자하고 코엑스 식당가에서 스키야끼를 야무지게 먹었다.

먹고 시간에 남길래 다시 발표 연습을 해야돼서 카페에 갔다.

발표 등록을 하니까 발표 대기실에 갔다. 4팀 정도 있었는데, 너무 조용했다. 잠시 잤다가 화장실 몇 번 왔다갔다 했다.

테이블에서 간식도 줬다.

 

발표평가 간식 사진이다

 

너무 떨렸다. 세포 하나하나가 진동하는 듯 했다.

들어가자마자 머리가 하얘지더니… 심장 소리가 너무 크게 들려서 혼났다.

  • 안녕하세요, 약물을 사용하는 선한 길, 약선지도를 발표할 앵그리버드의 노00입니다.

이게 첫 대사였는데, 도무지 ‘약물을 사용하는 선한 길’이 떠오르지 않았다. 그저 그렇게 지나갔던 부분이었는데.. 그래서 바보처럼, 약물을.. 약물을… 약물을… 하면서 지천에 떠도는 귀신마냥 똑같은 구절을 말했다. 창피했지만 오히려 큰 실수를 한 덕분에 뒤에 막혔던 부분을 오히려 잘 넘어갈 수 있었다.

역시나 질의응답도 예상했던대로, 그대로 질문 받고, 그대로 공격 받았다. 생각보다 심사위원의 태도가 유해서 다행이었다. 하나 웃긴 점은, 질의 첫 마디가

  • 지금까지의 발표 중에 가장 역동적이었다.

는 말이였는데, 이게 칭찬인지 뭔지 잘 모르겠어서 허허 웃어버렸다. 그리고 공격보다는 방향성 제안이나, 추가적인 개발 허점을 경고해주셔서 더 보람있는(?) 시간이 된 것 같다.

다음의 질문을 받았다.

  • 똑같은 데이터를 어떻게 사용자 집단에 적용하냐 기술적으로..
  • 생성 ai의 인풋과 아웃풋이 정확히 뭐냐
  • 의료 사고 대처 방안
  • EMR을 정확히 봤냐 데이터 field
  • 어떻게 신뢰도 처리를 했냐
  • 개인정보 보안 문제를 고려하면 좋겠다.

 

2시 어딘가에 끝나고 3시부터는 포스터 세션이였다. 대충 발표 내용 정리하다가 즐기러 떠났다!

간식도 먹고, 특강도 들었다. 시간표상 네트워크 시간이었는데, 사실상 팀원들끼리만 대화했다. 컴공은 역시 내향인이 가득하다. 용기 내서 말도 걸까 했는데, 막상 부끄러워져서 몸을 사렸다. 나도 역시 컴공인가보다.

 

대회장과 간식...

 

https://www.youtube.com/watch?v=Ym3Drr9Q54k&t=6254s

 

 

드디어 수상 시간이었다. 수상은 유투브 라이브로 중계됐다. 

나는 더 높은 상을 탈 줄 알았는데 아니였다.(머쓱)

그래도 10등인 프로그래머스 상을 탔는데, 생각보다 좋은 혜택이 있어서 만족스럽다.

  • 1차 서류 면제, PCCP 응시권(프로그래머스 코딩역량인증시험)

 

유튜브 캡처(오) 사진이랑 포토존에서 찍은 사진이다


회고

딱 프론트, 백서버, ai 이렇게 세 명으로 역할분담이 완벽하게 된 프로젝트는 처음인 것 같다.

거의 일주일마다 해커톤을 하는 듯했다. 이렇게 학교 대표로 큰 상을 타본적이 처음이라 우리팀이 너무 대견했다.

맥모닝을 시켜먹었던, 그 날밤 새는 날을 잊지 못할 것 같다.

 

 

+ 데이콘 인터뷰도 답글 형식으로 했다. 웃기다. 

 

이제... 진짜...

 

끝!