한국의 개발자들을 위한 Google for Developers 국문 블로그입니다.
TensorFlow Lattice: 사전 지식을 기반으로 한 유연성 강화
2017년 10월 30일 월요일
<블로그 원문은
여기
에서 확인하실 수 있으며, 블로그 번역 리뷰는
최성준(Machine Learning GDE)
님이 참여해 주셨습니다.>
게시자: Maya Gupta(연구원), Jan Pfeifer(소프트웨어 엔지니어), 유승일(소프트웨어 엔지니어)
(
Google 오픈소스 블로그
에도 교차 게시됨)
기계 학습은 유연성이 아주 뛰어난 모델을 사용하여 복잡한 입/출력 관계를 파악함으로써 자연어 처리, 컴퓨터 비전 및 추천 시스템을 비롯한 많은 응용 분야에서 엄청난 발전을 이루었습니다. 하지만 '교통량만 더 많아졌고 다른 조건은 모두 동일한 경우 예상되는 도로 주행 시간이 증가한다'와 같이 잘 알려진 전역적인 관계를 따르는 의미상 유효한 입력 데이터에 대한 문제는 여전히 해결해야 할 과제로 남아 있습니다.
DNN
및
랜덤 포리스트
와 같은 유연한 모델은 이러한 관계를 학습하지 못할 수 있으며, 이로 인해 모델이 훈련하는 데 활용한 사례와 다른 표본 분포에서 추출된 사례를 제대로 일반화하지 못할 수 있습니다.
오늘, 우리는 사용하기 쉽게 사전 빌드된
TensorFlow Estimator
를 한데 모은
TensorFlow Lattice
와 자신만의 격자(Lattice) 모델을 빌드할 수 있는
TensorFlow
연산자를 소개해 드리고자 합니다. 격자는 다차원적으로 보간된 순람표(자세한 내용은 [1~5] 참조)이며, 기하학 교과서 뒷면에 나와 있는 사인 함수의 근사값을 제공하는 순람표와 유사합니다. 우리는 임의적으로 유연한 관계를 근사화하고 더욱 효과적으로 일반화하기 위해 지정하는
단조적 관계
를 충족시키기 위해 다양한 입력이 가능한 순람표 구조를 활용하고 있습니다. 즉, 순람표 값은 훈련 사례에서 손실을 최소화하도록 훈련되지만, 그 외에도 인접 값은 입력 공간에서 주어진 방향을 따라서만 증가(혹은 감소)하도록 제한되어 해당 방향으로 모델 출력이 증가(혹은 감소)하도록 합니다. 중요한 점은, 순람표 값들 사이에서 보간이 이루어지므로 예측 값이 격자 모델에 대해서 매끄럽게 제한되어 테스트 시 거짓된 예측을 방지하는 데 도움이 된다는 점입니다.
격자 모델이 도움이 되는 이유
사용자에게 근처의 커피숍을 추천하는 시스템을 설계한다고 가정해 보겠습니다. 여러분은 모델이 '두 카페가 같을 경우, 더 가까운 곳을 선호한다'라는 점을 학습하기를 원할 것입니다. 아래에서는 근처에 많은 커피숍이 있는 도쿄(보라색) 지역의 사용자에 대한 훈련 데이터에 정확히 부합하는 유연한 모델(분홍색)을 보여줍니다. 분홍색으로 표시된 유연한 모델은 노이즈가 있는 훈련 사례에 과대 적합하고 카페가 가까울수록 좋다는 전반적인 경향을 놓칩니다. 카페가 서로 훨씬 멀리 떨어져 있는 텍사스에서 얻은 테스트 사례(파란색)에 대한 순위를 매기는 데 이 분홍색 모델을 사용할 경우 모델이 가끔 더 멀리 떨어져 있는 카페를 선호하는 것으로 이상하게 동작합니다.
다른 모든 입력이 동일하게 유지되고 거리만 달라지는 모델의 특징 공간을 구분해야 합니다. 도쿄에서 얻은 훈련 사례(보라색)에 정확히 부합하는 유연한 함수(분홍색)는 10km 떨어진 카페가 5km 거리에 있는 동일한 카페보다 더 좋다고 예측합니다. 이 문제는 카페가 더 넓은 지역에 걸쳐 퍼져 있는 텍사스의 사례(파란색)를 통해 여기서 제시된 바와 같이, 데이터 분포가 달라진 경우 테스트를 수행할 때 더 명백하게 드러납니다.
유연한 단조 함수(녹색)는 위의 그림에 제시된 유연한 비단조 함수(분홍색)와 비교했을 때 훈련 사례에 정확히 부합할 뿐만 아니라 텍사스 사례에 대해서도 일반화할 수 있습니다.
이와 대조적으로, 도쿄에서 얻은 동일한 사례를 통해 훈련된 격자 모델은 그러한 단조적 관계와 유연한 단조 함수의 결과(녹색)를 충족시키는 데 제약이 있을 수 있습니다. 녹색 선은 도쿄의 훈련 사례에 정확하게 부합할 뿐 아니라, 더 멀리 있는 카페를 선호하지 않음으로써 텍사스 사례에 대해서도 올바르게 일반화 작업을 수행합니다.
일반적으로 커피의 질, 가격 등 각 카페에 대한 다양한 입력 데이터가 있을 수 있습니다. 유연한 모델은 훈련 데이터가 희소성을 띄고 노이즈가 있는 특징 공간의 일부에서 특히 '다른 입력 데이터가 모두 동일하다면 가까울수록 좋다'라는 형태의 전역적인 관계를 포착하기 어렵습니다. 사전 지식(즉, 입력이 예측에 미치는 영향)을 포착하는 기계 학습 모델이 실제로 더 잘 작동하며, 디버깅하기가 더욱 쉽고 해석 가능성이 더 높습니다.
사전 빌드된 Estimator
Google에서는
TensorFlow Estimator
와 같이 다양한 격자 모델 아키텍처를 제공합니다. 우리가 제공하는 가장 단순한 Estimator는
보정된 선형 모델
이며, 이는 1차원 격자를 사용하여 각 특징에 대한 최적의 1차원 변환을 학습한 후 보정된 모든 특징을 선형적으로 결합합니다. 이 모델은 훈련 데이터세트가 매우 작거나 복잡한 비선형 입력 상호 작용이 없는 경우 제대로 작동합니다. 또 다른 Estimator는
보정된 격자 모델
입니다. 이 모델은 데이터세트에서 복잡한
비선형 상호 작용
을 나타낼 수 있는 2계층 단일 격자 모델을 사용하여 보정된 특징을 비선형적으로 결합합니다. 보정된 격자 모델은 보통 2~10개의 특징이 있는 경우에 적합합니다. 단, 10개 이상의 특징이 있는 경우에는 사전 빌드된 앙상블 아키텍처를 사용하여 훈련할 수 있는 보정된 격자의 앙상블로 최적의 결과를 얻을 것으로 예상합니다. 단조 격자 앙상블은 랜덤 포리스트[4]에 비해 0.3%~0.5%의 정확도 향상을 이룰 수 있으며, 새롭게 제공되는 이러한 TensorFlow Lattice Estimator는 단조성[5]을 갖는 학습 모델에서 이전의 최첨단 기술에 비해 0.1%~0.4%의 정확도 향상을 이룰 수 있습니다.
직접 빌드해 보세요
더욱 심층적인 격자 네트워크를 사용하여 실험하거나 딥 러닝 신경망 또는 기타 TensorFlow 아키텍처의 일부로 부분적 단조 함수를 사용하여 연구하고 싶으실 수도 있습니다. 이를 위한 기본 구성 요소로서 보정자, 격자 보간 및 단조성 예측을 위한 TensorFlow 연산자를 제공합니다. 예를 들어, 아래 그림은 9계층 심도의 격자 네트워크[5]를 나타낸 것입니다.
보정자 계층(신경망에서 ReLU의 합과 같이 동작함)을 사용하여 격자 앙상블 및 선형 임베딩 계층을 교대로 사용하는 9계층 심도 격자 네트워크 아키텍처[5]의 예입니다. 파란색 선은 단조 입력에 해당하며, 계층별로 유지되므로 이런 식으로 전체 모델에 대해 유지됩니다. 계층마다 구분이 가능하므로 TensorFlow Lattice를 사용하여 이 아키텍처는 물론, 임의의 다른 아키텍처도 구성할 수 있습니다.
TensorFlow Lattice에서는 모델의 유연성과 표준
L1
및
L2
정규화를 선택할 수 있는 옵션과 더불어 다음과 같은 새로운 정규화 기능도 제공합니다.
위에서 설명한 것처럼 입력 선택에 대한 단조성 제약 조건[3]
학습된 함수를 더욱 평활화하기 위해 격자에 대해 이루어지는 라플라시안 정규화[3]
불필요한 비선형 특징 상호작용을 억제하는 왜곡 정규화[3]
TensorFlow Lattice가 의미상 유효한 입력 데이터를 다루는 보다 큰 커뮤니티에서 유용하게 활용될 수 있기를 바랍니다. TensorFlow Lattice는 정책 목표를 충족시키고 현업에서 활동하는 전문가들이 보유하고 있는 사전 지식을 활용할 수 있게 지원하기 위해 기계 학습 모델 제어와 해석 능력 향상을 목표로 대규모로 진행되는 연구의 일환으로 개발되었습니다. 여러분과 이에 대한 정보를 공유할 수 있어 정말 기쁩니다. 본격적으로 시작하려면 Google의
GitHub 저장소
와
가이드
를 확인하시고 여러분의 의견을 들려주시기 바랍니다.
감사의 말
팀 전체의 막대한 노력이 있었기에 TensorFlow Lattice를 개발하고 오픈소스로 제공할 수 있었습니다. 이 프로젝트에 참여해 주신 Andrew Cotter, Kevin Canini, David Ding, Mahdi Milani Fard, Yifei Feng, Josh Gordon, Kiril Gorovoy, Clemens Mewald, Taman Narayan, Alexandre Passos, Christine Robson, Serena Wang, Martin Wicke, Jarek Wilkiewicz, Sen Zhao, Tao Zhu 등, 모든 관계자께 감사의 인사를 드리고 싶습니다.
참고 문헌
[1]
Lattice Regression
,
Eric Garcia, Maya Gupta, Advances in Neural Information Processing Systems (NIPS), 2009
[2]
Optimized Regression for Efficient Function Evaluation
,
Eric Garcia, Raman Arora, Maya R. Gupta, IEEE Transactions on Image Processing, 2012
[3]
Monotonic Calibrated Interpolated Look-Up Tables
,
Maya Gupta, Andrew Cotter, Jan Pfeifer, Konstantin Voevodski, Kevin Canini, Alexander Mangylov, Wojciech Moczydlowski, Alexander van Esbroeck, Journal of Machine Learning Research (JMLR), 2016
[4]
Fast and Flexible Monotonic Functions with Ensembles of Lattices
,
Mahdi Milani Fard, Kevin Canini, Andrew Cotter, Jan Pfeifer, Maya Gupta, Advances in Neural Information Processing Systems (NIPS), 2016
[5]
Deep Lattice Networks and Partial Monotonic Functions
,
Seungil You, David Ding, Kevin Canini, Jan Pfeifer, Maya R. Gupta, Advances in Neural Information Processing Systems (NIPS), 2017
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
12월
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