■ 공부/ML DL

[DL] CNN 정리

J U N E 2024. 8. 14. 08:42

CNN의 계층구조

CNN은 여러 층으로 구성되어 있으며, 각 층에서 입력 데이터로부터 점진적으로 더 복잡한 특징을 학습합니다. 이 과정은 다음과 같은 단계로 이루어집니다:

1. 초기 층(Lower Layers)

- 단순한 특징 감지: 초기 층에서는 작은 필터(예: 3*3, 5*5)가 입력 이미지에서 에지, 코너와 같은 기본적인 저수준 특징을 감지합니다.
- 작은 리셉티브 필드: 초기 층에서 각 뉴런이 감지하는 영역(리셉티브 필드)은 이미지의 작은 부분에 해당합니다. 이로 인해 단순하고 지역적인 패턴을 감지하는 데 적합합니다.

2. 중간 층(Middle Layer)

- 복잡한 패턴 감지: 중간 층에서는 초기 층에서 감지된 단순한 특징을 조합하여 더 복잡한 패턴(예: 특정 질감 또는 작은 객체)을 감지합니다.
- 점점 커지는 리셉티브 필드: 중간 층으로 갈수록 필터의 적용범위가 넓어지며, 더 큰 영역에서 특징을 감지합니다.

3. 고위 층(Higher Layers)

- 추상적이고 고수준 특징 감지: 고위 층에서는 중간 층에서 감지된 패턴을 조합하여 전체 객체의 고수준 특징을 학습합니다. 예를 들어 얼굴, 자동차 등의 큰 객체를 인식하는 데 이 고위층이 중요한 역할을 합니다. 
- 매우 큰 리셉티브 필드: 층이 깊어질 수록 리셉티브 필드의 크기가 커지면서, 이미지의 더 넓은 부분을 커버할 수 있게 됩니다. 결국 최종적으로는 전체 이미지에 가까운 영역을 커버할 수 있습니다.


크기가 큰 객체 탐지가 쉬워지는 이유

1. 리셉티브 필드의 증가:

- CNN의 층이 깊어질 수록 각 뉴런의 리셉티브 필드가 커지기 때문에, 뉴런이 커다란 객체의 더 큰 부분을 한꺼번에 감지할 수 있습니다
- 작은 객체는 비교적 간단한 특징으로도 충분히 구분할 수 있지만, 큰 객체는 여러 작은 특징들이 결합된 더 복잡한 구조를 가지고 있습니다. 층이 깊어지면서 필터들이 결합되기 때문에 이러한 큰 구조를 인식할 수 있는 능력이 생깁니다

2. 특징의 계층적 구성:

- 초기 층에서 감지된 단순한 특징들이 중간 및 고위 층에서 결합되면서 점점 더 복잡한 패턴을 이루게 됩니다. 이러한 계층적 특징의 결합은 큰 객체의 형태를 인식하는 데 필수적입니다.
- 예를 들어 초기 층에서 선이나 모서리와 같은 기본적인 특징을 감지하고, 중간 층에서 눈, 코, 입과 같은 작은 패턴을 감지하며, 고위 층에서는 이들 패턴을 결합해 얼굴과 같은 큰 객체를 인식합니다.

3. 추상화:

- 층이 깊어질 수록 신경망은 이미지의 구체적인 픽셀 정보보다 더 추상적인 정보(예: "이 부분은 자동차의 앞모양일 가능성이 높다")를 학습하게 됩니다. 추상적인 정보는 객체의 크기나 위치에 관계없이 일괄되게 인식할 수 있게 해 줍니다.

결론적으로, CNN의 계층구조 덕분에 층이 깊어질 수록 네트워크는 점점 더 넓은 범위의 특징을 추출할 수 있게 되며, 이는 큰 객체의 인식에 매우 유리합니다.


리셉티브 필드의 확장 원리

1. 컨볼루션 연산:

