data_analysis:nn

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
data_analysis:nn [2020/04/13 10:51] prgramdata_analysis:nn [2025/07/07 14:12] (current) – external edit 127.0.0.1
Line 1: Line 1:
-====== nn ======+====== Neural Network ======
  
-[[blog:draft:easy_nn]]+[[blog:easy_nn]]
  
 과적합 가능성, 해석X, 최후의 수단? 과적합 가능성, 해석X, 최후의 수단?
  
-perceptron $ x_1,...,x_n  \xrightarrow[\text{weights}]{w_1,...,w_n} \sum w_ix_i $ -> 1 or -1 +역사 : http://solarisailab.com/archives/1206
-hyperplane으로 구분되는 두 개의 공간을 분리하는 역할 +
  
 <<PRML>> <<PRML>>
 선형결합(회귀,분류모델) 유용한 해석적/계산적 성질이 있지만, 차원의 저주로 인해 실제적으로 사용하는 데 있어서 한계가 존재 선형결합(회귀,분류모델) 유용한 해석적/계산적 성질이 있지만, 차원의 저주로 인해 실제적으로 사용하는 데 있어서 한계가 존재
 큰 스케일의 문제에서 사용하기 위해서는 기저 함수가 데이터를 바탕으로 적응되도록 하는 것이 필요. 큰 스케일의 문제에서 사용하기 위해서는 기저 함수가 데이터를 바탕으로 적응되도록 하는 것이 필요.
- 
-SVM은? 
  
 매개변수적인 기저함수를 사용하고 해당 매개변수값을 훈련 중에 조절. 매개변수적인 기저함수를 사용하고 해당 매개변수값을 훈련 중에 조절.
  
-사실 다층 퍼셉트론이라는 용어는 부적합. perceptron (불연속) 여러개가 모인 것이 아니라, 로지스틱 회귀 모델 여러층이 모인 것이기 때문. +사실 다층 퍼셉트론이라는 용어는 부적합. perceptron (불연속) 여러개가 모인 것이 아니라, 로지스틱 회귀 모델 여러층이 모인 것이기 때문. (미분 가능성)
--> 미분 가능+
  
 SVM과 같은 일반화 성능을 가지면서도 결과 모델이 훨씬 더 작아서 계산이 빠르다는 장점 SVM과 같은 일반화 성능을 가지면서도 결과 모델이 훨씬 더 작아서 계산이 빠르다는 장점
Line 24: Line 19:
 ※ 활성화 함수가 선형이면, hidden layer 없는 동일 네트워크로 치환 가능. 연속적 선형 변환들로 구성된 변환은 그 자체가 선형변환이기 때문. ※ 활성화 함수가 선형이면, hidden layer 없는 동일 네트워크로 치환 가능. 연속적 선형 변환들로 구성된 변환은 그 자체가 선형변환이기 때문.
  
-universal approximator : 선형 출력값을 가지는 2계층 네트워크(input/hidden 1) 는 충분히 많은 수의 hidden layer가 주어지기만 한다면 밀집된 입력 영역에 대한 모든 연속 함수를 임의의 정확도로 근사할 수 있음.+**universal approximator** : 선형 출력값을 가지는 2계층 네트워크(input/hidden 1) 는 충분히 많은 수의 hidden layer가 주어지기만 한다면 밀집된 입력 영역에 대한 모든 연속 함수를 임의의 정확도로 근사할 수 있음.
  
 여러 가지의 서로 다른 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)  \xrightarrow[\text{weights}]{w_0, w_1,...,w_n} \sum w_ix_i $ -> 1 or 0 
-  그림 +step function 
-   +hyperplane으로 구분되는 두 개의 공간을 분리하는 역할
-직선 하나로는 불가능, 직선 제약을 없애면 가능+
  
-다층 퍼셉트론, 층을 쌓아서 가능 +{{:data_analysis:pasted:20200419-164011.png}}
-뇌의 구조는 복잡ANN으로 뇌를 묘사할 때는 여러 개의 연속된 층으로 추상화하는 것이 일반적+
  
- +===활성화 함수activation function===
-신경망 +
-입력층, 은닉층, 출력층 +
- +
-활성화 함수activation function+
 입력신호의 총합이 h(x)를 통해 변환 입력신호의 총합이 h(x)를 통해 변환
  
Line 77: Line 43:
 출력 = 활성화함수( 입력*가중치 + 편향) 출력 = 활성화함수( 입력*가중치 + 편향)
  
