전체 글 (12) 썸네일형 리스트형 [복숭아 연구주제 14] 비전공자도 떠나는 데이터 사이언스 기행 [파이토치 14 화: CNN 심화 VGG] 오늘은 우리가 이전에 알아본 CNN을 활용하여 더욱 진화시킨 버전들에 대하여 알아보는 시간이 되겠습니다. CNN 기법을 사용해서 많은 심화 모델들이 파생되었는데 그 중에서도 VGG 모델에 대하여 알아보겠습니다. VGG net 은 3 x 3 convolution, stride = 1, padding =1 으로 이루어진 11 레이어 혹은 그 이상으로 이루어진 convolution 인공지능망입니다. 위에서 보이는 것과 같이 vgg 는 11 레이어 ~ 19 레이어 까지 만들 수 있도록 되어있으며 3 채널 224 x 224 입력을 기준으로 합니다. 이제부터 함께 VGG net 을 활용해서 CNN 모델을 구현해 보도록 하겠습니다. 먼저 torchvision 에 포함되어 있는 vgg 모델의 코드를 뜯어보면서 이해해보.. [복숭아 연구주제 12] 비전공자도 떠나는 데이터 사이언스 기행 [파이토치 12 화: Convolution] 오늘은 컴퓨터 비전과 이미지 처리에서 많이 활용되는 기법인 Convolution 에 대해서 알아보도록 하겠습니다. 이 Convolution 이 바로 CNN (Convolutional Neural Network) 의 convolution 입니다! Convolution 이란 위에 나와 있는것 처럼 이미지(input) 위를 필터가 주욱 훑고 지나가면서 연산을 하여 새로운 output 값을 만드는 것을 말합니다. 이런 방식을 활용하면 커다란 이미지 사이즈를 바꿀 수 있고, 이미지의 부분적인 패턴을 파악하여 이미지 내부에 표시 할 수 있습니다. 위와 같이 필터가 표시된 부분에 해당 필터값을 곱하여 전부 더해줌으로서 출력값이 하나가 되고 스트라이드 값 만큼 필터를 움직여 다시 한번 연산을 해줌으로써 새로운 outp.. [복숭아 연구주제 10] 비전공자도 떠나는 데이터 사이언스 기행 [파이토치 10 화: Dropout] 오늘은 이전에 배웠던 모델을 설계하는데 있어서 고려해야 할 점중 하나인 오버피팅을 해결하는 방법 중 하나인 Dropout에 대하여 알아보겠습니다. 이전에 함께 알아보았던 오버피팅에 대한 개념을 다시 한번 짚고 넘어가도록 하겠습니다. 오버피팅이란 위에 보이는것 처럼 트레이닝 과정에서 과도하게 트레이닝 데이터에 맞추어서 모델을 설계하게 되는 현상을 말합니다. 트레이닝 과정에서 오차가 적을 지라도 오버피팅이 된 모델은 테스트 데이터를 활용해서 모델 퍼포먼스를 확인 했을때 적당히 피팅된 녹색 선보다 퍼포먼스가 떨어지는 것을 확인 할 수 있습니다. 오버피팅 문제를 해결하기 위해서 01. 트레이닝 데이터를 늘린다, 02. 데이터를 정의하는 피쳐의 갯수를 줄인다, 03. 데이터를 잘 포괄하는 regularizatio.. [복숭아 연구주제 09] 비전공자도 떠나는 데이터 사이언스 기행 [파이토치 09 화: Weight Initialization] 이번시간에는 Weight initialization에 대하여 알아보겠습니다. MNIST 와 CIFAR10 테스트 에러 그래프를 확인하면 'N' 이 붙은 weight initialization 을 활용한 방법들이 현저하게 error가 낮게 나오는 것을 확인 할 수 있습니다. 그렇다면 어떻게 weight initialization 을 해주어야 할까요? 먼저 그라디언트가 0이 되는것을 방지하기 위해서 weight 가 0이 되는것을 방지하려면 RBM을 이용해서 학습을 하는것이 가장 좋은 방법이라고 머신러닝의 대가 Hinton 교수님은 말씀하십니다. 그럼 그 RBM이 무엇인가요!? Ristricted, 한 레이어 안에 있는 노드끼리는 연결이 없지만 다음 레이어에 모든 노드에 fully connected 된 구조를.. [복숭아 연구주제 08] 비전공자도 떠나는 데이터 사이언스 기행 [파이토치 08 화: ReLU] 이전까지의 과제에서 우리는 활성함수 즉 activation function으로 시그모이드 함수를 활용했습니다. 시그모이드 함수는 0 혹은 1 이렇게 이진법으로 분류 할 때 사용하는 함수였죠? 하지만 우리가 사용한 시그모이드 함수에는 치명적인 단점이 존재합니다. 우리가 시그모이드 함수를 활용하여 Gradient를 구할 때 위에 파란색 부분에서는 정상적으로 Gradient를 구할 수 있지만 붉은 부분에서는 기울기가 너무 작아 0으로 수렴하기 때문에 Back propagation 에서 계속해서 앞단으로 gradient를 곱해 주면서 그 값이 너무 0과 가깝기 때문에 gradient가 끝까지 전파되지 못하고 중간에 소멸이 되는 경우가 생긴다는 겁니다. 이런 현상을 'Vanishing Gradient' 라고 부릅.. [복숭아 연구주제 07] 비전공자도 떠나는 데이터 사이언스 기행 [파이토치 07 화: 퍼셉트론 Perceptron] 오늘은 퍼셉트론의 개념에 대하여 알아보는 시간을 갖겠습니다. 퍼셉트론(perceptron)은 인공 신경망의 한 종류입니다. 퍼셉트론에 대하여 알기 이전에 인공신경망이 무엇인지 잠시 살펴보고 가겠습니다. 인공신경망은 우리 뇌에 있는 '뉴런 (Neuron)'의 구조를 본따서 만들었습니다. 뉴런은 전기자극으로 신호를 전달하는 역할을 수행합니다. 전기 자극이 특정 역치를 넘기게 되면 신호를 옆으로 전달하게 됩니다. 뉴런을 본따 만든 인공신경망 중 하나인 퍼셉트론은 전기자극에 해당하는 인풋값 x를 transfer function 을 통해서 weight 를 곱하고 그 가중치들의 합과 bias를 더해서 시그모이드 함수와 같은 activation function을 거쳐서 아웃풋이 됩니다. 초창기 퍼셉트론은 Linear.. [복숭아 연구주제 06] 비전공자도 떠나는 데이터 사이언스 기행 [파이토치 05 화: MNIST 데이터셋 다루기] 오늘은 지금까지 다루어 본 이론들을 활용하여 MNIST 라는 데이터 셋을 다루어 보는 시간을 갖겠습니다! MNIST 데이터셋이란? MNIST 데이터셋은 손으로 쓰여진 0 ~ 9 까지의 숫자들을 모아둔 손글씨 숫자 데이터셋입니다. 이 데이터셋을 활용해서 어떤 숫자가 0인지 1인지 구분 할 수 있다면 사진을 찍었을 때 손으로 씌여진 숫자를 사진으로 찍어서 컴퓨터에 자동으로 인식시킬 수 있습니다. 위 그림에서 확인하실 수 있는 것 처럼 MNIST 데이터셋은 트레이닝 세트 6만장과 레이블, 테스트 데이터셋 만장과 레이블로 구성되어 있습니다. 데이터셋은 아래 링크를 통해서 다운로드 받으 실 수 있습니다. [클릭] MNIST 데이터셋 다운받으러 가기 MNIST handwritten digit database, Ya.. [복숭아 연구주제 05] 비전공자도 떠나는 데이터 사이언스 기행 [파이토치 05 화: 꿀팁 대방출] 오늘은 이제까지 배워온 것들을 중심으로 개념을 추가하고 팁들을 알려주는 시간을 갖겠습니다. 먼저 Maximum Likelihood Estimation (MLE)에 대해서 다루어 보겠습니다! Maximum Likelihood Estimation (MLE) Likelihood, 한국말로는 ~할 것 같은, ~할 만한 이라는 뜻을 가지고 있죠? 이처럼 MLE는 ~이 일어날 것 같은 최대치를 예측해보는 것입니다. 쉽게 이해하기 위하여 예를 들어보겠습니다. 압정이 하나 있습니다. 이 압정을 하늘 위로 던져서 땅에 떨어진다면 어떻게 될까요? 아마도 아래 보시는 것 처럼 2가지 결과를 기대 할 수 있을겁니다. 이 이외에는 다른 결과를 기대할 수 없습니다. (압정이 기적적으로 땅에 꽂히는 결과는 고려하지 않겠습니다.) .. 이전 1 2 다음