포스테키안

2020 겨울호 / Creative Postechian

2021-01-19 200

가장 재미있는 일은
바로 내가 하고 싶은 일이지

 

안녕하세요, 창의IT융합공학과 19학번 정윤성입니다. 저는 현재 학업과 더불어 다양한 학생 활동을 통해 경험을 쌓으며 관심 분야에 대해 알아가고 있는 학생입니다. 언뜻 보면 창업이나 개발을 하시는 다른 분들에 비해 평범해 보일 수 있지만, 자발적으로 제가 좋아하는 일을 한다는 점에서는 그런 분들과 다르지 않다고 생각합니다.

저는 대학교에 입학하기 전부터 코딩에 관심이 있었습니다. 처음 코딩을 접했을 때는 시큰둥했지만, 몇 문제 풀어보니까 앉은 자리에서 오전부터 밤늦게까지 예제를 풀 정도로 취향에 맞았습니다. 그런데 안타깝게도 대학 입학 전에는 전자기기를 마음대로 사용 못 하는 상황이라 열정을 발휘할 수가 없었습니다. 그런 저에게 대학은 아주 자유롭게 공부할 수 있는 환경이었습니다. 자유 시간에 내가 원하는 무엇이든 해도 되며, 여러 동아리에서 선배들과 같이 공부하며 많은 도움을 받을 수 있었습니다. 컴퓨터 관련 동아리는 종류가 많아서 해킹, 개발, 컴퓨터 알고리즘 등에서 골라야 했는데, 아는 게 없으니 일단 아무거나 도전해보자는 마음에 컴퓨터 알고리즘 동아리에 지원했습니다. 신입 부원을 모집한다는 말에 전날 밤 공부를 해서 갔고, 제일 어려운 문제를 종료 5분 전에 풀어서 간신히 합격한 기억이 아직도 강렬하네요. 그렇게 합격한 동아리에서는 관심 분야를 구체화해 나갈 수 있었습니다.

 

현재 관심 분야에 대해서

현재 관심 있고 또 알아가고 있는 분야는 컴퓨터 알고리즘과 인공지능(AI)입니다. 알고리즘은 어떠한 문제를 해결하기 위한 일련의 절차를 말합니다. 그중에서 ‘컴퓨터 알고리즘’은 컴퓨터가 실행 가능한 명령인 사칙연산, 비교, 반복, 조건 등을 나열하여 문제를 해결하는 분야입니다. 이러면 너무 포괄적이니까, 저는 보통 ‘항상 제한 시간 내에 원하는 답이 나옴’이 증명 가능한 문제를 공부합니다. 예를 들어 최단 경로 알고리즘은 지점의 수와 길의 수가 모두 1,000,000개 이하라면 항상 수 초 안에 두 지점 사이의 최단 경로를 찾아낼 수 있습니다. 다음으로 인공지능은 주어진 시간 내에 100% 정답을 구할 수 없는 어려운 문제를 컴퓨터의 판단을 통해 풀기 위해 고안되었습니다. 예를 들어 동물 이미지를 개인지 고양이인지 분류하는 이미지 분류 문제의 경우, 이미지의 픽셀 배열은 가능한 가짓수가 숫자로 표현하기 어려울 정도로 많습니다. 또한 그 숫자의 나열에서 개나 고양이에 대응되는 특징이 보이지도 않습니다. 이렇게 100% 풀 수는 없는 문제는 단순하게는 가지치기나 확률 기반 탐색, (다중) 신경망 학습 등 여러 가지 방법을 통해 풀려 노력합니다. AI를 통해 해결하고자 하는 것이죠. 즉, 알고리즘이 수학적이라면 AI는 과학적인 느낌입니다. 이런 제 관심 분야는 사실 특별한 이유 없이 자연스럽게 정해져서, 왜 좋냐 물어본다면 대답하기 난감합니다. “좀 재밌어 보이니까 한 문제 풀어볼까?” 정도에서 시작하는 거죠. 저의 경우에는 계속 공부하다 보니 점차 실력을 인정받아 동기부여가 되고, 더 열심히 공부하고, 이런 선순환이 반복되면서 엄청나게 빠져들게 되었던 것 같습니다. 그러니까 사실 뭐든 한입 떠먹어보는 게 중요한 겁니다.

2020 POSTECH Programming Contest(맨 오른쪽 위가 본인)

 

동아리의 회장으로서

