SKT T-Brain 팀의 첫 페이퍼 “Learning to Discover Cross-Domain Relations with Generative Adversarial Networks”(DiscoGAN, 1703.05192) 공개되었습니다. DiscoGAN은 한 종류의 이미지에서 학습하여 비슷한 스타일의 다른 종류의 이미지를 생성해 줍니다. T-Brain 페이스북 페이지에서 친절하게 자세히 설명하고 있습니다. DiscoGAN은 파이토치(!)로 구현되어 있으며 깃허브에 공개되어 있습니다. 하지만 번개같은 속도로 데브시스타즈의 김태훈님이 더 깔금하게 파이토치 구현을 만들었습니다. 이외에도 두 개의 체이너 구현(1, 2)도 만들어졌습니다.
카테고리 보관물: Paper
Discuss in Arxiv-Sanity
OpenAI의 안드레이 카패시(Andrej Karpathy)가 운영하는 ML 페이퍼 아카이빙 사이트인 Arxiv Sanity Preserver에 댓글 기능이 추가되었습니다. 보통 페이퍼와 관련된 이야기들은 레딧이나 해커뉴스 게시판에서 많이 올라왔습니다. 분위기가 arxiv-sanity 쪽으로 잘 옮겨올지 궁금하네요. 개인적으로는 레딧보다 좀 더 정갈한 댓글을 기대해 봅니다. 🙂
FAISS, Differentiable Tree, gcForest
페이스북에서 대용량 벡터의 유사도 검색을 위한 오픈소스 faiss를 깃허브에 공개했습니다. faiss 는 일종의 성분 분해 알고리즘인 Product Quantization(PQ) 알고리즘을 GPU를 대상으로 구현하였고 ‘Optimized Product Quantization for Approximate Nearest Neighbor Search‘ 페이퍼를 바탕으로 하고 있습니다. SIFT 데이터셋을 사용하여 데이터가 10만개일 때는 쿼리 속도가 20µs로 종전의 최고 성능과 유사하지만 데이터가 10억개일 때는 17.7µs로 종전 최고 성능보다 8배 정도 빠르다고 합니다. 이 프레임워크는 C++로 작성되었으며 파이썬 인터페이스를 가지고 있습니다. 벡터로 표현된 어떤 대상에 대해서도 GPU를 사용한 빠른 검색이 가능합니다. faiss 코드 구현을 자세히 설명한 페이퍼는 ‘Billion-scale similarity search with GPUs‘(1702.08734)입니다. 이러다 GPU를 사용하는 데이터베이스도 나올지 모르겠네요.
공교롭게도 이와 거의 동시에 딥마인드(DeepMind)팀에서 또 다른 k-NN 알고리즘에 대한 페이퍼 ‘Learning Deep Nearest Neighbor Representations Using Differentiable Boundary Trees‘(1702.08833) 공개했습니다. 최근에 발표된 boundary forest 알고리즘을 응용하여 트리 노드의 판단을 위해 뉴럴 네트워크를 이용합니다. 바운더리 트리 각 노드에서 데이터를 새로운 표현으로 변환하여 예측에 활용하는데 이 변환함수를 뉴럴 네트워크를 사용하여 학습시킵니다. MNIST 데이터로 1.85% 에러율을 얻었습니다.
그리고 난징 대학교에서 공개한 다른 페이퍼 ‘Deep Forest: Towards An Alternative to Deep Neural Networks‘(1702.08835)도 트리 모델에 관한 것으로 많은 관심을 받고 있습니다. 이 페이퍼에서는 gcForest 라는 새로운 앙상블 방법을 뉴럴 네트워크 대안으로 제시하고 있습니다. 아마도 이렇게 트리 관련 이슈가 동시에 나오는 것이 우연은 아닐거라고 생각됩니다. 트리모델은 분석하기도 좋고 비교적 직관적이므로 앞으로도 뉴럴 네트워크 등과 혼합된 형태가 많이 연구될 것 같습니다.
(업데이트) 난징 대학의 페이퍼에 대해 논란이 많네요. 실험결과가 의심스럽다, 코드가 공개되어 있지 않다, 그리고 뉴럴 네트워크와 트리모델 중 어떤게 더 나은지 실랑이도 생기네요. 레딧과 해커뉴스 포스트를 참고하세요.
Review Paper of DL, RL
거의 동시에 딥러닝과 강화학습에 관한 리뷰 페이퍼가 각각 공개되었습니다. 하나는 “On the Origin of Deep Learning“(1702.07800 pdf)로 80페이지가 넘습니다. 퍼셉트론부터 시작해서 최근의 뉴럴 네트워크의 다양한 기술들을 요약하고 있습니다. 볼츠만 머신, 딥 빌리프, CNN, RNN, GAN, 최적화 등 다양한 주제를 망라하고 있습니다. 시작을 아리스토텔레스까지 거슬러 올라간 건 애교로 봐야할까요? 🙂
다른 하나는 “Deep Reinforcement Learning: An Overview“(1701.07274 pdf)입니다. DQN, Policy Gradient 와 강화학습이 적용된 다양한 어플리케이션을 소개하고 있습니다. 레퍼런스만 절반이라 강화학습 이론 자체보다는 관련 리소스를 확인하는 용도로 좋을 것 같습니다.
PixelCNN [1601.06759] Summary
‘Pixel Recurrent Neural Networks‘[1601.06759] 페이퍼에는 세개의 네트워크 모델을 설명하고 있습니다. PixelRNN 으로 명명된 Row LSTM, Diagonal BiLSTM 과 PixelCNN 입니다. 이 중에 PixelCNN 부분을 재현해 보았습니다. PixelCNN 은 PixelRNN 에 비해 비교적 학습 속도가 빠르고 PixelCNN 후속 페이퍼도 계속 나오고 있습니다. 문제를 단순화하기 위해 MNIST 손글씨 숫자 흑백 이지미를 대상으로 하였습니다.
PixelCNN 의 몇가지 주요한 핵심 중 하나는 입력 특성을 콘볼루션할 때 필터의 일부분만 사용한다는 점입니다. 입력 특성맵과 출력 특성맵이 같은 크기이고(텐서플로우에서 ‘SAME’ 패딩) 스트라이드가 1일 때 홀수 크기의 필터는 필터의 중심이 입력 특성맵의 모든 픽셀을 지나가게 됩니다. 이 때 필터의 중심에서 오른쪽 그리고 아래 부분의 가중치를 0 으로 셋팅하면 입력 특성맵에서 필터의 중심의 왼쪽과 위쪽의 픽셀에만 가중치를 적용(콘볼빙)하게 됩니다. 이를 그림으로 나타낸 것이 페이퍼에 잘 나와 있습니다.
왼쪽 그림에서 아래 레이에에서 콘볼빙하여 윗 레이어의 특성 맵을 만들 때 아래 레이어의 3 x 3 필터 중심(붉은색)의 왼쪽과 위의 픽셀에만 가중치가 곱해지는 것을 보이고 있습니다. 이를 마스크 콘볼루션(masked convolution)이라고 부르고 있습니다. 필터를 마스크하기 위해서는 필터의 중심에서 우측과 아래의 가중치를 0 으로 셋팅하면 됩니다.
GAN & PixelCNN
뉴럴 네트워크를 사용해 이미지를 생성해 내는 몇가지 방법 중 최근 GAN(Generative Adversarial Networks)와 PixelCNN 에 관한 새로운 페이퍼와 코드가 공개되어서 소개해 드립니다.
GAN 에 관련된 페이퍼로는 이안 굿펠로우(Ian Goodfellow), 요수아 벤지오(Yoshua Bengio) 교수 등이 쓴 Generative Adversarial Networks와 인디코, 페이스북의 서미스 친탈라(Soumith Chintala) 가 쓴 Unsupervised representation learning with deep convolutional generative adversarial networks 등을 시작으로 여러편이 나왔던 것 같습니다. 최근에 버클리 대학의 AI 리서치랩(BAIR)에서 GAN 을 사용하여 이미지 대 이미지 변환을 만드는 pix2pix 의 페이퍼와 토치 코드를 공개하였습니다. 이 코드의 텐서플로우 버전이 나올지 기대됩니다.
PixelCNN 은 딥마인드 팀이 내 놓은 Pixel Recurrent Neural Networks 와 역시 딥마인드 팀이 작성한 Conditional Image Generation with PixelCNN Decoders 가 있습니다. PixelRNN 과 PixelCNN 에 대한 텐서플로우 구현은 김태훈님의 pixel-rnn-tensorflow 레파지토리가 잘 알려져 있습니다. OpenAI 의 안드레이 카패시(Andrej Karpathy) 등이 최근에 PixelCNN 을 보완한 PixelCNN++ 의 페이퍼와 텐서플로우 코드를 공개하였습니다. 이 페이퍼는 ICLR 2017 에 등록되어 있습니다. PixelCNN++ 에 대해 좀 더 자세한 내용이 확인되면 다시 포스팅하겠습니다.
Urban Sound Classification
뉴욕 대학교 MARL(Music and Audio Research Lab)에서 2014 년에 공개한 UrbanSound8K 데이터를 이용하여 텐서플로우를 사용해 사운드를 분류 모델을 만들어 보았습니다. 텐서플로우 코드는 아퀴브 사이드(Aaqib Saeed)의 블로그를 참고하였습니다.
UrbanSound8K 데이터는 모두 10 가지 종류의 소리를 4 초 가량 녹음한 것으로 8 천개가 넘는 wav 파일들 입니다. 소리의 종류는 ‘air_conditioner’, ‘car_horn’, ‘children_playing’, ‘dog_bark’, ‘drilling’, ‘engine_idling’, ‘gun_shot’, ‘jackhammer’, ‘siren’, ‘street_music’ 입니다. 압축을 풀기 전의 데이터 사이즈가 5 GB 가 넘습니다. 이 데이터를 받기 위해서는 깃허브에서 다운로드 주소를 이용해 다운받을 수 있지만 사용 목적에 대해 알려달라고 합니다.
먼저 wav 파일을 이용해서 피처를 뽑아 내야합니다. 아퀴브 사이드가 사용한 방법은 사운드 분석 파이썬 라이브러리인 librosa 를 이용해서 특성을 추출하였습니다. 사용된 특성은 mfcc(Mel-frequency cepstral coefficients), chroma_stft(chromagram from a waveform or power spectrogram), melspectrogram(Mel-scaled power spectrogram), spectral_contrast(spectral contrast), tonnetz(tonal centroid features) 입니다. 이 데이터를 모두 행으로 늘여 놓으면 총 193 개의 입력 데이터가 만들어 집니다.
Fast Weights RNN
지난주에 발표된 페이퍼 중 가장 이슈인 것은 제프리 힌튼(Geoffrey Hinton) 팀의 ‘Using Fast Weights to Attend to the Recent Past‘ 인 것 같습니다. 이건 마치 RNN 안에 또 다른 RNN 을 삽입한 것처럼 느껴집니다. Fast Weight는 최근의 기억에 비중을 둔 그래서 가중치가 빠르게 변하는 모습을 뜻하고 반대로 기존 RNN의 가중치는 Slow Weight로 표현하고 있습니다. 제프리 힌튼이 페이퍼 내용을 설명하는 강의 영상과 트위터의 휴고 라로쉘(Hugo Larochelle)의 서머리도 참고하세요. 좀 더 자세한 내용이 파악되면 다시 업데이트 하겠습니다.
Deep Learning Papers Reading Roadmap
딥러닝 분야에서 꼭 읽어야 할 페이퍼를 정리해 놓은 깃허브를 안내해 드립니다. ‘Deep Learning Papers Reading Roadmap‘ 은 주제별로 중요한 페이퍼를 잘 정리해 놓았습니다. 최신의 논문도 있지만 오래되었더라도 꼭 읽어야 할 목록과 잘 조화를 이룬 것 같습니다. 워털루 대학의 엄태웅님이 만든 ‘awesome-deep-learning-papers‘ 와 비교하면서 하나씩 버킷 리스트를 채워가면 좋을 것 같습니다. 아래 정리된 페이퍼의 분류 소제목을 정리해 놓았습니다.
- Deep Learning History and Basics
1.0 Book
1.1 Survey
1.2 Deep Belief Network(DBN)(Milestone of Deep Learning Eve)
1.3 ImageNet Evolution(Deep Learning broke out from here)
1.4 Speech Recognition Evolution - Deep Learning Method
2.1 Model
2.2 Optimization
2.3 Unsupervised Learning / Deep Generative Model
2.4 RNN / Sequence-to-Sequence Model
2.5 Neural Turing Machine
2.6 Deep Reinforcement Learning
2.7 Deep Transfer Learning / Lifelong Learning / especially for RL
2.8 One Shot Deep Learning - Applications
3.1 NLP(Natural Language Processing)
3.2 Object Detection
3.3 Visual Tracking
3.4 Image Caption
3.5 Machine Translation
3.6 Robotics
3.7 Art
3.8 Audio
3.9 Game
3.10 Knowledge Graph
3.11 Recommender Systems
3.12 Bioinformatics / Computational Biology
3.13 Neural Network Chip
3.14 Other Frontiers
흐리게 표시된 부분은 아직 채워지지 않은 파트입니다.
때마침 OpenAI 의 잭 클라크(Jack Clark)가 트윗에 AI를 배우는데 뭐가 가장 힘든지를 물어보았는데요. 결과는 예상한대로 페이퍼를 읽을 시간이 없다가 가장 많은 지지를 받고 있네요. 물론 머리가 나빠 하나 읽는데 시간이 많이 걸린다는 것도 인정합니다 🙂
DeepMind’s new paper: Memory Augmented Neural Network, DNC

