Abstract

Humans and animals learn much better when the examples are not randomly presented but organized in a meaningful order which illustrates gradually more concepts, and gradually more complex ones. Here, we formalize such training strategies in the context of machine learning, and call them “curriculum learning”. In the context of recent research studying the difficulty of training in the presence of non-convex training criteria (for deep deterministic and stochastic neural networks), we explore curriculum learning in various set-ups. The experiments show that significant improvements in generalization can be achieved. We hypothesize that curriculum learning has both an effect on the speed of convergence of the training process to a minimum and, in the case of non-convex criteria, on the quality of the local minima obtained: curriculum learning can be seen as a particular form of continuation method (a general strategy for global optimization of non-convex functions).


인간과 동물은 무작위로 제시되지 않고, 간단한 것에서 점점 더 많은 개념과 복잡한 것을 의미있는 순서로 구성된 예제를 볼 때 더 학습을 잘한다.

우리는 머신러닝의 맥락에서 이러한 교육 전략을 공식화하고, 이를 커리큘럼 학습이라고 부른다.

non-convex 학습 기준(심층 결정론과 확률적 신경망)에서 학습의 어려움을 연구하는 최근 연구의 맥락에서,  우리는 다양한 셋업을 다루는 커리큘럼 학습을 탐구한다.

실험은 일반화에서 상당한 성능 향상을 보여주었다.

우리는 커리큘럼 학습이 학습 과정의 빠른 수렴과 non-convex의 조건하에서 local minima에 빠질 수 있는 확률이 낮아지는 효과를 가지고 있다고 가정한다.: 커리큘럼 학습은 (non-convext 함수의 전역 최적화를 위한 일반적 전략) 특정 형태의 연속 방법으로 볼 수 있다.


요약

  • 커리큘럼 학습은 일반적으로 사람이 초급 수준의 학습부터 대학 수준의 학습내용까지 긴 기간을 가지고 학습하는 경우를 의미하는데, 이를 머신러닝의 학습에 적용해보자는 것이다.
  • 커리큘럼 학습은 일반화와 빠른 수렴 속도의 장점을 가진다.
  • 논문에서 언급하고 있는 continuation method는 non-convex에서 좋은 local-minima를 찾기 위한 방법이다. 이 방법은 커리큘럼 학습과 같이 먼저 초기의 objective function을 쉽게 정의하고, 차츰 objective function을 어렵게 만들어 문제를 해결하는 방법이다. 이때 local minima는 계속 유지한다.
  • 다시, 커리큘럼 학습은 다시 쉽게 설명해서 처음에는 모델한테 쉬운 샘플만 보여주다가 점차 어려운 샘플을 보여주는 것이다. 학습 시에 전체 데이터를 한번에 학습시키는 것보다 쉬운 것과 어려운 것을 정의하여 [쉬운 것->어려운 것] 순으로 학습하라는 의미이다.
  • 쉬운 샘플을 정의하는 방법은 두 가지를 제시하고 있다. 첫 번째는 노이즈의 개수로 판단하는 것이고, 두 번째는 가우시안 분포의 바운더리에서 margin 거리를 활용하는 방법이 있다. margin 거리가 가까울수록 쉽고, 멀수록 어려운 샘플이라고 정의한다.
  • 실험에서는 shape recognition을 보여주고 있는데, 쉬운 샘플로는 정확한 모양의 원, 정사각형 등만 사용하고(Basic Shape), 어려운 샘플로는 직사각형, 타원 등이 포함된 것을 사용한다(Geom Shape).

 

Reference

Bengio, Y., Louradour, J., Collobert, R., & Weston, J. (2009, June). Curriculum learning. In Proceedings of the 26th annual international conference on machine learning (pp. 41-48).
https://www.youtube.com/watch?v=fQtuWEuwXrA&list=PLWKf9beHi3Tg50UoyTe6rIm20sVQOH1br&index=85

ABSTRACT

