brunch

매거진 Game과 AI

You can make anything
by writing

C.S.Lewis

by 취한하늘 May 02. 2022

AI 연구자를 위한 선택적 도구들

더 좋은 AI 개발자가 되기 위해..


AI 개발자가 역량을 강화하기 위해서는 당연히 AI에 대한 통찰을 더 깊게 만드는 것이 가장 기본적인 일일 것이다. 하지만 때로는, 자신의 주종목과 연관되어 있는 주변 지식이나 주변 기술을 습득하는 것이 큰 도움이 될 때도 있다. 특히, 연구 환경이 아니라 비즈니스 환경에서 일을 할 때는 더욱 주변 기술이 도움 될 때가 많다.

어차피 필자는 AI에 대해서는 지식이 얕기 때문에 그 부분에 있어서는 도움 되는 말을 할 수가 없다. 하지만, 게임 개발 영역에서 10년을 넘게 굴러먹었기 때문에, AI 연구자들에게 도움이 될 만한 주변 기술에 대해서는 그래도 조언을 해줄 수 있지 않을까 생각한다. 실제로 같이 일하고 있는 AI 연구자들에게도 그런 면에서 종종 도움을 주고 있다.

이번 글에서는 AI 연구자들이 함께 공부해두면 좋은 것들에 대해 몇 가지 나열해 보고자 한다. 여기 있는 것을 다 알 필요는 없지만, 혹시 관심이 있다면 한 두 가지 정도는 공부를 해두는 게 좋을 것이라고 생각한다. 운이 좋으면 수많은 AI 연구자들 속에서 자신만의 경쟁력을 갖게 될 수도 있다.


도메인 지식


도메인이란, AI가 적용되는 분야를 가리키는 것이라고 생각하면 될 것 같다. 나의 경우에는 '게임'이 도메인에 해당한다. 그런데 AI를 전문적으로 공부했던 사람들 중에는 도메인에 대한 전문성이 부족한 경우가 많다. 말하자면, AI는 잘 알지만 게임은 잘 알지 못하는 것이다. 간혹, 게임을 많이 해봤으면 게임에 대해 잘 알 것이라고 생각하는 사람들도 있는데, 게임을 단순히 플레이하는 것과 이해하는 것은 이야기가 다르다. 거기에 게임 제작을 이해하는 것은 그것대로 또 다른 이야기가 된다.

AI를 어떤 도메인에 적용하려면, 그 도메인을 이용해 본 경험 이상의 것까지 알고 있는 것이 좋다. 서비스 이용자의 입장도 물론 알아야 하지만, 서비스 제작자와 운영자의 입장에서도 서비스를 바라볼 수 있는 것이 좋다. 그러면, 그 서비스에서 돌아가는 AI를 만드는 데도 도움이 되고, 다른 직군에 속하는 사람들과 협업할 때도 큰 도움이 된다.

이런 부분 때문에 어떤 사람들은, 도메인 전문가에게 AI를 학습시키는 것을 선호하기도 한다. 사실, 나 자신이 바로 도메인 전문가이면서 AI를 학습한 경우이기도 하다. 당연히 AI에 있어서는 다른 연구자들의 역량을 따라가기 어렵다. 하지만, 서비스와 AI를 연결 지어서 생각하는 데 있어서는 확실히 유리한 점이 있다는 것을 이미 수 차례 경험하고 있다.


웹 프로그래밍


AI 연구자가 웹 페이지를 만들어야 하는 일이 흔하지는 않지만, 만들 줄 알면 유용하게 써먹을 때가 많다. 특히, 연구 결과를 시연할 때 웹을 이용하여 시연할 수 있다면, 단순히 파워포인트 문서를 만들어 발표하는 것보다 훨씬 좋은 인상을 줄 수 있고, 영향력을 발휘할 수 있다.

비즈니스 영역에서 일을 하다 보면, 연구자가 아닌 다른 사람이 사용해야 하는 것을 만들 때도 많이 있다. 그 사용자가 외부 고객이든, 다른 팀의 동료이든, 어쨌든 하나의 서비스 형태로 제공해야 하는 경우들이 있는 것이다. 그럴 때도 웹을 다룰 줄 알면, 본업으로 바쁜 웹 프로그래머들에게 어렵게 부탁하지 않고도 빠르게 결과물을 만들어 낼 수 있다.

웹을 잘 다루려면 많은 노력이 필요하지만, AI 연구자에게는 그 정도의 숙련도는 필요하지 않다. 초심자 수준으로 아주 간단한 웹 페이지만 직접 만들 수 있어도 활용도가 높아진다. AI 영역에서 시각화 툴을 사용해 본 연구자들은 시각화 툴의 사용이 주는 편의성과 영향력을 실감했을 텐데, 웹도 비슷한 효용을 가져다준다.


C++, C#


AI 연구자들이 많이 쓰는 언어는 아무래도 파이썬일 것이다. 파이썬은 참 좋은 언어이고, AI를 연구하고 개발하는 데 훌륭한 도구가 된다. 그런데, 가끔 파이썬이 아닌, C++이나 C#을 사용하면 좋을 때가 있다. 바로 속도가 중요한 경우이다.

