AutoCV1・2에서 우승한 비법을 공개합니다
2019/10/16 by 이수경, 백운혁

전통적인 머신러닝(machine learning)은 전문가가 고안한 아이디어를 바탕으로 설계된 수제 특징(hand-crafted feature)으로 규칙을 학습합니다. 하지만 해결하는 과제나 데이터 특성에 따라 학습에 적합한 특징이 천차만별이기에 특징을 100% 완벽하게 구분하는 건 사실상 불가능에 가깝습니다. 전통적인 머신러닝 기법으로 객체 인식, 필기 인식, 자연어처리와 같은 복잡한 문제를 해결하기가 어려웠던 건 바로 이런 이유 때문입니다.

[ 그림 1 ] 전통적인 머신러닝 방식과 딥러닝의 가장 큰 차이는 특징 추출 과정을 모델 알고리즘에 통합시켰다는 데 있다.

딥러닝(deep learning)은 이런 특징 추출 과정을 알고리즘에 통합시켰습니다. 데이터의 특징을 잘 잡아내고자 은닉층(hidden layer)을 깊게 쌓는 방식으로 매개변수(parameter)를 늘린 모델 구조 덕분입니다. 이런 복잡한 문제를 상대적으로 단순한 방식으로 처리할 수 있게 됨에 따라 특정 분야에 전문적인 지식을 갖추지 않은 사람들도 딥러닝을 활용해 성능이 우수한 제품 개발이 가능해졌습니다.

하지만 딥러닝 모델 개발은 여전히 인간 노동의 집약체라 해도 과언이 아닙니다. [그림 2]에서 보듯이 데이터 전처리, 특징 설계, 적합한 모델 탐색, 초매개변수 최적화, 정답 추론을 포함한 모든 학습 과정에서 엔지니어 또는 개발자는 다양한 기법을 일일이 적용해나가며 모델의 성능을 적절히 평가해야 합니다. 최적의 성능을 내는 모델 개발에 상당한 시간이 걸린다는 점도 딥러닝 활용을 어렵게 합니다. 

[ 그림 2 ] 일반적인 머신러닝 모델이 훈련하는 과정 © Janakiram MSV

이를 해결하고자 나온 방법론이 바로 자동화된 딥러닝(Automate the design of deep learning, 이하 AutoDL)입니다. [그림 3]처럼 AutoDL은 사람이 통제하던 딥러닝 학습 과정을 자동화합니다. 딥러닝을 활용하는 연구의 가속화에 도움이 될 수 있도록 비전문가도 딥러닝을 쉽게 활용할 수 있는 시스템 제공을 목표로 하죠.

시장 조사 기관인 가트너(Gartner)가 인공지능 분야에서 자동화된 머신러닝(AutoML)과 지능형 응용프로그램을 촉망받는 미래 기술로 평가함에 따라 관련 기술에 대한 학계의 관심도 점차 커지는 추세입니다.

[ 그림 3 ] AutoML 또는 AutoDL은 모델 학습의 과정을 자동화한다. © Janakiram MSV

카카오브레인 또한 AutoDL 시스템이 가진 잠재력을 두 눈으로 직접 확인해보고자 NeurIPS 경연 트랙(competition track)에 참가했습니다. 카카오브레인 AutoML 연구팀의 백운혁 연구원은 “경연 트랙에 제시된 일부 과제가 우리 연구팀의 연구 개발 분야 및 나아가고자 하는 비전에 부합한다고 판단했다”며 참가 배경을 설명했습니다.

지난 2017년 처음 경연 트랙을 개설한 NeurIPS가 올해는 경쟁 주제 중 하나로 AutoDL을 제시했습니다. 카카오브레인은 AutoDL 하위 과제 중 '인간이 개입하지 않은 상태에서 이미지 분류를 완전 자동화하기(AutoCV)’와 '인간이 개입하지 않은 상태에서 이미지와 비디오 분류를 완전 자동화하기(AutoCV2)에 참가했습니다.

[ 표 1 ] NeurIPS AutoDL 챌린지 2019에 제시된 5가지 과제 (대회에 참가한 시점 기준)

