뉴럴네트워크
뉴럴네트워크 파라미터?
파라미터 : 층 간 노드를 연결하는 가중치 $(w_{11},...,z_{11})$ → 알고리즘으로 결정
하이퍼파라미터 : 은닉층 개수, 은닉노드 개수, activation function → 사용자가 임의로 결정
경사하강법 (Gradient Descent Method)?
$w_{t+1} = w_{t} - \alpha \cdot L'(w_{t})$
$0 < \alpha < 1$ : learning rate
좀 더 섬세하고 촘촘히? Small $\alpha$
좀 더 빠르게? Large $\alpha$
뉴럴네트워크 학습?
입력 (X), 출력 (T), 예측 (O)
$D_{1} = (x_{11},x_{12},...,x_{1d},\ t_{11},t_{12},...,t_{1m})$, $(o_{11},o_{12},...,o_{1m})$
$D_{2} = (x_{21},x_{22},...,x_{2d},\ t_{21},t_{22},...,t_{2m}) $, $(o_{21},o_{22},...,o_{2m})$
$D_{N} = (x_{N1},x_{N2},...,x_{Nd},\ t_{N1},t_{N2},...,t_{Nm})$, $(o_{N1},o_{N2},...,o_{Nm})$
아래 정의된 비용함수를 최소로 하는 𝑤를 찾음
$E(w) = \sum_{n=1}^{N}E_{n}(w) $, $E_{n}(w)=\frac{1}{2}\sum_{n=1}^{m} (t_{nk}-o_{nk})^{2}$
w에 대해서 미분가능. 즉, $\frac{\partial E_{n}}{\partial w_{kj}}$과 $\frac{\partial E_{n}}{\partial w_{ji}}$를 계산할 수 있음
$\frac{\partial E_{n}}{\partial w_{kj}}$ : 출력층과 은닉층 사이
$\frac{\partial E_{n}}{\partial w_{ji}}$ : 은닉층과 입력층 사이
$h_{j} = \frac{1}{1+exp(-(w_{jo}+\sum_{i=1}^{d} w_{ji}x_{i}))}$
$o_{k} = \frac{1}{1+exp(-(w_{ko}+\sum_{j=1}^{p} w_{kj}h_{j}))}$
$E_{n}(w)=\frac{1}{2}\sum_{n=1}^{m} (t_{nk}-o_{nk})^{2}$, $o_{k} = \frac{1}{1+exp(-(w_{ko}+\sum_{j=1}^{p} w_{kj}h_{j}))}$
$E_{n}(w) = \frac{1}{2} \sum_{n=1}^{m} (t_{k} - \frac{1}{1+exp(-(w_{ko}+\sum_{j=1}^{p} w_{kj}(\frac{1}{1+exp(-(w_{jo}+\sum_{i=1}^{d} w_{ji}x_{i}))})))})^{2}$
$\min E_{n}(w)$를 구하는 $w_{kj}$와 $w_{ji}$를 찾는 것
바로 미분을 하기에 너무 복잡 두 부분으로 나눔 출력층과 은닉층 사이, 은닉층과 입력층 사이
출력층과 은닉층 사이?
$net_{k} = h_{1}w_{k1}+h_{2}w_{k2}+...+h_{j}w_{kj}+...+h_{p}w_{kp}+w_{ko}$
$h_{j}$ : 은닉층의 j번째 노드값
$o_{k} = sigmoid(net_{k})=\frac{1}{1+exp(-net_{k})}$
$E_{n}(w)=\frac{1}{2}\sum_{n=1}^{m}(t_{k}-o_{k})^{2}$
경사하강법 (gradient descent method) 를 이용하여 $w_{kj}$를 개선하기 위해서 $\Delta w_{kj} = -\alpha\frac{\partial E_{n}}{\partial w_{kj}}$
$\frac{\partial E_{n}}{\partial w_{kj}}$
$= \frac{\partial E_{n}}{\partial net_{k}} \frac{\partial net_{k}}{\partial w_{kj}}$
$= \frac{\partial E_{n}}{\partial o_{k}}\frac{\partial o_{k}}{\partial net_{k}}\frac{\partial net_{k}}{\partial w_{kj}}$
$=\frac{\partial E_{n}}{\partial o_{k}}\frac{\partial o_{k}}{\partial net_{k}}h_{j} $
$\frac{\partial E_{n}}{\partial w_{kj}}$= $=\frac{\partial E_{n}}{\partial o_{k}}\frac{\partial o_{k}}{\partial net_{k}}h_{j} $
$\frac{\partial E_{n}}{\partial o_{k}}= \frac{\partial}{\partial o_{k}}\frac{1}{2}\sum_{k=1}^{m}(t_{k}-o_{k})^{2}= \frac{\partial}{\partial o_{k}}\frac{1}{2}(t_{k}-o_{k})^{2}=-(t_{k}-o_{k})$
$\frac{\partial o_{k}}{\partial net_{k}}= \frac{\partial}{\partial net_{k}} \frac{1}{1+exp(-net_{k})} $
$= \frac{-(-exp(-net_{k}))}{1+exp(-net_{k}))^{2}} $
$=\frac{exp(-net_{k})}{(1+exp(-net_{k}))^{2}}$
$=\frac{1}{1+exp(-net_{k})} \frac{exp(-net_{k})}{1+exp(-net_{k})}$
$= o_{k}(1-o_{k})$
$\Delta w_{kj} = -\alpha\frac{\partial E_{n}}{\partial w_{kj}}=\alpha(t_{k}-o_{k})o_{k}(1-o_{k})h_{j}$
은닉층과 입력층 사이?
$net_{j} = x_{1}w_{j1}+x_{2}w_{j2}+...+x_{i}w_{ji}+...+x_{d}w_{jd}+w_{jo}$
$h_{j}=sigmoid(net_{j})=\frac{1}{1+exp(-net_{j})}$
$net_{k} = h_{1}w_{k1}+h_{2}w_{k2}+...+h_{j}w_{kj}+...+h_{p}w_{kp}+w_{ko}$
$o_{k} = sigmoid(net_{k})=\frac{1}{1+exp(-net_{k})}$
$E_{n}(w)=\frac{1}{2}\sum_{n=1}^{m}(t_{k}-o_{k})^{2}$
경사하강법 (gradient descent method) 를 이용하여 $w_{ji}$를 개선하기 위해서 $\Delta w_{ji} = -\alpha\frac{\partial E_{n}}{\partial w_{ji}}$
$\frac{\partial E_{n}}{\partial w_{ji}} $
$= \frac{\partial E_{n}}{\partial net_{j}} \frac{\partial net_{j}}{\partial w_{ji}}$
$=\frac{\partial E_{n}}{\partial net_{j}}x_{i} $
$\frac{\partial E_{n}}{\partial w_{ji}} =\frac{\partial E_{n}}{\partial net_{j}}x_{i}$
$\frac{\partial E_{n}}{\partial net_{j}}= \frac{\partial}{\partial net_{j}}\frac{1}{2}\sum_{k=1}^{m}(t_{k}-o_{k})^{2}= \frac{\partial}{\partial net_{j}}\frac{1}{2}(t_{k}-o_{k})^{2}$
$=\frac{1}{2}\sum_{k=1}^{m} \frac{\partial h_{j}}{\partial net_{j}}\frac{\partial net_{k}}{\partial h_{j}}\frac{\partial o_{k}}{\partial net_{k}}\frac{\partial (t_{k}-o_{k})^{2}}{\partial o_{k}}$
$\frac{\partial h_{j}}{\partial net_{j}}=h_{j}(1-h_{j})$
$\frac{\partial net_{k}}{\partial h_{j}} = w_{kj}$
$\frac{\partial o_{k}}{\partial net_{k}} = o_{k}(1-o_{k})$
$\frac{\partial (t_{k}-o_{k})^{2}}{\partial o_{k}}= -2(t_{k}-o_{k}) $
$-h_{j}(1-h_{j}) \sum_{k=1}^{m} w_{kj}o_{k}(1-o_{k})(t_{k}-o_{k}) $
$\Delta w_{kj} = -\alpha\frac{\partial E_{n}}{\partial w_{ji}}=\alpha x_{i}h_{j}(1-h_{j}) \sum_{k=1}^{m} w_{kj}o_{k}(1-o_{k})(t_{k}-o_{k})$
결론?
출력층과 은닉층 사이 : $\Delta w_{kj} = -\alpha\frac{\partial E_{n}}{\partial w_{kj}}=\alpha(t_{k}-o_{k})o_{k}(1-o_{k})h_{j}$
은닉층과 출력층 사이 : $\Delta w_{kj} = -\alpha\frac{\partial E_{n}}{\partial w_{ji}}=\alpha x_{i}h_{j}(1-h_{j}) \sum_{k=1}^{m} w_{kj}o_{k}(1-o_{k})(t_{k}-o_{k})$
과정 요약?
Step 1: 모든 가중치 w를 임의로 생성
Step 2: 입력변수 값과 입력층과 은닉층 사이의 w값을 이용하여 은닉노드의 값을 계산 → 선형결합 후 activation
Step 3: 은닉노드의 값과 은닉층과 출력층 사이의 w값을 이용하여 출력노드의 값을 계산 → 선형결합 후 activation
Step 4. 계산된 출력노드의 값과 실제 출력변수의 값의 차이를 줄일 수 있도록 은닉층과 출력층 사이의 w값을 업데이트 Step 5. 계산된 출력노드의 값과 실제 출력변수의 값의 차이를 줄일 수 있도록 입력층과 은닉층 사이의 w값을 업데이트 Step 6. 에러가 충분히 줄어들 때까지 step 2 ~ step 5를 반복
오류 역전파 알고리즘 (Error Backpropagation Algorithm)
뉴럴네트워크 예제 - 분류?
XOR 문제
은닉층 1개, 은닉노드 2개
Learning rate: 0.5
뉴럴네트워크 예제 - 수치예측?
댓글