SyntaxHighlighter.all(); 또르의 개발노트 :: 또르의 개발노트 ss
반응형

5.인공지능, 머신러닝, 딥러닝

  • 딥러닝은 머신러닝의 한 종류로 인공신경망(ANN)에 기반을 둔 학습 방법
  • 머신러닝은 정형데이터 학습에 딥러닝은 이미지, 소리, 텍스트와 같은 비정형 데이터 학습에 주로 사용
  • 딥러닝 학습에넌 DNN, CNN, RNN, GAN, 전이학습 등의 다양한 종류 있음
  • 전이학습 : 풍부한 데이터를 이용해서 학습된 pre-trained model을 가져와 부족한 사용자 데이터 환경에 맞도록 새롭게 모델을 학습시키는 일련의 과정
  1. 인공신경망(ANN) 모형
    • 인공신경망을 이용하면 분류 및 예측을 할 수 있음
    • 인공신경망은 입력층, 은닉층, 출력층 3개의 층으로 구성(SLP:은닉층 없음, MLP :1개 이상의 은닉층)
    • 각 층에 뉴런(=Perceptron, Node)이 여러 개 포함되어 있음
    • 학습: 입력에 대한 올바른 출력이 나오도록 가중치를 조절하는 것 
    • 파라미터(매개변수) : 가중치(weight)
    • 하이퍼 파라미터 : 인공신경망의 학습률(learning rate), 배치크기, hidden unit, hidden layer 

*SLP의 한계

  • SLP는 단순한 문제 해결만 가능함
  • 즉, 1개의 선으로 나눌 수 있는 AND, OR, NOR 등의 문제는 해결할 수 있지만, 두개의 선이 필요한 XOR는 해결할 수 없음 -> 복잡한 문제는 MLP 이용

*인공신경망(ANN)의 학습 방법

  1. FORWARD PROPAGATION
    • 모든 weight(=parameter)의 임의 값 초기화
    • 입력(X), weight를 사용하여 예측 값 구하기
  2. 손실/비용/에러 구하기
    • 예측 값과 실제 값을 손실함수에 적용하여 구함
  3. BACKWARD PROPAGATION
    • 손실을 반영하여 weight 값 갱신하기
    • 이대, 손실함수에 대한 기울기 미분이 발생
      W = W - $\alpha \frac{d}{dW}cost(W,b)$
  4. 경사하강법
    • 비용 함수 기울기를 낮은 쪽에서 계속 이동시켜 극값에 이를 때까지 반복시키는 것
    • 비용 함수의 기울기의 최소값을 찾아내는 머신러닝 알고리즘
    • 비용 함수 기울기를 최소화 하기 위해 parameter(=Weight)를 반복적으로 조정하는 과정
  5. 경사 하강법 과정
    • 다음의 과정을 n회 반복 수행, 비용 함수 기울기 최소값을 향해 수렴
      1. 임의의 Weight값으로 초기화
      2. Cost 계산(적절한 Cost Function 사용)
      3. Weight 값 갱신 :  W = W -$\alpha \frac{d}{dW}cost(W,b)$
    • n, learning rate(hyper-parameter) 가 적절해야 함

*퍼셉트론(Perceptron)

  • 생물학적 뇌의 뉴런을 모방하여 만든 인공신경망(ANN)의 기본 단위

*기울기 소실

  • 역전파 알고리즘은 출력층에서 입력층으로 오차 gradient를 흘려 보내면서, 각 뉴런의 입력 값에 대한 손실함수의 gradient를 계산 함
  • 이렇게 계산된 gradient를 사용하여 각 가중치 매개변수를 업데이트 해 줌
  • 다층신경망에서는 역전파 알고리즘이 입력층으로 갈 수록 Gradient가 점차적으로 작아져 0에 수렴하여, weight가 업데이트 되지 않는 현상
  • activation function으로 sigmoid 함수를 사용할 때 발생 -> 해결을 위해 ReLU 등 다른 함수 사용

*신경망 활성화 함수

  • 출력을 내보낼 때 사용하는 삼수로, 주로 비선형 함수를 사용 함
  • 가중치 값을 학습할 때 에러가 적게 나도록 돕는 역할을 함
  • 풀고자 하는 문제 종류에 따라 활성화 함수의 선택이 달라지며, Layer마다 다르게 사용할 수 있음
  • 함수 종류 : 선형-항등, 비선형-계산, 부호, sigmoid, ReLU, Leaky ReLU, Maxout, tanh, softmax 