그 결과 카카오브레인은 AutoCV에 참가한 84팀 중 1위, AutoCV2의 34개 참가팀 중 1위라는 성적을 거뒀습니다. 백운혁 연구원을 만나 카카오브레인 AutoML 연구팀이 참가한 AutoCV 대회 정보와 우승 비결에 관한 자세한 이야기를 들어봤습니다. 연구팀이 제출한 코드는 깃허브(Github)에서 확인해볼 수 있습니다.

* 카카오브레인 연구팀은 거의 동일한 방식으로 AutoCV와 AutoCV2 과제를 풀었습니다. 따라서 이번 글에서는 AutoCV에 초점을 맞춰서 글을 쓰고자 합니다. 이 점 참고 부탁드립니다.

[ 표 2 ] AutoCV 최종 리더보드 (피드백 데이터 기준)

[ 표 3 ] AutoCV2 최종 리더보드 (파이널 데이터 기준)


일반 딥러닝 대회와는 다른 AutoCV

보통의 이미지 기반 머신러닝 대회에서는 하나의 과제를 정확하고 신속하게 수행하는 데 특화된 모델(specific model)을 요구합니다. 이를 위해 훈련 및 테스트용 이미지를 주로 단일 종류로 구성합니다. 대회는 이론상 무한에 가까운 컴퓨팅 자원을 활용, 미리 제공된 데이터에서 최고의 성능을 달성하는 참신한 모델 개발을 목표로 합니다.

반면, AutoCV는 임의로 주어진 다양한 문제를 동시에 해결하는 범용 모델(general-purpose model)을 요구합니다. 참가자에게 제공되는 데이터셋은 여러 종류로 구성됩니다. 더 나아가 주최 측은 모델이 (1)제한된 시간 안에 (2)인간의 개입 없이도 (3)새로 주어지는 데이터를 스스로 푸는 능력을 갖췄는지를 평가합니다.

주최 측은 (1)번을 평가하고자 데이터에 적합한 모델 선정 및 학습 전략 탐색, 모델 훈련, 정답 추론에 이르는 시간을 각 문제당 최대 20분으로 제한했습니다. (2)번 항목에 대해서는 참가자로부터 받은 코드를 평가 플랫폼에서 직접 가동하는 방식을 채택했습니다. 이를 위해 문제당 1개의 GPU(NVIDIA Tesla P100)와 4개의 가상 CPU(26GB의 메모리, 100GB 디스크)의 계산 환경에서 평가가 이뤄진다고 사전 고지했습니다.

(3)번 항목 평가를 위해 모델 성능 평가용 데이터셋 정보를 일절 공개하지 않는 블라인드 테스트(blind test)를 진행했습니다. 좀 더 자세히 설명하면 다음과 같습니다. 주최 측에서 공개한 총 15종의 데이터 셋은 크게 3가지 유형으로 구분됩니다. 대회 마감 후 모델의 최종 성능을 평가하는 데 쓰이는 최종 데이터셋(final dataset)과 리더보드에서 실시간 순위를 확인하는 데 사용하는 피드백 데이터셋(feed-back dataset), 마지막으로 모의고사 문제집 격에 해당하는 공개 데이터셋(public dataset)이 바로 그것입니다. 이 중 공개 데이터셋을 제외한 모든 데이터셋은 대회 기간 전후로 공개되지 않았습니다. 이후 공개된 정보라면 [표 4]가 전부입니다.

[ 표 4 ] AutoCV에 사용된 15가지 종류의 데이터셋. 참가자는 공개 데이터셋만 열람할 수 있었다. 피드백 및 최종 데이터셋에 관한 정보는 대회 중 일절 공개되지 않았다.

다만 앞서 말한 대로 주최 측의 평가 플랫폼에서 코드가 원활하게 동작할 수 있도록 데이터의 형식과 학습과 추론을 제어하는 API(Application Programming Interface) 정보도 사전에 공개했습니다. 더불어 주최 측은 모델이 실전에서 다뤄야 할 이미지의 종류(의료 영상, 항공 사진, 손글씨, 일반 사물과 사람 이미지)와 형식에 대해서는 공개 데이터셋을 참고하면 된다고 설명했습니다.


카카오브레인이 과제를 해결한 방법

