CNN

이승우·2025년 2월 7일

생성형 인공지능

목록 보기
4/7

Convolutional Neural Network(합성곱 신경망) - 입력한 사진이 무엇인지 분류하는 기법

  • [주로 classification(분류), segmentation(분할) 목적]

사람의 시각 피질을 참고
뇌의 시각 피질은 계층적으로 연결

낮은계층은 단순한 패턴을 인식, 상위 계층으로 갈수록 패턴들을 조합하여 복잡한 이미지로 추상화

  • 1998년 Yann Lecun이 손글씨 숫자를 인식하는 딥러닝 모델 LeNet-5을 개발
    -손글씨 숫자를 MNIST 데이터셋을 인식할 수 있음(고해상도 이미지에 대해 성능이 떨어짐, Vanishing Gradients문제 발생)

  • 신경망 층이 깊어지면 학습이 안되는 문제를 ReLU함수로 해결,
    훈련 데이터에만 맞게 고정된 과대적합은 드롭아웃 기법으로 완화

ReLU 함수

역전파 과정에서 0~1의 값을 반환하는 시그모이드 함수는 레이어를 거칠수록 값이 점점 0이나 1에 가까워지고, 때문에 기울기가 작아져서 기울기 소실이 일어날 수 있다.
그 문제를 해결하기 위해 나온게 ReLU함수

  • 계산: 값이 양수면 그대로, 음수면 0을 반환
    기울기: 함수 출력값이 양수면 1, 0이면 0
    기울기가 0이면 해당 뉴런은 다음 레이어에 아무 정보도 전달하지 않음

CNN의 구조

  1. convolution(합성곱): 이미지의 특징 추출 - 특성이 이미지의 어느 부분에 많이 있는지 구별하게 함
    입력이 필터(커널)를 거쳐 feature map(특성 맵) 출력(필터의 개수만큼 특성 맵이 나옴)
    [커널과 특성 맵은 행렬형식]

    • 만약 입력 이미지가 커널과 비슷한 형태라면 feature map이 높은 수치를 나타낸다

    • 커널을 일정간격으로 이동하는 것을 stride라 한다. stride가 1이면 1칸씩 이동
    • 만약 feature map이 너무 작게 축소 된다면 입력 이미지를 0으로 둘러싼 후 합성곱을 하는 zero-padding 사용

    일반 신경망은 모든 노드가 연결되어 있고 각 연결의 가중치를 학습.
    CNN은 미리 고정된 연결이 없음, convolution과정으로 출력 계산

  2. 합성곱 계층 출력값에 활성화 함수 ReLU함수 적용 (학습)

  3. max-pooling으로 특성 맵의 크기를 줄임 - 가장 큰 값만 추출하여 출력을 작게 만듬
    * pooling을 하는 이유는 필요한 주요 특징만 학습해서 overfitting(과적합)을 방지하기 위해

    위 이미지는 2X2 맥스풀링

  4. convolution과 max-pooling을 하나의 단위로 하여 여러 층으로 쌓음 - 높은 층으로 갈 수록 복잡한 feature map 크기는 작아지며, 패턴으로 구체적으로 추상화됨

  5. flatten: feature map들을 1차원 벡터 형태로 변환하는 과정

  6. 사진의 고차원적인 패턴이 담긴 특성 맵이 나온다 -> Fully Connected Layer(완전연결 신경망): 추출된 특징으로 최종 분류 진행. 가중치, 편향 적용

  7. SoftMax 활성화 함수: 결과 수에 제한 없이 전체에 대한 각각의 확률을 구할 때 사용하는 함수. (각 행에 값 합은 1)

    • 입력값에 대한 각각의 편차를 확대시켜 큰 값은 상대적으로 더 크게, 작은 값은 더 작게 만듦
    • 이 방식으로 최종적으로 입력 이미지가 어떤 이미지 인지 확률을 통하여 분류

출력은 0~9까지의 원핫인코딩 형식

  1. 1차원 벡터의 확률값으로 나오고 그 값을 정답 레이블과 비교해서 손실 함수를 계산

0개의 댓글