ANN (Artificial Neural Network): 인공 신경망으로, 입력과 출력 사이에 여러 개의 은닉층을 가진 모델로 복잡한 함수 근사 및 패턴 인식에 사용
DNN (Deep Neural Network): 깊은 신경망으로, ANN의 확장된 형태로써, 많은 수의 은닉층을 가지고 복잡한 문제를 해결하는데 사용하며 볼츠만 머신 신경망과도 연관
CNN (Convolutional Neural Network): 합성곱 신경망으로, 이미지 처리와 컴퓨터 비전 분야에서 주로 사용되며, 이미지의 지역적 패턴을 감지하는 데 특화
CNN(Convolutional Neural Network)에 대해 알아야 하는 주요 개념:
합성곱층(Convolutional Layer): 이미지에서 특징을 추출하기 위해 합성곱 연산을 수행하는 층입니다. 필터(커널)를 이미지에 적용하여 특징 맵(feature map)을 생성합니다. 여기서 필터는 가중치와 같은 개념으로 봐도 될 거 같고 자동 업데이트된다 또 하나의 필터는 하나의 특징값만 추출한다.
활성화 함수(Activation Function):
합성 곱층 이후 비선형성을 도입하기 위해 각 뉴런의 출력을 변환하는 함수입니다. 주로 ReLU(Rectified Linear Unit) 함수가 사용되며, 음수 입력을 0으로 제한하고 양수 입력은 그대로 출력합니다.
풀링층(Pooling Layer): 특징 맵의 크기를 줄이고, 중요한 정보를 유지하면서 공간적으로 추상화하는 층입니다. 일반적으로 최대 풀링(max pooling)이 사용되며, 특정 영역에서 가장 큰 값을 선택하여 특징 맵을 다운샘플링합니다.
완전 연결층(Fully Connected Layer): CNN의 특징 추출 단계를 거친 후 추출된 특징을 기반으로 분류를 수행하기 위해 사용되는 층입니다. 이 층은 모든 입력 뉴런과 출력 뉴런이 서로 연결되어 있습니다.
스트라이드(Stride): 합성곱 연산에서 필터가 입력 데이터를 훑어가는 간격을 의미합니다. 즉, 필터가 한 번에 얼마나 이동하는지를 나타내는 값입니다. 합성곱 연산은 필터를 일정 간격으로 이동하면서 입력 데이터와의 곱셈을 수행하여 특징 맵을 생성합니다. 이때 스트라이드 값을 조정하여 필터의 이동 간격을 조절할 수 있습니다.스트라이드 값이 1인 경우에는 필터가 한 칸씩 이동하면서 입력 데이터의 모든 위치에 대해 합성곱 연산을 수행합니다.
스트라이드 컨볼루션(Stride Convolution)은 합성곱(Convolution) 연산에서 필터의 이동 간격을 조정하여 특징 맵의 크기를 조절하는 방법입니다. 일반적인 합성곱 연산은 스트라이드(Stride)가 1인 경우로, 필터가 한 칸씩 이동하면서 입력 데이터와의 합성곱을 계산합니다.
피치워크 컨볼루션 : 일반적인 컨볼루션과 달리 필터가 입력 이미지의 픽셀마다 개별적으로 적용되는 것을 의미합니다. 각 입력 이미지의 픽셀마다 하나의 필터가 사용되며, 이 필터는 해당 픽셀 주변의 정보를 사용하여 새로운 픽셀 값을 계산합니다. 이렇게 하나의 필터를 사용하여 입력 이미지의 모든 픽셀에 독립적으로 컨볼루션을 적용하는 것
오버피팅(Overfitting): 모델이 학습 데이터에 지나치게 적합되어 새로운 데이터에 일반화하기 어려워지는 현상입니다. 오버피팅을 방지하기 위해 드롭아웃(dropout), 가중치 규제(weight regularization) 등의 정규화 기법이 사용될 수 있습니다.
사전 훈련(pre-training)과 전이 학습(transfer learning): 사전에 대규모 데이터셋에서 사전 훈련된 모델을 이용하여 초기 가중치를 설정하고, 적은 양의 데이터로 새로운 작업에 맞게 모델을 세밀하게 조정하는 방법입니다.
데이터 증강(Data Augmentation): 데이터셋을 인위적으로 확장하여 모델의 일반화 성능을 향상시키는 기법입니다. 회전, 이동, 반전, 축소 등의 변환을 적용하여 데이터의 다양성을 증가시킵니다.
컨볼루션 신경망 아키텍처: 다양한 CNN 아키텍처가 있으며, 대표적로 LeNet, AlexNet, VGGNet, GoogLeNet, ResNet 등이 있습니다. 이러한 아키텍처는 다양한 레이어 구성, 필터 크기, 스트라이드, 패딩 등을 통해 다양한 이미지 분류, 객체 탐지, 세그멘테이션 등의 컴퓨터 비전 작업을 수행합니다.
RNN (Recurrent Neural Network): 순환 신경망으로, 순차적인 데이터(시퀀스)를 처리하는데 적합하며, 이전의 정보를 기억하는 기능을 가지고 있습니다. 주로 자연어 처리와 시계열 데이터 분석에 사용
볼프만 머신
볼츠만 머신은 기계학습과 인공지능 분야에서 사용되는 확률적인 그래픽 모델로, 일종의 신경망 모델. 볼츠만 머신은 뉴런과 뉴런 사이의 연결을 통해 데이터의 표현과 확률적인 추론을 수행
CNN 탄생 배경
1. Overfitting으로 트레이닝 데이터에 너무 모델이 심취해버리면 사진의 어떤 특징을 보고 맞추는 일을 할때 트레인할 때 보여준 사진이 아니면 뭔지 모를 수도 있다. 즉 오버피팅을 오히려 큰 에러가 날 수 있다.
2. fully commited layer
신경망이 모두 다 연결이 촘촘히 되어 있으면 계산이 너무 쓸모없이 꼼꼼해진다, 오버피팅 문제도 생긴다.
윤곽만 얼추 파악하고 눈,코,입 등 특징점를 파악해나가면서 사진을 파악하는 효율성과 오버피팅 되지 않는 문제를 해결하기 위해 만든 신경망 구성이 합성곱 신경망이다.
2D 이미지 합성곱이란?
합성곱은 마치 검사지 위에 투명한 종이를 올려놓고, 겹쳐지는 부분을 살펴보는 것과 비슷하다. 큰 그림을 작은 도장으로 반복해서 찍어본다고 상상해보자.
이 때, 작은 도장은 필터라고 부르는 작은 격자 모양의 도구다. 필터는 작은 사각형 모양이고, 각 사각형 안에 숫자들이 적혀 있다.
이제, 이 필터를 입력 이미지에 겹쳐서 움직여 가며 계산을 해본다. 필터의 각 숫자와 겹쳐진 부분의 픽셀 값들을 곱해서 합산하고, 그 결과를 다른 종이에 적어놓는다. 필터를 움직여가며 입력 이미지의 모든 위치에 대해 이 과정을 반복한다.
이렇게 하면, 입력 이미지 위에 새로운 종이에 특징 맵이 만들어진다. 이 특징 맵은 입력 이미지의 다양한 특징들을 감지한 결과다. 예를 들어, 입력 이미지가 얼굴 사진이라면, 특징 맵은 눈, 코, 입 등의 특징들을 나타낼 수 있다.
이렇게 합성곱은 입력 이미지 위에서 필터를 움직여가며 곱셈과 합산을 반복하는 것으로, 입력 이미지의 특징을 감지하는 역할을 한다.
간단히 말하면, 합성곱은 작은 도장을 사용해서 입력 이미지에서 특징을 찾아내는 것이다. 만약 이미지 밖 영역부터 도장이 찍힌다면 0 padding으로 이미지 밖 영역을 0으로 채워두면 된다. 그렇지 않고 패딩을 추가하지 않는 방법은 VALID PADDING이라고 한다-특징맵이 작아짐
이런 특징을 저장함으로 인해 이미지에서 특징을 찾아내는 것을 더욱 가볍고 효율적으로 수행할 수 있다.