이번 시간에는 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 |