한국의 개발자들을 위한 Google for Developers 국문 블로그입니다.
AdaNet 소개: 학습 보장을 이용한 빠르고 유연한 AutoML
2019년 1월 24일 목요일
<블로그 원문은
이곳
에서 확인하실 수 있습니다>
게시자: Charles Weill, Google AI 소프트웨어 엔지니어(뉴욕)
다양한 머신러닝(ML) 모델 예측 결과를 조합하는 기술인
앙상블 학습
은 최상의 성능 달성을 위해 신경망과 함께 널리 사용되는데, 이를 바탕으로 풍부한 기록과 이론적 보장을 활용해
Netflix Prize
및 다양한
Kaggle 경진 대회
와 같은 도전에서 성공을 거둘 수 있습니다. 그런데 실제로는 훈련 시간이 길어 그다지 많이 사용되지는 않으며, ML 모델 후보를 선택할 때 해당 분야에 대한 고유의 전문성이 요구됩니다. 하지만 TPU와 같은 뛰어난 전산 처리 능력을 갖춘 전문 딥 러닝 하드웨어를
더욱 손쉽게 바로 사용할 수 있게 됨으로써
, 머신러닝 모델이
더욱 크게 성장
할 것이며 앙상블이 더욱 큰 비중을 차지하게 될 것입니다. 신경망 아키텍처를 통해 자동으로 검색하면서 최선의 선택 사항을 고품질 모델에 결합하는 방법을 학습하는 도구를 상상해 보세요.
오늘 최소한의 전문가 개입만으로 고품질 모델을 자동으로 학습하기 위한 경량의
TensorFlow
기반 프레임워크인
AdaNet
을 공유하게 되어 더없이 기쁩니다. AdaNet은 우리가 최근에 힘을 쏟고 있는
강화 학습
및
진화
기반 AutoML을 토대로 구축된 프레임워크로, 빠르고 유연하면서도 학습 보장을 제공합니다. 중요한 점은, AdaNet이 신경망 아키텍처를 학습하기 위한 일반적인 프레임워크뿐 아니라 훨씬 더 나은 모델을 얻기 위해 앙상블을 이루는 방법을 학습하기 위한 프레임워크도 제공한다는 사실입니다.
AdaNet은 사용하기 쉽고 고품질 모델을 생성하므로, ML 현업 전문가가
최적의 신경망 아키텍처를 선택
하고 하위 네트워크의 앙상블로서 신경망 아키텍처를 학습하기 위한 적응형 알고리즘을 구현하는 데 통상적으로 소요되는 시간을 절약할 수 있습니다. AdaNet은 다양한 깊이와 폭의 하위 네트워크를 추가하여 다양한 앙상블을 만들고 성능 향상과 매개변수의 개수를 적절히 절충할 수 있습니다.
신경망의 앙상블을 순응적으로 성장시키는 AdaNet. AdaNet은 반복할 때마다 각 후보에 대한 앙상블 손실을 측정하여 다음 반복으로 이동하기에 최상의 후보를 선정합니다.
빠르고 사용하기 쉬움
AdaNet은 서비스 제공을 위해 훈련, 평가, 예측 및 내보내기를 캡슐화하여 머신러닝 프로그래밍을 대폭 간소화하는
TensorFlow Estimator
인터페이스를 구현합니다. AdaNet은
TensorFlow Hub 모듈
,
TensorFlow Model Analysis
및
Google Cloud의 Hyperparameter Tuner
와 같은 오픈소스 도구와 통합됩니다. 분산 훈련 지원으로 훈련 시간이 상당히 단축되고 사용 가능한 CPU 및 액셀러레이터(예: GPU)와 함께 선형적으로 스케일링됩니다.
CIFAR-100에서 훈련 단계(x축)에 따른 AdaNet의 정확도(y축). 파란색 선은 훈련 세트에 대한 정확도이고 빨간색 선은 테스트 세트에 대한 성능입니다. 1백만 단계마다 새로운 하위 네트워크가 훈련을 시작하고, 결국 앙상블의 성능을 높여줍니다. 회색 선과 녹색 선은 새 하위 네트워크를 추가하기 전 앙상블의 정확도입니다.
TensorBoard
는 훈련 중에 모델 측정항목을 시각화하기 위한 최상의 TensorFlow 기능 중 하나이므로, AdaNet은 하위 네트워크 훈련, 앙상블 컴퍼지션 및 성능을 모니터링하기 위해 TensorBoard와 완벽하게 통합됩니다. AdaNet은 훈련을 마치면
TensorFlow Serving
과 함께 배포 가능한 SavedModel을 내보냅니다.
학습 보장
신경망의 앙상블을 빌드하려면 여러 가지 문제를 해결해야 합니다. 예컨대 고려해야 할 최상의 하위 네트워크 아키텍처는 무엇일까요? 같은 아키텍처를 재사용하는 것이 최선일까요, 아니면 다양성을 장려하는 것이 최선일까요? 매개변수가 더 많은 복잡한 하위 네트워크가 훈련 세트에 대해 더 나은 성능을 발휘하는 경향이 있겠지만, 복잡성이 증가하므로 알지 못하는 데이터에 대해 이를 섣불리 일반화할 수는 없습니다. 이러한 문제는 모델 성능 평가에서 비롯됩니다. 훈련 세트에서 분할되는 홀드아웃 세트에 대한 성능을 평가할 수 있지만, 그 과정에서 신경망 훈련을 위해 사용할 수 있는 예의 개수가 줄어듭니다.
그 대신, ('
AdaNet: Adaptive Structural Learning of Artificial Neural Networks
',
ICML 2017
에 제시된) AdaNet의 접근 방식은 훈련 세트에 대한 앙상블의 성능과 이를 알지 못하는 데이터에 대해 일반화하는 능력 사이에서 균형을 유지하며 절충한다는 목표를 최적화하는 것입니다. 어떤 후보 하위 네트워크가 앙상블의 일반화 능력에 미치는 영향보다 더 많이 앙상블의 훈련 손실을 개선할 때만 앙상블이 해당 하위 네트워크를 포함한다는 것이 직관적 통찰입니다. 이는 다음 사항을 보장합니다.
앙상블의 일반화 오류가 훈련 오류와 복잡성에 의해 한정됩니다.
우리는 이 목표를 최적화함으로써 이 한계를 직접적으로 최소화하고 있습니다.
이 목표를 최적화하는 실용적인 이점은 앙상블에 추가할 후보 하위 네트워크를 선택하기 위한 홀드아웃 세트의 필요성을 제거한다는 점입니다. 이는 하위 네트워크를 훈련하기 위해 더 많은 훈련 데이터를 사용할 수 있도록 한다는 추가적 이점이 있습니다. 자세한 내용은
AdaNet 목표에 대한 가이드
를 살펴보세요.
확장성
우리는 연구 및 생산 용도로 모두 유용한 AutoML 프레임워크를 만드는 관건이 합리적인 기본값을 제공할 뿐 아니라 사용자가 자체적인 하위 네트워크/모델 정의를 적용해 볼 수 있도록 하는 것이라 믿습니다. 따라서 머신러닝 연구자, 현업 전문가, 애호가가 모두
tf.layers
와 같은 상위 레벨 TensorFlow API를 사용하여 자체적인 AdaNet
adanet.subnetwork.Builder
를 정의해 보실 것을 권장합니다.
TensorFlow 모델을 시스템에 이미 통합한 사용자는 TensorFlow 코드를 AdaNet 하위 네트워크로 손쉽게 변환하고
adanet.Estimator
를 사용하여 모델 성능을 향상하는 동시에 학습 보장을 받을 수 있습니다. AdaNet은 후보 하위 네트워크의 정의된 검색 공간을 탐색하고 하위 네트워크를 조화시키는 방법을 학습할 것입니다. 예를 들어, 우리는
NASNet-A CIFAR 아키텍처
의
오픈소스 구현
을 선택하여 하위 네트워크로 변환하고 8회의 AdaNet 반복 후 CIFAR-10의 최신 결과를 바탕으로 개선했습니다. 게다가, 우리의 모델은 다음과 같이 더 적은 수의 매개변수로 이러한 결과를 성취합니다.
Zoph 외, 2018에 제시된 NASNet-A 모델의 성능과 CIFAR-10에 소규모 NASNet-A 하위 네트워크를 결합하기 위한 AdaNet 학습의 비교.
또한 사용자들에게 회귀, 분류 및 멀티태스크 학습 문제를 훈련하기 위해 기성 또는 맞춤형
tf.contrib.estimator.Heads
를 통해 AdaNet 목표의 일부로서 자체적인 맞춤 손실 함수를 사용할 것도 권장하는 바입니다.
사용자는
adanet.subnetwork.Generator
클래스를 확장하여 탐색할 후보 하위 네트워크의 검색 공간을 완전히 정의할 수도 있습니다. 사용자는 이를 통해 사용 가능한 하드웨어를 기반으로 검색 공간을 늘리거나 줄일 수 있습니다. 하위 네트워크의 검색 공간은 다양한 임의의 속도로 동일한 하위 네트워크 구성을 복제하기만 하면 간단하게 다양한 하이퍼 매개변수 조합으로 수십 개의 하위 네트워크를 훈련하고 AdaNet이 최종 앙상블에 포함할 하위 네트워크를 선택하도록 할 수 있습니다.
직접 AdaNet을 사용해보고 싶은 분은 우리의
Github 저장소
를 확인해보시고
가이드 노트북
의 안내에 따라 사용해보세요. 손쉽게 시작하실 수 있도록
조밀한 계층과 콘볼루션을 사용하는 작업 예제
를 몇 개 포함해 두었습니다. AdaNet은 계속 이어지는 연구 프로젝트이므로 자발적 기여를 환영합니다. AdaNet이 연구 커뮤니티에 어떤 도움이 될 수 있을지 설레는 마음으로 지켜보고 있습니다.
감사의 말
Corinna Cortes, Mehryar Mohri, Xavi Gonzalvo, Charles Weill, Vitaly Kuznetsov, Scott Yak, Hanna Mazzawi를 비롯한 핵심 팀원의 노고 덕분에 이 프로젝트를 진행할 수 있었습니다. 우리가 진행한 테스트 작업을 도와주신 Google의 Gus Kristiansen, Galen Chuang, Ghassen Jerfel, Vladimir Macko, Ben Adlam, Scott Yang 등 많은 공동작업자, 레지던트 및 인턴 사원 여러분께도 특별한 감사의 마음을 전합니다.
Contents
ML/Tensorflow
Android
Flutter
Web/Chrome
Cloud
Google Play
Community
Game
Firebase
검색
Tag
인디게임페스티벌
정책 세미나
창구프로그램
AdMob
AI
Android
Android 12
Android 12L
Android 13
Android 14
Android Assistant
Android Auto
Android Games
Android Jetpack
Android Machine Learning
Android Privacy
Android Studio
Android TV
Android Wear
App Bundle
bootcamp
Business
Chrome
Cloud
Community
compose
Firebase
Flutter
Foldables
Game
gdg
GDSC
google
Google Developer Student Clubs
Google Play
Google Play Games
Interview
Jetpack
Jetpack Compose
kotlin
Large Screens
Library
ma
Material Design
Material You
ML/Tensorflow
mobile games
Now in Android
PC
Play Console
Policy
priva
wa
wear
Wearables
Web
Web/Chrome
Weeklyupdates
WorkManager
Archive
2024
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2023
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2022
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2021
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2020
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2019
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2018
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2017
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2016
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2015
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2014
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2013
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2012
12월
11월
10월
9월
8월
7월
6월
5월
3월
2월
1월
2011
12월
11월
Feed