- 각 컨볼루션 레이어는 이전 레이어의 출력(Feature map)에서 필터를 적용하여 새로운 Feature Map을 생성합니다. 이 때 필터는 이전 레이어의 여러 뉴런들이 결합된 출력을 처리하게 됩니다
- 예를 들어, 첫번째 레이어에서 3*3 필터가 사용되었다면, 두번째 레이어에서 같은 3*3영역에 대한 출력을 처리하게 됩니다. 이로 인해 두번째 레이어의 리셉티브 필드는 첫번째 레이어보다 더 넓어집니다

 

2. 풀링(Pooling)레이어:

- 풀링 레이어는 리셉티브 필드를 더욱 확장하는데 기여합니다. 풀링 레이어는 입력 Feature Map의 크기를 줄이면서 중요한 정보만을 남깁니다. 예를 들어, 2*2 최대풀링(Max Pooling)은 2*2 영역에서 가장 큰 값을 선택하여 출력합니다. 이 과정은 리셉티브 필드를 확장시키며, 네트워크가 더 넓은 영역의 정보를 통합할 수 있게 합니다

 

3: 네트워크의 깊이:

- 네트워크의 깊이가 깊어질 수록, 각 뉴런의 리셉티브 필드는 점점 더 넓어집니다. 이는 각 레이어가 이전 레이어의 출력에 대해 더 넓은 영역을 처리하게 되기 때문입니다. 따라서 싶은 네트워크는 입력 데이터의 전반적인 패턴을 이해하는 데 유리합니다.

결론
리셉티브 필드는 CNN의 각 층에서 입력 데이터의 특정 영역에 대한 정보를 처리하는 범위입니다. 초기 레이어에서는 작은 리셉티브 필드를 통해 세밀한 정보를 감지하고, 네트워크가 깊어지면서 리셉티브 필드는 넓어져 더 복잡한 패턴을 통합하여 인식하게 됩니다. 

리셉티브 필드의 확장은 컨볼루션 연산, 풀링 연산, 그리고 네트워크의 깊이에 의해 이루어집니다. 이 확장된 리셉티브 필드 덕분에 네트워크는 전체 이미지의 맥락을 이해할 수 있으며, 더 복잡하고 추상적인 특징을 학습하게 됩니다.


Feature map 

주로 컨볼루션 신경망(CNN)에서 사용되는 용어로, 입력 데이터에 특정필터나 커널이 적용된 후 생성되는 출력데이터. 입력데이터의 특정 특징을 추출해낸 결과물.

- 입력이미지: CNN에 이미지가 입력되면 다차원 배열로 표현됨

- 필터(커널): CNN은 특정한 패턴을 감지하기 위해 작은 행렬(예: 3*3 또는 5*5크기)로 이루어진 필터(또는 커널)을 사용합니다. 필터는 이미지의 모든 위치에 대해 슬라이딩 되며, 각 위치에서 필터와 이미지의 해당 부분 간의 점곱(dot product)를 계산합니다

- 컨볼루션 연산: 필터가 이미지 전체를 지나가며, 각 위치에서의 계산 결과를 모아 만든 것이 feature map입니다. 이 연산 과정을 컨볼루션 연산이라고 합니다

- feature map: 필터가 이미지를 통과한 후 생성된 결과가 바로 feature map입니다. 이 맵은 필터가 감지한 특정 특징(에지, 텍스쳐 등)을 강조한 데이터입니다.

신경망과의 차이:

- 신경망(Neural Network): 일반적으로 신경망은 인공 뉴런들의 집합으로, 여러 층(layer)을 통해 데이터를 처리하고 학습합니다. CNN도 신경망의 한 종류입니다.

- Feature Map: CNN의 특정 계층에서 생성되는 출력 결과입니다. 신경망의 구조 중 하나인 CNN에서 입력 데이터를 변환하고 처리하는 중간 결과물로 볼 수 있습니다.