모델 학습 및 정답 추론까지 20분이라는 시간제한이 걸린 이 대회에서는 단 수 분 안에 추론 정확도 90% 이상을 달성할 수 있어야 합니다. 그런데 보통의 딥러닝 알고리즘 개발 프로젝트에서는 수십 대의 GPU를 사용해 모델 하나를 훈련하는 데만 최소 수십 시간에서 수십 일의 시간이 걸립니다. 이에 카카오브레인 ‍AutoML 연구팀은 다양한 기법 탐색과 프로그램 최적화를 통해 학습 시간을 대폭 줄이는 데 집중했습니다.

(1) 모델 선정

카카오브레인 AutoML 연구팀은 전 세계 많은 연구자가 기준으로 삼는 모델과 주최 측이 제공한 공개 데이터셋을 가지고 성능 실험을 했습니다.

딥러닝 모델은 크기가 클수록 성능(추론 정확도)이 좋다고 알려져 있습니다. 따라서 복잡도가 높은 문제를 풀려는 모델의 크기가 작다면 최종 성능이 낮을 수 있습니다. 반면, 매개변수의 수가 더 적은 만큼 모델 학습 및 추론에 상대적으로 더 적은 시간이 걸립니다. 같은 성능이더라도 학습에 드는 시간이 더 짧은 모델의 등수가 더 높은 이 대회 특성상 좋은 성능을 내는 ResNet[1] 모델 중 크기가 가장 작은 ResNet-18을 활용한 배경입니다.

더 나아가 카카오브레인 AutoML 연구팀은 이미지넷(ImageNet)[2]으로 사전학습한 버전을 채택했습니다. 다양한 종류의 이미지를 다량 사전학습한 모델은 완전히 새롭게 접하는 데이터를 훈련하는 데 드는 시간을 획기적으로 줄이면서도 더 좋은 성능을 냅니다. 

[ 그림 4 ] 카카오브레인 AutoML 연구팀은 다양한 모델의 성능을 비교해보며 ResNet-18을 활용한 이미지넷 사전훈련 버전을 채택했다. 성능 평가 척도인 ALC과 AUC는 블로그 후반부에서 확인할 수 있다.

(2) 전처리[3] 자동화

카카오브레인 AutoML 연구팀은 샘플링한 훈련 데이터의 속성값(크기나 채널 수, 픽셀값 등)을 통계적으로 분석하고 이 값의 범위를 적절하게 보정하는 전처리 작업을 자동화했습니다.

데이터를 훈련에 적합한 형태로 변환하는 전처리는 학술적인 측면에서 의미가 크지 않을 수는 있으나, 모델 성능을 높이고 학습에 걸리는 시간을 줄이는 데 유효한 영향을 끼칩니다.

예를 들어, [표 4]의 Pedro와 Decal 데이터셋에 포함된 이미지 크기는 제각기 다릅니다. 이미지 크기가 가변적이면 GPU의 데이터 병렬 처리 속도는 떨어지게 됩니다. AutoML 연구팀은 이미지의 비율을 유지하면서 크기를 재조정하는 자동화 알고리즘을 통해 GPU의 병렬성을 극대화하는 적절한 값을 찾았습니다.

(3) Fast AutoAugment 활용

이미지 특성상 해결하려는 문제에 따라 적합한 데이터 전처리 방식이 제각기 다를 수 있습니다. 예를 들어, 위성 사진에서 강 또는 숲을 구분하는 문제에서는 이미지 색을 임의로 바꾸면 안 됩니다. 파란색 강 또는 초록색 숲을 제대로 인식하지 못할 수 있어서죠. 반면, 글자를 인식하는 문제에서 색깔은 크게 중요한 이슈는 아닙니다. 대신에 글자의 형상을 왜곡할 가능성이 높은 기법(좌우 또는 상하로 뒤집기)은 적당하지 않습니다.

이처럼 통계적으로 분석할 수 없는 이미지 속성값을 정규화하는 데 어그먼테이션(augmentation)이 활용될 수 있습니다. 어그먼테이션은 훈련 데이터에 인위적인 변화를 가하는 방법론을 말합니다.

보통은 훈련 데이터를 대량 확보하려는 목적으로 활용됩니다. 학습 데이터가 많을수록 딥러닝 모델의 성능이 높아지기 때문이죠. 비전(vision) 문제를 해결하는 현재 최고 성능의 방법론이 라벨링 데이터를 새로 확보하거나 데이터 어그먼테이션 정교화에 주력하는 이유가 바로 여기에 있습니다.

