기본적인 머신러닝과 딥러닝 강좌(inflearn) 정리 - yarak001/machine_learning_common GitHub Wiki

기본적인 머신러닝과 딥러닝 강좌(inflearn)

해당 page는 inflearn의 모두를 위한 딥러닝 - 기본적인 머신러닝과 딥러닝 강좌를 정리한 page입니다.

  • Lecture 1 - Machine Learning Basics
    • Machine Learning(이하 ML)은 기계가 data를 이용하여 model을 찾아내는 것
    • ML은 supervised learning과 unsupervised learning으로 분류됨
      • 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)시키며 다른 하나의 함수와 곱한 결과를 적분해 나간다