More actions
imported>ssim No edit summary |
No edit summary |
||
| Line 43: | Line 43: | ||
이 사람이 안경을 쓴 사람인지 안 쓴 사람인지 구분 | 이 사람이 안경을 쓴 사람인지 안 쓴 사람인지 구분 | ||
''' | '''Linear Regression''': 선형회귀분석 | ||
y = wx + b (w,x: linear combination) | |||
이산 분포 데이터들을 가지고 가정을 한다. 그러한 가정으로 가설을 세우고 | 이산 분포 데이터들을 가지고 가정을 한다. 그러한 가정으로 가설을 세우고 | ||
실제의 값과 가설을 세워 나온 값들의 차이를 계산하여 그 차이를 최소화하는 것. | 실제의 값과 가설을 세워 나온 값들의 차이를 계산하여 그 차이를 최소화하는 것. | ||
| Line 49: | Line 50: | ||
'''perceptron''': 뉴론 네트워크의 기본으로 등장 | '''perceptron''': 뉴론 네트워크의 기본으로 등장 | ||
y = w1x1 + w2x2 + ... + b | y = w1x1 + w2x2 + ... + b | ||
(w1x1 + w2x2 + ... +wnxn = 선형결합, b = 평행이동) | |||
'''Logistic Regression''': 선형회귀가 입력 데이터에 해당하는 데이터를 출력한다면 | |||
로지스틱 회귀분석은 분류를 하기 위해 사용된다. | |||
위에 나온 퍼셉트론으로 대소 비교하여 x가 해당 범위에 포함되는지 확인. | |||
'''최적화문제''': 실제 이런 것은 관측 데이터와 가설의 차이를 최소화하는 최적화 문제이다. | |||
'''최적화 Objective Function''' | |||
Loss func ( Mean Square Error ) | |||
y = H(x) + α | |||
α를 최소화, |α| or α^2 를 이용하여 거리의 최솟값을 찾는다. | |||
미분을 통해 최적화를 하는데 | |||
|α|의 경우 0 일 때, 미분을 할 수없다는 문제가 있어 | |||
α^2를 주로 사용한다. | |||
Cross func ( Cross Entropy Error ) | |||
argmin θ = -∑ y * log H(x,θ) | |||
여기서 θ는 w와 b의 조합 | |||
H(x,θ)는 확률분포를 따라 ∑H(x,θ) = 1 이다. | |||
Softmax func | |||
여기서 argmin θ 앞에 -를 붙이는 것은 로그함수의 특징을 보면 알 수 있다. | |||
log함수는 0 < x < 1 일 경우 음수의 값을 가진다. | |||
이를 -를 붙여 양수의 값을 취한다. | |||
이 때 argmin θ의 값이 0에 가까워 질수록 가장 정확하다. | |||
'''Gradient descent''': Grobal Minima를 찾기 위해 미분을 해서 0이 되는 점을 찾아야하는데 | |||
보통 미분은 대수식이 있을 경우 손쉽게 미분가능하지만 | |||
딥러닝의 경우 수식이 정해지지 않아 대수적으로 미분이 불가능하다. | |||
그 때문에 Gradient descent를 사용하여 극값에 도달한다. | |||
다른 방법으로는 '뉴턴 메소드'가 있지만 | |||
기울기와 이계도를 함수를 사용하여 다소 복잡한 면이 있다. | |||
Gradient descent의 경우 그 함수가 convex 함수인지 non-convex 함수인지가 중요한데 | |||
non-convex함수일 경우 지역 최적화(local optima)의 문제에 빠질 수 있다. | |||
수식으로 나타내면 | |||
w(n+1) = w(n) - α∇wL | |||
이 때 - 를 하는 이유는 기울기에 반대 방향으로 가야지 최소값을 찾을 수 있기 때문이다. | |||
그리고 α를 '''러닝메이트'''라고 하는데 | |||
러닝메이트가 클 경우, 빨리 수렴하지만 자칫 잘못하다간 탈출, 즉 한없이 커질 수가 있다. | |||
러닝메이트가 작을 경우, 계산량은 많지만 크기의 변화는 적어 오래 걸린다. | |||
따라서 러닝메이트를 적절히 조정해야하는데 보통 처음에 크게 하고 점차 decay(감소)시킨다. | |||
'''Multi-Layer Perceptron''' | |||
DAG(Directed Assignment Graph) | |||
앞서 말한 perceptron이 층을 이룬 구조다. 이 때 몇가지 조건이 필요한데 | |||
우선 cycle이 없고, 방향이 한쪽으로만 가야한다. | |||
'''Non-linear Activation Function''' | |||
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) | |||
'''Universal Approximation''' | |||
multi-layer perceptron에서 non-linear activation function을 만족할 경우 | |||
universal approximation, 즉 모든 함수를 모방가능하다. | |||
'''Back Propagation''' | |||
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가지 경우가 있는데 | |||
######### 레이블이 달린 데이터가 얼마 없을 때 | |||
######### ReLU가 아닐 때 | |||
이 2가지 경우 위의 방법을 사용한다. 위의 방법을 설명하자면 | |||
적당한 Clustering 후 Classification을 하는 것인데 | |||
위에서 언급한 바와 같이 Clustering은 기준이 주어지지 않고 수학적 계산으로 기준을 찾는 것이다. | |||
이렇게 기준을 찾은 후 그 기준을 가지고 Classification을 한다. | |||
노드가 층에 많이 있을 수록 Universal Approximation, 즉 모든함수를 모방할 가능성이 증가한다. | |||
'''Deep Learning''' | |||
######### 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'''라 한다. | |||
'''Recurrent Neural 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 이므로 계산할 양이 많다. | |||
'''Convolution Neural Network''' | |||
현재 제일 잘 나감. | |||
Local connectivity의 특성을 가지고 있어 인접한 노드에만 영향을 받는다. | |||
지금까지 Full connection MxN이었지만 | |||
만약 Local connectivitiy가 3이라면 | |||
3 x N 이되며 | |||
w 또한 재사용할 경우 복잡도는 확 낮아진다. | |||
== 추가 내용 == | |||
* 이 후 내용은 그림 설명이 주된 내용이라 올리지 못하는 것을 아쉽게 생각합니다. | |||
* 구글에서 drawNet 쳐서 들어가보면 이미지 딥러닝을 이해하기 쉽게 보여준다.(IE에서 보지마세요. 힘들어요.) | |||
* Super resolution deep learning - 저해상도의 사진의 해상도를 올려줌 (연관검색어: 김지원 - 남자이니 기대 ㄴㄴ) | |||
Revision as of 17:09, 29 March 2016
졸지말고 딥러닝
일시
- 2016 / 03 / 29 - 화요일 오후 7시
강사
- 변형진 선배님
내용
- 딥러닝이 무엇인지 설명해주고 어떤 원리로 작동하는 지에 대한 설명
세부 내용
확률적 모델링: 확률적 모델링을 통해 딥러닝을 할 수 있음.
Supervised: H: x → y (H: hypothesis, x: 입력 데이터, y: 출력 데이터)
-x 라는 입력데이터가 주어졌을 때 그에 해당하는 출력인 y를 알려주고
x를 입력했을 때 y라는 데이터가 나올 수 있는 가설을 세우고
그 차이를 줄이는 것.
Unsupervised: 위의 식에서 y가 없고 x만 존재.
이 경우 x에서 특징들을 찾아내어 분석
Reinforcement: 알파고의 자기 학습을 예로 들면,
알파고가 바둑을 두었을 경우 그 경우가 좋은 경우인지 나쁜 경우인지
나중에 reward를 알려줌.
이를 설명하면
어떠한 상태 S(t)는 어떠한 행동 A(t)에 의해 S(t+1)로 변하게 되는데
이 경우가 좋은 지 나쁜지는 나중에 결과로 알 수 있음.
나중에 P[S(t),A(t)]:reward 로 GOOD / BAD 를 알려줌.
//오늘은 자세히 설명을 안하신다고 언급
Clustering: 어떠한 기준으로 군집합을 나누는 데 이 때 기준을 미리 정해주지 않는다.
이 때 기준은 데이터들 간의 수학적 거리를 통해 정해진다.
군집합을 나누는 기법에는 여러 기법이 있다.
Classification: 이 방법은 분류 기준이 주어지는 데
예를 들면, 사람들을 안경을 쓴 사람과 안 쓴 사람을 구분한다고 하자.
그러면 안경을 쓴 사람들의 사진과 안경을 안 쓴 사람들의 사진을 보여주고
그 차이를 학습시킨다. 그 후 새로운 사람 데이터를 주었을 때
이 사람이 안경을 쓴 사람인지 안 쓴 사람인지 구분
Linear Regression: 선형회귀분석
y = wx + b (w,x: linear combination)
이산 분포 데이터들을 가지고 가정을 한다. 그러한 가정으로 가설을 세우고
실제의 값과 가설을 세워 나온 값들의 차이를 계산하여 그 차이를 최소화하는 것.
perceptron: 뉴론 네트워크의 기본으로 등장
y = w1x1 + w2x2 + ... + b
(w1x1 + w2x2 + ... +wnxn = 선형결합, b = 평행이동)
Logistic Regression: 선형회귀가 입력 데이터에 해당하는 데이터를 출력한다면
로지스틱 회귀분석은 분류를 하기 위해 사용된다.
위에 나온 퍼셉트론으로 대소 비교하여 x가 해당 범위에 포함되는지 확인.
최적화문제: 실제 이런 것은 관측 데이터와 가설의 차이를 최소화하는 최적화 문제이다.
최적화 Objective Function
Loss func ( Mean Square Error )
y = H(x) + α
α를 최소화, |α| or α^2 를 이용하여 거리의 최솟값을 찾는다.
미분을 통해 최적화를 하는데
|α|의 경우 0 일 때, 미분을 할 수없다는 문제가 있어
α^2를 주로 사용한다.
Cross func ( Cross Entropy Error )
argmin θ = -∑ y * log H(x,θ)
여기서 θ는 w와 b의 조합
H(x,θ)는 확률분포를 따라 ∑H(x,θ) = 1 이다.
Softmax func
여기서 argmin θ 앞에 -를 붙이는 것은 로그함수의 특징을 보면 알 수 있다.
log함수는 0 < x < 1 일 경우 음수의 값을 가진다.
이를 -를 붙여 양수의 값을 취한다.
이 때 argmin θ의 값이 0에 가까워 질수록 가장 정확하다.
Gradient descent: Grobal Minima를 찾기 위해 미분을 해서 0이 되는 점을 찾아야하는데
보통 미분은 대수식이 있을 경우 손쉽게 미분가능하지만
딥러닝의 경우 수식이 정해지지 않아 대수적으로 미분이 불가능하다.
그 때문에 Gradient descent를 사용하여 극값에 도달한다.
다른 방법으로는 '뉴턴 메소드'가 있지만
기울기와 이계도를 함수를 사용하여 다소 복잡한 면이 있다.
Gradient descent의 경우 그 함수가 convex 함수인지 non-convex 함수인지가 중요한데
non-convex함수일 경우 지역 최적화(local optima)의 문제에 빠질 수 있다.
수식으로 나타내면
w(n+1) = w(n) - α∇wL
이 때 - 를 하는 이유는 기울기에 반대 방향으로 가야지 최소값을 찾을 수 있기 때문이다.
그리고 α를 러닝메이트라고 하는데
러닝메이트가 클 경우, 빨리 수렴하지만 자칫 잘못하다간 탈출, 즉 한없이 커질 수가 있다.
러닝메이트가 작을 경우, 계산량은 많지만 크기의 변화는 적어 오래 걸린다.
따라서 러닝메이트를 적절히 조정해야하는데 보통 처음에 크게 하고 점차 decay(감소)시킨다.
Multi-Layer Perceptron
DAG(Directed Assignment Graph)
앞서 말한 perceptron이 층을 이룬 구조다. 이 때 몇가지 조건이 필요한데
우선 cycle이 없고, 방향이 한쪽으로만 가야한다.
Non-linear Activation Function
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)
Universal Approximation
multi-layer perceptron에서 non-linear activation function을 만족할 경우
universal approximation, 즉 모든 함수를 모방가능하다.
Back Propagation
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가지 경우가 있는데
- 레이블이 달린 데이터가 얼마 없을 때
- ReLU가 아닐 때
이 2가지 경우 위의 방법을 사용한다. 위의 방법을 설명하자면
적당한 Clustering 후 Classification을 하는 것인데
위에서 언급한 바와 같이 Clustering은 기준이 주어지지 않고 수학적 계산으로 기준을 찾는 것이다.
이렇게 기준을 찾은 후 그 기준을 가지고 Classification을 한다.
노드가 층에 많이 있을 수록 Universal Approximation, 즉 모든함수를 모방할 가능성이 증가한다.
Deep Learning
- 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라 한다.
Recurrent Neural 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 이므로 계산할 양이 많다.
Convolution Neural Network
현재 제일 잘 나감.
Local connectivity의 특성을 가지고 있어 인접한 노드에만 영향을 받는다.
지금까지 Full connection MxN이었지만
만약 Local connectivitiy가 3이라면
3 x N 이되며
w 또한 재사용할 경우 복잡도는 확 낮아진다.
추가 내용
- 이 후 내용은 그림 설명이 주된 내용이라 올리지 못하는 것을 아쉽게 생각합니다.
- 구글에서 drawNet 쳐서 들어가보면 이미지 딥러닝을 이해하기 쉽게 보여준다.(IE에서 보지마세요. 힘들어요.)
- Super resolution deep learning - 저해상도의 사진의 해상도를 올려줌 (연관검색어: 김지원 - 남자이니 기대 ㄴㄴ)