하지만 경험과 지식을 갖춘 머신러닝 엔지니어조차 데이터에 적합한 어그먼테이션 기법을 탐색하는 데 큰 비용과 시간을 쏟아붓습니다. 데이터 취득 방식에 따른 데이터 속성을 심층적으로 분석하는 데 필요한 전문성을 갖추는 일에도 어려움이 따르죠. 심지어 이렇게 많은 시간과 비용을 들여서 찾은 어그먼테이션 기법이 최고라는 확신도 없습니다. 더구나 이번 대회에서처럼 대상 데이터를 분석할 수 없는 상황에서는 최적의 어그먼테이션 기법을 탐색하기는 불가능에 가까운 일입니다.

카카오브레인 AutoML 연구팀은 자사가 고안한 알고리즘인 Fast AutoAugment를 활용했습니다. 머신러닝 국제학회인 신경정보처리시스템학회(NeurIPS) 2019에 채택된 Fast AutoAugment는 이미지 데이터셋에 가장 적합한 어그먼테이션 정책을 자동으로 찾아주는 알고리즘인 AutoAugment를 개선한 버전으로, 연산에 드는 GPU 자원 수를 획기적으로 줄이고, 병렬 계산을 고도화했습니다.

AutoML 연구팀은 이 알고리즘이 탐색할 공간(search space)을 줄인다면 적절한 어그먼테이션 기법 탐색에 드는 시간을 대폭 줄일 수 있겠다고 판단했습니다. 이에 CIFAR-10과 CIFAR-100 데이터셋을 상대로 성능 향상에 큰 영향을 미치는 속성값과 그 범위를 찾았습니다. 그 결과, 최종 모델의 성능을 높이는 데 기여하는 데이터 어그먼테이션 기법을 탐색할 수 있었습니다.

[ 그림 5 ] Fast AutoAugment를 적용하면 그렇지 않았을 때보다 정확도가 상대적으로 높다는 사실을 확인해볼 수 있다.

(4) 초매개변수[4] 탐색

계산 시간이 충분한 일반적인 상황에서는 주어진 데이터셋에서 최고의 성능을 내는 초매개변수 탐색을 목표로 합니다. 반면, AutoCV에서처럼 계산 시간에 제약이 따를 경우에는 임의의 데이터에서 적정수준의 성능을 내는 초매개변수 탐색이 관건입니다. 카카오브레인 AutoML 연구팀은 처음 본 데이터에서도 잘 작동하는 일반화된 모델을 획득하고자 모든 (공개) 데이터셋에서 최저 성능을 내지 않는 초매개변수 탐색을 우선순위로 두었습니다.

(5) 프로그램 최적화

카카오브레인 AutoML 연구팀은 대회 참가 초반부터 1등이라는 좋은 성과를 얻었습니다. 하지만 단순히 몇 점 차이로 1등을 기록하는 게 의미가 없다고 판단한 연구팀은 객관적인 척도를 기준으로 2등과 격차를 벌리는 데 집중했습니다. 주최 측이 GPU를 1개, 모델 학습 및 정답 추론에 최대 20분을 쓸 수 있다는 제약을 둔 만큼, AutoML 연구팀은 학습에 걸리는 시간을 줄이고 프로그램 실행 속도를 높이는 프로그램 최적화 기법에 대해 고민했습니다.

[ 표 5 ] AutoCV 참가 2주 만에 거둔 성과를 나타낸 리더보드 (피드백 데이터 기준)

모델 학습 또는 검증, 추론에 필요한 데이터를 준비하는 과정은 다음과 같습니다. 하드디스크에 저장된 데이터를 CPU로 불러옵니다. CPU에서 전처리한 데이터의 병렬 처리를 극대화하고자 여러 개의 데이터를 묶어서(batch) GPU로 복사합니다. 그다음 GPU가 데이터를 학습하거나 추론하는 데 활용하는 거죠. 문제는 이 방식은 GPU 사용률 저하에 영향을 줄 수 있다는 데 있습니다. 장치간 데이터를 옮기는 과정에 상당한 시간이 소모될 뿐만 아니라, CPU 내 전처리가 지연되거나 GPU와 CPU 메모리를 동기화하는 과정에서 GPU가 쉬는 시간이 늘어나게 됩니다.

