[본 자료는 AB180 사내 스터디의 일환으로 제작되었습니다.]
딥러닝에 대한 기초적인 이해 및 적용 예시를 알아보고, 인사이트를 공유하기 위해 만들었습니다. 첫번째로 딥러닝이 이미지 프로세싱에 적용된 방식 및, Convolutional Neural Network (ConvNet)의 기초에 대해 다루었습니다.
* 본 스터디 자료는 Stanford 강좌인 CS231n (http://cs231n.stanford.edu)의 내용을 참고했습니다.
사내 스터디용으로 공부하며 만든 발표 자료입니다. 부족한 부분이 있을 수도 있으니 알려주시면 정정하도록 하겠습니다.
*슬라이드 6에 나오는 classical CNN architecture(뒤에도 계속 나옴)에서 ReLU - Pool - ReLu에서 뒤에 나오는 ReLU는 잘못된 표현입니다. ReLU - Pool에서 ReLU 계산을 또 하는 건 redundant 하기 때문입니다(Kyung Mo Kweon 피드백 감사합니다)
사내 스터디용으로 공부하며 만든 발표 자료입니다. 부족한 부분이 있을 수도 있으니 알려주시면 정정하도록 하겠습니다.
*슬라이드 6에 나오는 classical CNN architecture(뒤에도 계속 나옴)에서 ReLU - Pool - ReLu에서 뒤에 나오는 ReLU는 잘못된 표현입니다. ReLU - Pool에서 ReLU 계산을 또 하는 건 redundant 하기 때문입니다(Kyung Mo Kweon 피드백 감사합니다)
2017 tensor flow dev summit (Sequence Models and the RNN API)
작성된 자료로 2017년 2월 22일 오후 8시 부터 Maru180에서
GDG Seoul 에서 주최한 2017 Tensorflow Dev Summit Extended Seou에서
발표를 진행
Sequence Models and the RNN API 정리 내역 공유
Variational Autoencoder를 여러 가지 각도에서 이해하기 (Understanding Variational Autoencod...Haezoom Inc.
인공신경망을 이용한 generative model로서 많은 관심을 받고 있는 Variational Autoencoder (VAE)를 보다 잘 이해하기 위해서, 여러 가지 재미있는 관점에서 바라봅니다. VAE 및 머신러닝 일반에 지식을 가지고 있는 청중을 대상으로 진행된 세미나 자료입니다. 현장에서 구두로 설명된 부분은 슬라이드의 회색 박스에 보충설명을 적어두었습니다.
Knowing when to look : Adaptive Attention via A Visual Sentinel for Image Cap...홍배 김
본 논문에서는 Hidden layer 뒤에 추가적인 새로운 시각중지 벡터
(visual sentinel vector)를 갖는 LSTM의 확장형을 채택함으로서
- 시각신호로부터 필요 시 언어모델로 전환이 가능한
Adaptive attention encoder-decoder framework을 제안하였고
- 이로 인하여 “white”, “bird”, “stop,”과 같은 시각적 단어에 대해서는 좀 더 이미지에 집중하고, “top”, “of”, “on.”의 경우에는 시각중지를 사용함으로서 Image Captioning의 정확도를 향상
One-stage Network(YOLO, SSD 등)의 문제점 예를 들어 근본적인 문제인 # of Hard positives(object) << # of Easy negatives(back ground) 또는 large object 와 small object 를 동시에 detect하는 경우 등과 같이 극단적인 Class 간 unbalance나 난이도에서 차이가 나는 문제가 동시에 존재함으로써 발생하는 문제를 해결하기 위하여 제시된 Focal loss를 class간 아주 극단적인 unbalance data에 대한 classification 문제(예를 들어 1:10이나 1:100)에 적용한 실험결과가 있어서 정리해봤습니다. 결과적으로 hyper parameter의 설정에 매우 민감하다는 실험결과와 잘만 활용할 경우, class간 unbalance를 해결하기 위한 data level의 sampling 방법이나 classifier level에서의 특별한 고려 없이 좋은 결과를 얻을 수 있다는 내용입니다.
2017 tensor flow dev summit (Sequence Models and the RNN API)
작성된 자료로 2017년 2월 22일 오후 8시 부터 Maru180에서
GDG Seoul 에서 주최한 2017 Tensorflow Dev Summit Extended Seou에서
발표를 진행
Sequence Models and the RNN API 정리 내역 공유
Variational Autoencoder를 여러 가지 각도에서 이해하기 (Understanding Variational Autoencod...Haezoom Inc.
인공신경망을 이용한 generative model로서 많은 관심을 받고 있는 Variational Autoencoder (VAE)를 보다 잘 이해하기 위해서, 여러 가지 재미있는 관점에서 바라봅니다. VAE 및 머신러닝 일반에 지식을 가지고 있는 청중을 대상으로 진행된 세미나 자료입니다. 현장에서 구두로 설명된 부분은 슬라이드의 회색 박스에 보충설명을 적어두었습니다.
Knowing when to look : Adaptive Attention via A Visual Sentinel for Image Cap...홍배 김
본 논문에서는 Hidden layer 뒤에 추가적인 새로운 시각중지 벡터
(visual sentinel vector)를 갖는 LSTM의 확장형을 채택함으로서
- 시각신호로부터 필요 시 언어모델로 전환이 가능한
Adaptive attention encoder-decoder framework을 제안하였고
- 이로 인하여 “white”, “bird”, “stop,”과 같은 시각적 단어에 대해서는 좀 더 이미지에 집중하고, “top”, “of”, “on.”의 경우에는 시각중지를 사용함으로서 Image Captioning의 정확도를 향상
One-stage Network(YOLO, SSD 등)의 문제점 예를 들어 근본적인 문제인 # of Hard positives(object) << # of Easy negatives(back ground) 또는 large object 와 small object 를 동시에 detect하는 경우 등과 같이 극단적인 Class 간 unbalance나 난이도에서 차이가 나는 문제가 동시에 존재함으로써 발생하는 문제를 해결하기 위하여 제시된 Focal loss를 class간 아주 극단적인 unbalance data에 대한 classification 문제(예를 들어 1:10이나 1:100)에 적용한 실험결과가 있어서 정리해봤습니다. 결과적으로 hyper parameter의 설정에 매우 민감하다는 실험결과와 잘만 활용할 경우, class간 unbalance를 해결하기 위한 data level의 sampling 방법이나 classifier level에서의 특별한 고려 없이 좋은 결과를 얻을 수 있다는 내용입니다.
AlphaGo: Mastering the Game of Go with Deep Neural Networks and Tree SearchKarel Ha
the presentation of the article "Mastering the game of Go with deep neural networks and tree search" given at the Optimization Seminar 2015/2016
Notes:
- All URLs are clickable.
- All citations are clickable (when hovered over the "year" part of "[author year]").
- To download without a SlideShare account, use https://www.dropbox.com/s/p4rnlhoewbedkjg/AlphaGo.pdf?dl=0
- The corresponding leaflet is available at http://www.slideshare.net/KarelHa1/leaflet-for-the-talk-on-alphago
- The source code is available at https://github.com/mathemage/AlphaGo-presentation
The slides go through the implementation details of Google Deepmind's AlphaGo, a computer Go AI that defeated the European champion. The slides are targeted for beginners in the machine learning area.
Korean version (한국어 버젼): http://www.slideshare.net/ShaneSeungwhanMoon/ss-59226902
알파고의 작동 원리를 설명한 슬라이드입니다.
English version: http://www.slideshare.net/ShaneSeungwhanMoon/how-alphago-works
- 비전공자 분들을 위한 티저: 바둑 인공지능은 과연 어떻게 만들까요? 딥러닝 딥러닝 하는데 그게 뭘까요? 바둑 인공지능은 또 어디에 쓰일 수 있을까요?
- 전공자 분들을 위한 티저: 알파고의 main components는 재밌게도 CNN (Convolutional Neural Network), 그리고 30년 전부터 유행하던 Reinforcement learning framework와 MCTS (Monte Carlo Tree Search) 정도입니다. 새로울 게 없는 재료들이지만 적절히 활용하는 방법이 신선하네요.
2019년 4월 27일에 있었던 한국게임학회 인공지능분과 두번째 모임에 진행했던 <Tensorflow 2.0 튜토리얼 - CNN> 강연자료입니다. CNN 을 처음 접하는 분들을 위해 CNN 의 기본 개념을 짚어보며, Google Colab Sample Code 를 통해 2.0 에서 CNN 을 사용하는 방법을 간단하게 살펴봅니다.
[Paper Review] Image captioning with semantic attentionHyeongmin Lee
이번 세미나에서는 Quanzeng You의 CVPR 논문인 [Image Captioning with Semantic Attention]에 대한 리뷰를 하려고 합니다. Image Captioning은 인공지능 학계의 거대한 두 흐름인 ‘Computer Vision(컴퓨터 비전)’과 ‘Natural Language Processing(자연어 처리)’를 연결하는, 매우 중요한 의의를 갖는 연구 분야입니다.
Image Captioning의 접근 방식은 크게 ‘Top-Down Approach’와 ‘Bottom-Up Approach’로 구분됩니다. Top-Down Approach에서는 이미지를 통째로 시스템에 통과 시켜서 얻은 ‘요점’을 언어로 변환하는 반면 Bottom-Up Approach에서는 이미지의 다양한 부분들로부터 단어들을 도출해내고, 이를 결합하여 문장을 얻어냅니다. 논문에서는 이러한 Top-Down Approach와 Bottom-Up Approach의 장점을 합해서 Image Captioning 성능을 올리고자 합니다. 이 때 사용되는 개념이 바로 Visual Attention입니다.
Visual Attention은 말 그대로 이미지의 특정 부분에 집중하는 것입니다. 사람이 이미지의 모든 내용을 전부 묘사하지 않는 것처럼, 컴퓨터도 이미지에서 특히 중요한 부분에 자원을 집중하는 형태의 노력이 필요합니다. Visual Attention을 통해서 컴퓨터는 이미지의 특히 중요한 부분에 집중하고, 더 자세히 묘사하게 됩니다. 본 세미나에서는 Visual Attention이 어떠한 방식으로 Image Captioning에 적용되는지 살펴보도록 하겠습니다.
Designing more efficient convolution neural networkNAVER Engineering
CNN은 여러 기술에 적용되어 높은 성능을 보여주고 있지만, 여전히 실제 상용 서비스나 모바일 플랫폼에 적용하기에는 하드웨어적 비용이 큰 경우가 많다.
본 발표에서는 기존 CNN의 높은 성능은 유지하면서도 훨씬 가볍고 빠른 모델을 설계하고 학습하는 방법들을 소개한다. 기존 컨볼루션 레이어의 문제점들을 보완하기위해 제안된 다양한 테크닉들을 소개하고, 최신 논문들이 이런 테크닉들을 어떻게 활용하고 있는지 사례별로 자세히 알아본다.
4. Image Classification
한 이미지에 대해 라벨링 (분류) 한다.
딥러닝 붐의 시작이 된 분야
CNN (Convolutional Neural
Network)의 화려한 데뷔
현재 ILSVRC 2015 데이터셋 기준
Top-5 Accuracy 96.92%
(사람은 94%!)
6. Image Object Detection
이미지 안의 여러개의 사물에 대해
각각 Classification & Localization
State-Of-Art (2015. 06.) :
이미지를 그리드로 잘라서
확률분포 계산 후 Bounding Box 매
김
7. Image Segmentation
Bounding Box에서 더 나아가서
실제 이미지가 차지하고 있는 픽셀이
어디인지를 알아본다.
이미지를 다운샘플링한 뒤
픽셀별로 Classficiation을 수행해서
해당 픽셀별 확률분포를 Upsampling
하는 일련의 과정을 학습함.
8. Image Generation
이미지를 무언가로부터 생성한다.
ex) 텍스트로부터 생성,
빈 부분의 이미지를 생성,
밑그림으로부터 이미지를 생성,
작은 해상도로부터 고해상도 이미지 생성
Latent Space로부터 이미지 생성
9. Image Visualization
이미지 자체가 아니라 주로 추출해낸 Feature, Activation Map,
학습시킨 Filter의 표현 방법 및 재구성 방법을 연구하는 분야
Visualization을 응용해 만든 획기적인 결과물도 많이 존재
ex) Deep Dream, Artistic Style Transfer...
13. ConvNet : Motivations
IMAGE PROCESSING
Convolution은 이미지 처리에서, 전체 이미지에 대해
특정 필터 (커널)을 적용하는 연산으로 사용된다.
이미지를 훑으며 작은 필터 행렬를 곱하고 더함으로서
결과 이미지를 만들어낸다.
14. Why ConvNet?
기존에 우리가 사용하던 네트워크는 Fully Connected / Dense Network
이전 레이어의 출력값을 전부 통과시킴. (Wx + b)
그렇기에 레이어 안의 파라미터들은 전부 연결되어있음. (Gradient-ically)
15. ex) MNIST 이미지
image = tf.placeholder('int32', [28, 28])
x = tf.reshape(image, [-1]) # 크기 784짜리로 flatten
W = tf.Variable(tf.random_normal([784, 32]))
b = tf.Variable(tf.zeros([32]))
y = tf.nn.xw_plus_b(x, W, b) # xW + b
16. ex) MNIST 이미지
image = tf.placeholder('int32', [28, 28])
x = tf.reshape(image, [-1]) # 크기 784짜리로 flatten
W = tf.Variable(tf.random_normal([784, 32]))
b = tf.Variable(tf.zeros([32]))
y = tf.nn.xw_plus_b(x, W, b) # xW + b
17. Why ConvNet?
기존에 우리가 사용하던 네트워크는 Fully Connected / Dense Network
이전 레이어의 출력값을 전부 통과시킴. (Wx + b)
그렇기에 레이어 안의 파라미터들은 전부 연결되어있음. (Gradient-ically)
18. Why ConvNet?
기존에 우리가 사용하던 네트워크는 Fully Connected / Dense Network
이전 레이어의 출력값을 전부 통과시킴. (Wx + b)
그렇기에 레이어 안의 파라미터들은 전부 연결되어있음. (Gradient-ically)
허나 이미지엔 적합하지 않다.파라미터 수와 Computational Cost가 증가
19. Convolutional Neural Network
Wx+b 대신, 조그만 필터를 전체 이미지에 대해 훑는다.
이후 결과를 Activation Function에 통과시킨다.
이렇게하면 출력으로 Activation Map이 나온다.
그리고 ConvNet은 이 필터 (커널)를 학습해나간다.
23. ConvNet Structure
Convolution Layer : 설명했던 Convolution 연산 수행
Activation Layer :Activation Function에 통과시킴
Pooling Layer :다운샘플링을 수행. 크기를 줄임.
Fully-Connected : 마지막 레이어에 붙음. Inferrence 수행
Softmax : 각각의 라벨에 대한 확률분포 도출
24. Convolution Layer
"A ConvNet is made up of Layers. Every Layer has a simple API:
It transforms an input 3D volume to an output 3D volume with
some differentiable function that may or may not have parameters."
Source: CS231n
32. Fully Connected Layer
앞선 Convolution 레이어는 특징을 추출하는 과정이라면
FC 레이어에선 실질적인 Classification을 수행한다. BUT...
적절한 Convolution이나 Global Average Pooling으로 FC를 대체해나가는게 트렌드.
33. ConvNet Advanced
1 x 1 Convolution
Input과 Output간의 크기 변화 없이 Linear Projection 수행
Depth만 변경시키고자 할 때 사용.
Dilated Convolution
연속적인 필터가 아니라, 사이사이에
공간이 있는 필터를 사용한다.
Receptive Field를 지수적으로 키울 수 있다.
SPECIAL CASES
34. ConvNet Advanced
큰 필터는 사용하지 않는다. 높은 Computational Cost & Overfitting 유발
작은 크기의 필터를 깊게 쌓는게 트렌드
예시 :VGGNet (2014), Residual Net (2015)
Pooling을 사용하지 않는다. Max Pooling은 더더욱 찾아보기 힘듦.
Stride를 주는 방식으로 Output 크기를 감소시키는 방법을 씀.
FC 레이어 없애기. 원래 최종 Feature를 판정하고, Softmax를 먹이기 위하여
특징 벡터의 Dimension을 바꾸기 위해 FC 레이어를 사용하지만,
적절한 Convolution 레이어나 Global Average Pooling으로 FC를 대체해 Cost를 줄임.
TRENDS
36. R E F E R E N C E
Stanford University CS231n : Convolutional Neural Networks for Visual Recognition
Yu, Koltun,. Multi-Scale Context Aggregation by Dilated Convolutions.
arXiv preprint:1511.07122v3 [cs.cV]
Kernel (Image Processing) - Wikipedia
T H A N K Y O U