working_helen

[CNN] Fully-Connected Layer 본문

교내 수업/인공지능

[CNN] Fully-Connected Layer

HaeWon_Seo 2024. 1. 19. 22:43

CNN의 구성 요소

  • Convolution Layer
  • Pooling Layers
  • Fully-Connected Layer
  • Activation Function
  • Normalization

출처 : https://www.linkedin.com/pulse/what-convolutional-neural-network-cnn-deep-learning-nafiz-shahriar/

 

 

CNN의 구성 요소 중 'Fully-Connected Layer'에 대해 공부해본다.

 

1. Neural Network

2. Neural Network Optimization

3. BackPropagate

 


1. Neural Network

: 인간의 신경망 구조를, 노드 간 연결을 통해 모방한 인공 네트워크 구조

- 인간의 뇌는 연결된 뉴런들로 구성 + 뉴런에서 뉴런으로 전기적 신호 전달

   + 이때 전기적 신호의 크기가 충분히 크지 않으면 해당 신호는 전달되지 않음

- 인공신경망은 연결된 노드들로 구성 + 노드에서 노드로, layer에서 layer로 정보 전달

   + 이때 output 값의 크기가 충분히 크지 않으면 정보는 전달되지 않음

 

 

1) Neural Network 구조

출처 : https://www.mdpi.com/2079-9292/10/21/2689

 

- input layer + hidden layer + output layer 구조

- hidden layer = 처음 input과 최종 output layer를 제외한 내부 layer
- 한 layer에서의 output 값이 다음 layer의 input 값으로 사용

- Fully-Connected Layer = Multi-Layer Perceptron : hidden layer가 여러개 존재하는 Neural Network

 

 

2) 각 layer 구조

출처 : https://blog.naver.com/laonple/221166694845

 

  • transfer fucntion : 각 노드에서 오는 입력값에 가중치를 곱해 더한 값을 계산 (입력값들의 선형합)
  • activation function : transfer function의 계산 결과를 받아 임계값과 비교하여 출력 여부를 판별

- 각 input 데이터마다 가중치 weight가 존재

- weight가 크면 해당 input이 결과에 크게 반영되고, 작으면 적게 반영
- 출력 결과가 실제값과 같도록 weight를 조정하는 방식으로 training 진행

 

 

3) activation function 활성함수

- transfer fucntion의 결과값이 임계값을 초과하는 경우 노드를 활성화하고 다음 노드로 데이터를 전달

- linear classifier 상태인 모델에 non-linearity를 부여 → 더 복잡하고 일반화된 모델 생성

 

- 대표적인 activation function 종류

Sigmoid ReLU tanh
input -> (0, 1) 범위로 변환 input -> ignore negative input input -> (-1, 1) 범위로 변환

 

 

 

 

 

2. Neural Network Optimization

 

[추천시스템 논문 리뷰] 3주차 : 경사하강법 / SGD

논문 리뷰 과정에서 접한 경사하강법에 대해 학습해본다. 1. 경사하강법 1) loss function 2) 경사하강법 3) 수식 표현 4) 경사하강법의 문제점 2. Epoch, Iteration, Batch 3. 배치 경사하강법 4. 확률적 경사

working-helen.tistory.com

 

 

 

 

3. BackPropagate

- Neural Network를 학습시키는 알고리즘의 일종

- Optimization 과정에서 어떻게 각 가중치의 Gradient Descent를 계산할 것인지에 대한 방법

출처 : https://www.mdpi.com/2079-9292/10/21/2689

 

 

 

1) Feed-Forward (Forward Propagation, 순전파)

- input에서 output layer 방향으로 이동하며, 초기 W와 input 값으로 output 값을 계산하는 과정

- transfer fucntion을 통한 input 값들의 가중합 → activation function을 통해 비선형성 부여

 

 

2) BackPropagate (역전파)

- output에서 input layer 방향으로 이동하며, 각 input에 대한 weight의 Gradient Descent를 계산하는 과정

- 계산한 Gradient Descent로 weight 값을 업데이트함으로써 모델이 training

 

- Computational Graph  + Chain Rule(미분의 연쇄법칙)을 이용한 gradient 계산

Downstream gradient = local gradient x Upstream gradient

 

출처 : https://towardsdatascience.com/creating-a-multilayer-perceptron-mlp-classifier-model-to-identify-handwritten-digits-9bac1b16fe10

 

 

- 역전파 derivatives 계산 과정 예시

출처 : https://sean-parkk.github.io/study/DLscratch_Backpropagation/

 

 

 

3) BackPropagate 계산 예

ⓛ Computational Graph 그리기

 

 

② Feed-Forward : output 계산하기

 

③ BackPropagate : output layer부터 derivatives 계산하기 

 

 

 

 

 

 

 

 

 

Reference

[Neural Network]
https://blog.naver.com/laonple/221166694845
https://www.educba.com/what-is-neural-networks/
https://en.wikipedia.org/wiki/Artificial_neural_network
https://en.wikipedia.org/wiki/Sigmoid_function

[BackPropagate]
https://wikidocs.net/37406
https://evan-moon.github.io/2018/07/19/deep-learning-backpropagation/
https://sean-parkk.github.io/study/DLscratch_Backpropagation/

https://towardsdatascience.com/creating-a-multilayer-perceptron-mlp-classifier-model-to-identify-handwritten-digits-9bac1b16fe10