전체 글120 [DLBasic] 11 -1 . CNN introduction 저번 시간에 잠깐 소개했었던 Split & Merge 방법을 사용한 Convolutional Neural Network 방법을 소개하겠다. Convolutional Neural Network의 기본 생각은 예전에도 잠깐 소개했던 고양이 실험에서 시작되었다. 입력을 나누어받는 고양이 뇌의 뉴런처럼 따로따로 처리하는 것이다. 하나의 이미지가 있으면 잘라서 각각의 입력으로 넘기고, 이 층을 Convolutional Network라고 한다. 중간에 ReLU 층을 넣고, pooling이나 convolutional layer도 여러 번 중간에 할 수 있다. 처음에 이미지를 입력으로 받고, 위의 예에서는 32 x 32 크기의 RGB를 가지고 있는 그림이라고 하자. 처리하는 단위는 filter라고 하고, 한꺼번에 얼마.. 2020. 1. 20. [DLBasic] 10 - 4. NN LEGO Play 네트워크를 조립하는 것은 마치 레고와도 같다. 입력이 주어지면 layer을 계속 쌓았다. 직전 결과를 바로 앞에 전달하는 것과 달리 2개 전의 결과를 전달하는 방법도 있고, 이것을 Fast Forward라고 한다. 실제로 error rate가 3% 떨어진다고 한다. 처음에 몇 개의 독립적인 NN으로 구분해서 진행한 다음 모으는 Split 방법도 있고, 처음에는 여러 개로 나눠진 데이터들을 모아서 진행하는 방법도 있다. 이것이 Convolutional Neural Network로 이어진다고 한다. 한 방향으로만 나아가지만 말고 위 그림에서 보듯이 옆으로도 나아갈 수 있고, 경우에 따라서 또다른 입력을 받을 수도 있다. 이 방법이 RNN이다. 어떤 형태이든 NN을 조합해서 만들 수 있다. 2020. 1. 20. [DLBasic] 10 - 3. NN dropout and model ensemble 이번 시간에는 오버피팅 문제를 해결하는 드롭아웃과 모델 앙상블에 대해 알아보겠다. 오버 피팅이란 훈련데이터에만 딱 맞는 모델이 되어서 범용적으로 올바른 결과를 맞추지 못하는 문제이다. 학습 데이터로는 99%같이 정확도가 정말 높게 나오는데 실제 시험 데이터로는 결과가 낮게 나오는 것이 오버피팅의 현상이다. 이런 모델을 실전에 사용하면 안 된다. 위의 그래프에서는 빨간 선이 test data's error rate이고 파란 선이 train data's error rate이다. layer가 많아질수록 train data에서는 error rate가 떨어진다. overfitting을 해결하는 방법으로는 학습 데이터를 더 많이 준비하는 것이 가장 좋다. 교수님 말씀으로는 feature의 개수를 줄일 필요는 없다고.. 2020. 1. 20. [DLBasic] 10 -2 . Initialize weights in a smart way 저번 시간에 vanishing gradient라는 시그모이드 함수의 단점을 보완한 ReLU를 배웠다. 이번 시간에는 hinton 교수님이 발견하셨던 두 번째 문제점인 weight들을 어떻게 초기화할지를 배워보도록 하겠다. 이전 데이터에서 ReLU로 실험했을 때도 코드가 똑같은데 실행할 때마다 결과가 달라졌다. 그 이유는 weight을 random값으로 생성하도록 했기 때문이다. 예를 들어, 가중치를 모두 0으로 설정했을 때를 보자. x는 입력값이니 일단 0은 아니다. 그런데 weight이 0이면 기울기가 다 곱해질 때 gradient가 다 사라지는 문제점이 발생한다. 그렇기 때문에 weight을 잘 설정하는 것도 중요하다. 그래서 weight의 초기값을 설정할 때 주의해야할 점은 위와 같다. 만약 0이면.. 2020. 1. 20. 이전 1 ··· 22 23 24 25 26 27 28 ··· 30 다음