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 13:48] – [미적분] 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의 선택이 입력에서 출력으로의 같은 사상을 표현할 수 있음
  
 NN을 성공적으로 사용하기 위해 global minimum을 찾는 것이 반드시 필요하지는 않을 수 있음 NN을 성공적으로 사용하기 위해 global minimum을 찾는 것이 반드시 필요하지는 않을 수 있음
- 
- 
-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) 
-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) 
  
  
Line 59: Line 31:
 논리회로 : AND, NAND, OR 표현할 수 있음 논리회로 : AND, NAND, OR 표현할 수 있음
  
 +$ (1, x_1,...,x_n)  \xrightarrow[\text{weights}]{w_0, w_1,...,w_n} \sum w_ix_i $ -> 1 or 0
 +step function
 +hyperplane으로 구분되는 두 개의 공간을 분리하는 역할
  
-XOR(배타적 논리합) 단순 퍼셉트론으로는 불가능  +{{:data_analysis:pasted:20200419-164011.png}}
-  그림 +
-   +
-직선 하나로는 불가능, 직선 제약을 없애면 가능+
  
-다층 퍼셉트론, 층을 쌓아서 가능 +===활성화 함수activation function===
-뇌의 구조는 복잡. ANN으로 뇌를 묘사할 때는 여러 개의 연속된 층으로 추상화하는 것이 일반적 +
- +
- +
-신경망 +
-입력층, 은닉층, 출력층 +
- +
-활성화 함수activation function+
 입력신호의 총합이 h(x)를 통해 변환 입력신호의 총합이 h(x)를 통해 변환
  
Line 78: 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
  
-  그래프+ 
 +==== Neural Network ==== 
 +===XOR(배타적 논리합)=== 
 +둘 중 하나만 True인 연산. 단순 퍼셉트론으로는 불가능    
 +직선 하나로는 불가능, 직선 제약을 없애면 가능 
 + 
 +다층 퍼셉트론, 층을 쌓아서 가능. 뇌의 구조는 복잡. ANN으로 뇌를 묘사할 때는 여러 개의 연속된 층으로 추상화하는 것이 일반적 
 +입력층, 은닉층, 출력층
  
 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 105: Line 72:
  - 손실함수는 연속적으로 변함  - 손실함수는 연속적으로 변함
  
-==== gradient descent ==== 
-gradient descent method : 가중치 매개변수의 기울기(가중치 매개변수에 대한 손실 함수의 기울기)를 이용, 기울어진 방향으로 가중치의 값을 갱신 
-학습률 
  
-vs Newton Mothod https://qastack.kr/stats/253632/why-is-newtons-method-not-widely-used-in-machine-learning 
-2차 미분은 복잡하고, 계산이 많음 
  
-수치미분을 이용한 계산에는 시간이 걸리지만구현이  +==== 계산법 ==== 
-back-propagation of error은 기울기를 고속으로 구할 수 있다.+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)
  
-경사하강 
-gradient : 편미분 벡터 
 함수가 가장 빠르게 증가할 수 있는 방향 함수가 가장 빠르게 증가할 수 있는 방향
 step size: 과학보다는 기술(art)에 가깝다. step size: 과학보다는 기술(art)에 가깝다.
  
-SGD+==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 속성을 가지고 있음. 즉, 데이터 전체에 대한 오류값이 각각 데이터 포인트에 대한 오류값의 합과 같다. 대부분의 오류함수는 더할수있는additive 속성을 가지고 있음. 즉, 데이터 전체에 대한 오류값이 각각 데이터 포인트에 대한 오류값의 합과 같다.
 이럴 때는 한번 반복문을 돌 때마다 데이터 포인트 한 개에 대한 gradient를 계산. 이럴 때는 한번 반복문을 돌 때마다 데이터 포인트 한 개에 대한 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)
  
- +수치미분을 이용한 계산에는 시간이 걸리지만, 구현이 간단 
-==== backpropagation ==== +back-propagation of error은 기울기를 고속으로 구할 수 있다.
-실제계산 +
-https://mattmazur.com/2015/03/17/a-step-by-step-backpropagation-example/+
  
  
Line 136: Line 114:
 4. hidden layer의 오류값을 추정하기 위해 출력층의 오류값을 뒤로 전파(back-propagate) 4. hidden layer의 오류값을 추정하기 위해 출력층의 오류값을 뒤로 전파(back-propagate)
 5. 오류값의 기울기를 다시 구하고 같은 방식으로 hidden layer의 weight를 재조정. 5. 오류값의 기울기를 다시 구하고 같은 방식으로 hidden layer의 weight를 재조정.
 +
 +== 실제계산 ==
 +[[data_analysis:nn_backpropagation_calc]]
 +
 +
  
  
Line 161: Line 144:
  
  
-{{tag>data_analysis tag1 tag2}}+{{tag>data_analysis 딥러닝 neural_network gradient_descent}}
 ~~DISCUSSION~~ ~~DISCUSSION~~
  
  
  • data_analysis/nn.1586785706.txt.gz
  • Last modified: 2025/07/07 14:12
  • (external edit)