CNN

yooooooona·2024년 12월 1일

MLOPS

목록 보기
5/12
post-thumbnail

1. 배경지식

신경망(Neural Network)

신경망은 생물학적 뉴런이 함께 작용하여 현상을 식별하고 옵션을 평가하며 결론에 도달하는 방식을 모방한 프로세스를 사용하여 인간의 두뇌와 유사한 방식으로 결정을 내리는 머신 러닝 프로그램 또는 모델입니다

신경망은 인공 신경망(ANN) 또는 시뮬레이션된 신경망(SNN) 이라고도 합니다. 이는 머신 러닝의 하위 집합이며 딥 러닝 모델의 핵심입니다.

신경망은 여러 계층으로 구성될 수 있으며, 각 계층은 이전 계층의 출력을 입력으로 받아 더 복잡한 특징을 학습합니다.

노드(Node)

노드는 신경망(Neural Network)의 기본 단위로, 뉴런(Neuron) 이라고도 불립니다. 인간의 뇌에서 뉴런이 서로 신호를 주고받는 것처럼, 인공 신경망에서도 노드들이 데이터를 주고받으며 학습을 수행합니다.

모든 신경망은 노드 계층 또는 인공 뉴런(입력 계층, 하나 이상의 은닉 계층, 출력 계층)으로 구성됩니다. 각 노드는 다른 노드에 연결되며 고유한 관련 가중치임곗값이 있습니다. 개별 노드의 출력이 지정된 임곗값을 초과하면 해당 노드가 활성화되어 네트워크의 다음 계층으로 데이터를 보냅니다. 그렇지 않으면 데이터는 네트워크의 다음 계층으로 전달되지 않습니다.

노드의 구조

  • 입력계층(Input Layer): 이 계층은 신경망에 데이터를 입력받는 부분입니다. 예를 들어, 이미지 인식의 경우 각 픽셀의 값이 입력 계층의 노드로 들어갑니다.

  • 은닉계층(Hidden Layers): 입력 계층과 출력 계층 사이에 위치하며, 데이터를 처리하고 특징을 추출하는 역할을 합니다. 하나 이상의 은닉 계층이 존재할 수 있습니다. 이 계층이 많을수록 신경망이 더 깊어지며, 이를 딥 러닝이라고 부릅니다.

  • 출력계층(Output Layer): 신경망의 최종 결과를 출력하는 계층입니다. 예를 들어, 이미지 분류 문제에서는 각 클래스(예: 고양이, 개 등)에 해당하는 노드가 출력 계층에 위치합니다.

노드의 작동 원리(simple)

  1. 입력 데이터 수집: 노드는 이전 계층에서 전달된 입력 값을 받습니다.

  2. 가중치 적용: 각 입력 값에 해당하는 가중치를 곱합니다.

  3. 가중치 합 계산: 입력 값과 가중치의 곱을 모두 합산합니다.

  4. 활성화 함수 적용: 가중치 합을 활성화 함수에 통과시켜 노드의 출력을 계산합니다.

  5. 출력 값 전달: 계산된 출력 값을 다음 계층의 노드로 전달합니다.

노드의 작동 원리(detail)

  • 입력값(Input Values): 노드는 여러 입력 값을 받을 수 있습니다. 이 값들은 주로 이전 계층의 노드들이 출력한 값들입니다.

  • 가중치(Weight):각 입력 값에는 고유한 가중치가 부여됩니다. 가중치는 입력 값의 중요도를 나타내며, 학습 과정을 통해 조정됩니다. 예를 들어, w1,w2,w3w_1, w_2, w_3 이라는 가중치를 가진다고 합시다.

  • 가중치의 합(Weighted Sum): 입력 값들과 그에 대응하는 가중치들의 곱을 모두 합산한 값입니다. 이는 노드가 입력 데이터를 처리하는 첫 단계입니다. 예를 들어, z=(x1w1)+(x2w2)+(x3w3)+...z = (x_1 \cdot w_1) + (x_2 \cdot w_2) + (x_3 \cdot w_3) + ... 와 같은 식으로 계산됩니다.

  • 임계값: 임계값은 노드가 활성화되기 위한 기준점입니다. 가중치의 합이 이 임계값을 초과해야 노드가 활성화되어 다음 계층으로 출력 값을 전달할 수 있습니다. 임계값은 각 노드마다 설정되어 있으며, 학습 과정을 통해 조정될 수 있습니다.

  • 활성화함수: 노드가 활성화될 때, 활성화 함수(Activation Function)가 적용되어 노드의 출력을 계산합니다. 즉, 노드의 출력 값을 결정하는 함수입니다. 가중치의 합이 활성화 함수에 입력되며, 활성화 함수는 이 값을 기준으로 노드의 최종 출력을 계산합니다. 주로 사용하는 활성화 함수로는 ReLU(Rectified Linear Unit), 시그모이드(Sigmoid), 탠하이퍼볼릭(Tanh) 등이 있습니다.

2. CNN 이란?

정의

