보초의 코딩일기장

데이터 청년 캠퍼스 2일차 본문

데이터청년캠퍼스

데이터 청년 캠퍼스 2일차

장보비 2019. 7. 5. 13:46

2019.07.02 -2회차


  • 통계학에서의 회기는 단순이 x에 대한 y의 식을 새우는 것이라면 ML에서의 회기는 Gradient Descent로 데이터를 표현하는 것
  • Overfitting: 너무 많은 트레이닝이 되었음 / Underfitting : 너무 적게 트레이닝 되었음
  • 선형회귀는 오버피팅이 너무 많이 일어나게 됨. 그래서 분산이나 편차(L1,L2)를 조절하여 정규화를 적용한다.
  • SVM에서 커널을 적용하여 복잡한 데이터에 대해서 분류를 가능하게 만들었음.
  • 앙상블: 여러 모델이 존재할 때 그 모델의 결과값을 하나로 만들어서(hard/soft voting) 하나의 output으로 만듦.
  • Dicision Tree : 데이터의 불순도를 계산하여 데이터를 나눠 분류하면 트리모양을 형성하게 됨.
    • 그 트리모양을 하나의 output으로 만들어낸다면 그것이 Random Forest

Deep Learning

  • 딥러닝은 블랙박스 모델로 의사결정의 이유를 알 수가 없음.
  • 딥러닝은 설명력의 부족으로 인해서 사람을 대신하지 않고 사람의 보조로 쓰인다.
  • 최근에는 딥러닝이 의사결정을 내린 이유를 설명하기 위해서 다양한 연구가 진행중임.

Perceptron

  • input과 weight를 곱한 뒤 활성 함수를 적용하여 갓이 0보다 크면 1, 0보다 작으면 -1를 출력하는 구조
  • Perceptron은 AND와 OR은 계산이 가능했지만 XOR은 계산이 불가능하다. 즉, 퍼셉트론은 선형분류가 가능하지만 비선형분류는 불가능 하다는 결론이 나옴.
  • Multi-Layer Perceptron: Hinton이 히든레이어라는 중간레이어를 추가하여 선형 분류 판별선을 여러개 그리는 효과를 얻음으로써 XOR문제를 해결하였다.
  • 과거에는 sigmoid function을 많이 사용하였지만 현재는 ReLU를 많이 사용한다.

신경망의 목표는 최적의 매개변수(가중치와 편향)을 찾는 것이다. 선형과 비선형분류가 가능해졌지만 시간이 너무 오래걸리는 문제점이 발생하였음.

BackPropagation

  • 앞서 경사 하강법의 계산량이 많아지는 것을 해결하기 위해 제안됨.

-> 현재 딥러닝은 새로운 구조가 등장하는 것보다는 학습을 더 빠르고 정확하게 하도록 연구 중이다.

Drop out을 이용하여 overfitting을 방지할 수 있음.

Gradient Descent

  • 모든 데이터를 한번에 학습하면서 점차 에러를 줄이는 방법으로 학습해야 Loss Function을 올바르게 학습할 수 있음.

Convolution Neural Network

  • DNN은 사진은 1차원이 아니기 때문에 사진 데이터를 1차원으로 바꿔서 한 줄로 세우는 과정에서 정보의 손실이 발생한다.
  • 이미지의 특징을 추출하기 위해 Filter를 사용하여 Convolution을 한다
    • Stride: 필터 적용 간격
    • Padding: 컨볼루션 레이어에서 Filter와 Stide의 작용으로 Feature Map의 크기가 작아지는데 이를 방지하기 위해서 사용한다. 보통 외곽선을 0을 넣어서 크기를 맞추어준다. 이로인해 이미지의 외각을 인식하는 학습 효과를 가져올 수 있다.
    • Poling: 컨볼루션 레이어의 출력 데이터를 입력으로 받아서 출력 데이터의 크기를 줄이거나 강조하는 용도로 사용한다. Max Poling은 정해진 pooling 사이즈 내에 가장 큰 값을 추출해내는 방식이다.
  • Convolution과 Subsampling의 반복으로 이미지의 특징을 추출한다. 레이어가 깊어질수록 특징의 추출이 확실해진다.

VGGNet

  • 컨볼루션 사이즈를 고정하고 깊이를 깊게하는 실험을 진행하였고 성능이 좋게 나왔기 때문에 3x3 filter만 사용하게 되었음.

ResNet

  • ResNet-152: 152개의 layer를 사용함.
  • Back propergation를 사용하지 않고 처음 사용한 가중치를 그대로 적용함으로서 학습이 진행되도록 하였음.

Recurrent Neural Network

  • 시간 데이터를 분석하기 위해서 사용된다.
  • 이론적으로는 장기 의존성 문제를 해결할 수 있지만 Gradient Vanishing 문제가 생긴다!
  • 모든 시간대에서 동일한 매개변수를 사용한다.
  • 이전 데이터가 넘어감으로서 다음에 영향을 주기 때문에 추천기능같은 부분에서 쓰인다.
  1. Single input / multi output :Imige Caption Generation (RNN + CNN) 이미지가 input으로 들어가고 문자가 output으로 나오는 것
  2. Multi input / single output : 감정분석 (긍정 , 부정 판단)
  3. Multi input/ multi output :구글 번역기

Long term short Term Memory (LSTM)

  • Input이 들어오고 중요한 정보인 경우 Long Term Gate 에 들어가게 된다.
  • Forget gate / imput gate

LSTM 의 변형 = GRU

  • 계산 복잡성을 줄인 모델
  • LSTM의 게이트를 일부 생략

Google's Neural Translation System

과거 RBMT, SMT를 사용하였고 오역이 많았음.

  • RBMT: 주어, 동사, 목적어 등등으로 구분지었음
  • SMT: 사과라는 단어를 넣는다면 그 단어 다음으로 올 동사를 예측하여서 번역하였음.

현재)

Encoder Network LSTM - Attention Network - Decoder Network LSTM

Attention Network: 중요한 문자, 꼭 해석해야 하는 문자들을 넣음.

  • NMT: 이상한 단어가 input으로 들어갈 시. (ex>뀴쭓)
    해석하지 않고 문자 그대로 output에 출력한다.

ex) 뀴쭓 i ate an apple ====> 뀴쭓 나는 사과를 먹었다

One shot/ Zero shot detection을 사용하여 여러 나라의 번역의 품질을 높였음.

 

 

 

 

그 외 필기자료 : https://github.com/jsh-me/Bigdata/tree/master/days/2days

Buy me a coffeeBuy me a coffee
Comments