*활성화 함수의 종류

  • 항등함수 : X값 그대로 
  • 계단함수 : 0 또는 1
  • 부호함수 : -1 또는 1 
  • sigmoid함수 : 
    • 연속형 0~1, Logistic 함수라 불리기도함
    • 선형적인 멀티-퍼셉트론에서 비선형 값을 얻기 위해 사용
    • $\frac{1}{1+e^{-x}}$
  • softmax함수 : 
    • 각 클래스에 속할 확률 값을 출력함, 속할 확률이 가장 높은 클래스로 예측함
    • 모든 logits(출력)의 합이 1이 되도록 output을 정규화 한 것
    • sigmoid 함수의 일반화된 형태로 결과가 다 범주인 경우 각 범주에 속할 사후 확률을 제공하는 활성화 함수
      (3개 이상)
  • ReLU(Rectified Linear Unit)
    • 학습이 빠르고 미분값이 0,1 두 개 중 하나이기 때문에 자원 소모가 적어 일반적으로 쓰는 함수 중 한가지
    • x<0 인 경우 Dying ReLU 현상이 발생함
  • Leaky ReLU
    • 0보다 작은 입력에 대해 기울기를 주어 Dying ReLU 현상 보완
  • ELU(Exponential Linear Unit)
    • 입력이 음수일때 exponential을 활용한 함수를 사용하여  Dying ReLU 문제 해결
    • X<0일때 지수함수 계산 비용 발생
  • tanh(Hyperbolic Tangent)
    • sigmoid의 중심 값을 0으로 이동한 것
    • 학습시간 지연 해소, Vnishing Gradient 발생

*손실함수

  • Loss/Cost : 실제 값과 예측 값의 차이로 '오차'를 의미함
  • Loss Function의 예 : 분류 - Cross Entropy, 회구 - Mean Square Error

*Learning Rate(학습률)

  • 학습의 속도를 나타내는 것, weight update 시 함께 곱해지는 값
  • Learning Rate가 작을 경우 wieght 변경 속도가 느려 학습시간이 오래 걸릴 수 있음
  • Learming Rate가 클 경우 곡선의 최저점을 이탈 할 수 있다

*Mini batch 학습

  • 모든 학습 데이터에 대해 loss를 계산하는 것은 시간이 오래 걸리므로, 데이터의 일부를 사용해 학습한다.
  • Epoch
    • 모든 DataSet이 Netural Network 전체에 대한 학습을 1회 수행한 것
    • 1Epoch만으로 학습은 충분하지 않음
  • Batch Size
    • Single Batch 내 학습용 Data Size
  • Iterations
    • 1 Epoch를 달성하기 위한 batch 개수
    • Iterations = 전체 데이터수 / Batch_Size

*Normalization

  • 학습을 더 빨리하고, local minima에 빠지는 가능성을 줄이기 위해 사용함
  • MinMaxScaler : 0~1사이 값으로 변경, StandardScaler : 평균0, 분산 1의 값으로 변경
    • Unnomalized
      • 타원 모양
      • 수평으로 이동할 때와 수직으로 이동할 때 변화량 불균형 발생으로 Gradient
        Descnet 알고리즘을 적용하기 어려울 수 있음
      • Learning rate를 작게 해야 함
    • Normalized
      • 구모양
      • Gradient Descent를 적용하여 쉽고 빠르게 최적화 지점을 찾을 수 있음
      • Learning rate에 민감하지 않음

*Optimization(경사하강법)

  • Learning Rate 및 Gradient 부분 값을 적절하게 수정하여 학습 속도를 높이고 안정적인 결과를 얻고록 함
  • Plateau(평지) 현상 해결
  • ZigZag 현상 해결 : w 갱신 행렬의 부호가 동일하여 w 목표점을 지그재그로 찾아가는 현상
  • 극소점을 찾은 뒤 더 이상 학습이 되지 않는 현상 해결
    • Optimizer의 종류
      • Gradient 수정 : Momentum, NAG
      • Learning Rate  수정 : AdagRrad, AdaDelta, RMSProp
      • Gradient, Learning Rate 모두 수정 : Adam, Nadam

*다층신경망학습과 Layer, Node

  • 다층신경망은 단층신경망에 비해 훈련이 어려움
  • 레이어가 많아지면 기울기 소실 문제가 발생할 수 있음
  • 은닉층 수와 은닉 층의 노드수 결정은 분석가가 분석 경험에 의해 설정
    • 은닉 층 노드가 너무 적으면
      • 네트워크가 복잡한 의사결정 경계를 만들 수 없음
      • Underfitting 문제 발생
    • 은닉 층 노드가 너무 많으면
      • 복잡성을 잡아낼 수 있지만, 일반화가 어렵다
      • 과적합(Overfitting)문제 발생
    • Layer, Node를 사용한 과적합 해결
      • 매개변수의 수를 줄인다
      • 은닉층 수를 줄인다
      • 노드 수를 줄인다
    • 반복, 데이터, 규제를 사용한 과적합 해결
      • epoch 수를 줄인다
      • early stopping 기법을 사용한다
      • 데이터의 양을 늘인다
      • Regularization을 사용한다
    • Regularization의 종류
      • L1/L2 Regularization
      • Dropout
      • DropConnect

*Regularization -Overfitting 해결법

  • 데이터 양을 늘림
  • Regularization 사용
  • Batch Normalization : Mini-batch의 평균, 분산을 이용해 Normalization 실행

