본문 바로가기

Data Science/Machine Learning

[Neural Network] ANN(인공신경망)

반응형

ANN(Artificial Neural Networks)란, 인간의 뇌를 본따서

입력-은닉-출력 총 3가지 layer로 구성되 있다.

Perceptron과는 달리 다층으로 구성되어 있다! -> 차이점!

그래서 ANN= Multilayer Perceptron이라고도 부른다!

이제 구체적으로 퍼셉트론과 ANN의 차이에 대해서 알아보겠다.

1) Layer

우선 layer 갯수에서 차이가 있다. 퍼셉트론은 앞서 말했다시피 총 3개의 층(입력-중간-출력층)

으로 구성되어 있는 반면 ANN은 입력층,출력층이 있으나 그 사이에 1개이상의 히든레이여를

갖고 있다! 그래서 ANN이 Multi layer이자 다중 perceptron이라고 부른다!

2)패턴 인지

중간층이 하나인 퍼셉트론은 선형패턴(예측할 수 있는!?) 밖에 잡지 못하지만

ANN은 다중 층을 활용해 비선형 패턴도 잡아낼 수 있다!

왜냐? 바로 ANN의 multi latyer이 [ 활성함수에 의한 선형함수 사용이 아니라 ]

[ 시그모이드 f 를 활용해 비선형 패턴도 잡아낼 수 있기 때문이다]

반면에 유사점을 알아본다면,

1) feed-forward : 두 모델다 모두 한쪽방향으로 학습이 되는 성질을 갖고 있다.

2) Fully-connect: 이전 층의 노드가 다음층의 노드와 각각 모두 다 연결되어 있을때!

bi-partitie graph : 같은 그룹에 속한 정점끼리는 서로 인접하지 않도록 하는 그래프

bi-partitie graph

그래서 결국 ANN은 퍼셉트론의 다음과 같은 한계를 극복했다.

그게 무엇이냐고? 바로 퍼셉트론은 선형그래프로 설명할 수 있는 케이스만 문제를

해결할 수 있다는 한계를 극복해주었다!

그럼, 어떻게 극복을 했는데!? 에 대해 알아보겠다.

우선, 1)활성함수이다. 활성함수는 weighted sum 과 bias에 대한 임의의함수로써

선형함수가 아닌 비선형을 다루는 시그모이드 f를 활용

#가중합(weighted sum) : 각각 수에 중요도에 따른 어떤 가중치를 곱한 후 이 값을 더한 것

ANN의 히든 layer은 비선형 패턴을 잡아내는 것이고 히든 layer의 각 노드들은 임의의 패턴을

인지하는 입, 출력 역할을 한다

input - 노드와 연결된 이전 층 노드들의 출력 값들

output - 입력값들의 가중합과 bias에 대해 임의의 '함수=활성함수' 를 실행한 결과

##bias : 예측값과 실제값들이 떨어져 있는 정도 ( 떨어져있는 정도가 크면=편향이높다)

그리고 output layer에서도 활성함수가 적용되는데 hidden layer에서 사용되는

활성함수와는 다른걸 사용한다.

ㄱ.Regression(회귀)를 할때는 f(x) = x

ㄴ.Classification(분류)를 할때는 Softmax function(확률) 로변환

---> 확률을 사용하는 이유는 분류에서 의사결정을 할때 좋음

output layer를 확률 값으로 변환해준다!

참고로) 확률(Softmax)는 지수함수라 계산 도중 무한대로 overflow될 수도 있어서

개선식을 사용!

극복을 어떻게 했나?

2)Weight matrix and Bias

ㄱ.Weighted sum(가중치의 합) : 두개 층의 각 노드 쌍 간의 관계 중요도이며 실제로는 해당 노드 쌍이 함께 등장한 빈도수에 기여

ㄴ.Bias(편향) : 각 노드 자체의 중요도.. 실제로는 해당 노드 빈도 수에 기반한다

그렇가면..!! 이러한 Weighted sum과 bias가 어떤 형식으로 업데이트 되고 학습이 되는지 알아보자!

1.ANN모델학습

ANN모델에서 파라미터(즉, weighted sum과 bias)를 직접 계산하는데는 많은 어려움이 있는데

그 어려움은 1)미분에 대한 계산 복잡성- layer가 여러개 쌓일수록 계산이 복잡해짐..@#@!$@$#$흑흑

2)불친절한 데이터 - 파라미터의 '최적값'을 정확히 계산할려면 파라미터 갯수 이상의 데이터에서 해주어야 하는데 이 부분이 보장되어

있지 않을 뿐더러 지저분한 데이터가 존재할 수도 있음.... 그래서 이러한 문제를 해결하기 위해

Backpropagation!!!!!!!!!! 방법을 통해 모델을 학습시킴!

<Backpropagation>

##오차역전법은 동일 입력층에 대해 원하는 값이 출력되도록 개개의 weight를 조정하는 방법으로 사용되며, 속도는 느리지만, 안정적인 결과를 얻을 수 있는 장점

출력층에서 발생한 Loss를 역방향으로 전파해나가면서 관련 가중치를 조정함으로써 업데이트 하는 형식이다!

즉, Loss를 최소화하는 방벙으로 파라미터(weight와 bias)를 구하는 것!

*모델학습순서* ㄱ.출력층의 loss로부터 Wa에 대한 파라미터 업데이트 수식 얻음 -> ㄴ.출력층의 Lossdhk Wa 파라미터를 기반으로

Wb에 대한 파라미터 업데이트 수식 얻음!

이 때, ANN이 역전파법을 이용하면서 Loss를 최소화시키기 위한 Cost function으로는 크게 두가지가 있다!

1) MSE(평균오차제곱) -> 값이 클수록 오답이며 작을수록 정답에 가깝다!!!

" 신경망의 출력에서 정답테이블(실제값)을 뺀 제곱 에 그리고 데이터차원의 갯수를 나눠준다! "

2) CEE(크로스엔트로피에러)

참고로) 주로 Regression에서는 최소자승법(MSE)이 cost function으로 쓰이고

Classification문제에서는 Cross entropy가 cost function으로 쓰입니다.

여러 class를 분류하는 Softmax에서 cost function으로 쓰이기도 합니다.

## P(x)*-log(Q(x)) *P(x)는 실제값, Q(x)는 예상값

1)실제값과 예측값이 다를 때 무한대로 발산함

2)실제값과 예측값이 같을때 0으로 수렴

 

<ANN에서 파라미터 Optimization = 최적화>

방법:

1)Gradient Decent(기울기 하강)-선형회귀에서 사용한 기울기 하강을 사용!

->기울기 하강에도 여러가지 방법이 있다 :

ㄱ.Batch GD: 학습 DATA N개에 대해 N개 전체에 대한 기울기하강을 적용

ㄴ.Stochastic GD: N개 각각! 에 대한 기울기 하강 적용

ㄷ.Mini-batch GD: DATA N개를 mini-batch로 쪼개서 기울기 하강 적용

 

#Incremental learning : 점진학습법으로 새로 들어온 데이터들에 대해 기존의 파라미터에 대한 초기값으로 

새로운 데이터에 대해서 그대로 학습을 진행

#Auto Encoder : 뉴럴네트워크는 지도학습으로 학습되지만 오토 인코더는 비지도 학습이다

즉, input을 레이블로 활용해 인풋을 재구조한다... ex)이미지와 같은 파일들 압축용도로 많이 사용

 

 

반응형