작년에 동아리에 들어가 선배님들께 열심히 배웠고, 올해는 제가 POSCAT(POSTECH Computer Algorithm Team) 회장을 맡게 되었습니다. 그래서 제가 받은 만큼 많은 분께 컴퓨터 알고리즘의 재미를 알려드리고 싶었지만, 코로나19로 비대면 수업이 진행되다보니 여러 세미나를 진행하지 못하게 되어 정말 아쉽게 생각했습니다. 사실 세미나뿐만 아니라 합숙 프로그램, 대회 등 다양한 동기부여의 기회가 줄어들어 정말 아쉬웠습니다.  그래서 그나마 할 수 있는 일을 생각해 보다가, ZOOM을 통해 온라인 오픈 세미나를 개최했습니다. 신입 부원 희망자를 대상으로 쉬운 컴퓨터 알고리즘을 소개했고, 다행히도 예상보다도 더 많은 분이 참여해 주셨습니다. 게다가 몇몇 분들은 강의 후에도 스스로 공부하고 문제도 풀어보는 것을 확인했습니다. 코로나 사태가 진정되면 이렇게 열정 있는 후배들과 공부할 것이 정말 기대됩니다.

 

포카전의 AI 분야 선수로서

그뿐만 아니라 포카전에 2년 연속 AI 분야 선수로 출전해 승리했습니다. 물론 과학 퀴즈 전산 분야 대표로도 출전했고 재밌는 경험이었지만, 무엇을 했는지 꽤 직관적인만큼 이 글에서는 생략하고, AI 분야에 대한 경험을 중점적으로 나누어보고자 합니다. 구글의 알파고 등의 유명한 여러 인공지능 덕분에 ‘AI 개발’이라고 하면 흔히 딥러닝을 떠올리게 됩니다. 하지만 포카전의 AI 대결은 한 달 정도의 짧은 기간만 주어지며 고성능 GPU 등의 환경도 뒷받침되지 않기 때문에 딥러닝을 하기는 어렵습니다. 물론 딥러닝을 하지 않는다고 AI가 아닌 것은 아니며, 뭔가 다른 수를 냅니다. 맨 처음은 막막하므로 게임에 적응하기 위해 랜덤 AI를 돌려서 리플레이를 관찰하거나 부원들끼리 게임을 해 봅니다. 이러면 아이디어를 낼 때도 은근 도움이 되고, 부원끼리 친해지기에도 좋습니다. 그리고 좀 익숙해지면 보통 가벼운 기계학습을 시키거나 사람의 판단을 개입시킵니다. 사람의 판단은 각자가 대충 맞는 거 같은 간편 추론(휴리스틱)을 구현하고 팀원끼리 붙여보며 잘 이기는지를 테스트해 보는 일입니다. 팀원이 여럿이기 때문에 아이디어를 계속 합치거나 버리면 결과적으로 꽤 좋은 결과가 나옵니다. 작년 게임을 예로 들자면 세균전이었는데, 한두 턴에 점수가 쉽게 뒤집혀서 가능한 많은 수를 읽는 것이 중요했습니다. 또한, 한 턴당 시간제한이 있어서 특정 깊이(ex. 8수)까지만 볼 수 있어 그 다음 수를 보지 않고 현재가 얼마나 유리한지를 판단하는 점수 매기기가 필요합니다. 예를 들어 간단하게 (내 말의 수) – (상대 말의 수)로 점수를 매길 수 있고, 이것만으로도 AI가 사람보다 강해집니다. 여기서 발전하면 랜덤하게 점수를 매겨 기계끼리 붙여 보거나, 먹힐 가능성이 없는 쪽의 말이 점수가 더 높다는 등의 휴리스틱으로 점수를 매겨 개선할 수 있습니다. 결과적으로 저희 측에서 개발한 여러 AI 중에서 alpha-beta pruning이라는 효과적인 가지치기 방식에다가 적당한 점수 매기기를 하여 만든 AI가 가장 강했습니다. 물론 Monte Carlo Search Tree 등의 다른 방식을 이용한 AI도 나왔고 성능이 나쁘지 않았으나 익숙하지 않은 방식이라 최적화에 실패했고, 실제 코딩에서는 최적화로 10배 이상 시간을 단축하여 한두 수를 더 읽을 수 있어 상대와의 차이가 생길 수 있었다고 생각합니다.

2020 포스텍-카이스트 교류전 AI 종목

대학 생활에 공부가 전부는 아니지만, 관심이 가는 분야가 있다면 저처럼 적극적으로 참여해서 푹 빠져보시기를 추천해 드립니다. 귀찮음을 핑계로 미루거나, 새로운 일을 겁내면 진짜 재미를 느낄 기회를 놓쳐버릴지도 몰라요.