Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
data_analysis:nn [2020/04/11 15:26] – created prgram | data_analysis:nn [2025/07/07 14:12] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== | + | ====== |
+ | [[blog: | ||
+ | |||
+ | 과적합 가능성, 해석X, 최후의 수단? | ||
+ | |||
+ | 역사 : http:// | ||
+ | |||
+ | << | ||
+ | 선형결합(회귀, | ||
+ | 큰 스케일의 문제에서 사용하기 위해서는 기저 함수가 데이터를 바탕으로 적응되도록 하는 것이 필요. | ||
+ | |||
+ | 매개변수적인 기저함수를 사용하고 해당 매개변수값을 훈련 중에 조절. | ||
+ | |||
+ | 사실 다층 퍼셉트론이라는 용어는 부적합. perceptron (불연속) 여러개가 모인 것이 아니라, 로지스틱 회귀 모델 여러층이 모인 것이기 때문. (미분 가능성) | ||
+ | |||
+ | SVM과 같은 일반화 성능을 가지면서도 결과 모델이 훨씬 더 작아서 계산이 빠르다는 장점 | ||
+ | |||
+ | ※ 활성화 함수가 선형이면, | ||
+ | |||
+ | **universal approximator** : 선형 출력값을 가지는 2계층 네트워크(input/ | ||
+ | |||
+ | 여러 가지의 서로 다른 w의 선택이 입력에서 출력으로의 같은 사상을 표현할 수 있음 | ||
+ | |||
+ | NN을 성공적으로 사용하기 위해 global minimum을 찾는 것이 반드시 필요하지는 않을 수 있음 | ||
+ | |||
+ | |||
+ | ==== perceptron ==== | ||
perceptron : 1957년 고안 | perceptron : 1957년 고안 | ||
Artificial neuron, 다수의 신호를 입력으로 받아 하나의 신호를 출력 | Artificial neuron, 다수의 신호를 입력으로 받아 하나의 신호를 출력 | ||
논리회로 : AND, NAND, OR 표현할 수 있음 | 논리회로 : AND, NAND, OR 표현할 수 있음 | ||
- | XOR(배타적 논리합) : 단순 퍼셉트론으로는 불가능 | + | $ (1, x_1,...,x_n) |
- | 그림 | + | step function |
- | + | hyperplane으로 구분되는 두 개의 공간을 분리하는 역할 | |
- | 직선 하나로는 | + | |
- | 다층 퍼셉트론, | + | {{: |
+ | ===활성화 함수activation function=== | ||
+ | 입력신호의 총합이 h(x)를 통해 변환 | ||
+ | $ y = h ( XW+b ) $ | ||
+ | 출력 = 활성화함수( 입력*가중치 + 편향) | ||
- | 신경망 | + | step function : S자 모양의 함수 |
- | 입력층, 은닉층, 출력층 | + | sigmoid function : step 대신 sigmoid? 미분 위해서. step을 잘 근사한 smooth |
+ | (기술적으로 sigmoid는 함수의 모양을 지칭, logistic은 함수 자체를 가리키는 말) | ||
+ | ReLu(Rectified Linear Unit) | ||
+ | tanh | ||
- | 활성화 함수activation function | ||
- | 입력신호의 총합이 h(x)를 통해 변환 | ||
- | step function | + | ==== Neural Network ==== |
- | sigmoid function | + | ===XOR(배타적 논리합)=== |
- | ReLu(Rectified Linear Unit) | + | 둘 중 하나만 True인 연산. 단순 퍼셉트론으로는 불가능 |
+ | 직선 하나로는 불가능, 직선 제약을 없애면 가능 | ||
+ | |||
+ | 다층 퍼셉트론, | ||
+ | 입력층, 은닉층, 출력층 | ||
identity function | identity function | ||
softmax function (분류) | softmax function (분류) | ||
- | |||
- | MNIST | ||
- | |||
batch : 하나로 묶은 입력 데이터 | batch : 하나로 묶은 입력 데이터 | ||
mini-batch : 훈련 데이터 중 일부를 무작위로 꺼내고(mini-batch), | mini-batch : 훈련 데이터 중 일부를 무작위로 꺼내고(mini-batch), | ||
- | 손실함수 | + | ===손실함수=== |
MSE mean squared error | MSE mean squared error | ||
CEE cross entropy error | CEE cross entropy error | ||
Line 42: | Line 73: | ||
- | gradient descent method : 가중치 | + | |
- | 학습률 | + | ==== 계산법 ==== |
+ | w의 차원을 W라고 할 때(매개변수 | ||
+ | |||
+ | ===2차 근사=== | ||
+ | Taylor expansion -> hessian : W(W+3)/2 개의 독립적 원소를 가지게 됨 -> O(W^2) | ||
+ | 각각이 O(W) 단계만큼을 필요로 하는 함수 계산을 O(W^2) 만큼 해야 함 -> 계산 O(W^3) | ||
+ | |||
+ | ===Gradient Descent=== | ||
+ | 기울기정보 : O(W^2) | ||
+ | |||
+ | 함수가 가장 빠르게 증가할 수 있는 방향 | ||
+ | step size: 과학보다는 기술(art)에 가깝다. | ||
+ | |||
+ | ==vs Newton Mothod== | ||
+ | https:// | ||
+ | 2차 미분은 복잡하고, | ||
+ | |||
+ | stochastic : 1) 데이터 상의 | ||
+ | 2) local minimum에서 탈출할 가능성이 높아짐. 전체 데이터 집합에 대한 | ||
+ | |||
+ | ==SGD== | ||
+ | 대부분의 오류함수는 더할수있는additive 속성을 가지고 있음. 즉, 데이터 전체에 대한 오류값이 각각 데이터 포인트에 대한 오류값의 합과 같다. | ||
+ | 이럴 때는 한번 반복문을 돌 때마다 데이터 포인트 한 개에 대한 gradient를 계산. | ||
+ | |||
+ | ===back-propagation=== | ||
+ | https:// | ||
+ | 계산적 효율성. | ||
+ | W가 충분히 큰 경우, 오류함수 계산에 O(W) 만큼 연산 필요. | ||
+ | 역전파를 사용하지 않고 오류함수 미분값을 계산할 수 있는 한 가지 | ||
+ | 수치 미분을 할 경우 문제점은 계산복잡도가 O(W)에 비례한다는 성질이 사라지게 된다는 것. 각각의 feed-forward 단계는 O(W) 만큼 계산을 필요, NW 상에서 개별적으로 | ||
수치미분을 이용한 계산에는 시간이 걸리지만, | 수치미분을 이용한 계산에는 시간이 걸리지만, | ||
back-propagation of error은 기울기를 고속으로 구할 수 있다. | back-propagation of error은 기울기를 고속으로 구할 수 있다. | ||
+ | |||
+ | |||
+ | 1. 입력 벡터에 대해 feed_forward를 수행하고 모든 뉴런의 출력값을 계산 | ||
+ | 2. 각 뉴런에 대해 오류값 계산 | ||
+ | 3. weight에 따라 오류값의 gradient를 계산해서 오류를 최소화하는 방향으로 weight 재조정 | ||
+ | 4. hidden layer의 오류값을 추정하기 위해 출력층의 오류값을 뒤로 전파(back-propagate) | ||
+ | 5. 오류값의 기울기를 다시 구하고 같은 방식으로 hidden layer의 weight를 재조정. | ||
+ | |||
+ | == 실제계산 == | ||
+ | [[data_analysis: | ||
+ | |||
+ | |||
+ | |||
Line 52: | Line 125: | ||
+ | ==== 참고 Calculus==== | ||
+ | $ f : \mathbb{R}^n -> \mathbb{R} $ | ||
+ | * 방향미분 : $ D_vf(p) = lim_{t-> | ||
+ | * f의 그래프를 직선 p+tv 위에 한정하여 그렸을 때, 점 (p, | ||
+ | * 편미분계수 : 점 p 에서 f의 $ e_k $ 방향 미분계수 $ D_{e_k}f(p) $ | ||
+ | * Gradient(기울기) 벡터 $ \nabla f(p) = (D_1f(p), | ||
+ | * 접평면의 기울기 벡터 | ||
+ | * 접평면 가진다 <=> $ lim_{x-> p} { {f(x)-f(p)-a(x-p)} \over {|x-p|} } = 0 $ ,(p,f(p) ) 지나는 평면 : y= f(p) + a(x-p) | ||
+ | * let x-p = v, $ lim_{v-> | ||
+ | * <=> $ f(p+v) = f(p) + av + o(v) $ (미분가능) | ||
+ | * <=> $ D_vf(p) = a \cdot v $ | ||
+ | * $ a=(a_1,..., a_n) $ 이면, $D_if(p) = D_{e_i}f(p) = a \cdot e_i = a_i $ | ||
+ | * => $ D_vf(p) = \nabla f(p) \cdot v $ | ||
+ | * v가 단위벡터일 때, $ = |\nabla f(p)| \cdot cos \theta $ (내적), theta : v와 grad f(p) 이루는 각 | ||
+ | * <=> $ |\nabla f(p) $ : (속도)변화 최대(+)/ | ||
+ | http:// | ||
+ | https:// | ||
- | < | ||
- | code | ||
- | </ | ||
- | {{tag> | + | {{tag> |
~~DISCUSSION~~ | ~~DISCUSSION~~ | ||