이에 카카오브레인 AutoML 연구팀은 데이터셋을 처음 사용하는 시점에 GPU 메모리에 전처리한 데이터를 적재해두었습니다. 그런 뒤 필요할 때마다 GPU 메모리에서 데이터를 꺼내씀으로써 데이터셋 입출력 및 전처리에 드는 시간을 크게 줄일 수 있었습니다. 이는 모델 성능 향상에도 도움이 됩니다. 제한된 시간 내에 모델 검증 횟수를 늘림으로써 모델 훈련이 제대로 이뤄지고 있는지를 더 자주 평가할 수 있기 때문입니다.


성능 척도와 최종 결과

AutoCV에서는 여타 다른 이미지 기반 머신러닝 대회에서처럼 참가자 중 가장 높은 성능(추론 정확도)을 내는 게 중요하지 않습니다. 주어진 자원만을 활용하면서도 가장 빠르게 높은 성능 달성이 핵심 과제입니다. 주최 측은 시간 대비 가장 높은 성능을 내는 모델을 가려내기 위해 자체 성능 평가 척도를 설계했습니다.

주최 측은 다중 클래스(multi-class) 또는 다중 라벨(multi-label) 분류 문제에 자주 사용되는 AUC(Area Under Curve)를 활용했습니다. AUC는 위양성(FP)[5]과 진양성(TP)[6]의 비율을 표현한 ROC 그래프 곡선 아래 면적을 가리킵니다. 이 대회에서는 시간에 따른 정규화된 AUC를 표현한 그래프의 곡선 아래 면적인 ALC(Area Learning Curve)를 성능 평가 척도로 내세웠습니다. 이는 같은 성능이더라도 이를 더 빠르게 달성한 알고리즘을 더 높게 평가하겠다는 의미로 해석할 수 있습니다.

[ 그림 6 ] AutoML 종합 1위부터 3위의 팀이 달성한 ALC 점수를 그래프로 표현했다.

그 결과, 카카오브레인 AutoML 연구팀은 참가자와 큰 성능 격차를 벌리며 5개 문제 중에서 3개에서 1위, 1개에서 2위, 1개에서 17위하며 AutoCV 대회 종합 1위에 올랐습니다.

다만 Saturn에서는 상당히 높은 AUC(0.994)와 ALC(0.8309)를 달성했음에도 불구, 등수에서는 밀렸습니다. 참가자가 제출한 모델 대다수의 최종 성능 사이 격차가 거의 나지 않았기 때문입니다. 백운혁 연구원은 변별력이 낮은 문제에서는 텐서플로(Tensorflow)[7]와 파이토치(Pytorch)[8] 라이브러리를 동시에 사용했던 게 큰 영향을 미친 것으로 보인다고 분석했습니다.

대회에 참가하려면 텐서플로 코드를 사용해야 하는데, 파이토치 개발 환경에 익숙한 백운혁 연구원은 텐서플로 기반의 문제와 데이터셋 형식을 모두 파이토치로 구현했습니다. 백 연구원은 “텐서플로에 적응하는 시간보다 파이토치로 코드를 재작성하는 시간이 더 적게 걸릴거라 판단했다”고 설명했습니다.

문제는 텐서플로 형식의 데이터를 파이토치 형식으로, 이를 다시 텐서플로 형태로 변환하는 과정에서 시간적 손해를 봤다는 데 있습니다. 텐서플로와 파이토치 라이브러리가 각각 CPU와 메모리를 차지하느라 자원을 효율적으로 사용하지 못한 이유로도 시간 지연이 일어났을 것으로 보입니다.

[ 그림 7 ] 주최 측은 AutoCV2에서 3위 안에 든 팀의 알고리즘 전략을 공개했다. 2등과 3등 팀 모두 카카오브레인 AutoML 연구팀이 고안한 기법을 차용했다.

역설적이게도 카카오브레인 AutoML팀은 시간 지연이라는 손해를 본 파이토치 코드로 AutoCV와 AutoCV2에서 각각 종합 1위에 올랐습니다. 난이도가 높은 문제에서는 파이토치에 기반을 둔 다양한 기법이 성능 향상에 유효한 영향을 미쳤던 덕분입니다. 흥미로운 또 다른 사실은 AutoCV2에서 2등과 3등 팀의 코드가 카카오브레인 AutoML 연구팀이 제출한 코드에 기반을 두었다는 데 있습니다.

