개강한 공대생 2024. 10. 24. 20:23

CNN은 이미지 인식이나 패턴 분석에 주로 쓰이는 딥러닝 알고리즘이다.

복잡한 이미지를 보고 컴퓨터가 물체가 뭔지 알아맞히게 해주는 거다.

 

CNN 구조:

  1. Input (입력)
    • 이미지가 CNN으로 들어가면서 분석을 시작
  2. Convolution + ReLU (합성곱 + ReLU 활성화 함수)
    • Convolution(합성곱): 필터를 이용해 이미지의 특징(엣지, 패턴)을 추출
    • ReLU는 음수 값을 0으로 만들어서 비선형성을 추가. 계산을 더 단순하게 만드는 역할이다.
  3. Pooling (풀링)
    • Max Pooling 같은 기법으로 이미지의 크기를 줄인다.
      중요한 정보만 남기고, 덜 중요한 건 버리는 거다.
  4. Flatten (펼치기)
    • 3D로 된 이미지 데이터를 1차원 벡터로 변환
      이렇게 해야 Fully Connected Layer에 넣어서 학습할 수 있다.
  5. Fully Connected Layer (완전 연결층)
    • 여기서는 모든 노드가 서로 연결된다. 이 층에서 CNN이 "이건 자동차야!" 같은 결론을 내리는 거다.
  6. Softmax (소프트맥스)
    • 마지막으로 Softmax 함수가 각 클래스에 해당하는 확률을 계산한다.
      예를 들어 "자동차일 확률 90%, 자전거일 확률 5%" 같은 식으로 말이다.

 

아래 이미지는 Convolution을 시각화한거다.

 

ReLU가 사용되는 이유는 

 

  • Gradient Vanishing 문제 해결
    • 기존에 쓰이던 시그모이드(sigmoid) 같은 함수는 학습할 때 기울기(gradient)가 거의 사라져버리는 문제가 있었다.
    • ReLU는 기울기를 0이나 양수로만 만들어서 빠르게 학습할 수 있게 한다.
  • 빠른 계산 속도
    • 음수를 0으로 날리고, 양수는 그대로 두니까 연산이 단순하다. 딱 빠르고 효율적인 함수이다.

이 과정을 거치면 신경망이 이미지의 복잡한 패턴을 잘 잡아낼 수 있게 된다.
쉽게 말해, 중요한 정보는 남기고 쓸모없는 건 날리는 거다.

 

 

 

이거는 Pooling을 나타내는데, 가장 큰값을 중요한 값이라고 생각하고 그것만을 추출해내는 것이다.