Machine Learning의 한계

  세상에 존재하는 데이터셋들을 모두 총괄하는 Learning algorithm은 존재하지 않음 (No free lunch for supervised learning)

그러나, 문제에 알맞는 특성을 통해 알고리즘을 개발하면 성능을 극적으로 끌어올릴 수 있음.


Curse of Dimensionality


  n개의 binary variable -> 시간복잡도 O(2^d)

차원이 높아질수록 위치의 가능성이 기하급수적으로 증가하게 됨


Q. 이를 어떻게 해결하는가?

A. End-to-End learning을 통해 이미지를 전처리하고, Feature extraction을 하고... classifying을 하고...



Neural Network

Perceptron


  perceptron은 wx + b의 형태로 이루어져 있음. 여기서 w는 weight, b는 bias를 뜻함.


예시) 28x28사이즈의 input image가 들어오는 경우, x는 1 x 784로 표현될 수 있음 (Binary 형태의 1차원 배열)

이 때, w는 vector의 weight이 되므로 784 x 1로 표현될 수 있음.

wx + b의 결과로 1*784 + 784*1 + b = 1 * 1 + b


How about Multiclass?

  multiclass의 경우에는 perceptron을 추가하여 구현할 수 있음.


예시) 10개의 perceptron이라면, wx + b의 w는 Matrix of weights for each pixel로 취급됨

그러므로 W = 10 * 784 (10개의 perceptron, 10-class classification)

Result of wx + b = 1*784 + 10*784 + b


Bias를 perceptron에 변수로써 추가(fake feature)해서 bias convenience를 구성할 수 있음


Composition


  이렇게 구성된 perceptron들은 Matrix를 구성하는 일부가 되며, 이를 Layer라고 부름.


Activation Function

 해당 neural network를 Activation시킬 지 정하는 함수(perceptron). Sigmoid, ReLU등이 있음.

예시) Linear classifier에 활용


Multi-Layer Perceptron (MLP)

non-linear한 activation function들이 서로 연결된 형태

Feed-forward network라고 부르기도 함


SVM(Support vector machine)과 Perceptron의 관계

  SVM은 Class별의 margin을 극대화시키는 support vector를 알아내는 것

  근데 Perceptron은 아님, perceptron과 SVM이 classifying한다는 점은 동일함.

  

Activation Function: ReLU (Rectified Linear Unit)


f(x) = max(0, x)의 형태, ReLU를 거친 데이터는 음의 값을 가질 수 없음 (음의 데이터를 가진 NN을 deactivation함)


많은 Layer가 필요한 이유


  Low level parts에서 바퀴를 검출하고, mid-level part에서는 바퀴를 포함한 프레임을 검출하는 등

High level part에서는 이 물체가 무엇인지 prediction하도록 하려면 Multiple layer가 필요하게 됨


Q. 그럼 대체 몇개가 필요한가?

A. 그것을 정하는 것이 바로 hyperparameter이다. (NN의 넓고 깊음의 최적화 필요)


Convolution Neural Network (CNN)

CNN의 간단한 비유


  여러 가지의 경우의 수를 고려하고, 최종적으로 Decision making에 반영하는 형태.

여러 가지 경우의 수 내에도 또 다른 여러가지의 경우의 수가 존재함.


NN에 이미지를 넣으면...



  매우 많은 수의 parameter가 생성됨으로써 공간의 낭비가 심함.


Q. 이를 해결하기 위해서는 어떻게 해야하는가?

A. 1. Receptive field를 이용하기 (local neighborhood만을 찾기, Local에서 global로 expansion하는 layer가 필요함)

    2. Parameter sharing을 통해서 NN내에 존재하는 perceptron들이 사용할 weight을 동일하게 함


Convolution (합성곱)


  여러개의 필터(local perceptron = kernel)를 배우고, 합성곱을 통해 필요한 데이터만을 NN에서 취급하게 함.

hyperparameter로는 stride(얼마나 shift할 것인지), kernel size(NxN kernel)등이 있음



Convolution layer output size

(N - F) / stride + 1

Pooling Layer


  Pooling은 downscaling과 비슷한 개념으로 이해하면 됨.

Pooling에는 대표적으로 Max pooling과 average pooling이 있음


Average pooling

  stride수 만큼 shift하면서 Convolution filter(kernel)크기 내에 있는 값을 평균내어 receptive field 생성

Max pooling

  stride수 만큼 shift하면서 Convlution filter(kernel)크기 내에 있는 값 중 가장 큰 값을 통해 receptive field 생성


Receptive field의 크기

filter size (K x K), Stride (S), Pool size (K)

patch size: (P+K-S) * (P+K-S)



Overfitting problem



dropout(Layer에 포함된 일부 weight중 일부만 참여시키는 것)으로 해결



Architecture for Classification


  1. Convolution -> Local contract normalization -> Max pooling

  2. Convolution + Max pooling

  3. Fully connected layers