본문 바로가기
CS/Data Mining

[DataMining] Deep Learning

by 쵸빙 2020. 5. 3.

이번 시간에는 Deep learning에 대해 알아보도록 하겠다.

 

 

 

 

 

 

● Deep Learning

- 딥러닝은 neural network의 여러 학습 알고리즘들을 일컫는 말이다.

  → 많은 layer로서 학습

 

-최근 AI 혁명의 긴 역사 끝에 나온 주요 기술

 

- 특히 직관적인 문제들에 대해 매우 효과적

  → 사람들이 수행하기는 쉬우나 공식적으로 설명하기는 힘든 일들

  → 예 : 사진에서 사람이 하는 말이나 얼굴 인식

 

 

 

 

 

● 딥러닝의 역사

 

 

 

 

 

 

● Neural Network

- 컴퓨터가 관측 데이터를 학습할 수 있도록 생물학적 뉴런 구조를 모방한 paradigm

  → a network of connected neurons

 

 

* neuron

 

 

 

 

● deep learning의 특징

 

* simple machine learning algorithms

- 주어진 데이터의 representatin에 의존

- raw data 자체를 다루는 경우는 별로 없다.

  → 데이터들은 feature이라는 잘 정리된 형태로 표현된다.

  → 문제를 풀기 위해 정리된 충분히 많은 데이터가 주어져야 한다.

  → 예 : 연설가가 남자인지 여자인지 알아보기 위한 연설자의 목소리 크기

 

* deep learning

- representation으로부터 예측같은 output뿐 아니라 representation 자체도 학습

- 다층신경망을 통해 feature를 잘 학습

 

 

 

● example of a deep learning model

 

 

 

 

● 현재는 deep learning의 시대

- 우리는 big data 세상에 살고 있다.

 

 

- deep network를 처리할 수 있는 하드웨어가 준비되어서 딥러닝이 각광을 받기 시작함.

- 사이즈가 큰 모델을 실행하기 위한 computational resources

  → 뉴런 하나는 쓸모가 없지만, 많은 뉴런들은 매우 복잡한 문제들을 풀 수 있다.

 

 

 

 

 

 

 

● Perceptron

- 입력을 이진 분류(binary classifier)하고 숫자의 벡터로 표현되어 1인지 0인지 판단하는 것.

 

- 퍼셉트론이 작동하는 방법

a = 1일 때를 activated라고 한다.

 

 

 

 

 

 

 

● 퍼셉트론 예시

 

OR

- (x, y)는 입력값들의 쌍이다.

- 결과값은 (0, 0)일 때만 0이고 나머지 경우들은 1이 결과로 나온다.

 

 

AND

- 입력이 (1,1)일 경우만 1이 결과로 나오고, 나머지 경우는 0이 결과값으로 나온다.

 

- 퍼셉트론은 가중치와 편향값을 조절함으로써 결정을 내리는 linear classifier이다.

 

 

XOR

- XOR은 퍼셉트론으로 풀지 못한다.

 

 

 

 

 

● Architecture of Neural Networks

 

Feedforward neural networks (= multilayer perceptron)

- 네트워크에 loop가 없다.

- 정보는 앞으로 진행(feed forward)만 하고, 뒤로 돌아가는(feed back) 법은 없다.

- input layer은 neural network가 아니다.

- feed forward neural network는 신호의 방향이 한 방향이다.

- 전 단계의 입력으로 다시 돌아가는 loop가 없다.

 

 

 

Recurrent Neural Network (RNN)

- feedback loop가 가능하다.

- 보통 loop는 연속적인 데이터(예: 자연어)를 처리하는 데 시간의 제한이 있는 것을 나타내기 위해 사용된다.

 

 

 

 

 

 

● 용어 정리

layer : 인간 뇌 구조가 neuron들의 층으로 이루어졌듯이 ANN도 3분류의 layer들로 구성된다.

- input layer : 초기 입력을 받아들이는 노드들로 구성된다. ANN의 최하위 layer를 구성.

- hidden layer : input layer와 output layer를 연결하는 중간 단계의 여러 layer 계층

- output layer : 최상위 layer. 최종 output을 출력하는 노드들로 구성된다.

 

node

- neuron에 해당되는 layer의 구성 요소.

- 하위 layer의 노드들이 각 output value들의 weighted sum을 activation function에 보내 출력된 값을 상위 layer의

  node의 input으로 보낸다.

 

weight

- 하위 layer의 node들과 상위 layer의 node들을 연결하는 선.

- 보통 -1 ~ 1 사이의 값을 가지며 input value (하위 layer의 output value)와 곱한 값을 상위 layer의 노드들로 보낸다.

 

activation function

- 하위 layer부터의 weighted sum을 filtering하는 function

- logistic function, sigmoid, tangent hyperbolic, Gaussian, relu, softmax 등의 함수가 각 network model과 목적에 따라

  선택되어 사용된다.

 

train

- network이 어떤 input값에 대하여 특정한 output이 나오도록 network의 weight값들을 조정해주는 작업.

 

cost function

