카테고리 보관물: Paper

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 의 페이퍼와 토치 코드를 공개하였습니다. 이 코드의 텐서플로우 버전이 나올지 기대됩니다.

pix2pix

출처: 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

fast-weight-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‘ 와 비교하면서 하나씩 버킷 리스트를 채워가면 좋을 것 같습니다. 아래 정리된 페이퍼의 분류 소제목을 정리해 놓았습니다.

  1. 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
  2. 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
  3. 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

dnc_figure1-width-1500

출처: 딥마인드 블로그

딥마인드에서 외부 메모리를 사용하는 뉴럴 네트워크 모델에 관한 새로운 페이퍼를 네이처를 통해 발표하였습니다. 뉴럴 네트워크가 입력값 외에 외부 저장 장치를 사용하여 좀 더 복잡한 데이터 구조에 대해 학습할 수 있도록 했다고 하는데요. 페이퍼 외에 딥마인드 블로그에 관련된 포스트를 통해 좀 더 자세히 설명하고 있습니다. 소스코드는 공개하긴 하는데 시간이 6개월 정도 걸린다고 합니다@.@ 아마도 텐서플로우 코드로 변경해서 공개하려는 것 아닐까 추측됩니다. 이전의 연구와 비교해서 보려면 두개의 페이퍼 ‘Neural Turing Machines‘ 과 ‘Memory Networks‘ 를 참고하면 좋을 것 같습니다.

네이처에 게재된 페이퍼는 여기에서 다운받을 수 있습니다. 페이퍼에 딸린 수학공식 부록은 여기에서 다운받을 수 있습니다. 페이퍼의 결과를 보여주는 동영상도 두개 같이 실렸습니다.

(업데이트) 페이퍼의 내용을 텐서플로우로 구현한 깃허브 레파지토리 DNC-tensorflow 가 공개되었습니다. 페이퍼의 내용을 모두 구현한 것은 아니지만 페이퍼의 내용을 이해하는 데 큰 도움이 될 것 같습니다.