We introduce techniques for rapidly transferring the information stored in one neural net into another neural net. The main purpose is to accelerate the training of a significantly larger neural net. During real-world workflows, one often trains very many different neural networks during the experimentation and design process. This is a wasteful process in which each new model is trained from scratch. Our Net2Net technique accelerates the experimentation process by instantaneously transferring the knowledge from a previous network to each new deeper or wider network. Our techniques are based on the concept of functionpreserving transformations between neural network specifications. This differs from previous approaches to pre-training that altered the function represented by a neural net when adding layers to it. Using our knowledge transfer mechanism to add depth to Inception modules, we demonstrate a new state of the art accuracy rating on the ImageNet dataset.


이 논문은 한 가지 신경망이 담고 있는 정보를 다른 신경망으로 빠른 속도로 전이할 수 있는 방법을 소개한다.

주요 목적은 상당히 큰 신경망의 학습 속도를 가속화하는 것이다.

실제 업무에서 설계 과정과 실험동안 많은 신경망을 학습한다.

새로운 모델을 scratch에서부터 학습하는 것은 매우 소모적인 프로세스이다.

Net2Net 테크닉은 이전에 사용했던 신경망에서 더욱 깊고 와이드한 네트워크로 정보를 이전하는 실험 과정을 가속화한다.

이 기술은 신경망의 구성요소 간의 변환을 보존하는 기능을 기반으로 한다.

모델에 층을 추가할 때 신경망의 기능적 요소들이 변경되는 이전의 사전 학습과는 다른 방법이다.

이 방법을 사용하여 ImageNet 데이터셋에서 훌륭한 성능을 얻었다.


요약

  • 이 논문은 사전 학습된 작은 크기의 신경망의 정보를 좀 더 깊고 넓은 신경망에 전이 학습하려는 방법을 제안한다.
  • 기존의 문제를 해결할 때, 여러 가지 네트워크를 실험해보아야하고 실제로 이를 scratch부터 학습하는 것은 매우 시간이 많이 소모된다. 따라서 이 논문은 이전 네트워크의 정보를 더 큰 네트워크를 학습할 때 사용해볼 수는 없을까?에 대한 질문에서 시작된다.

  • 기존에 존재하던 방법인 FitNets는 이와 같은 방법을 수행할 수 있지만, 트레이닝이 필요하다는 단점이 존재한다. FitNets는 이전 네트워크의 feature map을 target으로 학습하는 네트워크이다.
  • 논문의 방법은 네트워크 구조에 제약을 주고, 트레이닝없이 transfer를 하는 것이다.
  • 네트워크를 더욱 와이드하게 구성할 경우, Teacher Net의 노드 중 하나를 랜덤하게 골라 사용하고, 늘어난 수만큼 가중치를 1/n 해준다.

  • 네트워크를 더욱 깊게 구성하는 경우, 간단하게 밑의 그림처럼 새 네트워크를 끼워서 Identity Mapping을 사용하는 방식이다. 대신 ReLU는 괜찮지만, sigmoid는 사용이 불가능하다.(시그모이드의 단점 때문?)

 

 

Reference

https://www.youtube.com/watch?v=btsZOMsyH_o&list=PLWKf9beHi3Tg50UoyTe6rIm20sVQOH1br&index=78
Chen, T., Goodfellow, I., & Shlens, J. (2015). Net2net: Accelerating learning via knowledge transfer. arXiv preprint arXiv:1511.05641.

ABSTRACT

Neural networks are both computationally intensive and memory intensive, making them difficult to deploy on embedded systems with limited hardware resources. To address this limitation, we introduce “deep compression”, a three stage pipeline: pruning, trained quantization and Huffman coding, that work together to reduce the storage requirement of neural networks by 35× to 49× without affecting their accuracy. Our method first prunes the network by learning only the important connections. Next, we quantize the weights to enforce weight sharing, finally, we apply Huffman coding. After the first two steps we retrain the network to fine tune the remaining connections and the quantized centroids. Pruning, reduces the number of connections by 9× to 13×; Quantization then reduces the number of bits that represent each connection from 32 to 5. On the ImageNet dataset, our method reduced the storage required by AlexNet by 35×, from 240MB to 6.9MB, without loss of accuracy. Our method reduced the size of VGG-16 by 49× from 552MB to 11.3MB, again with no loss of accuracy. This allows fitting the model into on-chip SRAM cache rather than off-chip DRAM memory. Our compression method also facilitates the use of complex neural networks in mobile applications where application size and download bandwidth are constrained. Benchmarked on CPU, GPU and mobile GPU, compressed network has 3× to 4× layerwise speedup and 3× to 7× better energy efficiency.


