지난 달, 구글 브레인 팀에서는 텐서플로우를 통해 확산된 딥러닝의 효율을 더욱 효과적으로 증가시키고자 Tensor2Tensor (이하 T2T) 라이브러리를 공개했습니다. T2T는 딥러닝 모델 훈련을 간소화하여 개발자의 머신러닝에 관한 구축과 학습을 좀 더 효율적으로 할 수 있습니다.

지난 한 해 구글에서 제공하는 텐서플로우는 개발자들 사이에서 강력한 딥 러닝 툴킷으로 자리잡았으며, 현재 많은 딥러닝을 이용한 연구들 또한 많은 부분 텐서플로우를 이용하여 구현되었습니다. 하지만 이렇게 효과적인 라이브러리임에도 불구하고 모델을 학습시키고 구축하는 것은 딥러닝의 단점으로 여전히 남아있었으며, 다른 연구에서 사용된 데이터셋을 자신의 학습 모델에 적용하여 비교하는 것조차 매우 큰 난제로 남아있었습니다.

T2T는 이를 효과적으로 개선하고자 하는 파이썬 기반 라이브러리로, 개발자는 텐서플로우 모델에 사용된 핵심 요소를 지정하고 이들 간의 관계를 정의할 수 있습니다.

T2T의 핵심 요소는 다음과 같습니다. (출처: http://www.itworld.co.kr/news/105312)
- Data-sets : T2T에는 학습을 위한 여러가지 일반 데이터세트가 내장되어 있다. 사용자는 개별 워크플로우에 새로운 데이터세트를 추가하거나 끌어오기를 요청해 핵심 T2T 프로젝트에 추가할 수 있다.
- Learning : 음성인식과 같은 것이 어떤 종류의 작업인지를, 그것으로 생성되는 데이터 종류가 어떤 것인지 설명한다. 예를 들어, 이미지 인식 시스템은 이미지들을 가져와 텍스트 레이블로 돌려준다.
- Model architecture : 일반적으로 많이 사용되는 모델은 이미 T2T에 등록되어 있지만, 사용자는 새롭게 추가할 수 있다.
- Hyper-parameters : 학습 프로세스를 제어하는 다양한 설정 세트를 만들 수 있다. 그래서 사용자는 필요할 때마다 그것들을 교환하거나 배치할 수 있다.
- Optimizer : 실제 학습 바이너리에 전달된 파라미터를 개별적으로 지정할 수 있다.

T2T의 장점을 꼽자면 크게 두 가지로 나눌 수 있습니다. 
첫째로는, 모델 구축에 대한 간소화입니다. T2T는 최고의 성능을 낼 수 있는 모델의 디폴트 값이 설정되어있으므로 변경 없이 효과적으로 사용할 수 있으나, 사용자들의 상황과 문제 해결을 위해 위에 소개한 것과 같이 각각 적합한 값을 설정할 수 있습니다. 본 라이브러리를 사용할 경우, 이미 내장되어있는 모델과 데이터셋들을 재사용 및 수정을 통해 효과적인 연구를 진행할 수 있으며 이를 새로운 연구로 확장시키는데 효과적일 것이라 예상합니다. 예를 들어, 기존에 저장되어있는 모델을 불러온 후 optimizer, criterion, model extension등 다양한 작업을 단순히 추가시키는 작업을 통해 연구를 확장할 수 있습니다.
둘째로는, 모듈 기반의 멀티태스킹 학습입니다. 위에서 설명한 것과 같이 다양한 모듈을 통해 미리 구축해놓은 구조를 사용하여 저희 분야에서 많이 사용되는 LSTM의 구조조차 수십 줄을 사용해서 쉽게 구축할 수 있습니다. 또한 멀티태스킹의 측면에서 보면 T2T는 다양한 도메인에서 동일한 하나의 모델을 학습시킬 수 있으며, 이뿐만 아니라 MultiModel에서 ImageNet(이미지 분류), MS COCO(이미지 자막), WSJ(음성 인식), WMT(번역) 등의 다양한 데이터셋을 함께 학습하더라도 좋은 성능을 보이는 것을 확인했습니다.

지금까지 새로운 실험을 진행하기 위해 다양한 논문에 대한 실험을 검증하고 이의 한계를 확인 및 개선점을 알아보기 위해 매우 많은 노력과 시간을 들였었는데 T2T를 효과적으로 사용하게 된다면 이와 같은 비용을 최소화시켜 연구의 능률을 증가시킬 수 있지 않을까 생각합니다.

profile