2020. 3. 21. 17:24ㆍ관심있는 주제/뉴럴넷 질문
광고 한번만 눌러주세요 ㅎㅎ 블로그 운영에 큰 힘이 됩니다.
미디엄 글을 읽다가 2가지가 눈에 띄어서 읽게 되었다. 일단 주가가 굉장히 떨어져 가는 우버이지만 계속해서 연구하고 있다는 점이랑, GAN으로 데이터 생성을 한 것을 다시 학습에 써서, NAS를 빠르게 한다는 것?
필자는 NAS에 대해서 모르지만, 일단 GAN을 어떻게 사용하는지 궁금하게 되서 읽어보기로 했다.
이 글은 미디엄 글을 바탕으로 작성되며, 추가적인 궁금한 사항에 대해서는 다른 글을 참고해서 적었습니다.
AI에서 흔한 비유로 쓰는 것은 훈련 데이터를 머신 러닝 모델들의 새로운 기름이라고 합니다.
귀중한 상품 처럼 훈련 데이터는 희소하며, 규모도 맞추기 어렵다. 지도 학습 모델은 오늘날의 머신 러닝 생태계에서 절대적인 주권을 잡고 있습니다.
지도 학습과 같은 모델은 상대적으로 다른 대안들과 비교하여 만들기는 쉽지만, 이것들은 대부분 조직에서 제한되는 훈련 데이터에 큰 의존성을 가지고 있습니다.
이 문제는 머신 러닝의 모델의 크기가 클수록 더 나타나는데, 최근에 우버 엔지니어들이 GTN이라는 논문을 냈습니다. GTN이라는 논문은 훈련 데이터를 자동적으로 생성하는 학습 알고리즘입니다.
머신 러닝에서 훈련 데이터를 생성한다는 아이디어는 참신한 것은 아닙니다. semi-supervised 혹은 omni-supervised learning과 같은 기술들은 데이터 부족 환경에서 운영하기 위해 훈련 데이터를 생성한다는 원칙에 의존합니다.
그러나 머신 러닝 모델들에서 데이터-의존성 문제들은 잠재적 솔루션 보다 더 빠르게 증가하고 있습니다. 이러한 문제 중 일부는 현대 머신 러닝의 가장 큰 오해에 근간을 두고 있습니다.
논문) curriculumn learning , active learning, core-set selection과 같이 surrogate dataset를 훈련 데이터에서 샘플링으로써 만들 필요 없다는 것이 큰 통찰력을 주는 것이라고 한다. 저자는 GAN과 같이 비슷하게 생성된 데이터로 더 효율적으로 학습시킬 수 있다고 함.
Misconceptions About Training Data
머신 러닝 모델을 훈련하기 위한 전통적인 방법은 모델이 대규모 데이터 세트를 사용하여 훈련되어야 하며, 모델들은 프로세스 중에 전체 데이터 세트를 활용해야 한다는 것입니다. 비록 이것은 잘 구조화된 것이지만, 이 아이디어는 훈련 데이터 세트의 모든 기록이 동일한 가중치를 가지고 있다고 가정하기 때문에, 반 직관적으로 보인다고 합니다.
curriculum learning이나 active learning과 같은 새로운 접근들은 최상의 모델 버전을 생성하는 예제를 기반으로 훈련 데이터 세트에서 분포를 추출하는데 중점을 두었습니다. 몇몇의 이러한 기술들은 NAS(이러한 기술 중 일부는 신경 아키텍처 검색 (NAS) 기술의 출현에 매우 유용한 것으로 입증되었습니다.
NAS는 현대 머신 러닝에서 매우 중요한 트렌드 중에 하나가 되어가고 있습니다.
개념적으로, NAS는 수많은 모델들을 통하여, 평가를 수행함으로써, 주어진 문제에서 최고의 성능을 내는 아키텍처를 발견하는 것을 도와줍니다. NAS 방법으로 수행된 평가들은 훈련 데이터가 필요하며, 각 반복에서 완전한 훈련 데이터를 사용하지 않는 경우 비용이 발생하지 않을 수 있습니다(?)
대신, NAS 방법은 이전에 훈련된 아키텍처를 이전에 있단 자료를 추정함으로써, 훈련된 학습자가 얼마나 잘 수행 할 수 있는지 예측자를 훈련시켜 후보 아키텍처를 평가하는 데 매우 능숙해졌습니다.
두 가지 아이디어 : 훈련 세트에서 최상의 예를 선택하고 신경망 학습 방법을 이해하는 것이 Uber의 머신 러닝 모델 훈련을위한 창의적인 방법의 기초였습니다.
Enter Generative Teaching Networks
Uber GTN의 핵심 원칙은 간단하면서도 급진적인 아이디어를 기반으로 합니다. 즉, 머신 러닝이 교육 데이터 자체를 만들 수 있게 합니다. GTN는 생성 및 메타 학습 모델을 활용하면서, 생성 적대적 신경명(GAN)과 같은 기술에 영감을 얻었다고 합니다.
GTN의 핵심 아이디어는 learner network가 데이터에 대해 훈련된 learner network가 목표 테스크에서 높은 정확도를 빠르게 생성하도록 data-generating network를 훈련시키는 것입니다.
GAN과 달리, 경쟁한다기 보다는 두 네트워크는 협력하는 구조입니다. 왜냐하면, 두 네트워크가 초점을 맞추는 것은 GTN으로써 생성된 데이터로 훈련할 때, 목표 테스크에서 learner가 잘 수행하는 방향으로 일치하는 것이기 때문입니다.
generator와 learner networks은 inner와 outer 훈련 루프로 이루어진 nested optimization에 의한 meta-learning에서 훈련됩니다. GTN 모델에서, generator는 전혀 알려지지 않은 learner network(임의로 샘플링된 아키텍처 및 가중치 초기화)이 적은 수의 학습 단계를 위해 학습하는 완전히 새로운 인공 데이터를 생성합니다.
그 후에 실제 데이터를 본 적이 없는 learner network는 최적화된 메타 손실 목표를 제공하는 실제 데이터에의 의해 평가됩니다.
GTN의 아키텍처는 5가지의 간단한 단계로써 설명되어진다고 합니다.
- 새로운 데이터를 생성하기 위해 노이즈는 input geneartor에거 주어집니다.
- learner는 생성된 데이터로써 잘 수행되기 위해 훈련되어집니다.
- 훈련된 learner는 outer-loop meta-loss를 계산하기 위해 outer-loop에서 실제 데이터에서 평가됩니다.
- generator의 파라미터들의 gradients는 generator를 업데이트 하기 위해서 meta-loss에서 수행됩니다.
- 학습된 curriculum과 weight normalization은 GTN 성능을 크게 향상합니다.
논문)
inner-loop에서, $Generator G(z,y)$는 Gaussian noise $z$ 와 label $y$를 이용해 $x$를 만듭니다.
inner-loop loss function $l_{inner}$는 분류 문제에서는 cross-entropy 회귀 문제에서는 mse로 됩니다.
inner-loop 목적은 outer-loop 목적과 의존되지 않습니다.
outer-loop에서, Learner $\theta_t$는 inner-loop step T 후에 생성된 데이터로 훈련된 것을 의미하며, 진짜 데이터로 평가됩니다. 이것은 outer-loop loss (meta-training loss)로써 계산됩니다.
GTNs in Action
Uber는 GTUber는 다양한 신경망 아키텍처에서 GTN을 평가했습니다.
이러한 시나리오 중 하나는 유명한 MNIST 데이터 세트를 사용하여 학습된 이미지 분류 모델이었습니다.
몇 번의 반복 후에, GTN을 사용하여 훈련된 새로운 learner는 실제 데이터를 사용하는 동일한 모델보다 빠르게 학습할 수 있었습니다.
이 특정 시나리오에서 GTN 훈련 모델은 현저한 98.9 정확도를 달성했으며 32 SGD 단계 (~ 0.5 초)로 커리큘럼에서 각각의 4,096 개의 합성 이미지를 한 번만 보았습니다. MNIST 교육 데이터 세트에서 이미지의 10 % 미만입니다.
이미지 분류에서 GTN을 사용할 때 놀라운 발견 중 하나는 합성 데이터는 사람의 눈으로 볼 때는 비현실적인 것처럼 보인다는 것이다. (아래 그림 참고) 심지어 더 흥미로운 것은 합성된 데이터의 인신 능력이 Curriculum이 끝날 때 향상된다는 사실이다.
이질적인 모습에도 불구하고, 생성 데이터는 network를 학습할 때, 효율적이라는 것이 증명된 것입니다.
직관적으로, 논문의 저자들은 뉴럴 네트워크 아키텍처들은 인간의 뇌와 기능적으로 인간 두뇌와 유사하다면, GTN의 합성 데이터는 실제 데이터와 더 유사할 수 있습니다.
그러나 다른 추론적 가설은 인간의 두뇌가 부자연스럽고, 인식할 수 없는 데이터를 보여줌으로써, 임의의 기술을 빠르게 배울 수 있다는 것입니다.
여기까지는 미디엄 글이지만, 논문에서는 글은 짧지만, 많은 APPENDIX를 제공하고 있습니다. 총 26페이지에서 15장이 APPENDIX이다. 다양한 실험에 대해서 적어줘서 여기서 흥미로운 것 몇 개만 보기로 했습니다.
APPENDIX F CONDITIONED GENERATOR VS. XY-GENERATOR
논문에서는 조건부 Generator를 만들어서 조절하였습니다.
여기서는 조건부를 통해 생성된 Generator냐 아니면, 데이터와 레이블을 둘 다 생성하는 Generator냐에 대해서 실험을 한 것 같습니다. 기대한 바로는 먼가 XY-Generator가 더 나은 성능을 내는 것을 기대했지만, 더 성능이 떨어졌다고 합니다. 저자들은 "dark knowledge" 접근 방식이 더 나을 거라 기대한 것 같습니다. 그러나 저렇게 레이블까지 다 생성하는 것은 학습과 초기화에 더 민감해지기 때문에 잘 나오지 않는 것이라고 생각하고 있습니다.
그래서 저자들은 더 잘 조정하면, 다른 결과도 충분히 기대할 수 있다고 생각하고 있습니다.
APPENDIX H GTN FOR RL
저자는 강화 학습을 자기들의 논문에서 적용가능하다고 말한 증거를 보여주기 위해 Appendix에 넣어놓은 것 같습니다. 실험은 CartPole 문제에 대해서 해봤다고 합니다. 지금 inner-loop에는 지도 학습을 적용하고 outer-loop에 강화학습을 적용했다고 하고, 실제로는 inner-loop에도 가능할 것이고 말합니다.
RL과지도 학습의 속도가 더 빨라질 것으로 예상되는 한 가지 이유는 RL이 비효율적인 샘플의 주된 이유는 문제 해결 방법을 알아내기 위해 탐색이 필요하기 때문입니다. 그러나 일단 탐색이 완료되면 GTN은 해당 솔루션을 새로운 아키텍처에 효율적으로 가르치기 위해 데이터를 생성할 수 있습니다. 따라서 RL은 GTN에 대한 흥미로운 미래 연구 분야를 나타냅니다. 그 연구를 수행하는 것은 이 논문의 범위를 벗어났지만, 우리는 미래의 그러한 작업에 영감을 줄 흥미로운 잠재력을 강조합니다.
APPENDIX I SOLVING MODE COLLAPSE IN GANS WITH GTNS
GAN에서는 발생되는 문제가 mode collapse 같은 문제로, 즉 한 가지 샘플만 생성되는 아직 해결되지 못한 문제가 있습니다. 이것을 해결하기 위해 minibatch discrimination, historical averaging 같은 방법이 있지만, 저자는 GTN과 GAN의 아이디어를 결합은 model collapse를 대처하기 위해 다른 추가 기술을 제공할 수 있다고 가설을 세웠다고 합니다.
그 아이디어는 GTN에 판별자를 추가하여, 생성하는 데이터를 더 현실적이게 하고, Learner가 MNIST 분류의 meta objective에 대해 잘 수행하도록 도와줍니다. 이 방법이 mode collapse를 방지하는데 도움을 준다고 생각한 이유는 generator가 하나의 이미지 클래스만 생성하는 경우, 그 데이터를 학습한 learner는 모든 이미지 클래스를 분류할 수 없기 때문이라고 합니다. 음 즉 inner-loop에서 먼가 학습된 네트워크가 outer-loop에서 실제 데이터를 만날 때, mode collapse로 훈련된 데이터로 학습을 한 것으로 실제 데이터를 평가하게 되면 meta-loss가 높아질 것이고, geneator는 그 후에 업데이트되기 때문에, mode collapse 현상이 방지된다는 이야기? 괜찮다는 이야기인 것 같습니다.
APPENDIX K ON THE REALISM OF IMAGES
가장 흥미로운 부분이지만, 먼가 말이 긴 부분입니다.
암튼 저자는 생성 이미지의 인식 가능성과 관련된 2가지 현상이 있다고 합니다.
1. GTN에서 생성된 많은 이미지는 인식할 수 없지만, 잘 수행된다.
2. 일부 조건은 이미지의 사실감 (인식성)을 증가시킨다.
현상을 밝히기 위해 여러 실험을 했다고 합니다.
중요한 점이라고 말한 것은 Curriculum이 끝날 때 우리가 인식할 수 있는 이미지가 MNIST 문제에서 높은 성능을 얻을 때 필요한 것은 아니라고 합니다.
그 사실에 대한 증거는 그림 2에 있다고 하며, 유는 마지막 4-5행에서 인식할 수 있는 이미지를 보기 전에 23개의 내부 루프를 반복 후에 GTN 데이터에 대해 학습된 학습자의 성능이 이미 높다는 것을 확인했다고 합니다.
(머를 어떻게 확인했다는 것인지는 잘 모르겠습니다...)
높은 수준에서, 이러한 현상들에 가능성 있는 camp는 다음과 같다고 합니다.
CAMP 1. 현실감이 높을수록 성능은 향상되지만 최적화 문제 (예 : 소실 / 폭발 그라디언트)는 성능이 높고 사실적인 이미지를 생성하는 생성기를 학습하지 못하게 합니다.
이 가설 캠프를 지지하는 증거는 실제 이미지가 커리큘럼의 끝에서 나옵니다.
끝 부분은 그래디언트 흐름이 가장 쉬운 곳입니다 (그러데이션이 여러 내부 루프 학습 단계를 통해 다시 흘러갈 필요가 없기 때문). 이 가설을 예측하면 GTN 훈련 능력이 향상될수록 이미지가 더욱 실감 나게 됩니다.
CAMP 2. 현실감이 낮을수록 (적어도 커리큘럼에 늦지 않을 때) 성능이 향상되어 비현실적인 이미지가 생성됩니다.
비현실적인 이미지가 더 높은 성능을 낼 수 있었던 이유는 2가지 이상이 있다고 합니다.
1. 압축은 더 빠른 학습을 가능하게 합니다.
비현실적인 이미지를 생성하는 것은 단일 훈련 예제에서 더 많은 정보를 담을 수 있습니다. 예를 들어 한번에 여러 다른 스타일의 숫자 7에 대해 네트워크에 가르쳐줄 수 있는 단일 임지(변환 회전 스케일)를 상상해보라 합니다. 데이터 증강은 네트워크를 잘 학습시키기 때문에, 성능을 향상하는 것으로 알려져 있습니다. 예를 들어, 이지의 다른 위치에서 동일한 이미지가 동일한 클래스인 것을 알 수 있습니다. (귀에 걸면 귀걸이, 코에 걸면 코걸이?..)
2. 비현실적인 이미지는 더 나은 일반화를 허용한다고 합니다.
매우 적은 수의 샘플로 고성능을 만들다가는 과적합으로 인한 손실 성능 위험이 있습니다. 작은 실제 이미지 세트는 이미지의 비 필수적인 측면( 배경 )에서 충분히 변형되지 않았기 때문입니다.
GTN은 흥미로운 가능성으로 일반화를 향상하기 위해 도메인 무작위화와 유사한 것을 만드는 법을 배울 수 있습니다(?...)
Camp 3. 이미지가 사실적인지 여부는 성능에 차이가 없지만 사실적인 이미지보다 효과적인 비현실적인 이미지가 더 많은 이유는 이미지를 만드는 경향을 설명합니다.
> APPENDIX K ON THE REALISM OF IMAGES 부분에 관심이 많지만... 먼가 이해하기 어려우므로, 패스합니다...
커리큘럼이 끝날 때 왜 이미지가 사실적인가? 대부분의 이미지를 인식할 수 없는 이유와는 별도로, 인식 가능한 이미지는 커리큘럼이 끝날 때만 생성되는 이유입니다. 우리는 몇 가지 다른 가설을 내놓았지만 어느 것이 옳은지는 모릅니다. (1) 그라디언트는 해당 샘플에 가장 잘 흐르므로 가장 사실적입니다 (위의 가설 캠프 1에 따라). (2) 훈련이 끝날 때 사실적인 이미지를 얻는 것이 어떤 이유로 든 성과에 도움이 되지만 사실주의는 커리큘럼의 초기에 도움이되지 않거나 (캠프 3) (캠프 2). 예를 들어, 플라톤 이미지는 결정 경계를 변경할 가능성이 가장 낮으므로 결정 경계의 최종 미세 조정에 사용될 수 있습니다 (어닐링 된 학습 속도와 유사). 이 가설에 따르면 최적화가 결정론적인 커리큘럼을 만들 수 없을 때 현실감이 평균적으로 높아지는 것 같습니다 (그림 13). (3) 효과는 최종 훈련 배치에서 배치 정규화 (Ioffe & Szegedy, 2015) 통계를 취하기로 한 결정에 의해 생성됩니다. 배치 정규화는 훈련을 향상하는 일반적인 기술입니다. 일반적인 배치 규범 절차에 따라 내부 루프 훈련 중에 배치 규범 통계 (평균 및 분산)가 배치마다 계산됩니다. 그러나 내부 루프 테스트 / 추론 중에는 통계가 트레이닝 세트에서 계산됩니다. 실험에서는 커리큘럼의 마지막 배치에서 이러한 통계를 계산합니다. 따라서 메타 트레이닝 테스트 세트 (GTN이 최적화되는 내부 루프 테스트 세트 성능)의 성능이 해당 배치의 통계가 대상 데이터 세트 (실제 이미지 포함)의 통계와 일치하도록 도와줍니다. 이미지가 더 현실적이어야 한다는 압박이 될 수 있습니다. 그러나 이 가설과는 반대로 실제 배치는 마지막 배치뿐만 아니라 마지막 두 배치의 커리큘럼에서 증가한다는 사실입니다 (각 배치의 샘플은 별도의 행으로 표시됨).
https://eng.uber.com/generative-teaching-networks/
https://github.com/BDANG/keras-GTN
'관심있는 주제 > 뉴럴넷 질문' 카테고리의 다른 글
[Review / NN] Cyclical Learning Rates for Training Neural Networks 논문 (0) | 2020.10.21 |
---|---|
[Review / NN] SuperTML / 정형데이터를 CNN에 적용하기(Transfer Learning) (0) | 2020.10.16 |
Graph Neural Networks 이란? (파파고 번역) (3) | 2020.02.16 |
Ensemble Neural Network Architectures (0) | 2020.01.25 |
TABNET: ATTENTIVE INTERPRETABLE TABULAR LEARNING -2 (0) | 2020.01.05 |