신경망은 계산 및 메모리 집약적인 특성 떄문에 하드웨어 자원이 제한되어 있는 임베딩 환경에서 작동시키기가 어렵다.

이러한 제한점을 해결하기 위해, 정확도 손실 없이 35배에서 49배 저장 요구를 감소하는 작업을 수행하는 허프만 코딩, 프루닝, 학습 양자화의 세 가지 단계를 가지는 "deep compression"을 소개한다.

이 방법은 먼저 중요한 연결만 학습하도록 네트워크를 프루닝합니다.

다음으로 가중치 공유를 위해 가중치를 양자화하고, 마지막으로 허프만 코딩을 적용한다.

위의 두 가지 단계 이후에 나머지 연결과 양자화된 것들의 미세 조정을 위해 네트워크를 재학습합니다.

프루닝은 연결의 수를 9배에서 13배 감소시키고, 양자화는 각 연결을 나타내는 비트 수를 32에서 5로 줄입니다.

이미지넷 데이터셋에서 이 방법은 정확도 손실 없이 알렉스넷의 저장요구를 35배 줄였다.(240MB -> 6.9MB)

또한, 정확도 손실 없이 VGG-16 모델의 크기를 49배 감소시켰다.(552MB -> 11.3MB)

이는 off-chip DRAM memory이 아닌 on-chip SRAM에서의 모델 피팅을 가능케 한다.

우리의 압축 방법은 애플리케이션 크기와 다운로드 대역폭이 제한된 모바일 앱에서 복잡한 신경망 사용을 가능하게 한다.

CPU, GPU, 모바일 GPU에서 압축된 네트워크는 3 ~ 4배 빠른 속도와 3 ~ 7배 향상된 에너지 효율성을 나타낸다.


요약

  • 논문에서 제안하는 방법의 과정은 Pruning -> Quantization -> huffman coding이다.

  • 허프만 코딩은 확률에 따라 비트의 수가 달라진다는 점과 효과적인 디코딩 방법을 적용한다는 것이다.
  • 프루닝은 의미없는 네트워크 간 연결을 전부 끊어버리는 것을 의미한다. 이 같은 방법을 반복하면서 정확도를 유지하도록 한다.
  • Quantization은 일정 값으로 나누거나 대표값을 저장하는 것을 의미한다. 여기서는 대표값의 인덱스를 저장하여 비트수를 감소시킨다. 이러한 대표값은 quantization 과정의 동일 인덱스는 전부 동일 대표값을 사용하게 된다. 예를 들어, 밑의 그림에서 index 1은 전부 파란색 값을 사용하는 것과 같은 경우이다.

  • Quantization의 초기화는 uniform init이 가장 좋은 결과를 보여주는데, 그 이유는 다른 초기화 같은 경우는 크거나 작은 가중치를 고려하지 않는 결과가 발생하기 때문에 이 부분에서 정확도 감소가 일어난다고 한다.
  • 프루닝 또는 quantization만 사용한 경우보다 동시에 사용한 경우의 weight distribution이 좋게 나타나서 정확도 손실이나 모델 압축 측면에서 효과적이다.

 

 

Reference

Han, S., Mao, H., & Dally, W. J. (2015). Deep compression: Compressing deep neural networks with pruning, trained quantization and huffman coding. arXiv preprint arXiv:1510.00149.
https://www.youtube.com/watch?v=9mFZmpIbMDs&list=PLWKf9beHi3Tg50UoyTe6rIm20sVQOH1br&index=72

Abstract

