supervised learning은 training data에 대한 정답(label)이 존재하여 정답을 찾아내는 model을 찾아내는 것(학습)
unsupervised learning은 training data에 정답이 존재하지 않고 기계 자제 자체가 학습
해당 강좌에서는 supervised learning을 강의하며 supervised learninig은 regression과 classification으로 분류
regression은 예측
classificaiton은 분류
Lecture 2 - Linear Regression
Training data를 기반으로 예측 model을 찾는 것
Hypothesis: H(x) = Wx + b
학습을 위한 가설 => 결국 ML에서 학습이란 training data를 바탕으로 W(eight)값, b(ias)값을 찾아내는것
Cost Function
학습의 위한 가설이 얼마나 정답과 근접하는지 판단하는 함수, Loss function이라고도 함
Linear Regression에서는 MSE(Mean Square Error) function 사용
MSE
학습의 목표는 위의 Cost Function의 값을 최소화 하는 W와 b를 찾는 것,
Lecture 3 - How to minimize cost
Gradient Descent Algorithm
Cost를 최소화 하는 방법
주어진 W값에 대한 Cost(W)값을 구하여 이를 최소화 함 => 주어진 W지점의 경사도(미분)을 구하여 최소화함
Convex function에 적합한 방법
Lecture 4 - Multi-variable linear regression
Hypothesis, Cost function, Gradient Descent Algorithm에 대한 recap
이번장에서는 이전까지와는 다르게 Weight값은 많은 경우를 학습
W와 b에 대한 Hypothesis를 이용하여 가능하지만 W가 많아지는 경우 복잡해지고 가독성이 떨어짐
이를 위해서 행렬(Matrix)에 대한 곱을 이용하면 간편함
Lecture 5 - Logistic (Regression) Classification
학습을 이용해서 값의 예측(regression)이 아닌 분류(classification)을 해보자
Linear regression의 hypothesis는 classification에 적합하지 않음
Linear regression의 hypothesis의 값은 너무크거난 작을 수 있음
classification에 필요한 것은 0과 1사의 값이 필요함
Linear regression의 Hypothesis의 출력값이 0 ~ 1사이가 되도록 sigmoid(logistic) function를 적용
Logistic Hypothesis
Cost Function
Logistic Hypothesis에 대한 cost를 구하기 위해서 기존 MSE를 적용하면 Convex fuction형태가 나오지 않음(Logistic hypothesis는 자연상수 e의 함수이므로)
Logistic Hypothesis를 Convex function형태로 바뀌기 위해서는 log함수 적용
Logistic Hypothesis의 cost function은 log의 함수임
C(H(x), y) = -ylog(H(x)) - (1-y)log(1-H(x))
Logistic regression에서도 cost를 최소화하기 위해서 Gradient Descent Algorithm 사용
Lecture 6 - Softmax classification
Logistic regression은 두개로 분류할 때 사용
3가지 이상으로 분류할 경우는?
Logistic regression을 여러번 사용하면 할 수 도 있다
좀더 효율적인 softmax function을 적용할 수 있다
Softmax
각 분류의 출력값은 sigmoid처럼 0 ~ 1사이의 값
각 출력 값의 합은 1, 즉 각 출력값은 확률(probability)임
Cross-Entropy function
softmax에 대한 cost function
Softmax classification에서도 cost를 최소화하기 위해선 Gradient Descent Algorithm 사용
Lecture 7 - Application & Tips
Learning rate
Gradient descent Algorithm을 이용하여 W값을 찾게되는데 이때 경사도 조정값이 너무 크면 overshooting이 되고 너무 작으면 학습속도가 오래걸려 학습이 안될 수 있다
적합한 learning rate를 사용해아 함
Data preprocessing for gradient descent
Training data의 범위의 차가 너무 크게되면 gradient descent alogrithm을 이용하여 global minimum에 수렴할 수 없는 경우가 생김
이런 경우 입력 data에 대한 선처리가 필요
zero-centered data
입력data에 대한 중심값을 0에 위치시킴
normalized data
값의 범위를 특정 범위안으로 배치함
Standardization
learning rate기 적당한데 학습이 일어나지 않고 cost function이 수렴되지 않는 경우 학습 data의 차이나 preprocessing 확인
Overfitting
학습 model이 너무 training data에 맞게 되어 있어 test data나 real data적용시 맞지 않는 issue
Overfitting를 극복하기 위해서는
Training data를 더 많이 사용한다
feature의 수를 줄인다
Regularization 사용
Cost function에 가중치의 함을 더함
Training, validation and test sets
Training data
ML을 위한 학습 data
좀더 세분화화여 training / validation data로 나눌 수 있음
Testing data
ML로 만들어진 model을 test
overfitting이 되었는지 판단할 수 있음
training data는 교과서, validation data는 모의고사, testing data는 시험으로 비유할 수 있음
Online learning
예를 100만개의 training data가 있는 상황에서 10만개씩 나누어서 학습을 시킴
새로운 10만개의 training data가 추가되는 경우 전체 110만개에 대해서 학습하는 것이 아닌 새로 추가된 10만개에 대해서만 학습
이를 이전 처리된 training data에 대한 학습 결과가 model에 남아 있어야 함. 이를 위한 방법이 online learning
epoch, batch size, number of iteration
one epoch
One forward pass and one backward pass of all training example.
전체 dataset을 한번 다 학습 시키는 것
batch size
The number of training exmaples in on forward/backward pass. The higher the batch size, the memory space you will need.
number of iteration
Number of passess, each pass using [batch size] number of examples. To be clear, one pass = one forward + one backward pass (We do not count the forward pass backward pass as two different passes.)
Lecture 8 ~ Lecture 10
인간의 뇌세포 neuron을 모방한 방식 나오고 이를 구현한 perceptron, Adaline/Madline등이 나옴
ML에 대한 기대감이 고조됨
AND / OR 문제는 해결할 수 있었으나 XOR문제를 해결할 수 없음 => 첫번째 침체기 시작
1969년에 Marvin Minsky가 multi layer를 사용(MLP: Multi Layer Perceptron = Multi Layer Neuron)하면 풀 수 있다고함. 그렇지만 지구상의 그 누구가 이 MLP training할 수 없다고 함(즉 W, b를 찾아낼 수 없음)
1974, 1982년의 Paul Werbos, 1986년 Hinton이 해결책을 제시하였으며 이것이 바로 back propagation임
고양이의 사물인식 실험을 바탕으로 Convolutional Neural Network등장
Back propagation의 등장으로 모든 문제가 해결될 것으로 생각되었으나 layer의 수가 많아질 수록 효과가 떨어지는 증상이 발견됨 => 두번째 침체기 시작
이에 대한 해결책은?
Geoffrey Hinton's summary of findings up to today (Deep Learning이 잘 안된 이유)
We used the wrong type of non-linearity
Sigmoid의 출력값을 0 ~ 1므로 back propagation되는 동안 앞쪽 layer로 갈수록 경사도 값(미분)값이 사라짐 => W, b의 조정이 의미가 없어짐 => 이를 Vanishing * Gradient함
Activation function을 Sigmoid에서 ReLU(Rectified Linear Unit)와 같은 것으로 바꾸면 됨
tanh, ReLU, Leaky ReLU, Maxout, ELU등의 activation function이 존재
We initialized the weights in a stupid way
도전해야하는 부분임
Restricted Boatman machine (RBM): 헌재는 많이 사용하지 않음
Xavier initialization: 하나의 nodeㅇ 입력과 출력에 맞게 weight 초기값 설정
He's initialization: Xavier initialization의 개선
Our labeled datasets were thousands of times too small
Big data등의 등장으로 시대의 흐름에 따라 해결됨
Our computers were millions of times too slow
H/W의 발전으로 시대의 흐름에 따라 해결됨
Dropout
Neural Network에서 overfitting을 극복하기 위한 방법
무작위로 특정 neurons들을 비활성하 함
tensorflow구현시 dropout_rate를 training시는 원하는 값으로 설정하고, test시에는 1로 설정해야함
Ensenble
여러 전문가의 의견을 취합하여 하나의 model을 생성하는 것으로 생각하면 이해하기 쉬움
실제 2 ~ 5%의 성능향상 효과가 있음, 학습시킬수 있는 장비가 많은 경우 사용
Neural Network는 LEGO처럼 여러분이 원하는 방식대로 구성할 수 있다.
The only limit is your imagination!!!!
Lecture 11 - Convolutional Neural Network(CNN)
Convolutional: 두 함수 중 하나를 반전(reverse)하고 이동(shift)시키며 다른 하나의 함수와 곱한 결과를 적분해 나간다