컨볼루셔널 신경망 기본 사항: 알아야 할 사항
게시 됨: 2024-09-10CNN(컨벌루션 신경망)은 데이터 분석 및 기계 학습(ML)의 기본 도구입니다. 이 가이드에서는 CNN의 작동 방식, 다른 신경망과의 차이점, 애플리케이션, 사용과 관련된 장단점을 설명합니다.
목차
- CNN이란 무엇입니까?
- CNN 작동 방식
- CNN과 RNN 및 변환기
- CNN의 응용
- 장점
- 단점
컨볼루션 신경망이란 무엇입니까?
CNN(Convolutional Neural Network)은 딥러닝에 필수적인 신경망으로, 공간 데이터를 처리하고 분석하도록 설계되었습니다. 필터가 포함된 컨볼루셔널 레이어를 사용하여 입력 내에서 중요한 기능을 자동으로 감지하고 학습하므로 이미지 및 비디오 인식과 같은 작업에 특히 효과적입니다.
이 정의를 조금 풀어보겠습니다. 공간 데이터는 부품이 위치를 통해 서로 관련되는 데이터입니다. 이미지가 이에 대한 가장 좋은 예입니다.
위의 각 이미지에서 각 흰색 픽셀은 주변의 각 흰색 픽셀에 연결되어 숫자를 형성합니다. 픽셀 위치는 시청자에게 이미지 내에서 숫자가 어디에 있는지 알려줍니다.
특징은 이미지 내에 존재하는 속성입니다. 이러한 속성은 약간 기울어진 가장자리부터 코나 눈의 존재, 눈, 입, 코의 구성에 이르기까지 무엇이든 될 수 있습니다. 결정적으로, 특징은 더 단순한 특징으로 구성될 수 있습니다(예: 눈은 몇 개의 곡선 가장자리와 중앙의 어두운 점으로 구성됩니다).
필터는 이미지 내에서 이러한 특징을 감지하는 모델의 일부입니다. 각 필터는 전체 이미지에서 하나의 특정 특징(예: 왼쪽에서 오른쪽으로 휘어지는 가장자리)을 찾습니다.
마지막으로, 컨벌루션 신경망의 "컨볼루셔널"은 필터가 이미지에 적용되는 방식을 나타냅니다. 이에 대해서는 다음 섹션에서 설명하겠습니다.
CNN은 객체 감지 및 이미지 분할과 같은 다양한 이미지 작업에서 강력한 성능을 보여왔습니다. CNN 모델(AlexNet)은 2012년 딥러닝의 부상에 중요한 역할을 했습니다.
CNN 작동 방식
이미지에 어떤 숫자(0~9)가 있는지 확인하는 예를 사용하여 CNN의 전체 아키텍처를 살펴보겠습니다.
이미지를 모델에 공급하기 전에 이미지를 수치 표현(또는 인코딩)으로 변환해야 합니다. 흑백 이미지의 경우 각 픽셀에는 숫자가 할당됩니다. 완전히 흰색이면 255, 완전히 검은색이면 0(때로는 1과 0으로 정규화됨)입니다. 컬러 이미지의 경우 각 픽셀에는 3개의 숫자가 할당됩니다. 하나는 RGB 값으로 알려진 빨간색, 녹색, 파란색이 얼마나 포함되어 있는지 나타냅니다. 따라서 256×256픽셀(65,536픽셀)의 이미지는 흑백 인코딩에서 65,536개의 값을 가지며 컬러 인코딩에서 196,608개의 값을 갖습니다.
그런 다음 모델은 세 가지 유형의 레이어를 통해 이미지를 처리합니다.
1 컨볼루셔널 레이어:이 레이어는 입력에 필터를 적용합니다. 각 필터는 정의된 크기(예: 3×3)의 숫자로 구성된 격자입니다. 이 그리드는 왼쪽 상단부터 이미지에 겹쳐집니다. 열 1~3에 있는 행 1~3의 픽셀 값이 사용됩니다. 이러한 픽셀 값에 필터의 값을 곱한 다음 합산합니다. 그런 다음 이 합계는 필터 출력 그리드의 1행, 1열에 배치됩니다. 그런 다음 필터는 한 픽셀을 오른쪽으로 슬라이드하고 이미지의 모든 행과 열을 덮을 때까지 프로세스를 반복합니다. 필터는 한 번에 한 픽셀씩 밀어 이미지의 어디에서나 병진 불변성이라는 속성을 찾을 수 있습니다. 각 필터는 자체 출력 그리드를 생성한 후 다음 레이어로 전송됩니다.
2 풀링 레이어: 이 레이어는 컨볼루션 레이어의 특징 정보를 요약합니다. 컨벌루션 레이어는 입력보다 큰 출력을 반환합니다(각 필터는 입력과 거의 동일한 크기의 기능 맵을 반환하며 여러 필터가 있습니다). 풀링 레이어는 각 기능 맵을 가져와서 여기에 또 다른 그리드를 적용합니다. 이 그리드는 그 안에 있는 값의 평균 또는 최대값을 가져와서 출력합니다. 그러나 이 그리드는 한 번에 한 픽셀씩 이동하지 않습니다. 다음 픽셀 패치로 건너뜁니다. 예를 들어, 3×3 풀링 그리드는 먼저 행 1-3과 열 1-3의 픽셀에서 작동합니다. 그런 다음 동일한 행에 유지되지만 4~6열로 이동됩니다. 첫 번째 행 집합(1~3)의 모든 열을 다룬 후 4~6행으로 이동하여 해당 열을 처리합니다. 이렇게 하면 출력의 행과 열 수가 효과적으로 줄어듭니다. 풀링 계층은 복잡성을 줄이는 데 도움이 되고, 모델이 잡음과 작은 변화에 더욱 견고해지며, 모델이 가장 중요한 기능에 집중하는 데 도움이 됩니다.
3 완전 연결 레이어: 컨벌루션 레이어와 풀링 레이어를 여러 번 거친 후 최종 특징 맵은 완전 연결 신경망 레이어로 전달되어 우리가 관심을 갖는 출력(예: 이미지가 특정 숫자일 확률)을 반환합니다. 기능 맵은 평면화(특성 맵의 각 행이 하나의 긴 행으로 연결됨)된 다음 결합되어야 합니다(각 긴 기능 맵 행이 메가 행으로 연결됨).
다음은 각 레이어가 입력 이미지를 처리하고 최종 출력에 기여하는 방법을 보여주는 CNN 아키텍처의 시각적 표현입니다.
프로세스에 대한 몇 가지 추가 참고 사항:
- 각각의 연속적인 컨벌루션 레이어는 더 높은 수준의 특징을 찾습니다. 첫 번째 컨벌루션 레이어는 가장자리, 점 또는 단순한 패턴을 감지합니다. 다음 컨벌루션 레이어는 첫 번째 컨벌루션 레이어의 풀링된 출력을 입력으로 사용하여 코나 눈과 같은 상위 수준 특징을 형성하는 하위 레버 특징의 구성을 감지할 수 있습니다.
- 모델에는 훈련이 필요합니다. 훈련 중에 이미지는 모든 레이어(처음에는 임의의 가중치 포함)를 통과하고 출력이 생성됩니다. 출력과 실제 답의 차이를 사용하여 가중치를 약간 조정함으로써 모델이 나중에 올바르게 답할 가능성을 높입니다. 이는 훈련 알고리즘이 각 모델 가중치가 최종 답(편도함수 사용)에 얼마나 기여하는지 계산하고 정답 방향으로 약간 이동하는 경사하강법을 통해 수행됩니다. 풀링 계층에는 가중치가 없으므로 훈련 과정의 영향을 받지 않습니다.
- CNN은 훈련받은 이미지와 동일한 크기의 이미지에만 작업할 수 있습니다. 모델이 256×256 픽셀의 이미지로 학습된 경우 더 큰 이미지는 다운샘플링해야 하고 더 작은 이미지는 업샘플링해야 합니다.
CNN과 RNN 및 변환기
컨벌루션 신경망은 순환 신경망(RNN) 및 변환기와 함께 자주 언급됩니다. 그렇다면 그들은 어떻게 다릅니까?
CNN과 RNN
RNN과 CNN은 서로 다른 도메인에서 작동합니다. RNN은 텍스트와 같은 순차 데이터에 가장 적합한 반면, CNN은 이미지와 같은 공간 데이터에 탁월합니다. RNN에는 이전에 본 입력 부분을 추적하여 다음 부분을 맥락화하는 메모리 모듈이 있습니다. 대조적으로 CNN은 바로 이웃을 살펴봄으로써 입력의 일부를 맥락화합니다. CNN에는 메모리 모듈이 없기 때문에 텍스트 작업에 적합하지 않습니다. CNN은 마지막 단어에 도달할 때 문장의 첫 번째 단어를 잊어버립니다.
CNN과 변환기
Transformer는 순차적 작업에도 많이 사용됩니다. 입력의 모든 부분을 사용하여 새로운 입력을 맥락화할 수 있으므로 자연어 처리(NLP) 작업에 널리 사용됩니다. 그러나 최근에는 비전 변환기(Vision Transformer)라는 형태로 이미지에도 변환기가 적용되고 있습니다. 이러한 모델은 이미지를 가져와서 패치로 나누고, 패치에 대해 주의(변환기 아키텍처의 핵심 메커니즘)를 실행한 다음 이미지를 분류합니다. 비전 변환기는 대규모 데이터세트에서 CNN보다 성능이 뛰어나지만 CNN 고유의 변환 불변성이 부족합니다. CNN의 변환 불변성 덕분에 모델은 이미지 내 위치에 관계없이 객체를 인식할 수 있으므로 특징의 공간적 관계가 중요한 작업에 CNN이 매우 효과적입니다.
CNN의 응용
CNN은 병진 불변성과 공간적 특징으로 인해 이미지와 함께 자주 사용됩니다. 그러나 영리한 처리를 통해 CNN은 다른 도메인에서 작업할 수 있습니다(종종 먼저 이미지로 변환).
이미지 분류
이미지 분류는 CNN의 주요 용도입니다. 잘 훈련된 대규모 CNN은 수백만 개의 서로 다른 객체를 인식할 수 있으며 제공된 거의 모든 이미지에 대해 작업할 수 있습니다. 변환기의 등장에도 불구하고 CNN의 계산 효율성은 이를 실행 가능한 옵션으로 만듭니다.
음성 인식
녹음된 오디오는 오디오의 시각적 표현인 스펙트로그램을 통해 공간 데이터로 변환될 수 있습니다. CNN은 스펙트로그램을 입력으로 사용하여 다양한 파형을 다양한 단어에 매핑하는 방법을 학습할 수 있습니다. 마찬가지로 CNN은 음악 비트와 샘플을 인식할 수 있습니다.
이미지 분할
이미지 분할에는 이미지의 다양한 개체 주위에 경계를 식별하고 그리는 작업이 포함됩니다. CNN은 다양한 객체를 인식하는 강력한 성능으로 인해 이 작업에 널리 사용됩니다. 이미지가 분할되면 해당 내용을 더 잘 이해할 수 있습니다. 예를 들어, 또 다른 딥러닝 모델은 세그먼트를 분석하고 다음 장면을 설명할 수 있습니다. “두 사람이 공원을 걷고 있습니다. 오른쪽에는 가로등이 있고 앞에는 자동차가 있습니다.” 의료 분야에서는 이미지 분할을 통해 스캔 시 종양을 정상 세포와 구별할 수 있습니다. 자율주행차의 경우 차선 표시, 도로 표지판, 기타 차량을 식별할 수 있습니다.
CNN의 장점
CNN은 여러 가지 이유로 업계에서 널리 사용됩니다.
강력한 이미지 성능
사용 가능한 이미지 데이터가 풍부하기 때문에 다양한 유형의 이미지에서 잘 작동하는 모델이 필요합니다. CNN은 이러한 목적에 매우 적합합니다. 병진 불변성과 작은 특징에서 더 큰 특징을 생성하는 능력을 통해 이미지 전체에서 특징을 감지할 수 있습니다. 기본 CNN은 모든 종류의 이미지 데이터에 적용될 수 있으므로 다양한 유형의 이미지에 대해 다른 아키텍처가 필요하지 않습니다.
수동 기능 엔지니어링 없음
CNN 이전에는 최고 성능의 이미지 모델을 만들려면 상당한 수작업이 필요했습니다. 도메인 전문가는 특정 유형의 특징(예: 가장자리 필터)을 감지하기 위한 모듈을 만들어야 했는데, 이는 다양한 이미지에 대한 유연성이 부족한 시간 소모적인 프로세스였습니다. 각 이미지 세트에는 고유한 기능 세트가 필요했습니다. 이와 대조적으로 최초의 유명한 CNN(AlexNet)은 20,000가지 유형의 이미지를 자동으로 분류할 수 있어 수동 기능 엔지니어링의 필요성이 줄어듭니다.
CNN의 단점
물론 CNN을 사용하는 데에는 장단점이 있습니다.
많은 하이퍼파라미터
CNN을 훈련하려면 많은 하이퍼파라미터를 선택해야 합니다. 다른 신경망과 마찬가지로 레이어 수, 배치 크기, 학습 속도와 같은 하이퍼파라미터가 있습니다. 또한 각 필터에는 필터 크기(예: 3×3, 5×5) 및 스트라이드(각 단계 후에 이동할 픽셀 수)와 같은 고유한 하이퍼 매개변수 세트가 필요합니다. 훈련 과정에서는 하이퍼파라미터를 쉽게 조정할 수 없습니다. 대신, 서로 다른 하이퍼파라미터 세트(예: 세트 A 및 세트 B)를 사용하여 여러 모델을 훈련하고 성능을 비교하여 최선의 선택을 결정해야 합니다.
입력 크기에 대한 민감도
각 CNN은 특정 크기(예: 256×256픽셀)의 이미지를 허용하도록 훈련되었습니다. 처리하려는 많은 이미지가 이 크기와 일치하지 않을 수 있습니다. 이 문제를 해결하려면 이미지를 확대하거나 축소할 수 있습니다. 그러나 이러한 크기 조정으로 인해 중요한 정보가 손실될 수 있으며 모델 성능이 저하될 수 있습니다.