태그 보관물: Paper

Repo. for NIPS 2016 papers

NIPS 2016 페이퍼가 구현된 레파지토리를 정리하는 레딧 포스트가 있습니다. 지금까지 13개의 깃허브 레파지토리가 정리되어 있습니다. 추가되는 대로 업데이트 하겠습니다. 혹시 이 외에 다른 레파지토리가 있다면 공유 부탁 드립니다.

  1. Using Fast Weights to Attend to the Recent Past (https://arxiv.org/abs/1610.06258)
    Repo: https://github.com/ajarai/fast-weights
  2. Learning to learn by gradient descent by gradient descent (https://arxiv.org/abs/1606.04474)
    Repo: https://github.com/deepmind/learning-to-learn
  3. R-FCN: Object Detection via Region-based Fully Convolutional Networks (https://arxiv.org/abs/1605.06409)
    Repo: https://github.com/Orpine/py-R-FCN
  4. Fast and Provably Good Seedings for k-Means (https://las.inf.ethz.ch/files/bachem16fast.pdf)
    Repo: https://github.com/obachem/kmc2
  5. How to Train a GAN
    Repo: https://github.com/soumith/ganhacks
  6. Phased LSTM: Accelerating Recurrent Network Training for Long or Event-based Sequences (https://arxiv.org/abs/1610.09513)
    Repo: https://github.com/dannyneil/public_plstm
  7. Generative Adversarial Imitation Learning (https://arxiv.org/abs/1606.03476)
    Repo: https://github.com/openai/imitation
  8. Adversarial Multiclass Classification: A Risk Minimization Perspective (https://www.cs.uic.edu/~rfathony/pdf/fathony2016adversarial.pdf)
    Repo: https://github.com/rizalzaf/adversarial-multiclass
  9. Unsupervised Learning for Physical Interaction through Video Prediction (https://arxiv.org/abs/1605.07157)
    Repo: https://github.com/tensorflow/models/tree/master/video_prediction
  10. Weight Normalization: A Simple Reparameterization to Accelerate Training of Deep Neural Networks (https://arxiv.org/abs/1602.07868)
    Repo: https://github.com/openai/weightnorm
  11. Full-Capacity Unitary Recurrent Neural Networks (https://arxiv.org/abs/1611.00035)
    Repo: https://github.com/stwisdom/urnn
  12. Sequential Neural Models with Stochastic Layers (https://arxiv.org/pdf/1605.07571.pdf)
    Repo: https://github.com/marcofraccaro/srnn
  13. Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering (https://arxiv.org/abs/1606.09375)
    Repo: https://github.com/mdeff/cnn_graph
  14. Interpretable Distribution Features with Maximum Testing Power (https://papers.nips.cc/paper/6148-interpretable-distribution-features-with-maximum-testing-power.pdf)
    Repo: https://github.com/wittawatj/interpretable-test/
  15. Composing graphical models with neural networks for structured representations and fast inference (https://arxiv.org/abs/1603.06277)
    Repo: https://github.com/mattjj/svae
  16. Supervised Learning with Tensor Networks (https://arxiv.org/abs/1605.05775)
    Repo: https://github.com/emstoudenmire/TNML
  17. Fast ε-free Inference of Simulation Models with Bayesian Conditional Density Estimation: (https://arxiv.org/abs/1605.06376)
    Repo: https://github.com/gpapamak/epsilon_free_inference
  18. Bayesian Optimization for Probabilistic Programs (http://www.robots.ox.ac.uk/~twgr/assets/pdf/rainforth2016BOPP.pdf)
    Repo: https://github.com/probprog/bopp
  19. PVANet: Lightweight Deep Neural Networks for Real-time Object Detection (https://arxiv.org/abs/1611.08588)
    Repo: https://github.com/sanghoon/pva-faster-rcnn
  20. Data Programming: Creating Large Training Sets Quickly (https://arxiv.org/abs/1605.07723)
    Repo: https://github.com/HazyResearch/snorkel
  21. Convolutional Neural Fabrics for Architecture Learning (https://arxiv.org/pdf/1606.02492.pdf)
    Repo: https://github.com/shreyassaxena/convolutional-neural-fabrics
  22. Value Iteration Networks in TensorFlow (https://arxiv.org/abs/1602.02867)
    Repo: https://github.com/TheAbhiKumar/tensorflow-value-iteration-networks

ICLR2017 Paper Index

일전에 ICLR2017 을 위해 등록된 페이퍼가 500 개가 넘는다고 포스팅했었는데요. 오픈리뷰 사이트가 가끔 먹통이 되거나 굉장히 느려지기도 해서 페이퍼 리스트를 모두 받아 저자와 기관 그리고 키워드로 인덱싱 해서 깃허브에 올려 놓았습니다.

대략 훑어 보니 요슈아 벤지오(Yoshua Bengio) 교수가 16 편 그리고 애런 코빌(Aaron Courville) 교수가 10 편으로 가장 많은 페이퍼에 참여했습니다. 담당 기관별로는 몬트리올 대학이 37 편, 버클리 대학과 페이스북, 마이크로소프트가 각 34 편, OpenAI 와 스탠포드 대학이 21 편 그리고 구글이 96 편 입니다! 키워드별로 보면 Deep learning 이 311 편으로 가장 많고 Unsupervised Learning 이 89 편, Natural language processing 이 88 편 입니다. 한 페이퍼가 중복되어 리스트 될 수 있으니 참고하세요.

Fast Weights RNN

fast-weight-rnn

지난주에 발표된 페이퍼 중 가장 이슈인 것은 제프리 힌튼(Geoffrey Hinton) 팀의 ‘Using Fast Weights to Attend to the Recent Past‘ 인 것 같습니다. 이건 마치 RNN 안에 또 다른 RNN 을 삽입한 것처럼 느껴집니다. Fast Weight는 최근의 기억에 비중을 둔 그래서 가중치가 빠르게 변하는 모습을 뜻하고 반대로 기존 RNN의 가중치는 Slow Weight로 표현하고 있습니다. 제프리 힌튼이 페이퍼 내용을 설명하는 강의 영상과 트위터의 휴고 라로쉘(Hugo Larochelle)의 서머리도 참고하세요. 좀 더 자세한 내용이 파악되면 다시 업데이트 하겠습니다.

DNN for YouTube Recommendations

youtube-recomm-1

출처: DNN for YouTube Recomm. 페이퍼

이번달에 열리는 10th ACM Conference on Recommender Systems에 맞춰 구글 리서치에서 사용자에게 유투브 동영상을 추천하는 시스템에 대한 개괄적인 소개를 담은 페이퍼(pdf)를 공개하였습니다. 페이퍼의 내용으로 미루어 보아 유투브의 추천 시스템은 구글 브레인팀에서 텐서플로우를 이용하여 구축한 것 같습니다.

유투브에서는 추천을 위해 수백만개의 동영상을 수백개의 후보로 좁히고 이를 바탕으로 다시 사용자에게 추천할 영상을 고르는 두 단계로 구성되어 있습니다. 두 단계 모두 몇단계의 ReLU(Rectified Linear Unit) 활성화 함수를 가진 완전 연결(fully connected) 레이어로 구성되어 있습니다. 후보자를 생성하는 첫 단계는 소프트맥스 함수를 이용한 분류(Classification) 문제로 변환하여 생각하였습니다. 사용된 훈련 데이터는 전체 유투브 동영상 시청 데이터를 기반으로 하고 있고 갯수는 수천억건에 이릅니다.

youtube-recomm-2

출처: DNN for YouTube Recomm. 페이퍼

학습에 필요한 데이터를 추출할 때 효과적인 학습을 위해 워드 임베딩에서 사용하는 네거티브 샘플링(negative sampling)을 기법을 이용하였고 소수의 유저가 일으키는 대량의 트래픽으로 학습이 오염되지 않게 하기 위해 사용자마다 고정된 양의 샘플을 추출했습니다. 이렇게 유투브 트래픽으로 뉴럴 네트워크를 학습시키면 이 모델은 매트릭스 인수분해(matrix factorization) 부담으로 실제 적용이 어려운 user-user 협업 필터링을 간접적으로 구현하는 효과를 가집니다.

youtube-recomm-3

출처: DNN for YouTube Recomm. 페이퍼

첫번째 네트워크에서 학습된 모델을 사용하여 사용자에게 맞는 후보 영상을 고르기 위해 해싱기법을 사용하는 Nearest Neighbor 근사 알고리즘을 사용하였습니다. 네트워크의 입력은 그림에서 볼 수 있듯이 비디오 시청 데이터, 사용자 검색어, 지역, 영상이 제공된 기간, 성별 등 많은 특성들을 사용하고 있습니다. 특별히 가변 길이의 시청 데이터를 언어 모델링에서 사용하는 임베딩 방법을 사용하여 압축(dense representation)하여 입력으로 사용하였습니다.

이 시스템은 유투부의 홈페이지에 맞춤 동영상 영역에 나타나는 항목을 결정합니다. 사용자는 시리즈를 본다거나 한 종류의 영상을 지속적으로 보는 경향이 있습니다. 예를 들면 지금 ‘테일러 스위프트’를 검색했다고 해서 홈페이지의 추천 영역을 테일러 스위프트와 관련있는 것으로 바꾸어 버리는 것이 A/B 테스트 결과 더 좋지 않았습니다. 따라서 시청이 어느 정도 완료된(hold out) 영상까지의 데이터만 추론에 사용합니다(테일러 스위프트 뮤직비디오를 다 시청하니 바로 맞춤 동영상 영역에 테일러 스위프트의 영상이 추천되었습니다).

이와 비슷한 맥락으로 유투브의 추천 시스템은 ‘좋아요’나 ‘싫어요’ 같은 명확한 사용자의 액션 뿐만 아니라 시청 완료 같은 겉으로 드러나지 않는 사용자의 액션을 함께 사용합니다. 이는 전자의 데이터가 너무 드물기(sparse) 때문입니다.

 

youtube-recomm-4

출처: DNN for YouTube Recomm. 페이퍼

두번째 네트워크는 수백개의 후보 가운데 사용자의 디바이스에 노출할 동영상을 결정하는 모델(ranking model)을 학습시킵니다. 이 모델은 동영상을 클릭할 확률을 예측하는 것이 아니라 동영상의 기대 시청 시간을 예측하는 로지스틱 회귀 분석입니다. 이는 동영상을 시청하지는 않고 클릭만 이리 저리 누르는 사람들이 있기 때문에 시청 시간을 모델링 하는 것이 더 좋은 성과를 냅니다. 두번째 모델도 A/B 테스트를 통해 지속적으로 실시간 튜닝이 됩니다.

두번째 네트워크도 수백개의 입력을 사용하여 완전 연결 ReLU 레이어를 쌓아서 구성하며 주된 학습 재료는 비디오 노출 데이터와 사용자가 시청한 데이터입니다. 이 때 사용자와 비디오 데이터를 적절하게 가공하기 위해 각각 상당한 피처 엔지니어링이 불가피 합니다.

이 페이퍼는 뉴럴 네트워크 뿐만이 아니라 추천 시스템과 동영상 사이트의 특징들을 이해해야 해서 읽기 어려웠던 것 같습니다. 부족한 부분은 댓글로 채워주세요.

Decoupled Neural Interfaces using Synthetic Gradients[1608.05343] Summary

지난 주 딥마인드에서 내놓은 이 페이퍼는 이전 포스트에서 잠깐 언급했듯이 뉴럴 네트워크의 레이어간의 데이터 주입과 그래디언트 업데이트를 비동기적으로 처리하는 방식을 제안하고 있습니다. 이전에 이런 방식과 유사한 연구가 있었는지 배경 지식을 구하기는 힘들었지만 분명한 것은 이 페이퍼가 여러 사람에게 큰 관심을 끌고 있다는 점입니다.

뉴럴 네트워크의 한 레이어에서 데이터를 처리할 때 다른 레이어가 작업을 하지 않은 상태를 멈춰(locking)있다고 표현할 수 있습니다. 특히 레이어간의 연산이 다른 디바이스에 할당되어 있는 경우에는 물리적으로도 멈춰있는 형태가 됩니다. 이렇게 멈춰있게 되는 경우는 에러 그래디언트(gradient)를 역전파시킬 때도 마찬가지 입니다. 체인 룰(chain rule)의 특성상 이전 레이어에서 그래디언트가 전달되지 않으면 하위 레이어는 대기 상태에 있습니다. 이런 레이어간의 동기성은 거대한 뉴럴 네트워크의 학습 속도에 영향을 미치므로 레이어간의 데이터 전달을 비동기적으로 처리하는 모델을 제안하고 있습니다.

여기서 제안하는 방법은 한 레이어에서 데이터가 처리된 후 그 다음 레이어를 통과해 마지막 레이어에서 에러가 계산되어 역전파 되기를 기다리지 않고 데이터가 처리되자 마자 가짜 그래디언트(synthetic gradient)를 업데이트 하는 것입니다. 가짜 그래디언트로 레이어의 파라메타(가중치)가 업데이트 되면 다음 미니배치 데이터를 받아 들일 수 있게 됩니다. 가짜 그래디언트는 진짜 그래디언트가 앞 레이어로 부터 전달되면 이 값을 이용하여 보다 좋은 가짜 그래디언트를 만들기 위해 학습합니다. 즉 가짜 그래디언트를 위한 소규모의 뉴럴 네트워크가 레이어 사이 사이에 위치해 있습니다. 아래 그림은 이런 그래디언트의 비동기적인 업데이트 과정을 잘 보여 주고 있습니다.

계속 읽기

Asynchronous update with Synthetic Gradient

구글 딥마인드 팀에서 새로운 페이퍼 ‘Decoupled Neural Interfaces using Synthetic Gradients‘를 공개했습니다. 보통 포워드 방향으로 뉴럴 네트워크를 학습시키고 백워드 방향으로 그래디언트를 전파할 때 모든 뉴럴 네트워크의 레이어가 멈춰있게 됩니다. 즉 동기적으로 파라메타가 업데이트 되는 것이죠. 이 페이퍼에서는 뉴럴 네트워크의 레이어를 작게 분리하여 학습과 에러 전파를 비동기적으로 할 수 있도록 했다고 합니다. 초록만 대충 보았는데 좀 더 정확한 내용이 파악되면 업데이트 하도록 하겠습니다.

Andrej Karpathy’s Paper Notes

구글 리서치에서 위키 피디아의 글을 이용하여 문장을 해석하고 분류하는 작업에 사용할 수 있는 WikiReading 데이터와 관련 페이퍼를 공개했습니다. 이 데이터는 최근에 공개된 스탠포드 대학의 SQuAD와 함께 머신러닝 연구에 요긴한 텍스트 데이터로 사용될 수 있을 것 같습니다.

지난 4월에 구글 딥마인드 팀에서 내 놓은 ‘Matching Networks for One Shot Learning‘ 페이퍼는 아주 적은 양의 데이터를 사용하여 모델을 학습 시킬 수 있는 아이디어를 제시하고 있습니다. 말 그대로 한방(one-shot)에 말이죠.

스탠포드 비전랩의 안드레이 카패시(Andrej Karpathy)가 이 두 페이퍼에 관한 짧은 노트(note)를 깃허브에 올렸습니다. 이 레파지토리를 반기는 이유는 점점 더 많은 노트로 채워질 것이라 기대하기 때문입니다!

(추가) Value Interation Networks(pdf) 에 대한 노트가 추가 되었습니다.

Layer Normalization

layer-normlization

출처: 레이어 노말라이제이션 페이퍼

토론토 대학의 제프리 힌튼 교수 팀에서 공개한 페이퍼 ‘Layer Normalization‘이 금주에 나온 가장 핫(hot)한 페이퍼 중 하나가 아닐까 합니다. 배치 노말라이제이션을 변형하여 입력 데이터의 평균과 분산을 이용해 레이어 노말라이제이션을 적용했다고 합니다. 이 페이퍼는 몬트리올 대학교의 애런 코빌(Aaron Courville)팀에서 지난 3월 발표한 ‘Recurrent Batch Normalization‘을 개선한 것으로 볼 수 있습니다. 당연히 결과가 좋으니 관심이 높은 거겠죠?

씨아노와 토치로 된 코드는 여기에서 확인할 수 있습니다. 관심을 반영하듯 불과 하루만에 케라스(Keras)로 작성된 GRU 리커런트 뉴럴 네트워크용 코드가 나왔습니다. 물론 이런 빠른 속도에 불평이 없는 것은 아닙니다. 🙂

* 페이퍼 마지막 Supplementary Material의 22번 공식 아래에 \alpha_i가 0으로(vector of zeros) 초기화된다고 쓰여진 것은 오타로 1로 초기화 되어야 한다고 합니다.

(업데이트) 주말에 누군가가 텐서플로우로 구현하지 않을까 생각했는데 역시나 지구 한편에서 누군가가 작업을 하고 있었습니다. 이전에 소개했던 ‘TensorFlow with The Latest Papers‘ 레파지토리에서 레이어 노말라이제이션을 텐서플로우로 구현한 코드를 조금 전에 추가했습니다.

TensorFlow with The Latest Papers

최근에 나온 뉴럴 네트워크 페이퍼들을 텐서플로우로 구현한 깃허브 레파지토리를 소개해 드립니다. 특히 RNN과 NLP에 관련된 페이퍼들인데 7월에 나온 페이퍼도 포함되어 있습니다. 아파치 2.0 라이센스이고 앞으로도 구현이 추가될 수 있을 것으로 기대해 봅니다. 아래는 이 레파지토리에서 텐서플로우로 구현한 페이퍼 리스트입니다.

(업데이트)

TensorFlow White Paper[1603.04467] Summary

텐서플로우 백서(White Paper)라고도 불려진 텐서플로우의 첫번째 페이퍼 ‘TensorFlow: Large-Scale Machine Learning on Heterogeneous Distributed Systems‘[1603.04467]를 요약해서 정리해 보았습니다. 아직 읽지 않은 분들에게 도움이 되었으면 합니다. 부족한 부분이 있다면 댓글로 보완해 주세요.

소개

2011년에 구글 브레인 팀이 조직되어 딥 뉴럴 네트워크(deep neural network)에 대한 연구를 시작하였고 딥 뉴럴 네트워크 시스템인 디스트빌리프(DistBelief)를 개발했습니다. 구글은 디스트빌리프를 비감독학습(unsupervised learning), 언어[1, 2], 이미지인식[1, 2], 비디오분류, 음성인식[1, 2, 3], 보행자감지, 바둑, 시퀀스예측, 강화학습(reinforcement learning)과 그외[1, 2] 여러 분야에 사용해왔습니다. 구글 안의 50개가 넘는 팀과 알파벳 자회사들이 디스트빌리프를 이용해 다양한 제품에 딥 뉴럴 네트워크를 적용해왔습니다. 여기에는 검색, 광고, 음성인식시스템[1, 2, 3], 구글포토, 지도, 스트리트뷰, 번역, 유투브 등이 포함됩니다. 이러한 경험을 바탕으로 차세대 대규모 머신러닝 시스템인 텐서플로우(TensorFlow)를 개발했습니다.

텐서플로우는 상태 정보를 가지는 데이터플로우(dataflow) 그래프로 컴퓨터의 계산을 표현합니다. 안드로이드, iOS 같은 모바일 환경에서 추론(inference) 시스템을 만들수도 있고 한개 또는 여러개의 GPU를 가진 단일 서버에서는 중간 규모의 훈련(training)과 추론 시스템을 구축할 수 있습니다. 또는 수천개의 GPU가 탑재된 수백대의 서버에서 운영될 수도 있습니다. 텐서플로우를 이용하면 학습 시스템은 대규모로 하면서 실제 서비스는 소형화하여 운영할 수 있습니다.

텐서플로우는 매우 빠른 성능과 유연한 구조를 가지고 있어 새로운 모델을 빠르게 실험해 볼 수 있고 실제 서비스에도 안정적으로 사용할 수 있습니다. 디스트빌리프와 비교해 볼 때 텐서플로우의 프로그래밍 방식이 더 유연하고 성능은 더 뛰어납니다. 구글 내부의 여러 팀들이 이미 디스트빌리프에서 텐서플로우로 전환했습니다. 텐서플로우는 딥 뉴럴 네트워크를 만드는 데 사용되는 것이 일반적이지만 다른 머신러닝 알고리즘을 적용하거나 수치 계산 용으로도 사용할 수 있어서 다양한 산업 분야에 폭 넓게 활용될 수 있습니다. 텐서플로우는 2015년 11월 아파치 2.0 오픈소스 라이센스로 공개되었고 www.tensorflow.org에서 다운받을 수 있습니다.

계속 읽기