한국의 개발자들을 위한 Google for Developers 국문 블로그입니다.
손실 조건부 훈련으로 여러 손실 함수 최적화
2020년 5월 19일 화요일
작성자 : Alexey Dosovitskiy (Google Research 연구원)
원문은
여기
서
확인 가능하며 전태균
(ML GDE)님이 번역 리뷰에 참여해주셨습니다.
많은 머신러닝 애플리케이션에서 모델의 성능은 단 하나의 숫자로 요약해 나타낼 수 없는 대신에 여러 가지 질적 요소에 의존하며, 그중 몇 가지는 상호 배타적일 수도 있습니다. 예를 들어, 학습된
이미지 압축
모델은 그 화질을 극대화하면서도 압축된 이미지 크기는 최소화해야 합니다. 관심을 둔 모든 값이 위에서 예로 든 화질 및 압축비와 같이 본질적으로 상충한다는 이유나 단순히 제한적인 모델 용량 때문에 이런 값을 모두 동시에 최적화하기 불가능할 때가 많습니다. 그래서 실제로는 관심 있는 값들 사이의 균형을 유지할 방법을 결정해야 합니다.
이미지 압축 시 화질과 파일 크기 사이의 절충. 이미지 왜곡과 파일 크기를 모두 최소화하는 것이 이상적이겠지만, 이 두 가지 목표는 본질적으로 상충합니다.
다양한 속성 간의 균형을 유지해야 하는 모델을 훈련하는 기본적인 접근 방식은 이들 속성을 측정하는 항의 가중합인 손실 함수를 최소화하는 것입니다. 예를 들어 이미지 압축의 경우, 손실 함수는 이미지 재현 품질과 압축비에 상응하는 항 두 개를 포함합니다. 이들 항에 대한 계수에 따라, 이 손실 함수로 훈련하면 더욱 압축적이거나 화질이 더 뛰어난 이미지로 재현하는 모델을 얻게 됩니다.
모델의 여러 질적 요소 간에 다양한 절충 사항을 다루어야 할 경우(예: 화질 대 압축비), 기본적인 방법은 각각의 손실 함수에서 다양한 계수로 여러 개의 모델을 별도로 훈련하는 것입니다. 이를 위해서는 훈련과 추론 도중에 계속 여러 모델을 다루어야 하는데, 이는 무척 비효율적인 일입니다. 하지만 이런 별개의 모델은 전부 매우 밀접하게 관련된 문제를 해결하는데, 이는 모델 간에 일부 정보를 공유할 수 있음을 시사합니다.
ICLR 2020
에서 동시에 승인된 두 논문에서, 우리는 다양한 손실 절충 사항에 대해 여러 모델을 훈련하는 비효율성을 피하는 대신에 그 모든 것을 포괄하는 단일 모델을 사용하는 단순하면서도 폭넓게 적용할 수 있는 접근 방식을 제안합니다. 우리는 '
You Only Train Once: Loss-Conditional Training of Deep Networks
'라는 논문에서 이 훈련 방법을 일반적으로 체계화하여
variational autoencoders (VAEs)
와 이미지 압축을 포함한 여러 작업에 적용하는 한편, '
Adjustable Real-time Style Transfer
'라는 논문에서는 이 방법을
스타일 변환
에 적용하는 과정을 더 심층적으로 다룹니다.
손실 조건부 훈련
우리가 취한 접근 방식의 기본이 되는 아이디어는 각각의 계수 집합에 대해 모델을 훈련하는 대신, 손실 항의 계수 선택을 모두 포괄하는 단일 모델을 훈련하는 것입니다. 이런 목적을 달성하는 방법은 (1) 단일 손실 함수 대신 손실 분포에 대해 모델을 훈련하고, (2) 손실 항의 계수 벡터에 대해 모델 출력을 조절하는 것입니다. 이런 식으로, 추론 시점에 조절 벡터를 변화시켜 다양한 계수로 손실 함수에 상응하는 모델의 해 공간을 탐색할 수 있습니다.
아래 다이어그램에 이 훈련 절차가 표시되어 있는데, 스타일 변환 작업을 위한 예시입니다. 각 훈련 사례에 대해, 처음에는 손실 계수가 임의로 샘플링됩니다. 이렇게 샘플링된 손실 계수는 조절 네트워크를 통해 메인 네트워크를 조절하고 손실을 계산하는 데 모두 사용됩니다. 전체 시스템은 처음부터 끝까지 공동으로 훈련됩니다. 즉, 모델 매개변수가 손실 함수의 임의 샘플링과 동시에 훈련됩니다.
스타일 변환을 예시로 사용하는 방법의 개요. 메인 스타일 변환 네트워크는 손실 함수의 임의 샘플링된 계수를 기준으로 조절되고 손실 함수의 분포를 바탕으로 훈련되므로, 전체 손실 함수군 모델링 방법을 학습합니다.
이 접근 방식은 개념이 단순하므로 기존 코드 베이스를 최소한으로만 변경해 수많은 문제 도메인에 적용할 수 있습니다. 여기서는 그와 같은 두 가지 애플리케이션, 즉 이미지 압축과 스타일 변환에 집중합니다.
애플리케이션: 가변적인 이미지 압축비
우리가 취하는 접근 방식의 첫 번째 애플리케이션 예로,
학습된 이미지 압축
에 대한 결과를 보여드립니다. 이미지 압축 시, 사용자가 화질과 압축비 사이에서 원하는 절충점을 선택할 수 있어야 합니다.
일반적인 이미지 압축 알고리즘
은 이를 선택할 수 있도록 되어 있습니다. 하지만
학습된 주요 압축 방법
중 다수에서는 이와 같은 각 절충점에 대해 별개의 모델을 훈련해야 하는데, 이는 훈련 및 추론 시에 모두 많은 계산이 필요한 일입니다. 다양한 손실에 대해 최적화된 모델 집합이 필요한 이와 같은 문제에 대해, 우리가 사용하는 방법에서는 간단하게 비효율성을 피하고 단일 모델로 모든 절충 사항을 포괄할 수 있습니다.
우리는
Balle 그룹 (ICLR 2018)에서 제안된
학습된 이미지 압축 모델에 손실 조건부 훈련 기법을 적용합니다. 여기서 손실 함수는 화질을 결정하는 재현 항과 압축비를 결정하는 압축성 항의 두 항으로 구성됩니다. 아래 그림과 같이, 우리의 기법에서는 화질과 압축비 간에 넓은 범위의 절충을 포괄하는 단일 모델을 훈련할 수 있습니다.
단일 모델을 사용한 다양한 화질 수준의 압축. 모든 애니메이션은 컨디셔닝 값을 바꾸어 단일 모델로 생성됩니다.
애플리케이션: 조절 가능한 스타일 변환
두 번째로 보여드리는 애플리케이션은
예술적 스타일 변환
으로, 한 이미지의 콘텐츠와 다른 이미지의 스타일을 병합해 이미지를 합성할 수 있습니다.
최근에 제안된 방법
을 사용하면 이미지를 실시간으로 여러 스타일로 스타일화하는 딥 네트워크를 훈련할 수 있습니다. 하지만 주어진 각 스타일에 대해, 사용자는 이러한 방법으로는 합성된 출력 결과의 세부적인 부분(예: 이미지를 얼마나 많이 스타일화할지, 어떤 스타일 특징을 더 강조할지 등)을 제어할 수 없습니다. 이러한 방법에서는 스타일화된 출력 결과가 사용자의 마음에 들지 않을 경우, 마음에 드는 스타일화 결과를 얻을 때까지 다양한 하이퍼 매개변수로 여러 모델을 훈련해야 합니다.
하지만 우리가 제안하는 방법에서는 광범위한 스타일화 변형을 포괄하는 단일 모델을 훈련할 수 있습니다. 이 작업에서는 콘텐츠 손실을 포함한 손실 항 5개와 스타일화 손실에 대한 항 4개에 상응하는 계수를 가진 손실 함수를 기반으로 모델을 컨디셔닝합니다. 직관적으로, 콘텐츠 손실을 통해 스타일화된 이미지가 원본 콘텐츠와 얼마나 많이 유사해야 할지 조절되고, 4가지 스타일화 손실에 따라 어떤 스타일 특징이 최종적으로 스타일화되는 이미지로 이어지는지 정해집니다. 이 모든 계수를 변화시킬 때 단일 모델에서 어떤 결과가 나오는지 아래에서 볼 수 있습니다.
조절 가능한 스타일 전송. 모든 스타일화는 조절 값을 변화시켜 단일 네트워크로 생성됩니다.
결론
이 모델이 스타일화의 정도, 이미지에 추가되는 요소의 유형, 이런 요소의 정확한 구성과 위치 등과 같이, 각 스타일 내부의 많은 변화를 포착한다는 점은 분명합니다. 당사
웹페이지
를 방문하면
상호작용형 데모
외에도 많은 예제를 찾아보실 수 있습니다.
우리는 예전에는 별도로 훈련된 대규모의 네트워크 집합이 필요했을 작업에 단 하나의 딥 네트워크만 훈련하면 되는 간단하고도 일반적인 방법인 손실 조건부 훈련 방법을 제안했습니다. 이미지 압축과 스타일 변환에 이 방법을 적용하는 예를 보여주었지만, 매우 많은 사례에 적용할 수 있습니다. 손실 함수에 조정할 계수가 있을 때마다 우리가 제안한 방법을 사용하면 광범위한 계수를 포괄하는 단일 모델을 훈련할 수 있습니다.
감사의 말
이 블로그 게시물에서는 Mohammad Babaeizadeh, Johannes Balle, Josip Djolonga, Alexey Dosovitskiy, Golnaz Ghiasi 님과 같은 Google Brain 팀의 여러 연구원이 애써주신 작업을 다루었습니다. 이 모든 분의 결정적인 기여 덕분에 이 블로그 게시물을 작성할 수 있었습니다.
MS-COCO
데이터세트와
unsplash.com
에서 구한 이미지를 삽화로 사용했습니다.
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