Learning a Neural Networks
인간의 신경망 구조를 모사하여 학습하는 방법이다. Depth 가 깊어질수록 복잡한 모델을 표현 가능하게 하는 유연성을 지니고 있으나, 계산 비용이 비싸지고 복잡도가 커진다는 단점도 지니고 있다. 최근 한계점을 극복하는 방법론이 많이 등장하여 다시금 각광받게 된 Neural Networks(NN) 학습 방법에 대해 이야기하도록 한다.
What is different from Machine Learning?
NN 또는 DNN 으로도 불리는 통칭 딥 러닝은 기존 머신 러닝과 무엇이 다른가? 결론부터 이야기하면, 여러 층의 Hidden Layer 존재 유무로 딥 러닝이다, 아니다를 구분지을 수 있다. Hidden Layer 가 없다면, 정통 머신 러닝이라고 보아도 무방하며, 좀 더 복잡한 문제를 풀 수 있도록 하위 부분 집합으로서 딥 러닝이 등장하게 되었다.
- Learning XOR Problem
- 만약, 선형으로 완벽하게 분리되지 못하는 데이터가 있다고 가정해보자.
- 학습 데이터 셋과 만들어 낼 모델은 다음과 같다.
- training set: 𝐷 = {([0,0]\({}^𝑇\) , 0), ([0,1]\({}^𝑇\) , 1), ([1,0]\({}^𝑇\) , 1), ([1,1]\({}^𝑇\) , 0)}
- model 𝑓(𝒙; 𝜽) that fits 𝐷, where 𝜽 is the vector of parameters
- 만약, 선형 모델을 학습시켰다고 가정한다면, 이 XOR 문제는 분류할 수 없다.
- 분류를 성공시키기 위해서는 원본 데이터를 새로운 feature space 으로 변형시켜야 한다. (Add hidden layer)
- 중간에 비선형 히든 레이어를 둠으로 써, representation 가능하게 된다. (차원 접기)
- 복잡한 데이터의 학습을 위해, non-linear function 사용함으로 써, linear function 형태로 변환할 수 있는데,
이를 활성 함수(activation function) 라고 부르며 아래와 같이 표현이 가능하다.
Example: rectified linear unit (ReLU) 𝑔(𝑧) = max {0, 𝑧} as 𝑓\({}^{(1)}\)
: 𝑦̂ = 𝐰\({}^T\)𝑓\({}^{(1)}\)(𝒙) + 𝑏 = 𝐰\({}^T\)max{0, 𝐖\({}^T\)𝒙 + 𝐜} + 𝑏
- Let’s have a hand-coded solution (not learned) of the parameters 𝐖, 𝐜, 𝐰, 𝑏 below
- The matrix representation of the training set is
The Structure of Deep Learning
기존의 MLP 개념은 존재하였으나, non-convex 문제를 풀기 어려워 20여 년의 공백 기간이 있었다. 하지만 최근 들어 각광받기 시작한 딥 러닝의 구조를 살펴본다.
- Multi-Layer Perceptron : MLP (Feed forward Neural Networks)
- ① Input Layer → ② Hidden Layers (0 to many) → ③ Output Layer
- “feedforward”: information flows through the network from input to output (No feedback/recurrent connections).
- Multiple layers 𝑓\({}^{(1)}\) , 𝑓\({}^{(2)}\) , … , 𝑓\({}^{(𝑙)}\) are connected in a chain to form
\[ 𝑓(𝒙) = 𝑓^{(𝑙)}(…(𝑓^{(2)}(𝑓^{(1)}(𝒙))) \]
- 만약 여기에서 ② Hidden Layers = 0 이고,
output unit 형태가 single Linear 하면,
⇒ linear regression
output unit 형태가 single Sigmoid 하면,
⇒ logistic regression
이라고 봐도 무방하다. (아래 target task 참조)
- 또한, Hidden Layers 의 역할은 중간에서 non-linear 하게 변형해준다. (아래 참조)
- 일반적인 머신 러닝 기법에서 사용하는 gradient descent-based optimization 이지만,
머신 러닝과의 큰 차이점은 cost function 이 점점 더 non-convex 해 진다는 문제가 있다. (output/hidden units)
※ 최근 non-convex 문제를 푸는 실마리가 등장하여 Neural Network 계열이 각광받기 시작한다.
• Training a Neural Network
1. Design a neural network
2. Initialize parameters to small random numbers
3. Repeat following until terminating condition is met (when error is very small, etc.)
A. (forward propagation) Propagate the inputs forward
B. (backpropagation) Backpropagate the cost and update parameters
Backpropagation Applying "chain-rule"
• Designing a Neural Network (we need to determine...)
1. Cost Functions : the negative log-likelihood (to be minimize)
→ 주어진 parameters 에 대하여 데이터가 관측될 확률이 극대화하는 parameters 찾기 (𝜽*)
2. Output Units : the target task (Linear, Sigmoid, Softmax Units)
3. Hidden Units : non-linear transformation (Summation unit + Activation function)
① Activation function : sigmoid (대표적이지만, 3가지 문제점이 있다.)
→ 어떤 input (linear combination) 을 0~1 까지 bound 해주는 함수
1) input 값이 너무 크면, output 값은 거의 0 이 되어버린다.
2) zero-centered 가 아니다. (e.g., logistic regression, if 𝑥𝑗 > 0, ∀𝑗 ?)
3) exp() 계산 비용이 비싸다.
② Activation function : tanh(x) (sigmoid 상 zero-centered 문제는 해결됨, -1~1 bound)
→ 여전히 exp() 계산 비용이 비싸고, gradient kill 할 수 없는 문제는 유지됨
③ Activation function : ReLU (최근 많이 사용하는 양수이면 그대로, 음수이면 0 return)
→ 계산이 빠르고 효율적이다. 단, sigmoid 처럼 zero-centered 가 아니며, 음수이면 gradient 0 이 되버린다.
→ 양수이면 saturate 되지 않는다. (무한대까지 허용)
④ Activation function : Leaky ReLU | Parametric Rectifier (PReLU)
→ gradient 0 Issue 를 막기 위해 개선된 ReLU 변형 형태이다.
⑤ Activation function : Exponential Linear Units (ELU)
→ exp() 계산을 통해 조금 더 smooth 하게 만들어서 미분 가능한 지점을 만들지만 계산 비용이 비싸진다.
⑥ Activation function : Maxout
→ parameter 개수를 너무 늘리게 된다.
※ Lecture 6 of Stanford CS231n: 여기에 따르면 표준 가이드라인이 존재한다.
- Use ReLU. Be careful with your learning rates
- Try out Leaky ReLU / Maxout / ELU
- Try out tanh but don't expect much
- Don't use sigmoid
> 최근 ReLU 및 ReLU 변형을 주로 사용하고, tanh 역시 해볼 만한 가치는 있지만 sigmoid 는 사용하지 않도록 권고한다.
> 데이터가 상당히 노이즈 하면서 값이 상당히 크거나 작은 값이 존재하면,
tanh 나 sigmoid 는 적당한 바운드로 노이즈에 덜 민감한 방식으로 접근할 수도 있다.
4. Architectural Considerations (Depth(No. hidden layers), Width(No. hidden units in each hidden layer))
> hidden layer 1개만 있어도 모두 표현 가능하지만 학습될 수 있다고는 보장 못한다. (Universal Approximation Theorem)
> 너비보단 깊이 있는 뉴럴 넷을 더 선호한다. (복잡도에 대해서, 많은 hidden unit 을 사용하지 않아도 되기 때문이다.)
'학습공간 > 빅데이터활용실무' 카테고리의 다른 글
[5주차] Regularization (0) | 2020.11.19 |
---|---|
[4주차] Optimization (0) | 2020.11.19 |
[2주차] Machine Learning Basics (0) | 2020.10.14 |
[1주차] Introduction to Deep Learning (0) | 2020.10.07 |
[Intro] Learning from Big Data (0) | 2020.08.14 |