세부 내용 ¶
확률적 모델링: 확률적 모델링을 통해 딥러닝을 할 수 있음.
Supervised: H: x → y (H: hypothesis, x: 입력 데이터, y: 출력 데이터)
Unsupervised: 위의 식에서 y가 없고 x만 존재.
-x 라는 입력데이터가 주어졌을 때 그에 해당하는 출력인 y를 알려주고
x를 입력했을 때 y라는 데이터가 나올 수 있는 가설을 세우고
그 차이를 줄이는 것.
x를 입력했을 때 y라는 데이터가 나올 수 있는 가설을 세우고
그 차이를 줄이는 것.
이 경우 x에서 특징들을 찾아내어 분석
Reinforcement: 알파고의 자기 학습을 예로 들면,알파고가 바둑을 두었을 경우 그 경우가 좋은 경우인지 나쁜 경우인지
나중에 reward를 알려줌.
이를 설명하면
어떠한 상태 S(t)는 어떠한 행동 A(t)에 의해 S(t+1)로 변하게 되는데
이 경우가 좋은 지 나쁜지는 나중에 결과로 알 수 있음.
나중에 PS(t),A(t):reward 로 GOOD / BAD 를 알려줌.
//오늘은 자세히 설명을 안하신다고 언급
Clustering: 어떠한 기준으로 군집합을 나누는 데 이 때 기준을 미리 정해주지 않는다.나중에 reward를 알려줌.
이를 설명하면
어떠한 상태 S(t)는 어떠한 행동 A(t)에 의해 S(t+1)로 변하게 되는데
이 경우가 좋은 지 나쁜지는 나중에 결과로 알 수 있음.
나중에 PS(t),A(t):reward 로 GOOD / BAD 를 알려줌.
//오늘은 자세히 설명을 안하신다고 언급
이 때 기준은 데이터들 간의 수학적 거리를 통해 정해진다.
군집합을 나누는 기법에는 여러 기법이 있다.
Classification: 이 방법은 분류 기준이 주어지는 데군집합을 나누는 기법에는 여러 기법이 있다.
예를 들면, 사람들을 안경을 쓴 사람과 안 쓴 사람을 구분한다고 하자.
그러면 안경을 쓴 사람들의 사진과 안경을 안 쓴 사람들의 사진을 보여주고
그 차이를 학습시킨다. 그 후 새로운 사람 데이터를 주었을 때
이 사람이 안경을 쓴 사람인지 안 쓴 사람인지 구분
Linear Regression: 선형회귀분석그러면 안경을 쓴 사람들의 사진과 안경을 안 쓴 사람들의 사진을 보여주고
그 차이를 학습시킨다. 그 후 새로운 사람 데이터를 주었을 때
이 사람이 안경을 쓴 사람인지 안 쓴 사람인지 구분
y = wx + b (w,x: linear combination)
이산 분포 데이터들을 가지고 가정을 한다. 그러한 가정으로 가설을 세우고
실제의 값과 가설을 세워 나온 값들의 차이를 계산하여 그 차이를 최소화하는 것.
perceptron: 뉴론 네트워크의 기본으로 등장이산 분포 데이터들을 가지고 가정을 한다. 그러한 가정으로 가설을 세우고
실제의 값과 가설을 세워 나온 값들의 차이를 계산하여 그 차이를 최소화하는 것.
y = w1x1 + w2x2 + ... + b
(w1x1 + w2x2 + ... +wnxn = 선형결합, b = 평행이동)
Logistic Regression: 선형회귀가 입력 데이터에 해당하는 데이터를 출력한다면(w1x1 + w2x2 + ... +wnxn = 선형결합, b = 평행이동)
로지스틱 회귀분석은 분류를 하기 위해 사용된다.
위에 나온 퍼셉트론으로 대소 비교하여 x가 해당 범위에 포함되는지 확인.
최적화문제: 실제 이런 것은 관측 데이터와 가설의 차이를 최소화하는 최적화 문제이다.위에 나온 퍼셉트론으로 대소 비교하여 x가 해당 범위에 포함되는지 확인.
최적화 Objective Function
Loss func ( Mean Square Error )
Gradient descent: Grobal Minima를 찾기 위해 미분을 해서 0이 되는 점을 찾아야하는데Loss func ( Mean Square Error )
y = H(x) + α
α를 최소화, |α| or α^2 를 이용하여 거리의 최솟값을 찾는다.
미분을 통해 최적화를 하는데
α^2를 주로 사용한다.
Cross func ( Cross Entropy Error )α를 최소화, |α| or α^2 를 이용하여 거리의 최솟값을 찾는다.
미분을 통해 최적화를 하는데
의 경우 0 일 때, 미분을 할 수없다는 문제가 있어 |
argmin θ = -∑ y * log H(x,θ)
여기서 θ는 w와 b의 조합
H(x,θ)는 확률분포를 따라 ∑H(x,θ) = 1 이다.
Softmax func
여기서 argmin θ 앞에 -를 붙이는 것은 로그함수의 특징을 보면 알 수 있다.
log함수는 0 < x < 1 일 경우 음수의 값을 가진다.
이를 -를 붙여 양수의 값을 취한다.
이 때 argmin θ의 값이 0에 가까워 질수록 가장 정확하다.
여기서 θ는 w와 b의 조합
H(x,θ)는 확률분포를 따라 ∑H(x,θ) = 1 이다.
Softmax func
여기서 argmin θ 앞에 -를 붙이는 것은 로그함수의 특징을 보면 알 수 있다.
log함수는 0 < x < 1 일 경우 음수의 값을 가진다.
이를 -를 붙여 양수의 값을 취한다.
이 때 argmin θ의 값이 0에 가까워 질수록 가장 정확하다.
보통 미분은 대수식이 있을 경우 손쉽게 미분가능하지만
딥러닝의 경우 수식이 정해지지 않아 대수적으로 미분이 불가능하다.
그 때문에 Gradient descent를 사용하여 극값에 도달한다.
다른 방법으로는 '뉴턴 메소드'가 있지만
기울기와 이계도를 함수를 사용하여 다소 복잡한 면이 있다.
Gradient descent의 경우 그 함수가 convex 함수인지 non-convex 함수인지가 중요한데
non-convex함수일 경우 지역 최적화(local optima)의 문제에 빠질 수 있다.
수식으로 나타내면
w(n+1) = w(n) - α∇wL
이 때 - 를 하는 이유는 기울기에 반대 방향으로 가야지 최소값을 찾을 수 있기 때문이다.
그리고 α를 러닝메이트라고 하는데
러닝메이트가 클 경우, 빨리 수렴하지만 자칫 잘못하다간 탈출, 즉 한없이 커질 수가 있다.
러닝메이트가 작을 경우, 계산량은 많지만 크기의 변화는 적어 오래 걸린다.
따라서 러닝메이트를 적절히 조정해야하는데 보통 처음에 크게 하고 점차 decay(감소)시킨다.
Multi-Layer Perceptron 딥러닝의 경우 수식이 정해지지 않아 대수적으로 미분이 불가능하다.
그 때문에 Gradient descent를 사용하여 극값에 도달한다.
다른 방법으로는 '뉴턴 메소드'가 있지만
기울기와 이계도를 함수를 사용하여 다소 복잡한 면이 있다.
Gradient descent의 경우 그 함수가 convex 함수인지 non-convex 함수인지가 중요한데
non-convex함수일 경우 지역 최적화(local optima)의 문제에 빠질 수 있다.
수식으로 나타내면
w(n+1) = w(n) - α∇wL
이 때 - 를 하는 이유는 기울기에 반대 방향으로 가야지 최소값을 찾을 수 있기 때문이다.
그리고 α를 러닝메이트라고 하는데
러닝메이트가 클 경우, 빨리 수렴하지만 자칫 잘못하다간 탈출, 즉 한없이 커질 수가 있다.
러닝메이트가 작을 경우, 계산량은 많지만 크기의 변화는 적어 오래 걸린다.
따라서 러닝메이트를 적절히 조정해야하는데 보통 처음에 크게 하고 점차 decay(감소)시킨다.
DAG(Directed Assignment Graph)
앞서 말한 perceptron이 층을 이룬 구조다. 이 때 몇가지 조건이 필요한데
우선 cycle이 없고, 방향이 한쪽으로만 가야한다.
Non-linear Activation Function앞서 말한 perceptron이 층을 이룬 구조다. 이 때 몇가지 조건이 필요한데
우선 cycle이 없고, 방향이 한쪽으로만 가야한다.
Non-linear Activation Function에는 3가지가 있는데
- Sigmoid
- ReLU
- tanh
이다. 위의 함수는 구글에서 찾을 경우 쉽게 이미지를 볼 수 있으니 참조하면 좋다.
Sigmoid의 경우 0일때 미분값이 가장 크고 양 극으로 갈수록 미분값이 0에 가까워진다.
f(x) = 1 / 1 + exp(-x)
ReLU의 경우 0을 기준으로 음수이면 제거하고 양수일 경우 미분값이 1이다.
ReLU는 Rectified Linear Unit의 약자로 양방향으로 가는 것을 한뱡향으로 보내준다.
전자공학에서 사용하는 Rectifer와 유사
f(x) = max(0,x)
multi-layer perceptron에서 non-linear activation function을 만족할 경우
universal approximation, 즉 모든 함수를 모방가능하다.
Back Propagationuniversal approximation, 즉 모든 함수를 모방가능하다.
Multi-Layer Perceptron에서 변경할 경우 출력노드와 바로 밑의 노드 층만 변경이 된다.
그보다 낮은 층의 노드들의 가중치를 변경하기 위해
출력노드 가중치의 미분 값을 가지고 내부노드로 역으로 전파한다.
위 같은 특성 때문에 '역전파'라고 한다.
Issues of MLP그보다 낮은 층의 노드들의 가중치를 변경하기 위해
출력노드 가중치의 미분 값을 가지고 내부노드로 역으로 전파한다.
위 같은 특성 때문에 '역전파'라고 한다.
MLP의 경우 4가지의 문제점이 있다.
- Vanishing Gradient
- Lots of labeled data
- Overfitting
- Local optima
우선 Vanishing Gradient의 문제점은 Sigmoid와 tanh의 함수를 보면 이해하기 쉽다.
Sigmoid와 tanh는 0에서 최대 기울기를 가진 후 양극으로 갈수록 기울기가 0이 되는데
이 때 그 값이 너무 0에 근사하여 변화가 거의 없어 오랜 시간이 걸린다.
위 같은 문제를 해결하기 위해 ReLU를 사용하는데
ReLU의 경우 필요없는 부분은 0으로 만들어 계산을 용이하게 한다.
구글 딥러닝 개발자는 Revolution에서 Re와 LU를 강조하여 ReLU가 딥러닝에 큰 이바지를 함을 나타내었다.
Lots of labeled data는 수식을 찾기 위해서 답을 알고 있는 데이터가 많아야한다는 것이다.
최근 빅데이터를 이용한 많은 개발이 이루어지고 있어 이 부분에 큰 도움이 된다.
Overfitting 문제는 통계의 문제점에서 발생한다.
모수를 전수조사 할 수 없으므로 임의의 표본을 골라 계산을 하게 되는데
이 경우 표본에서만 계산이 잘되고 나머지 부분이 잘 안되는 경우가 있다.
이런 경우를 샘플 측정이 전체측정이라고 착각한다고 말하는 데
더 많은 데이터, 더 깊은 MLP를 구성할수록 overfit이 일어나기 쉽다.
이럴 경우 drop-out을 하여 Overfitting 문제를 해결한다.
drop-out이란 랜덤하게 노드를 빼서 학습하는 것이다.
이럴 경우 가중치의 값은 평균치에 도달하게 되어 overfitting을 해결할 수 있다.
ReLU와 유사
Local optima 문제는 위에서 언급한 것과 같이 non-convex 함수일 경우 일어나는데
이런 경우 모든 미분값이 0이거나 다 올라가는 경우이어야 한다.
데이터가 많아지면 많아질수록 모든 미분값이 0이거나 다 올라가는 경우는 매우 희박해진다.
따라서 위 같은 경우는 일어날 일이 거의 없으므로 생각하지 않는다.
듣기론 저렇게 들었는데 정확하지는 않다. 구글 검색을 해도 안나오는 것을 보니 혹시
잘 들으신 분이 이것을 본다면 정정해주길 바란다.
위의 방법을 사용할 때는 2가지 경우가 있는데
잘 들으신 분이 이것을 본다면 정정해주길 바란다.
위의 방법을 사용할 때는 2가지 경우가 있는데
- 레이블이 달린 데이터가 얼마 없을 때
- ReLU가 아닐 때
이 2가지 경우 위의 방법을 사용한다. 위의 방법을 설명하자면
적당한 Clustering 후 Classification을 하는 것인데
위에서 언급한 바와 같이 Clustering은 기준이 주어지지 않고 수학적 계산으로 기준을 찾는 것이다.
이렇게 기준을 찾은 후 그 기준을 가지고 Classification을 한다.
노드가 층에 많이 있을 수록 Universal Approximation, 즉 모든함수를 모방할 가능성이 증가한다.
- Representation Learning
- Traditional Machine Learning
- Hand-craft feature extraction
//필기의 순서가 뒤죽박죽이여서 키워드만 적겠습니다.
ex)
형태소 분석
아버지가/방에/들어가시/ㄴ다
아버지/가방에/들어가시/ㄴ다
두 가지의 경우 중 더 높은 확률로 나타난 값을 기준으로 분석
베이즈 정리
I am a man
I, a, m, n으로 이루어진 차원을 축소하여 유의미한 vector를 찾아내는 것을
임베딩이라고 한다.
차원 축소시 축소할 경우 데이터의 값이 잘 분산 되는 것으로 한다.
= 특징이 잘 드러나도록 차원을 축소
Deep Learning을 하다보면 모델이 깊어질 수 밖에 없음.
GoogLeNet의 경우 깊이가 20 이상 되는데
이 경우 용량만 수십 GB를 차지하며 연산해야하는 연산 수 또한 많아
GPU로 연산을 해야한다. 이와 같은 문제 때문에 모델을 축소해야한다.
앞에 이야기를 한 내용을 Feedforward Network라 한다.
이것은 두 가지 특징을 가지는데
- weight sharing
- sequential data
이것은 데이터가 깊을 필요가 없지만 이전에 데이터가 나중에 영향을 주므로
시간 또는 데이터의 시퀀스가 매우 중요하다.
번역이나 음성데이터 분석할 때 사용.
ex) 구글 자동완성, 대화 프로그램(seq2seq)
RNN를 식으로 나타내면 아래와 같은 식으로 나타낼 수 있다.
H(t) = w(Xt) + vH(t-1)
y(t) = α(H(t))
RNN의 Back propagation의 경우 α는 고려되지 않는다.
하지만 H(t)에서 Back propagation 할 경우 v^n 이므로 계산할 양이 많다.
현재 제일 잘 나감.
Local connectivity의 특성을 가지고 있어 인접한 노드에만 영향을 받는다.
지금까지 Full connection MxN이었지만
만약 Local connectivitiy가 3이라면
3 x N 이되며
w 또한 재사용할 경우 복잡도는 확 낮아진다.
Local connectivity의 특성을 가지고 있어 인접한 노드에만 영향을 받는다.
지금까지 Full connection MxN이었지만
만약 Local connectivitiy가 3이라면
3 x N 이되며
w 또한 재사용할 경우 복잡도는 확 낮아진다.