CNN은 Convolutional Neural Network(합성곱 신경망)의 약자로, 딥러닝 알고리즘 중 하나입니다. 주로 이미지 인식과 같은 시각적인 데이터를 처리하는 데 효과적입니다. CNN은 여러 계층의 신경망을 사용하여 입력 이미지의 특징을 자동으로 추출하고 학습합니다.

합성곱

합성곱은 Convolutional Neural Network (CNN)에서 사용되는 주요 연산 중 하나로, 입력 이미지의 특정 특징을 추출하는 데 사용됩니다. 합성곱 연산은 필터(또는 커널)을 이미지에 적용하여 특징 맵을 생성합니다.

합성곱 연산과정

1) 필터(또는 커널)의 설정: 필터는 작은 크기의 행렬로, 보통 3x3, 5x5 크기의 행렬을 사용합니다. 이 필터는 이미지의 특정 부분을 강조하거나 추출하는 데 사용됩니다.

2) 슬라이딩 윈도우(Sliding Window): 필터를 입력 이미지의 각 위치에 적용합니다. 필터가 이미지 위에서 일정한 간격(보폭, stride)으로 이동하며 점곱(dot product)을 계산합니다.

3) 점곱과 합산(Dot Product and Summation): 필터의 각 요소와 해당 위치의 이미지 픽셀 값을 곱하고, 이 값들을 모두 합산합니다. 이 합산된 값이 해당 위치의 출력(feature map) 값이 됩니다.

4) 패딩(Padding): 입력 이미지의 경계에서 필터를 적용할 때 발생하는 문제를 해결하기 위해 입력 이미지 주위에 추가적인 픽셀을 덧붙이는 과정입니다. 패딩을 통해 출력 이미지의 크기를 유지할 수 있습니다.

5) 출력(feature map) 생성:필터가 이미지 전체를 슬라이딩하면서 계산된 값들로 구성된 새로운 이미지가 생성됩니다. 이 새로운 이미지를 특징 맵(feature map)이라고 합니다.

필터

필터의 종류와 가중치는 우리가 어떤 특징을 중요하게 여길지를 결정하는 중요한 요소입니다.필터(커널)는 이미지의 특정 부분을 강조하거나 필터링하는 역할을 합니다. 다양한 필터가 서로 다른 특징을 추출할 수 있습니다. 예를 들어:

  • 엣지 검출 필터: 이미지에서 경계선을 강조하여 엣지를 추출합니다.
  • 블러 필터: 이미지의 세부 정보를 희석하여 부드러운 이미지를 만듭니다.
  • 샤프닝 필터: 이미지의 경계를 강조하여 더 선명하게 만듭니다.

CNN은 학습 과정을 통해 필터의 가중치를 자동으로 조절합니다. 이 과정에서 신경망은 여러 번의 반복을 통해 어떤 필터가 특징을 잘 추출하는지 학습합니다. 즉, 모델이 학습 데이터에 맞춰 스스로 최적의 필터를 찾아내게 됩니다.

CNN은 이러한 필터를 학습을 통해 자동으로 조정하므로, 사람이 직접 필터를 설계할 필요가 없습니다. 이 덕분에 복잡한 이미지 인식 작업에서도 높은 성능을 발휘할 수 있습니다.

구조

1) 합성곱 계층(Convolutional Layer): 입력 이미지에서 특징을 추출합니다.

2) 활성화 함수(Activation Function): 비선형성을 추가하여 모델의 표현력을 높입니다. 주로 ReLU(Rectified Linear Unit)를 사용합니다.

3) 풀링 계층(Pooling Layer): 차원을 줄여 계산 효율성을 높입니다. 입력 데이터의 크기를 줄여 계산 효율성을 높입니다. 예를 들어, 이미지의 크기를 줄여 연산량을 감소시키고, 메모리 사용량을 줄입니다. 최대 풀링(Max Pooling)과 평균 풀링(Average Pooling)이 일반적입니다.

4) 완전 연결 계층(Fully Connected Layer): 신경망의 마지막 계층으로, 입력을 벡터 형태로 변환하여 최종 분류 작업을 수행합니다.
* 벡터화: 흑백 이미지는 2차원, RGB 이미지는 3차원 행렬로 표현되는데 이를 1차원 벡터로 변환하는 과정

장점

1) 자동 특징 추출: 사람의 개입 없이 데이터의 중요한 특징을 자동으로 추출합니다.

2) 높은 정확도: 복잡한 이미지 인식 작업에서도 높은 정확도를 자랑합니다.

3) 계층적 구조: 입력 데이터를 여러 계층으로 처리하여 더 풍부한 표현을 학습합니다.

4) 비교적 적은 전처리 작업: 이미지 데이터를 처리할 때, 다른 알고리즘에 비해 전처리 작업이 적습니다.

주요 활용 사례

  • 이미지 분류: 이미지가 어떤 클래스에 속하는지 분류합니다.
  • 객체 검출: 이미지 내에서 특정 객체의 위치를 찾습니다.
  • 이미지 세그멘테이션: 이미지를 여러 부분으로 나눕니다.
  • 얼굴 인식: 얼굴 이미지를 인식하고 비교합니다.

3. CNN 사용하기

profile
배우고 있습니다.

0개의 댓글