CNN의 연산과정

1. 입력이미지: CNN에 이미지가 입력됩니다. 이 이미지는 다차원 배열(일반적으로 width * height * channel의 3차원 배열)로 표현됩니다.

 

2. 필터(커널)와 가중치 곱하기:
- CNN의 필터(커널)는 작은 크기의 행렬로, 이 필터에는 학습된 가중치(weight)가 포함되어 있습니다.
- 필터는 이미지의 각 부분에 대해 슬라이딩 되며, 이미지의 해당부분(리셉티브필드)과 필터의 가중치 행렬 간의 점곱 연산이 수행됩니다
- 이 과정에서 필터의 가중치와 입력 이미지의 각 픽셀 값이 곱해지고, 그 결과가 더해집니다.

 

3. Bias 더하기:
- 점곱 연산으로 나온 결과에 bias가 더해집니다. Bias는 필터의 각 위치에서 일정한 값을 추가해 주는 역할을 하며, 학습 과정에서 함께 학습됩니다.

 

4. 활성화 함수 적용:
- 연산된 결과에 활성화함수(Activation Function)가 적용됩니다. 일반적으로 CNN에서는 ReLU와 같은 비선형 활성화 함수가 사용됩니다.
- ReLU 함수는 0보다 작은 값을 0으로 바꾸고, 0보다 큰 값은 그대로 유지합니다. 이를 통해 비선형성을 부여하고, 모델이 더 복잡한 패턴을 학습할 수 있도록 합니다.

 

5. Feature Map 도출:
- 위의 과정을 통해 활성화 함수가 적용된 결과가 feature map으로 도출됩니다.
- 이 feature map은 입력 이미지의 특정 특징을 추출해낸 결과로, 필터가 이미지의 특정 패턴(예: 에지, 텍스처 등)을 감지하여 생성된 데이터입니다.

CNN에서 이미지가 입력되면, 가중치를 가진 필터가 이미지에 적용되고, bias를 더한 후, 활성화 함수를 적용하여 최종적으로 feature map이 도출됩니다. 이 feature map은 CNN의 각 층(layer)에서 다음 층으로 전달되며 층이 깊어질수록 더 복잡하고 추상적인 특징을 학습하게 됩니다.


CNN에서의 채널

1. 입력 이미지의 채널:

- 입력 이미지에서 채널은 색상 채널을 나타낼 수 있습니다. 예를 들어 RGB 이미지의 경우 세 개의 채널(Red, Green, Blue)을 가지며, 각각의 채널은 이미지의 색상 정보를 담고 있습니다.
- 흑백 이미지의 경우, 단일 채널만 가지고 있습니다.

 

2. feature map의 채널:

- CNN의 각 컨볼루션 레이어는 필터(커널)를 사용하여 입력 데이터에서 특징을 추출합니다
이 때, 여러 개의 필터를 사용하게 되면, 각 필터가 하나의 특징 맵을 생성하게 됩니다. 
- 예를 들어, 컨볼루션 레이어에서 32개의 필터를 사용한다면, 그 레이어의 출력은 32개의 feature map으로 이루어진 하나의 3D텐서가 됩니다. 이 때 이 32개의 feature map을 32개의 채널이라고 합니다.
- 각 채널은 필터에 의해 감지된 특정 패턴 또는 특징을 나타내며, 이러한 채널들이 쌓여서 전체적으로 더 복잡한 패턴을 인식할 수 있게 됩니다.

 

3. 최종 레이어의 채널:

- 네트워크의 마지막 레이어에서, 채널의 수는 주로 모델이 출력해야하는 클래스의 수와 연결됩니다. 
- 예를 들어 10개의 클래스로 분류를 수행하는 CNN모델이라면, 네트워크의 마지막 레이어에서 10개의 채널을 가지게 될 것입니다. 이 10개의 채널은 각각 하나의 클래스에 대응하며, 최종 출력으로 사용됩니다.