출처: 딥마인드 블로그
딥마인드에서 외부 메모리를 사용하는 뉴럴 네트워크 모델에 관한 새로운 페이퍼를 네이처를 통해 발표하였습니다. 뉴럴 네트워크가 입력값 외에 외부 저장 장치를 사용하여 좀 더 복잡한 데이터 구조에 대해 학습할 수 있도록 했다고 하는데요. 페이퍼 외에 딥마인드 블로그에 관련된 포스트를 통해 좀 더 자세히 설명하고 있습니다. 소스코드는 공개하긴 하는데 시간이 6개월 정도 걸린다고 합니다@.@ 아마도 텐서플로우 코드로 변경해서 공개하려는 것 아닐까 추측됩니다. 이전의 연구와 비교해서 보려면 두개의 페이퍼 ‘Neural Turing Machines‘ 과 ‘Memory Networks‘ 를 참고하면 좋을 것 같습니다.
네이처에 게재된 페이퍼는 여기에서 다운받을 수 있습니다. 페이퍼에 딸린 수학공식 부록은 여기에서 다운받을 수 있습니다. 페이퍼의 결과를 보여주는 동영상도 두개 같이 실렸습니다.
(업데이트) 페이퍼의 내용을 텐서플로우로 구현한 깃허브 레파지토리 DNC-tensorflow 가 공개되었습니다. 페이퍼의 내용을 모두 구현한 것은 아니지만 페이퍼의 내용을 이해하는 데 큰 도움이 될 것 같습니다.