본문 바로가기

Machine Learning

(23)
[CS231n] 12. Visualizing and Understanding 0. 서론 이 강의의 목표는 여태까지 블랙박스(중간 과정에 대한 이해나 설명이 어려운 구조) 형태로 바라보았던 Convolutional Network의 내부가 어떻게 작동하는지에 대한 최소한의 이해를 가지는데에 있다. 물론 아직까지 딥러닝 구조를 완벽히 설명할 수는 없지만 특정 입력값을 변화시킨 후 이에대한 네트워크의 변화를 관찰함으로써 어느정도의 인과관계를 설명하고자 한다. 1. Convolutional Filters 각 Feature Map에서 필터가 찾고자 하는 정보는 어떤것인지에 대한 정보를 얻기 위해서 수많은 이미지를 이용해 훈련이 완료된 네트워크에서 weight 값을 시각화하는 방법을 채택할 수 있다. 일반적으로 이미지를 분류하는 경우 입력 값으로 3xHxW 형태의 Tensor가 들어오게 되고..
[CS231n] 11. Detection and Segmentation 이번 강에서는 Image detection 과 Image Segmentation분야의 여러 문제들과 이에 사용되는 네트워크 구조를 알아볼 것입니다. 엄청나게 방대하고 현재도 활발한 분야이기 때문에 각각에 대해서 간략한 소개 정도만 하게 됩니다. 1. Semantic Segmentation Semantic segmentation이란 위 그림처럼 한 그림 안에서 각 영역을 나누는 분야입니다. - Approach 1. Sliding Window 우선 가장 먼저 생각할 수 있는 방법 중 하나는, 적당한 크기의 window 를 설정하고 이 window로 이미지를 처음부터 끝까지 훑으며 모든 위치에서 이 window안의 이미지를 classification 을 하는 CNN에 넣어주는 것입니다. 가능은 하겠지만 win..
[CS231n] 8. Deep Learning Software(2) - Frameworks 이번 포스팅에서는 실제 딥러닝 코드 구현에서 사용되는 딥러닝 프레임워크들에 대해 소개합니다. * 본 포스팅은 2017년 상반기를 기준으로 작성되었습니다. 딥러닝 코드 구현에 도움을 주는 프레임워크는 그동안 정말 많이 출시되었습니다. 그 중 현재 널리 쓰이고 있고 이번 포스팅에서 소개할 프레임워크는 3개입니다. TensorFlow PyTorch Caffe2 이전의 포스팅에서 파이썬의 Numpy 모듈을 이용해서 신경망을 구현하는 방법을 보인 적이 있습니다. 물론 Numpy 모듈을 이용한 행렬 연산으로 딥러닝 네트워크를 구현할 수도 있습니다. 하지만 이 경우에는 GPU의 사용이 제한되며 그래디언트 값을 수동으로 계산해줘야 한다는 단점이 있습니다. 이에 반해 TensorFlow나 PyTorch와 같은 프레임워크..
[CS231n] 8. Deep Learning Software(1) - CPU vs GPU 흔히들 머신러닝이나 딥러닝 코드와 같이 컴퓨터 부하가 많이 걸리는 프로그램을 작동할 때 GPU를 사용하면 보다 빠르게 프로그램을 동작시킬 수 있다고 말합니다. 그렇다면 CPU와 GPU는 어떤 차이가 있길래 그런 것이고 GPU를 사용했을 때의 장점은 정확히 무엇일까요? CPU는 Central Processing Unit의 약자로 컴퓨터의 모든 프로그램의 동작을 제어하는 장치입니다. 반면 GPU는 Graphical Processing Unit의 약자로 원래는 빠른 시간에 많은 연산을 수행해야 하는 그래픽 관련 처리를 담당하기 위해 만들어진 장치입니다. GPU를 생산하는 회사는 NVIDIA와 AMD가 유명한데 딥러닝 관련 API나 라이브러리는 NVIDIA사의 GPU를 기반으로 만들어진 것이 많습니다. 따라서 ..
[CS231n] 9. CNN Architecture CNN(Convolution Neural Network)은 근래에 시각 인식 인공지능에 자주 사용되는 네트워크 구조입니다. CNN이 자주 사용되는 이유는 무엇보다도 다른 것들보다 좋은 성능을 보이기 때문입니다. 이 글은 CS231n 유튜브 강의 9강에서 다룬 Imagenet classification 대회에서 좋은 성적을 거둔 CNN Architecture에 대해 소개할 것입니다. 0. History of Imagenet Classification Winners 각 년도에 해당하는 Imagenet Classifcication 승자의 error rate는 위와 같습니다. 여기서 저희는 AlexNet, GoogLeNet, ResNet, VGG Net에 대해 알아보겠습니다. (2013년에 1위를 차지한 ZFN..
[CS231n] 10. Recurrent Neural Networks 저번 시간에는 CNN 구조에 대해서 배웠습니다. 오늘은 Recurrent Neural Network(RNN) 에 대해서 배워보도록 하겠습니다. Recurrent Neural Networks RNN은 위처럼 생긴 모델들을 의미합니다. 모델의 아웃풋을 통해 다시 그 모델을 반복적으로 학습하게 되는 구조를 띄고 있습니다. one-to-one은 하나의 인풋에 대해서 하나의 아웃풋이 나오는 모델이며 Vanilla Neural Networks라고 부릅니다. one-to-many는 하나의 인풋에 대해 여러개의 아웃풋이 나오는 모델로 보통 Image Captioning을 할 때 사용됩니다. 하나의 이미지에 대해서 여러개의 단어들을 뽑아내어 캡션을 달아줍니다. many-to-one은 여러개의 인풋에 대해 하나의 아웃풋만..
[Deep Learning from Scratch] 7장. 합성곱 신경망 이번 장의 주제는 합성곱 신경망(Convolutional Neural Network, CNN) 입니다. 내용적으로 반드시 따라나와야 하는 내용은 아니지만, 워낙 효과적이고 많이 쓰이기 때문에 딥러닝을 배울때 반드시 짚고 가는 내용입니다. 합성곱 신경망을 이해하기 위해서는 합성곱 계층과 풀링 계층을 알아야 합니다. 0. 채널 (Channel) 하지만 우선 layer들을 살펴보기 전에 channel이 무슨 개념인지 알고 갑시다. 만약 컴퓨터에서 어떤 이미지를 RGB로 처리한다고 하면, 다음과 같이 이미지를 R, G, B 세개 channel의 결합으로 생각할 수 있습니다. 이와 비슷하게 뒤에 볼 Convolutional Layer를 거치면 같은 이미지에 대한 Feature Map(2차원 배열입니다)이 커널의 ..
[Deep Learning from Scratch] 8. 딥러닝 이번 시간에는 딥러닝에 대해서 알아보겠습니다. multi layers 저번 시간에 CNN의 원리와 손글씨를 인식하는 모델을 직접 구성해봤습니다. 현재는 MNIST 데이터셋에 대해 정확률이 99.79%까지 도달한 상태로 많이 발전했고 앙상블 학습, 학습률 감소, 데이터 확장 등 여러가지 많은 테크닉들이 생겼습니다. 여기서 이런 테크닉도 중요하지만 저희가 알고 넘어가야 할 것은 '층을 깊게 하는 것'이 왜 중요한지에 대한 이해입니다. 일단 결과론적으로 비전 쪽에서 제일 유명한 대회인 ILSVRC의 수상작들을 보면 층들이 매우 깊습니다. 이런 것을 보면 층이 깊으면 더 좋다는 건 알겠는데 왜 좋아지는지 그 이유에 대해 생각을 한번 해봅시다. 먼저 층이 깊어지면 학습해야할 신경망의 파라미터 개수가 줄어듭니다. ..