Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
data_analysis:nn [2020/04/13 10:51] – prgram | data_analysis:nn [2025/07/07 14:12] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== | + | ====== |
- | [[blog:draft:easy_nn]] | + | [[blog: |
과적합 가능성, 해석X, 최후의 수단? | 과적합 가능성, 해석X, 최후의 수단? | ||
- | perceptron $ x_1,..., | + | 역사 : http:// |
- | hyperplane으로 구분되는 두 개의 공간을 분리하는 역할 | + | |
<< | << | ||
선형결합(회귀, | 선형결합(회귀, | ||
큰 스케일의 문제에서 사용하기 위해서는 기저 함수가 데이터를 바탕으로 적응되도록 하는 것이 필요. | 큰 스케일의 문제에서 사용하기 위해서는 기저 함수가 데이터를 바탕으로 적응되도록 하는 것이 필요. | ||
- | |||
- | SVM은? | ||
매개변수적인 기저함수를 사용하고 해당 매개변수값을 훈련 중에 조절. | 매개변수적인 기저함수를 사용하고 해당 매개변수값을 훈련 중에 조절. | ||
- | 사실 다층 퍼셉트론이라는 용어는 부적합. perceptron (불연속) 여러개가 모인 것이 아니라, 로지스틱 회귀 모델 여러층이 모인 것이기 때문. | + | 사실 다층 퍼셉트론이라는 용어는 부적합. perceptron (불연속) 여러개가 모인 것이 아니라, 로지스틱 회귀 모델 여러층이 모인 것이기 때문. |
- | -> 미분 가능 | + | |
SVM과 같은 일반화 성능을 가지면서도 결과 모델이 훨씬 더 작아서 계산이 빠르다는 장점 | SVM과 같은 일반화 성능을 가지면서도 결과 모델이 훨씬 더 작아서 계산이 빠르다는 장점 | ||
Line 24: | Line 19: | ||
※ 활성화 함수가 선형이면, | ※ 활성화 함수가 선형이면, | ||
- | universal approximator : 선형 출력값을 가지는 2계층 네트워크(input/ | + | **universal approximator** : 선형 출력값을 가지는 2계층 네트워크(input/ |
여러 가지의 서로 다른 w의 선택이 입력에서 출력으로의 같은 사상을 표현할 수 있음 | 여러 가지의 서로 다른 w의 선택이 입력에서 출력으로의 같은 사상을 표현할 수 있음 | ||
Line 31: | Line 26: | ||
- | w의 차원을 W라고 할 때(매개변수 숫자), | + | ==== perceptron ==== |
- | 2차 근사 | + | |
- | : Taylor expansion -> hessian : W(W+3)/2 개의 독립적 원소를 가지게 됨 -> O(W^2) | + | |
- | 각각이 O(W) 단계만큼을 필요로 하는 함수 계산을 O(W^2) 만큼 해야 함 | + | |
- | -> 계산 O(W^3) | + | |
- | + | ||
- | Gradient Descent 기울기정보 : O(W^2) | + | |
- | stochastic : 1) 데이터 상의 중복을 훨씬 더 효율적으로 처리. (ex. 모든 데이터 2배로 늘리면, 오차 함수 *2 한 것과 동일. 결과적으로 같음) | + | |
- | 2) local minimum에서 탈출할 가능성이 높아짐. 전체 데이터 집합에 대한 오류 함수의 임계점은 보통 개별 데이터 포인트에 대해서는 임계점이 아닐 수도 있기 때문. | + | |
- | + | ||
- | back-propagation : 계산적 효율성. | + | |
- | W가 충분히 큰 경우, 오류함수 계산에 O(W) 만큼 연산 필요. | + | |
- | 역전파를 사용하지 않고 오류함수 미분값을 계산할 수 있는 한 가지 방법은 유한차분법 | + | |
- | 수치 미분을 할 경우 문제점은 계산복잡도가 O(W)에 비례한다는 성질이 사라지게 된다는 것. 각각의 feed-forward 단계는 O(W) 만큼 계산을 필요, NW 상에서 개별적으로 perturbation 해야 할 W개의 가중치가 존재. 전체 계산 복잡도 O(W^2) | + | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | 역사 | + | |
- | 3분(57) | + | |
- | + | ||
- | + | ||
perceptron : 1957년 고안 | perceptron : 1957년 고안 | ||
Artificial neuron, 다수의 신호를 입력으로 받아 하나의 신호를 출력 | Artificial neuron, 다수의 신호를 입력으로 받아 하나의 신호를 출력 | ||
논리회로 : AND, NAND, OR 표현할 수 있음 | 논리회로 : AND, NAND, OR 표현할 수 있음 | ||
- | XOR(배타적 논리합) : 단순 퍼셉트론으로는 불가능 | + | $ (1, x_1,...,x_n) |
- | 그림 | + | step function |
- | + | hyperplane으로 구분되는 두 개의 공간을 분리하는 역할 | |
- | 직선 하나로는 | + | |
- | 다층 퍼셉트론, | + | {{: |
- | 뇌의 구조는 복잡. ANN으로 뇌를 묘사할 때는 여러 개의 연속된 층으로 추상화하는 것이 일반적 | + | |
- | + | ===활성화 함수activation function=== | |
- | 신경망 | + | |
- | 입력층, 은닉층, 출력층 | + | |
- | + | ||
- | 활성화 함수activation function | + | |
입력신호의 총합이 h(x)를 통해 변환 | 입력신호의 총합이 h(x)를 통해 변환 | ||
Line 77: | Line 43: | ||
출력 = 활성화함수( 입력*가중치 + 편향) | 출력 = 활성화함수( 입력*가중치 + 편향) | ||
- | step function | + | step function |
- | + | sigmoid function | |
- | S자 모양의 함수 | + | |
- | sigmoid function | + | |
- | step 대신 sigmoid? 미분위해서. step을 잘 근사한 smooth | + | |
(기술적으로 sigmoid는 함수의 모양을 지칭, logistic은 함수 자체를 가리키는 말) | (기술적으로 sigmoid는 함수의 모양을 지칭, logistic은 함수 자체를 가리키는 말) | ||
ReLu(Rectified Linear Unit) | ReLu(Rectified Linear Unit) | ||
tanh | tanh | ||
- | 그래프 | ||
- | identity function | + | ==== Neural Network ==== |
- | softmax function | + | ===XOR(배타적 논리합)=== |
+ | 둘 중 하나만 True인 연산. 단순 퍼셉트론으로는 불가능 | ||
+ | 직선 하나로는 불가능, 직선 제약을 없애면 가능 | ||
- | MNIST | + | 다층 퍼셉트론, |
+ | 입력층, 은닉층, 출력층 | ||
+ | identity function | ||
+ | softmax function (분류) | ||
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 106: | Line 73: | ||
- | gradient descent method : 가중치 매개변수의 기울기(가중치 매개변수에 대한 손실 함수의 기울기)를 이용, 기울어진 방향으로 가중치의 값을 갱신 | ||
- | 학습률 | ||
- | vs Newton Mothod https:// | + | ==== 계산법 ==== |
+ | 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) 데이터 상의 중복을 훨씬 더 효율적으로 처리. (ex. 모든 데이터 2배로 늘리면, 오차 함수 *2 한 것과 동일. 결과적으로 같음) | ||
+ | 2) local minimum에서 탈출할 가능성이 높아짐. 전체 데이터 집합에 대한 오류 함수의 임계점은 보통 개별 데이터 포인트에 대해서는 임계점이 아닐 수도 있기 때문. | ||
+ | |||
+ | ==SGD== | ||
+ | 대부분의 오류함수는 더할수있는additive 속성을 가지고 있음. 즉, 데이터 전체에 대한 오류값이 각각 데이터 포인트에 대한 오류값의 합과 같다. | ||
+ | 이럴 때는 한번 반복문을 돌 때마다 데이터 포인트 한 개에 대한 gradient를 계산. | ||
+ | |||
+ | ===back-propagation=== | ||
+ | https:// | ||
+ | 계산적 효율성. | ||
+ | W가 충분히 큰 경우, 오류함수 계산에 O(W) 만큼 연산 필요. | ||
+ | 역전파를 사용하지 않고 오류함수 미분값을 계산할 수 있는 한 가지 방법은 유한차분법 | ||
+ | 수치 미분을 할 경우 문제점은 계산복잡도가 O(W)에 비례한다는 성질이 사라지게 된다는 것. 각각의 feed-forward 단계는 O(W) 만큼 계산을 필요, NW 상에서 개별적으로 perturbation 해야 할 W개의 가중치가 존재. 전체 계산 복잡도 O(W^2) | ||
수치미분을 이용한 계산에는 시간이 걸리지만, | 수치미분을 이용한 계산에는 시간이 걸리지만, | ||
back-propagation of error은 기울기를 고속으로 구할 수 있다. | back-propagation of error은 기울기를 고속으로 구할 수 있다. | ||
- | |||
- | 실제계산 | ||
- | https:// | ||
Line 124: | Line 115: | ||
5. 오류값의 기울기를 다시 구하고 같은 방식으로 hidden layer의 weight를 재조정. | 5. 오류값의 기울기를 다시 구하고 같은 방식으로 hidden layer의 weight를 재조정. | ||
+ | == 실제계산 == | ||
+ | [[data_analysis: | ||
- | 경사하강 | ||
- | gradient : 미적분을 기억한다면, | ||
- | 함수가 가장 빠르게 증가할 수 있는 방향 | ||
- | step size: 과학보다는 기술(art)에 가깝다. | ||
- | SGD | ||
- | 대부분의 오류함수는 더할수있는additive 속성을 가지고 있음. 즉, 데이터 전체에 대한 오류값이 각각 데이터 포인트에 대한 오류값의 합과 같다. | ||
- | 이럴 때는 한번 반복문을 돌 때마다 데이터 포인트 한 개에 대한 gradient를 계산. | ||
- | {{tag> | + | |
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== 참고 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:// | ||
+ | |||
+ | |||
+ | {{tag> | ||
~~DISCUSSION~~ | ~~DISCUSSION~~ | ||