We propose Efficient Neural Architecture Search (ENAS), a fast and inexpensive approach for automatic model design. In ENAS, a controller discovers neural network architectures by searching for an optimal subgraph within a large computational graph. The controller is trained with policy gradient to select a subgraph that maximizes the expected reward on a validation set. Meanwhile the model corresponding to the selected subgraph is trained to minimize a canonical cross entropy loss. Sharing parameters among child models allows ENAS to deliver strong empirical performances, while using much fewer GPUhours than existing automatic model design approaches, and notably, 1000x less expensive than standard Neural Architecture Search. On the Penn Treebank dataset, ENAS discovers a novel architecture that achieves a test perplexity of 55.8, establishing a new state-of-the-art among all methods without post-training processing. On the CIFAR-10 dataset, ENAS finds a novel architecture that achieves 2.89% test error, which is on par with the 2.65% test error of NASNet (Zoph et al., 2018).


우리는 빠르고 계산 비용이 저렴한 자동화 모델 ENAS를 제안한다.

ENAS에서 컨트롤러는 거대한 계산 그래프에서 최적화된 그래프를 찾아 신경망 아키텍처를 발견한다.

컨트롤러는 검증셋에서의 보상을 최대화하는 서브그래프를 선택하는 정책 그래디언트를 통해 학습된다.

서브그래프에 해당하는 모델은 표준 크로스엔트로피 손실 함수를 최소화하도록 학습한다.

하위 모델간에 매개변수를 공유하는 것은 ENAS가 기존의 자동 모델 설계 방법보다 강력하고, 훨씬 적은 GPU를 사용하며, 1000 배 이상 비용이 저렴하다.

Penn Treebank 데이터셋에서 ENAS는 어떠한 전처리를 거치지 않고 가장 좋은 성능을 달성하였다.

CIFAR-10 데이터셋에서도 ENAS는 NASNet 2.65%에 가까운 2.89%의 테스트 에러를 보여주었다.


요약

  • NAS의 방식은 컨트롤러가 하이퍼파라미터를 예측해서 이를 반환해주고, 반환된 하이퍼파라미터를 통해 metric을 산출한 뒤, 이를 reward로 책정하여 강화학습을 통해 모델을 결정하는 방식
  • 기존의 NAS는 GPU 시간을 너무 많이 쓰고, 비효율적이라는 문제점이 존재한다. 또, 컨트롤러(RNN)가 뱉어내는 모델마다 새로 학습하기 때문에 병목 현상을 발생시키고 있다.
  • 이 논문에서 제안하는 ENAS는 RNN이 뱉어내는 모델의 파라미터를 공유하도록 해서 학습시간을 줄여보자는 것이다.

  • 위 그림에서 각 노드는 모델 구성에 결정할 하이퍼파라미터에 대한 정보를 담고 있고, 각 엣지는 어떤 노드로 연결될지를 의미한다. 각 노드안에서 사용한 파라미터는 다음 번에도 사용된다.
  • 첫 번째 노드 선택은 고정, 이후 노드 선택은 랜덤, 마지막 노드 선택은 남은 노드를 전부 선택하여 결과를 평균내는 방식으로 진행한다.
  • 큰 방식은 전체 모델 구조를 정한 뒤, 노드를 정해서 세부 구조를 정하는 방식.
  • 크게 다른 것은 없고, CNN 모델을 구성하는 경우에도 위와 같은 방식을 사용하여 모델을 구성한다는 것을 계속해서 설명한다.

 

 

Reference

Pham, H., Guan, M. Y., Zoph, B., Le, Q. V., & Dean, J. (2018). Efficient neural architecture search via parameter sharing. arXiv preprint arXiv:1802.03268.
https://www.youtube.com/watch?v=fbCcJaSQPPA&list=PLWKf9beHi3Tg50UoyTe6rIm20sVQOH1br&index=69

ABSTRACT

YouTube represents one of the largest scale and most sophisticated industrial recommendation systems in existence. In this paper, we describe the system at a high level and focus on the dramatic performance improvements brought by deep learning. The paper is split according to the classic two-stage information retrieval dichotomy: first, we detail a deep candidate generation model and then describe a separate deep ranking model. We also provide practical lessons and insights derived from designing, iterating and maintaining a massive recommendation system with enormous userfacing impact.


유튜브는 가장 거대하고 정교한 상업적 추천시스템이다.