“AutoCV2가 오픈되자 많은 참가자가 파이토치 코드 제공 여부에 대해 많은 문의를 했던 것으로 보입니다. 그래서 주최 측은 AutoCV 대회에서 1위를 차지한 팀이 제공한 코드가 파이토치 기반으로 작성됐다는 사실을 공개했고요. 그 덕분에 카카오브레인 코드를 활용한 팀들이 연이어 2위, 3위를 차지했던 것으로 보입니다. 우리 코드의 우수한 잠재력을 검증받은 것 같아서 내심 기분이 좋았습니다.”


향후 연구 방향 및 기대 성과

AutoML 대회는 모델의 성능을 평가하는 기준과 시간 등 카카오브레인 AutoML 연구팀이 지향하는 목표와는 확연히 다른 부분이 많았습니다. 그럼에도 AutoML 연구팀이 이 대회에 참가한 이유는 하나의 모델로 다양한 종류의 데이터셋을 평가하는 실험 환경과 이를 평가하는 방식 등이 내부 연구 환경 개선에 유의미한 영향을 미칠 거라 판단했기 때문입니다.

“특정 데이터셋에서 잘 돌아가는 모델 개발, 매우 중요합니다. 그래야 모델 간 성능 평가도 하고 이 분석 결과를 토대로 논문을 쓸 수 있죠. 하지만 실제로 상업적인 가치가 있느냐고 봤을 때 이런 모델은 가치가 높다고는 볼 수 없습니다. 이 세상에 존재하는 모든 데이터에 잘 적응하는 모델을 일일이 만드는 건 한계가 있으니까요. 대회에 참가하면서 여러 데이터셋에서도 잘 동작하는 범용 모델 개발이 필요하다는 생각에 확신을 얻게 됐습니다.”

카카오브레인 AutoML 연구팀은 새롭게 정비한 10종의 데이터셋 중 특정 데이터에서는 최고의 성능, 나머지에서는 상대적으로 안정적인 성능을 내는 알고리즘 연구 개발을 계획하고 있습니다. 더불어 딥러닝 분산 학습을 위한 GPU 플랫폼인 브레인 클라우드를 활용해 사람의 개입을 최소화하며 다양한 문제를 스스로 해결하는 AutoML 연구를 지속한다는 계획입니다.


참고
[1] 마이크로소프트 리서치(Microsoft Research)가 개발한 ResNet은 범용적으로 쓰이는 분류 모델이다.
[2] 1000개 종류의 128만 1167장의 이미지로 구성된 데이터셋이다.
[3] 입력 데이터에 특정 변환을 가하는 작업을 가리킨다.
[4] 필터 수나 모델의 층수, 학습률 등 전문가가 머신러닝 알고리즘에서 직접 조정하는 값
[5] 정답을 오답이라고 분류할 확률
[6] 정답을 정답이라고 분류할 확률. 민감도(sensitivity)라고도 부른다.
[7] 구글이 만든 딥러닝 라이브러리. 여러가지 언어를 지원하며 그 중 파이선(Python)이 메인이다.
[8] 파이선 기반 딥러닝 라이브러리
이 글을 쓴 사람들
samantha.lee
이수경 | 글,정리
지난 2016년 3월 알파고와 이세돌 9단이 펼치는 세기의 대결을 취재한 것을 계기로 인공지능 세계에 큰 매력을 느꼈습니다. 인공지능을 알고 싶어하는 사람들을 위한 콘텐츠를 쓰고자 카카오브레인에 합류했습니다. 현재는 분야별 인공지능 전문가와 함께 기술 콘텐츠를 생산하는 재미에 푹 빠져 있습니다. 인공지능을 만드는 사람들의 이야기와 인공지능이 바꿀 미래 사회에 대한 글은 누구보다 쉽고, 재미있게 쓰는 사람이 되고 싶습니다.
clint.b
백운혁 | 기술감수
전공보다 비전공에 관심이 많으며, 신기술에 더 관심이 많은 야행성 개발자 클린트입니다. 본디 공학적으로 문제 해결하는 것을 즐겨했지만, 사랑스러운 딸의 성장과정을 통해 인문학적 감각마저 함께 성장하고 있지요. 카카오브레인에서는 이를 바탕으로 둘 사이에 균형을 가지고 AI를 연구하고 있습니다.