- 주어진 input에 대한 target output(desired output)과 실제 output(activated value)과의 차를 표현하는 function.

- RMSE(root mean square error), cross entropy 등이 사용된다.

 

updating rule(algorithm) 또는 optimizer

- train에 사용되는 algorithm

- cost function의 값을 최소화하도록 한다.

- 대표적인 것으로 backpropagation이 있으며, 주로 gradient-descent나 그 변형 rule들을 사용한다.

 

 

 

 

 

 

● feedforward neural network로 XOR 문제 해결하기

- feedforward network with one hidden layer containing two units

 

- h1과 h2를 두 개의 hidden unit을 나타낸다.

 

 

 

 

 

 

● Activation function

- 노드로부터 반환되는 값을 결정

 

- 퍼셉트론은 2진 단계 함수(binary step function)를 사용한다.

  → binary step function은 대부분의 경우에 최선의 방법은 아닌데, weight과 bias의 약간의 변화로 결과가 완전히

     달라질 수 있기 때문이다. 그러므로 점진적으로 가중치와 편향을 조절하기가 어렵다.

 

 

 

 

 

 

 

● Sigmoid Unit

- 위에서 말한 binary step function과 다음과 같은 점에서 비슷하다.

  → z가 크고 양수일 때, 결과는 거의 1이다.

  z가 매우 음수이면, 결과는 거의 0이다.

 

- binary step function보다 더 유연하고, 그러므로 binary classification 문제에 적절하다

  weight과 bias의 미묘한 변화는 결과의 미묘한 변화로 이어질 것이다.

- 가끔 gradient descent algorithm에서는 효과적이지 않다.

 

 

 

 

 

 

● Learning with Training data in Neural Network

- neural network에서의 'learning'의 의미는?

  → 훈련 데이터가 주어지면 특정 cost function의 최소값을 가지는 최적의 weight과 bias를 찾는다.

  여기서 cost function은 원하는 결과와 우리의 예측이 얼마나 다른지를 나타낸다.

 

 

* cost function

- 예: 간단한 이차함수

 

- y(x)는 입력 값 x에 대한 원하는 출력값이고, a는 네트워크로부터 나오는 예측값이다.

 

 

* optimization problem

- C(w, b)를 최소화하는 최적의 w와 b 찾기

 

 

 

 

● Gradient Descent Algorithm

- cost function C(v)를 어떻게 최소화할 것인가?

- v를 v = (v1, v2)의 어떤 변수로 놓자.

- v* = argmin C(v)하는 v*를 찾자.

 

- C'(v) = 0이 되는 v를 찾자.

- 전체적인 최소값을 찾기 위해 반복적으로 한 단계씩 내려가자.

① 시작하는 랜덤값 v를 정한다.

② C를 가장 많이 줄이는 방향으로 v가 내려갈 방향을 정한다.

③ v를 그 방향으로 조금 내려가고 ②단계를 반복한다.

 

- 전체적인 최적값을 보장하지는 않지만 실제로는 꽤나 잘 동작한다.

 

 

 

 

 

 

 

● Stochastic Gradient Descent

- 훈련시켜야할 n개의 데이터들이 있다.

- 각각의 update는 모든 데이터를 고려하기에 O(n) 시간이 걸린다.

 

 

* Stochastic Gradient Descent

- 훈련 입력값들에서 랜덤 샘플을 고른다.

- 샘플의 x에 대해서만 ▽Cx(v)값을 계산한다.

- 각각의 update는 O(s) 시간이 걸리고, 이 때 s는 s<<n인 샘플 크기를 나타낸다.

 

 

 

 

 

 

 

● Stochastic Gradient Descent with Backpropagation

 

- 입력 : 훈련 데이터 요소들 {{x, y}, ...}

 

- 각 훈련 데이터의 샘플의 각 (x,y)들에 대해

  ①

 

  ② forward propagation to promote all outputs

 

  ③ compute the gradient iin the final layer

 

  ④ backward propagation to compute all gradients

 

- for each layer l:

 

 

 

 

 

 

 

● 문제점

 Vanishing gradient problem

- 다중 layer 구조에서는 아래 그림에서 보듯이 밑의 layer의 gradient는 0에 가까운 값을 가지므로 상위 layer에 비해 update가 거의 일어나지 않게 된다.

 

 

 Local minima

- 학습이 cost function의 부분적인 최소값에 갇혀서 더 이상 진행 못하는 현상

 

 

 

 Oscillation

- cost function의 최소점에서 좌우로 진동하면서 최소점에 도달 못하는 현상

 

 

 plateau

- 최소점이 아니면서 0에 가까운 gradient가 계속 이어지면서 고착되는 현상

 

 

 

 

 

다음 시간에는 backpropagation에 대해 알아보도록 하겠다.

'CS > Data Mining' 카테고리의 다른 글

[DataMining] AI & Machine Learning  (0) 2020.05.03
[DataMining] 2-2. Data Preprocessing  (0) 2020.04.30
[DataMining] 1-2. Data Mining Tasks  (0) 2020.04.27
[DataMining] 1-1 . Introduction to Data Mining  (0) 2020.04.27