이 논문은 높은 수준으로 시스템을 설명하고 딥러닝으로 인한 극적 성능 향상의 설명을 다룬다.

논문은 고전적인 2단계 정보 검색 이분법에 따라 분할하여 설명한다.

첫 번째, 깊은 후보 생성 모델을 자세히 설명하고 별도의 깊은 순위 모델을 설명한다.

또한, 대규모 사용자 추천 시스템을 설계, 반복 및 유지 관리하는 데 도움이 되는 실질적인 교훈과 통찰을 제공한다.


요약

  • 크게 두 가지를 사용한다. Candidate Generation Model과 Ranking Model.
  • 실제 상황에서는 엄청난 양의 데이터와 제한된 컴퓨팅 파워, 새로운 컨텐츠, 그리고 노이즈 데이터와 같은 문제를 해결해야 한다.
  • 전체적인 구조는 다음과 같다.

  • 수백만개의 비디오를보고 유저 정보를 통해 후보들을 만들어낸다. -> 후보들을 추려내고 비디오 특징을 통해 랭킹을 매겨서 최종적으로 추천을 하게 된다.

< 후보 생성 모델 >

  • Video Embedding과 Search Token Embedding을 사용하였고, 모두 Dense Vector를 사용. Embedding 다음으로는 Combiner를 통과하는데, Combiner는 Embedding의 값을 average하여 watch vector와 search vector를 만듬.
  • 위에서 만든 2개의 벡터와 Example age, gender 등의 모든 정보를 concat함. 이렇게 만들어진 vector를 fcn에 통과시킴. 모든 단계는 다음 그림과 같다.

  • 출력값은 유저가 어떠한 정보를 선호하는가에 대한 값이며, 이를 softmax로 구함. 하지만 출력값은 몇백만개가 되므로 Negative Sampling을 통해 거르고 난 후의 결과를 사용함.
  • 모델 학습이 과거의 동영상을 사용하기 때문에, 실제 추천에서도 과거 동영상을 고르는 경우가 많음. 따라서 이를 방지하기 위해 Example Age, 즉 영상의 나이를 피처로 추가하였음. 특히 이런 피처들을 넣었을 경우 성능 향상을 직접적으로 경험하였다고 실험에서 보여주었음.
  • 그 외에 모든 비디오 시청이력을 사용하였고, heavy user에 치우치지 않도록 이용자별 영상 횟수를 fix하고, 새로운 검색 쿼리에 추천엔진을 반영하지 않고, 비대칭적인 감상 패턴을 적용한다. 여기서 비대칭적인 감상 패턴은 A -> B -> C 순서의 동영상 시청처럼 규칙적인 것이 아닌 것을 말한다.

< 랭킹 모델 >

  • 동일하게 임베딩을 사용함. 대신 이 모델의 임베딩에서는 average 뿐만 아니라 임베딩 값을 직접 활용하는 등의 계산이 추가되어 있음. 또한, 임베딩 concat에서 여러 가지 특징을 normalize해서 concat 하도록 함.
  • 출력값 부분에서는 감상 시간별로 가중치를 주는 방법을 통해 성능을 개선시켰음(weighted logistic reg). 이는 추천된 영상을 얼마나 오랫동안 볼지 예측하는 것을 목표로 하는 것임. 감상 시간은 안봤으면 0, 봤으면 본 시간을 값으로 넣음. 
  • 이전에는 감상 시간이 아니라 안봤다, 봤다 또는 영상을 클릭했냐 안했냐(0과 1)로 판단하였다고 함. 이를 CTR(Click Through Rate)라고 함.
  • 추가로 구글에서는 전통 머신러닝처럼 Feature Engineering을 행하여서 성능 향상을 이루었음. 가장 좋은 feature는 비슷한 비디오에 대한 유저의 반응이라고 함.

 

Reference

Covington, P., Adams, J., & Sargin, E. (2016, September). Deep neural networks for youtube recommendations. In Proceedings of the 10th ACM conference on recommender systems (pp. 191-198). ACM.
https://www.youtube.com/watch?v=V6zixdCIOqw&list=PLWKf9beHi3Tg50UoyTe6rIm20sVQOH1br&index=60