*인공 신경망 모형의 장/단점

  • 장점
    • 변수의 수가 많거나 입,출력변수 간에 복잡한 비선형 관계에 유용
    • 이상치 잡음에 대해서도 민감하게 반응하지 않음
    • 입력변수와 결과변수가 연속형이나 이산형인 경우 모두 처리 가능
  • 단점
    • 결과에 대한 해석이 쉽지 않음
    • 최적의 모형을 도출하는 것이 상대적으로 어려움
    • 모형이 복잡하면 훈련 과정에 시간이 많이 소요되고, 과적합되지 쉬움
    • 데이터를 정규화 하지 않으면 지역해에 빠질 위험이 있음

DeepLearning

  • 딥러닝 - DNN(Deep Neural Network)을 이용한 머신러닝 기법
  • DNN은 hidden layer가 2개 이상인 Network을 의미함
  • 다층의 layer를 통해 복잡한 데이터 학습이 가능하도록 함
  • 알고리즘 및 GPU 발전이 딥러닝의 부흥을 이끔
  • Input, Hidden, Ouput layer로 구성된 모형으로 각층을 연결하는 Node 가중치를 학습함
  • Overfitting이 심하게 일어나고 학습시간이 오래 걸림

*CNN

  • Convolution Neural Networks, 합성곱 신경망
  • 이미지 데이터 사용
  • classfication, localization, object detection, instance segmentation
  • Convolution Layer, Fully Connected Layer로 구성
    • 구조
      • Input Image : 이미지를 하나 입력으로 취함
      • Convolutional Layers : Feature Extraction을 수행하는 layer
        • Convolution Layer + ReLU : Feature 추출, 의미 없는 특징을 zero화
        • Pooling Layer : Feature 개수 축소, 중요한 Feature만 유지 (선택적 작업)
      • Fully-Connected Layer : 비선형 조합 학습 및 분류 작업 수행
      • Output Class: 작업의 결과

*Convolution(합성곱)

  • Filter(=Convolution Kernel Matrix)를 적용하여 입력에 대해 특정 성분에 대해서만 뽑아내는 작업
    • 예) 사선 정보, 직선 정보, 동그란 정보, 각진 정보...
    • 알고 싶은 특정 성분에 따라 필터의 모양이 다름
    • CNN은 필터를 갱신하면서 학습하는 것임
  • Image에 특정 필터를 Convolution한 결과를 Feature Map 이라고 함
  • Feature Map은 Image에 적용된 Filter 개수 만큼의 Channel을 갖게됨
    • n개의 Filter가 적용된 경우 n개 Channel 
  • Stride : Filter를 순회하는 간격, Stride가 2로 설종되면 2칸 씩 이동하면서 Convolution 하게 됨

*Padding

  •  Convolution Layer에서 Fiter를 사용하여 Feature Map을 생성할 때, 이미지 크기가 작어지는 것을 막기 위해 테두리에 Filter 크기를 고려하여 특정 값(일반적으로 0 )으로 채우는 작업

*Pooling

  • Convolution Layer의 Output을 Input으로 받아 Feature Map의 크기를 줄이거나 특정 데이터를 강종하는 용도로 사용
  • Max Pooling, Min Pooling, Average Pooling 등의 종류가 있음
  • Pooling Size를 Stride로 지정하며, 이 크기에 따라 줄어드는 양이 결정됨
  • 입력 데이터의 행, 열 크기는 Pooling 사이즈의 배수(나누어 떨어지는 수)이어야 함

*Fully Connected Layer

  • Flatten Layer : CNN의 데이터를 Fully Connected Neural Network의 형태로 변경하는 layer
    • 입력 데이터의 Shape 변경만 수행
  • Softmax Layer : Flatten Layer의 출력을 입력으로 사용하며, 분류 클래스에 매칭 시키는 Layer
    • 분류 작업을 실행해 결과를 얻게 됨

*RNN(Recurrent Neural Networks, 순환 신경망)

  • 이전 상태가 다음 판단에 영향을 주는 경우 사용
  • RNN, LSTM, GRU : 자연어, 음성신호, 주식과 같은 연속적인 데이터에 적합한 모델
    • RNN Cell: 출력을 다시 입력으로 사용하여 기억 하도록 한 것
    • LSTN Cell : 장기, 단기 기억을 구분하여 저장하는 방식
    • GRU Cell : LSTM의 간소화된 버전
  • Sequence Gneration : 책, 코딩, 음악, 춤, 영상 등을 학습하여 비슷하게 만들어 냄
  • Image Captioning :Image -> Sequence of words
  • Question Anserwing, Machine Translation
  • 장기 의존성 문제
    • 은닉층의 과거 정보가 마지막까지 전달되지 못하는 현상
    • 시퀀스 데이터의 길이가 길어질수록 과거의 중요한 정보에 대한 학습이 어려워지는 문제

*LSTM

  • RNN의 장기 의존성 문제를 해결한 문제
  • 3개 Gate(Forget, Input, Output) 및 Cell state, Cell state Update, Hidden State로 구성

*GRU

  • RNN의 장기 의존성 문제를 해결한 모델
  • 2개 Gate(Reset, Update)

 

 

반응형

+ Recent posts