10개의 채널이란?

네트워크의 마지막 레이어에서 10개의 출력 값이 존재한다는 것을 의미합니다.
이 값들은 주로 10개의 클래스에 대한 신뢰도 또는 확률을 나타냅니다.
이 10개의 출력 값은 소프트맥스 함수에 입력되어 각 클래스에 대한 확률로 변환됩니다.
예를 들어, 이미지가 고양이, 개, 새 등 10가지의 서로 다른 클래스 중 하나로 분류되는 문제라면, 네트워크의 마지막 레이어는 10개의 채널을 가지게 되고, 이 10개의 채널은 각각 고양이일 확률, 개일 확률, 새일 확률 등을 출력하게 됩니다.

 

결론
CNN에서 "10개의 채널"은 네트워크의 마지막 레이어가 10개의 서로 다른 출력을 가진다는 것을 의미하며, 이는 주로 10개의 클래스로 분류할 때 사용됩니다. 각 채널은 하나의 클래스에 대한 정보를 담고 있으며, 소프트맥스 함수를 통해 최종적으로 각 클래스에 대한 확률을 계산하게 됩니다.

 

 

 


번외

 

 

네트워크와 모델의 차이

1. 네트워크

- 정의: 네트워크는 주로 인공 신경망(Artificial Neural Network, ANN)의 구조를 의미합니다. 신경망은 여러 개의 뉴런(노드)이 계층적으로 연결된 형태로 구성되며, 이 연결된 구조를 네트워크라고 부릅니다.

- 구성요소: 네트워크는 layer, node, weight, activation function등으로 이루어져 있습니다.
(예: CNN, RNN, LSTM, GAN 등은 신경망의 일종으로 특정한 네트워크 구조를 가지고 있습니다. CNN은 컨볼루션 레이어를 기반으로 한 네트워크입니다)

 

2. 모델

- 정의: 모델은 주어진 문제를 해결하기 위해 학습된 네트워크입니다. 네트워크에 데이터를 입력하고, 이 데이터를 기반으로 학습이 완료된 상태의 신경망을 "모델"이라고 부릅니다.
- 구성요소: 모델은 학습과정에서 조정된 weight와 bias 그리고 이들이 결합된 네트워크 구조를 포함합니다. 학습된 모델은 새로운 데이터에 대해 예측을 수행할 수 있습니다
- 예: 이미지 분류 모델, 음성인식모델, 텍스트 생성 모델 등 다양한 모델이 존재하며, 이는 모두 특정한 네트워크 구조를 바탕으로 학습된 결과물입니다.

차이점 정리

1. 구조 vs 학습상태:

- 네트워크는 학습 전후를 포함한 신경망의 구조 자체를 의미합니다
- 모델은 학습을 통해 '최적화 된' 가중치와 바이어스를 가지고 있는 네트워크를 의미합니다.

 

2. 일반적 사용 vs 특정 문제 해결:

- 네트워크는 신경망의 설계를 이야기 할 때 주로 사용됩니다
- 모델은 특정 문제를 해결하기 위해 그 신경망을 학습시킨 결과물을 이야기 할 때 사용됩니다

 

3. 유형:

- 네트워크는 CNN, RNN 등 특정 구조에 대해 언급할 때 주로 사용됩니다
- 모델은 분류 모델, 회귀 모델 등 특정 과제를 수행하는 학습된 상태를 언급할 때 사용됩니다

추가적인 학습이 되지 않은 날 것 = 네트워크

 

 

'■ 공부 > ML DL' 카테고리의 다른 글

[DL] ResNet  (0) 2024.08.14
[DL] Model Training Sequence  (0) 2024.08.12
딥러닝 학습순서  (0) 2024.07.02
머신러닝 알고리즘 정리  (0) 2024.06.22
4. 타이타닉 데이터 셋  (1) 2024.06.13