Machine Learning에는 시스템에 인텔리전스를 전달하는 많은 알고리즘이 있습니다. 기계 학습의 응용 분야는 매우 다양합니다. 그러한 응용 프로그램 중 하나는 컴퓨터 비전입니다. 얼굴 및 기타 이미지를 인식하는 목표는 CNN(Convolutional Neural Network)이라는 특수한 유형의 신경망의 도움으로 잘 수행됩니다. 이 블로그에서는 이러한 CNN의 이면의 작업과 역사 및 응용 프로그램을 볼 수 있습니다.
일반적으로 CNN이라고 하는 onvolutional Neural Networks는 이미지를 처리하고 분류하도록 설계된 특수한 유형의 신경망입니다. 컨볼루션 신경망(Convolutional Neural Networks)은 이전 장의 일반 신경망과 매우 유사하며, 학습 가능한 가중치와 편향을 가진 뉴런으로 구성되어 있습니다. 각 뉴런은 몇 가지 입력값을 받고, 내적을 수행하며, 선택적으로 비선형성으로 그 뒤를 따릅니다.
전체 네트워크는 여전히 한쪽 끝의 원시 이미지 픽셀에서 다른 쪽 끝의 클래스 점수에 이르기까지 차별화 가능한 단일 점수 함수를 표현합니다. 그리고 그들은 여전히 마지막(완전히 연결된) 계층에 손실 함수(예: SVM/Softmax)를 가지고 있으며 일반 신경망을 학습하기 위해 개발한 모든 팁/트릭이 여전히 적용됩니다.
1. 컨볼루션 신경망이란?
컨볼루션 신경망(Convolutional Neural Networks)은 이미지를 입력으로 받아 필터를 통해 이미지의 다양한 특징을 학습하는 딥러닝 알고리즘의 한 유형입니다. 이를 통해 이미지에 있는 중요한 물체를 학습하여 한 이미지를 다른 이미지와 구별할 수 있습니다.
예를 들어, 컨볼루션 네트워크는 개와 구별되는 고양이의 특정 특징을 학습하여 고양이와 개에 대한 입력을 제공할 때 둘을 쉽게 구별할 수 있습니다. 다른 기계 학습 알고리즘과 차별화되는 Convolutional Neural Network의 중요한 기능 중 하나는 데이터를 자체적으로 사전 처리하는 기능입니다.
데이터 전처리에 많은 리소스를 소비하지 않을 수 있습니다. 콜드 스타트 중에는 필터에 수작업 엔지니어링이 필요할 수 있지만 교육이 진행됨에 따라 학습된 기능에 적응하고 자체 필터를 개발할 수 있습니다. 따라서 CNN은 데이터의 성장과 함께 지속적으로 진화하고 있습니다.
CNN에서 주목할 수 있는 또 다른 중요한 점은 데이터의 공간 피라미드를 고려한다는 것입니다. 이는 CNN이 계층적으로 구성된 기능을 통해 이미지의 공간적, 시간적 관계를 포착할 수 있음을 의미합니다. 신경망이 더 깊이 들어갈수록 이전 계층에서 발견된 더 간단한 패턴에 대한 훈련을 통해 더 복잡한 패턴을 정의할 수 있습니다. 이러한 계층적 학습은 시각적 데이터에 대한 높은 수준의 세부 정보가 필요한 모든 작업에서 CNN을 매우 유용하게 만듭니다.
2. 컨볼루션 신경망의 동작방식
CNN은 일반적인 완전 연결 신경망과 유사한 성능을 가지고 있습니다. 이러한 컨벌루션 네트워크에는 입력값과 편향값에서 학습할 수 있는 가중치가 있습니다. 네트워크에 연결된 모든 뉴런은 입력을 받고 이에 대해 내적을 수행합하며 비선형 방식으로 진행됩니다. 끝에는 단수의 차별화 가능한 점수 함수가 있습니다. 이 함수는 신경망의 다양한 계층에서 얻은 점수로 구성됩니다. 마지막으로, 모델의 성능을 평가하기 위해 끝에 손실 함수가 있습니다. 컨볼루션 신경망(convolutional neural network)은 입력을 이미지로 명시적으로 가정한다는 점에서 표준 신경망과 다릅니다.
이 가정은 아키텍처가 보다 실용적인 방식으로 정의하는 데 도움이 됩니다. 예를 들어, 단순한 신경망에서 뉴런의 선형 배열과 다르며 전체 구조를 3차원(길이, 너비, 높이)으로 가지고 있습니다. 예를 들어, CIFAR 10 데이터 세트의 이미지에는 32x32x3 크기의 이미지가 포함되고 최종 출력에는 1x1x10 크기의 이미지로 구성된 단일 벡터가 있습니다.
Convolutional Neural Network의 아키텍처는 다음과 같습니다.
- 입력– 위에서 논의한 바와 같이 CIFAR 10 데이터의 일반적인 이미지는 크기가 32x32x3인 경우 이미지를 보유하며, 여기서 깊이는 이미지의 채널 수(RGB)를 나타냅니다.
- CONV 계층은 뉴런의 가중치와 연결을 공유하는 입력 이미지의 영역 사이의 내적을 계산하는 역할을 합니다. 여기서 치수는 32x32x12가 되며, 이는 신경망이 사용하는 12개의 필터를 나타냅니다.
- 세 번째 계층은 결과 내적에 활성화 함수를 적용하기 위한 RELU로 구성됩니다. 이 결과의 크기는 변경되지 않습니다.
- 네 번째 POOL 레이어는 이미지의 공간 차원, 즉 너비와 높이를 다운샘플링합니다. 이렇게 하면 크기가 16x16x12로 줄어듭니다.
- 완전 연결 계층은 클래스 점수를 계산하여 최종 볼륨인 1x1x10을 생성합니다. 여기서 10은 CIFAR-10의 범주를 나타냅니다.
CNN 아키텍처에서 가장 중요한 계층은 컨볼루셔널 계층(Convolutional Layer)입니다. CONV 계층의 필수 구성 요소는 학습 가능한 필터로 구성됩니다. CONV net의 각 필터의 크기는 5x5x3입니다. 순방향 전달이 발생하면 입력 볼륨의 너비와 깊이를 가로질러 각 필터에 대해 슬라이딩을 수행하고 마지막으로 내적을 계산합니다. 이 내적은 궁극적으로 모든 공간 위치에서 필터의 응답을 제공하는 2차원 활성화 맵을 생성합니다.
그런 다음 네트워크는 첫 번째 계층의 가장자리 또는 일부 색상의 얼룩과 같은 시각적 특징을 따라 제공되는 다양한 필터를 학습하고 네트워크의 상위 계층에서 패턴과 같은 벌집을 생성합니다. ConvNet에 있는 12개의 필터 각각은 출력 볼륨을 생성하기 위해 쌓은 2차원 활성화 맵을 생성한다.
3. 컨볼루션 신경망의 응용
- 컨볼루션 신경망(CNN)은 이미지 인식을 위해 개발되었으므로 대부분 컴퓨터 비전 분야에서 이미지를 분류하고 분할하며 이미지에 대한 위치 파악을 수행하는 데 사용됩니다.
- 비디오는 시간적 차원을 가지고 있다는 점에서 이미지와 다르다. 이미지보다 더 복잡하지만, 이러한 유형의 스트리밍 시각적 입력을 수용하기 위해 이러한 CNN을 조정할 수 있습니다. 대부분의 경우, 컨볼루션 네트워크는 비디오 입력 처리 성능을 향상시키기 위해 LSTM 및 Boltzmann Machines와 같은 다른 알고리즘과 함께 매우 대중화되고 있습니다.
- 시각적 입력 외에도 CNN은 의미론적 구문 분석, 문장 모델링, 예측 및 분류를 위한 자연어 처리 분야에서도 활용되고 있습니다.
- 최근에는 Google과 같은 회사들이 음성 인식을 위해 CNN을 순환 신경망 및 LSTM과 함께 사용하고 있습니다.
- CNN은 또한 잠재적인 치료법을 식별하기 위해 분자와 생물학적 단백질 간의 상호 작용을 식별하는 효율적인 도구임이 입증된 약물 발견에 사용되고 있습니다.
'프로그래밍 > AI' 카테고리의 다른 글
머신 러닝을 사용한 오디오 분석방법 (0) | 2024.10.07 |
---|---|
머신러닝의 장점과 단점 (0) | 2024.10.06 |
순환 신경망(RNN)의 이해 (0) | 2024.10.05 |
머신러닝을 위한 인공 신경망 (0) | 2024.10.04 |
머신러닝 소프트웨어의 종류와 특징 (0) | 2024.10.04 |