본문 바로가기
[Artificial Intelligence]/[Deep Learning]

[콘볼루션 신경망] CONVOLUTIONAL NEURAL NETWORKS

by 보끔밥0130 2023. 1. 26.
728x90

Convolutional Layer란

콘볼루션 신경망을 설계하기 위해서 콘볼루션 레이어를 불러야 합니다.

 

콘볼루션 레이어는 이미지에서 특징을 추출하는 층입니다. 즉, 이미지에서 중요한 정보를 추출하려는 레이어 입니다.

 

커널이라고 불리는 레이어들이 이미지를 훑으면서  특징을 추출합니다.

 

하나의 레이어에만 의존하지는 않고 실제로는 여러 개의 커널이 있습니다.

 

모든 특징을 추출하여 그 정보를 갖고 인공 신경망을 훈련 시킵니다.

 

첫 번째 CNN 혹은 콘볼루션 신경망은 이미지에서 높은 수준의 일반적인 특징을 추출하기 위해 사용합니다.

(곡선, 모서리 등 이미지에서 특징이 될만한 부분)

 

다음 레이어는  층이 깊이 들어가면서  더욱 복잡한 특징을 추출합니다. (얼굴, 코, 눈 등)

 

CNN 흐름

CNN의 전반적인 흐름은 이미지에서 시작해서 커널을 적용하여  특징을 추출하고 활성화 함수을 적용합니다.

 

활성화 함수는 모델의 표현성을 개선시키기 위해 사용합니다.

 

relu함수의 경우 음수인 값은 0으로 설정되고 양수인 값은 그냥 결과값이 됩니다.

 

더 희박한 행렬을 생성하고 네트워크를 훈련할 경우 성과를 높여줍니다.

 

그 이후에 특성 맵을 사용하여 풀링 레이어를 채워줍니다.

 

풀링은 특성들을 가지고 압축하는 과정입니다.

 

특성 맵의 사이즈를 줄여 사용할 정보의 양을 적게 쓸 수 있게 만들어 줍니다

 

특성 맵의 값을 납작하게 2D에서 1D(일차원)의 입력값으로 만들어서 인공 신경망의 input으로 사용하여 훈련합니다.

 

정리하면, Convolution > RELU > Pooling > Flatten > Dense Layer 순으로 수행합니다.

 

CNN 한계

콘볼루션 신경망은 깊이 자라기 때문에 Vanishing gradient (기울기 소실) 문제가 발생합니다.

 

정보의 손실이 생겨서 정확한 예측에 방해가 되는 경우입니다.

 

따라서 기울기를 계산하거나 가중치를 업데이트 해주기 위해서  기울기를 모든 다른 레이어로 전파해줘야 합니다.

 

결과적으로  컨볼루션 신경망 내의 레이어 수를 늘릴 수록 기울기 내에서 행렬 곱셈 과정이 수행되면서 점점 작아지기 때문에 기울기 소실이 생깁니다.

 

기울기가 점점 사라져서 더는 이전 레이어를 훈련 할 수 없게 되는 문제입니다.

 

즉, 기울기 소실 문제는 기울기가 이전 레이어로 다시 전파되는 과정에서 매우 작은 기울기가 생성될 때 발생합니다.

 

이 문제를 해결하기 위한 방법으로 전체 네트워크를 건너 뛰며 정보를 전달하는 다른 레이어를 형성합니다.

'Skip connection' 특징을 포함시켜 훈련을 진행합니다.

 

 

 

728x90

'[Artificial Intelligence] > [Deep Learning]' 카테고리의 다른 글

Get Info for DL  (0) 2023.09.20
인공지능 용어  (0) 2023.02.28
AI 기초 이론  (0) 2023.02.27
[오토인코더] AutoEncoder  (0) 2023.01.25
[인공신경망] ANN: Artificial Neural Networks  (0) 2023.01.24

댓글