-step function +step function S자 모양의 함수 
- +sigmoid function step 대신 sigmoid? 미분 위해서. step을 잘 근사한 smooth
-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 +다층 퍼셉트론, 층을 쌓아서 가능. 뇌의 구조는 복잡. ANN으로 뇌를 묘사할 때는 여러 개의 연속된 층으로 추상화하는 것이 일반적 
 +입력층, 은닉층, 출력층
  
 +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://qastack.kr/stats/253632/why-is-newtons-method-not-widely-used-in-machine-learning+==== 계산법 ==== 
 +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://qastack.kr/stats/253632/why-is-newtons-method-not-widely-used-in-machine-learning 
 +2차 미분은 복잡하고, 계산이 많음 
 + 
 +stochastic : 1) 데이터 상의 중복을 훨씬 더 효율적으로 처리. (ex. 모든 데이터 2배로 늘리면, 오차 함수 *2 한 것과 동일. 결과적으로 같음) 
 +2) local minimum에서 탈출할 가능성이 높아짐. 전체 데이터 집합에 대한 오류 함수의 임계점은 보통 개별 데이터 포인트에 대해서는 임계점이 아닐 수도 있기 때문. 
 + 
 +==SGD== 
 +대부분의 오류함수는 더할수있는additive 속성을 가지고 있음. 즉, 데이터 전체에 대한 오류값이 각각 데이터 포인트에 대한 오류값의 합과 같다. 
 +이럴 때는 한번 반복문을 돌 때마다 데이터 포인트 한 개에 대한 gradient를 계산. 
 + 
 +===back-propagation=== 
 +https://www.offconvex.org/2016/12/20/backprop/ 
 +계산적 효율성. 
 +W가 충분히 큰 경우, 오류함수 계산에 O(W) 만큼 연산 필요. 
 +역전파를 사용하지 않고 오류함수 미분값을 계산할 수 있는 한 가지 방법은 유한차분법  
 +수치 미분을 할 경우 문제점은 계산복잡도가 O(W)에 비례한다는 성질이 사라지게 된다는 것. 각각의 feed-forward 단계는 O(W) 만큼 계산을 필요, NW 상에서 개별적으로 perturbation 해야 할 W개의 가중치가 존재. 전체 계산 복잡도 O(W^2)
  
 수치미분을 이용한 계산에는 시간이 걸리지만, 구현이 간단 수치미분을 이용한 계산에는 시간이 걸리지만, 구현이 간단
 back-propagation of error은 기울기를 고속으로 구할 수 있다. back-propagation of error은 기울기를 고속으로 구할 수 있다.
- 
-실제계산 
-https://mattmazur.com/2015/03/17/a-step-by-step-backpropagation-example/ 
  
  
Line 124: Line 115:
 5. 오류값의 기울기를 다시 구하고 같은 방식으로 hidden layer의 weight를 재조정. 5. 오류값의 기울기를 다시 구하고 같은 방식으로 hidden layer의 weight를 재조정.
  
 +== 실제계산 ==
 +[[data_analysis:nn_backpropagation_calc]]
  
-경사하강 
-gradient : 미적분을 기억한다면, 이것은 편미분 벡터 
-함수가 가장 빠르게 증가할 수 있는 방향 
-step size: 과학보다는 기술(art)에 가깝다. 
  
-SGD 
-대부분의 오류함수는 더할수있는additive 속성을 가지고 있음. 즉, 데이터 전체에 대한 오류값이 각각 데이터 포인트에 대한 오류값의 합과 같다. 
-이럴 때는 한번 반복문을 돌 때마다 데이터 포인트 한 개에 대한 gradient를 계산. 
  
-{{tag>data_analysis tag1 tag2}}+ 
 + 
 + 
 + 
 + 
 +==== 참고 Calculus==== 
 +$ f : \mathbb{R}^n -> \mathbb{R} $ 
 +  * 방향미분 : $ D_vf(p) = lim_{t->0} { {f(p+tv)-f(p)} \over {t}} = {d\over{dt}}|_0 f(p+tv)$ 
 +    * f의 그래프를 직선 p+tv 위에 한정하여 그렸을 때, 점 (p,f(p))에서 f의 그래프의 기울기 
 +  * 편미분계수 : 점 p 에서 f의 $ e_k $ 방향 미분계수 $ D_{e_k}f(p) $ 
 +  * Gradient(기울기) 벡터 $ \nabla f(p) = (D_1f(p),...,D_nf(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->0} { {f(p+v)-f(p)-a \cdot v}\over {|v|} } = 0 $ 인 a 존재  
 +    * <=> $ 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) $ : (속도)변화 최대(+)/최소(-) 방향 ( cosine = 1 되어야 최대임 ) 
 +http://matrix.skku.ac.kr/math4ai/part2/ 
 +https://freshrimpsushi.tistory.com/1010 
 + 
 + 
 +{{tag>data_analysis 딥러닝 neural_network gradient_descent}}
 ~~DISCUSSION~~ ~~DISCUSSION~~
  
  
  • data_analysis/nn.1586775093.txt.gz
  • Last modified: 2025/07/07 14:12
  • (external edit)