예를 들어, 학습하는 과정이나 평가하는 과정에서, 게임을 백만 번 정도 시뮬레이션해야 한다고 생각해 보자. 게임에 따라 다르겠지만, 파이썬으로 프로그램을 짜니 총 10시간 정도 걸렸다. 이것을 C++로 다시 짜니 1시간 정도만에 시뮬레이션이 완료되었다. 학습이나 실험이 한두 번에 그칠 것이라면 그냥 파이썬으로 빠르게 짜고 느긋하게 프로그램을 돌려도 된다. 하지만, 좋은 결과물을 얻기 위해 학습과 실험은 수백 번 이상의 반복을 요한다. 결국, 시간을 조금 들여서라도 C++로 시뮬레이션 환경을 구축하는 것이 더 짧은 시간에 더 많은 실험을 할 수 있게 하고, 더 좋은 결과로 이어지게 만들어 준다.

C도 잘 다루려고 하면 익히기가 쉽지 않은 언어다. 하지만, 역시 그렇게까지 C의 전문가가 될 필요는 없다. 그저, 기본적인 문법만 익히고, C와 파이썬을 연결하여 사용하는 것만 익혀도 충분하다. 학습과 실험 과정에서 시간을 많이 잡아먹는 부분이 코드 상으로는 단순한 경우가 많기 때문이다.


프로그래밍 기법들


AI 연구자들과 일을 하면서, 생각보다 AI 연구자들이 프로그래밍에 익숙하지 않다는 것을 알았다. 그래서, 객체지향이나 디자인 패턴 등, 프로그래머들에게 익숙한 개념들이 AI 연구자들에게는 낯설게 느껴지는 경우가 있다. 사실, 학교나 연구실에서는 이런 것이 별로 필요 없을 수도 있다. 하지만, 비즈니스 영역에서는 기본적인 정도는 알고 있는 것이 좋다.

각종 논문을 보면, 연구 편의를 위해 여러 가지 제약을 설정해 놓는 것을 흔히 발견하게 된다. 게임만 해도, 단순한 형태로 만들어 놓고 연구를 진행한 논문을 여러 편 봤다. 하지만, 비즈니스 환경에서는 마음대로 그런 제약을 설정할 수가 없다. 연구실에서보다 복잡한 요구사항을 만족해야 하고, 다양한 사용자를 고려해야 한다. 그래서 프로그램이 조금 더 복잡해 지기 쉽다.

또 한 가지 고려해야 하는 것은 유지보수성이다. 연구 영역에서는 결과를 도출하고 나면 작업이 일단락되는 경우가 있다. 하지만, 비즈니스 영역에서는 그런 일이 드물다. 그보다는 서비스를 유지하면서 코드를 계속 수정해야 하는 상황이 흔하다. 그러면서, 최초의 개발자가 아닌 사람이 그 코드를 관리해야 하는 경우도 발생한다. 따라서, 비즈니스 영역에서는 단순히 최초의 요구사항을 만족하는 것에 머물러서는 안 되고, 변형이 쉽고 누구든 다루기 쉬운 형태로 코드를 작성해야 한다. 그리고 그런 것을 용이하게 만드는 것이 객체지향이나 디자인 패턴 같은 기법들이다. 


AI를 잘 만드는 것이 더 중요하다


당연히 AI 개발자라면 AI를 잘 만드는 것이 제일 중요하다. 여기서 얘기한 것들을 몰라도 좋은 AI 개발자가 될 수 있다. 그리고, 큰 회사라면 보통 이런 작업들을 해주는 파트너들이 있을 것이다. 하지만, AI 뿐만 아니라 좀 더 넓은 지식과 스킬을 갖추고 싶을 때, 작은 조직에서 스스로 여러 가지 과업을 진행해야 할 때, 혹은 AI 공부가 지겨워서 잠깐 다른 공부를 하고 싶을 때, 여기 있는 것들을 고려해 보면 좋을 것이다.

여기 있는 것들이 AI 개발자의 가치를 크게 높여주지는 못하겠지만, 그래도 할 줄 알면 은근히 도움 되는 경우들이 있다. 어차피 마스터가 될 생각이 없다면 진입 장벽도 생각보다는 높지 않은 편이다. AI 분야에서 간단한 이미지 분류기를 만드는 정도의 숙련도만으로도 여러 가지 효용이 생기는 것을 생각해 보면 되지 않을까 싶다.


1. 도메인 지식

도메인에 AI를 적용하는 데 큰 도움을 준다.

도메인 전문가와의 협업이 수월해진다.

2. 웹 프로그래밍

연구 결과를 시연하는 데 도움이 된다.

사람들이 이용할 수 있는 서비스 형태로 제공할 수 있게 된다.

3. C++, C#

반복적인 연산으로 시간이 많이 소요될 때, 연산 시간을 줄일 수 있다.

결과적으로 동일한 시간에 훨씬 많은 실험을 진행할 수 있게 된다.

4. 프로그래밍 기법들

유지 보수하기 좋은 코드를 작성하게 해 준다.

크고 복잡한 작업을 진행할 때 도움이 된다.

매거진의 이전글 게임에 활용되는 AI
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari