완전 연결 신경망의 한계점 - 이미지 데이터를 학습하기 위해선 1차원으로 평탄화 -> 이미지 데이터가 가지고 있던 “형상 정보”가 사라지면서 무시 - 이미지 형상 정보는 “이미지의 가까운 픽셀은 비슷한 값을 가진다”거나 “거리가 먼 픽셀끼리는 큰 연관성이 없다”와 같은 공간적 정보를 의미 → 합성곱 신경망(Convolutional Neural Network, CNN)이 등장 - 이미지 입력 후 합성곱에 해당하는 연산으로 모델 구조를 정해 놓아, 형상 정보를 유지
합성곱 연산 - 입력 데이터에 필터(Filter) 혹은 커널(Kernel)를 적용하여 윈도우(Window)를 일정 간격으로 이동해가며 수행 - 왼쪽 위에서 오른쪽으로 스캔하는 방식으로 이뤄지며, 입력과 필터에서 동일한 위치에 대응되는 원소끼리 곱하여 진행 - 딥러닝에서 본격적으로 활용되기 전부터 존재했던 연산 : 전통적인 방식의 합성곱 연산은 미리 정의된(Pre-defined) 필터를 사용 -> 미리 정의된 필터는 수동으로 설계(Hand-crafted)되거나, 특정 목적을 위해 최적화 되었기 때문에, 그 범용성이나 유연성에 한계
- 합성곱 연산 관련 파라미터들
- 스트라이드(Stride) : 입력 데이터에 필터를 적용할 때 필터가 이동하는 간격을 의미 - 피처맵의 크기를 조정할 때 사용하며 스트라이드 값이 클수록 피처맵의 크기가 줄어듬
- 패딩(Padding)
- 합성곱 연산을 수행하기 전에 입력 데이터 주변을 특정 값(주로 0)으로 채우는 연산 - 합성곱 연산을 반복하면 피처맵의 크기가 점점 줄어들어 결국 피처맵의 크기가 1 - 너무나 작은 피처맵은 합성곱 신경망의 학습을 효율적으로 진행 X : 이러한 문제를 방지하기 위해 패딩을 사용
풀링 연산 - 이미지 데이터의 가로, 세로 방향의 크기를 줄이는 연산으로 피처맵에서 중요한 정보를 추출하기 위해 사용 - 합성곱 레이어의 출력을 다운샘플링하여 특징 맵의 크기를 줄이는 역할 - 모델의 파라미터 수를 줄이고, 과적합을 방지하며, 계산 효율성을 높임 - 일반적으로 슬라이딩 윈도우 방식으로 동작하며, 주로 2x2 또는 3x3 크기의 윈도우를 사용
- 최대 풀링 (Max Pooling)
- 가장 대표적인 풀링 방식 중 하나는 피처맵에서 최대값을 취하는 방식인 최대 풀링 - 일반적으로 합성곱 신경망에서 가장 많이 활용 - 피처맵에서 가장 두드러지는 특징을 가져오는 특성 때문에 피처맵에 있는 많은 정보 중 중요한 정보만 선별해내는 기능을 수행
- 평균 풀링(Average Pooling)
- 피처맵의 평균값을 계산하는 방식 - 이미지의 전체적인 내용과 구조를 보존하는 것이 중요하다고 판단될 때 사용 - 배경의 정보나 텍스처 같은 전반적인 특징을 중요하게 생각할 때 활용
- 학습의 효율성 : 합성곱 연산과 달리 학습에 필요한 파라미터가 필요없기 때문에 데이터 크기를 줄일 때 효율적 - 잡음에 대한 강인성 : 입력 이미지에 추가된 잡음에 영향을 적게 받기 때문에 신경망을 더욱 더 강건하게 만들어줄 수 있다.
순환 신경망 (Recurrent Neural Networks , RNN)
- 기존의 인공신경망(DNN)이나 합성곱 신경망(CNN)은 주로 고정된 크기(Fixed size)의 입력과 출력을 처리하도록 설계 -> 고정된 크기의 입력을 갖는 기존 신경망의 구조와 달리, 과거의 정보를 기억하면서 가변적인 현재의 입력도 동시에 처리 - 순환 신경망(Recurrent Neural Network, RNN)이 등장
구조
- 이전 시점의 정보를 현재 시점의 입력과 함께 처리하는 순환 구조 -> 순환 신경망은 시퀀스 내의 정보를 기억 - 은닉 상태(Hidden State)는 순환 신경망의 핵심적인 요소 -> 네트워크가 시간에 따라 어떤 정보를 기억할지 결정 - 네트워크의 기억으로 생각할 수 있으며, 각 시점에서 업데이트
- one to one : 하나의 입력 데이터에 대해서 하나의 출력 데이터를 생산하는 방식으로 동작 - one to many : 입력 이미지에 대한 설명 글을 출력하는 모델의 경우 하나의 입력 데이터에 대해서 여러 개의 출력 데이터가 생산 (이때 하나의 출력 데이터는 단어 하나로 생각해도 된다) -many to one : 시퀀스를 입력으로 받아들이는 것이 가능한 모델 구조 : 다양한 형태의 출력 또한 생성 - 시퀀스를 입력으로 받아 한 개의 출력을 내는 경우, 시퀀스를 입력으로 받아 시퀀스를 출력하는 경우 등 다양한 구조 - many to many : 순환 신경망은 시퀀스를 입력으로 받아들이는 것이 가능한 모델 구조 : 다양한 형태의 출력 또한 생성 - 시퀀스를 입력으로 받아 한 개의 출력을 내는 경우, 시퀀스를 입력으로 받아 시퀀스를 출력하는 경우 등 다양한 구조
- 순차적인 데이터나 시계열 데이터 처리에 특화된 신경망 구조 - 각 시간 단계에서의 출력이 이전 단계의 정보를 포함 - 이전 시간 스텝의 정보가 현재 상태와 출력에 영향
한계
- 장기 의존성(Long-Term Dependency)의 문제 : 시퀀스가 길어질수록 앞부분의 정보를 잊어버리는 문제가 발생 -> LSTM이나 GRU와 같은 순환 신경망 구조가 등장
LSTM (Long Short-Term Memory) - 순환 신경망의 단점인 장기 의존성 문제를 완화하기 위해 설계된 모델 - 입력, 출력, 망각 세 개의 Gate를 통해 정보 흐름을 조절 - 시퀀스의 장기적인 정보를 잘 학습하고 유지
- Forget Gate : LSTM에서 가장 첫 단계 중 하나이며 기존 정보 중 어떤 정보를 버릴지 선택 - Input Gate : 입력 데이터 중 어떤 정보를 다음 상태로 저장할지 결정 - Output Gate : 다음 상태로 어떤 정보를 내보낼지 선택
GRU (Gated Recurrent Unit) - LSTM을 보다 단순화한 구조로 Reset Gate와 Update Gate 두 가지 Gate만을 가지고 유사한 성능을 확보 - LSTM 보다 적은 파라미터 수로 유사 성능을 낼 수 있어서 비용 효율적
- Reset Gate : 이전 상태의 정보가 얼마나 현재 상태의 계산에 사용될지 결정 - 즉, 이전 정보를 얼마나 '리셋'할지를 선택하는 Gate - Update Gate : 이전 상태를 얼마나 현재 상태에 보존할지와 새로운 정보를 얼마나 현재 상태에 반영할지를 결정 - LSTM의 Forget Gate+ Input Gate
LeNet-5 (1998) - Yann LeCun에 의해 제안된 모델 - 손글씨 숫자를 인식하기 위해 설계된 최초의 합성곱 신경망 구조
ImageNet Large Scale Visual Recognition Challenge (ILSVRC) - 수백만 개의 이미지로 구성된 데이터베이스 - 각 이미지는 라벨이 붙어 있어 다양한 컴퓨터 비전 연구에서 사용 - ImageNet 대회 - 2010년부터 2017년까지 개최된 대회 : ImageNet 데이터베이스를 기반으로 여러 비전 작업의 성능을 평가하기 위해 시작 - ILSVRC는 딥러닝의 중요성을 국제적으로 홍보하는데 큰 역할 - 많은 혁신적인 아키텍처와 기법들이 이 대회를 통해 세상에 소개 - 2012년 AlexNet을 기점으로 딥러닝 기술의 최고 점수를 달성
AlexNet (2012) - 2012년 ImageNet 대회에서 큰 차이로 우승하여 딥러닝의 시대를 개시한 모델 - GPU를 활용한 효율적인 병렬 학습, ReLU 활성화 함수, 여러 계층 구조 등을 특징
VGG (2014) - 2014년 ImageNet 대회에서 좋은 성적을 낸 모델 - 깊은 네트워크의 성능을 입증하기 위해 16, 19 레이어의 버전이 개발 - 합성곱 계층과 풀링 계층만으로 이루어진 기본적인 구조와 일관된 컨볼루션 필터 크기와 레이어 깊이의 확장이 특징
GoogLeNet (2015) - 복잡한 Inception 모듈을 사용하여 네트워크의 파라미터 수를 줄이면서도 성능을 향상시킨 모델 - GoogLeNet은 VGG모델과 달리 다양한 크기의 합성곱 레이어와 풀링 레이어을 조합
Generative Adversarial Networks (GAN, 2014) - Ian Goodfellow에 의해 제안된 새로운 생성 모델 - 생성자와 판별자 두 네트워크를 경쟁시켜 데이터의 분포를 학습하는 모델 - 이미지, 음성, 텍스트 등 다양한 분야에서 뛰어난 결과를 보이며, 생성 모델링 분야의 혁신
ResNet (2015) - 깊은 네트워크에서 발생하는 기울기 소실과 같은 문제를 해결하기 위해 Residual Connection을 도입한 모델 - 수백 개의 레이어를 가진 네트워크도 효과적으로 학습 - 네트워크의 깊이를 크게 확장하면서도 효율적인 학습을 가능케 했으며, 100개 이상의 계층을 가진 모델도 학습이 가능함을 확인 - 2015년에 ILSVRC 대회에서 우승한 모델로 최초로 사람보다 더 우수한 성능을 기록
Sequence-to-Sequence (Seq2Seq, 2014) - Seq2Seq은 시퀀스를 입력받아 다른 시퀀스를 출력하는 문제에 특화된 구조 - 기계 번역(Natural Machine Translation) 과 같은 분야에서 사용되며, 크게 인코더(Encoder)와 디코더(Decoder)의 두 부분으로 구성 - 인코더-디코더 구조는 이후 이어지는 Transformer와 같은 구조와 유사
Transformer (2017) - 'Attention is All You Need' 논문에서 제안되었으며, Self-Attention 메커니즘을 사용하여 시퀀스 데이터를 처리 - RNN과 LSTM을 대체하는 새로운 방식으로 제안되어, 현재의 많은 자연어 처리 모델의 기본
Bidirectional Encoder Representations from Transformers (BERT, 2018) - 언어 이해를 위한 훈련된 양방향 Transformer 구조를 사용 - 단순한 조정만으로 다양한 NLP 작업에서 최첨단 성능을 달성 - 문맥 양방향성에 크게 의존하여 단어의 의미를 파악하며, 사전 훈련된 일반 언어 모델을 사용하여 특정 작업에 적용하기 전에 대규모 텍스트 데이터에 대해 훈련
Generative Pre-trained Transformer (GPT, 2018) - GPT는 사전 훈련된 트랜스포머 기반 모델로, 초기에 비지도 학습으로 큰 데이터셋에서 훈련된 후, 특정 작업을 위해 미세 조정 - GPT는 트랜스포머 구조의 디코더만을 사용하며, 다양한 NLP 작업에서 뛰어난 성능 - GPT-2, GPT-3 등의 버전이 연이어 발표되며, 점점 스케일을 키워가며 성능을 향상 - 추가 자료 : https://jalammar.github.io/how-gpt3-works-visualizations-animations/
EfficientNet (2019) - EfficientNet은 컨볼루션 신경망의 모델 스케일링 방법을 새롭게 고려하여 설계된 아키텍처 - 복잡도와 정확도 사이의 균형을 찾기 위해 너비, 깊이, 그리고 이미지 해상도를 동시에 스케일링하는 방법을 제안
Vision Transformer (ViT, 2020) - ViT는 주로 NLP에서 성공적으로 적용되었던 Transformer 구조를 이미지 인식에 활용하는 방법을 제시 - 이미지를 고정 크기의 패치로 나누고 이러한 패치를 순차적인 토큰으로 변환하여 Transformer의 입력으로 사용 - 큰 데이터셋과 큰 모델에서 최상의 성능을 발휘하며, Transformer만을 사용하여 최신 CNN 모델의 성능을 뛰어넘을 수 있음
ChatGPT (2022) - OpenAI에서 개발한 GPT (Generative Pretrained Transformer) 아키텍처를 기반으로 한 챗봇 전용 모델 - 대규모의 텍스트 데이터로 사전 학습된 후, 다양한 채팅 데이터로 미세조정되어 사용자의 질문에 대응하는 응답 생성 능력 - 사용자와 자연스러운 대화를 나누는 데 목적을 두며, 다양한 주제와 컨텍스트에 유연하게 반응 - OpenAI의 연구와 상업화 노력의 일환으로, GPT-3와 GPT-4 기반의 챗봇 서비스 및 응용 분야에서 활용
Large Language Models (LLMs) - LLM은 기술을 공개하는 진영인 OpenLLM과 그렇지 않은 진영으로 크게 나뉨
사용 가능한 사이트 - Open LLM Leaderboard :오픈 LLM 리더보드 : 오픈 LLM 및 챗봇의 추적, 순위, 평가를 목표 - 백엔드는 숫자를 계산하기 위해 Eleuther AI 언어 모델 평가를 실행 - Paperswithcode : 최신 딥러닝 모델이나 데이터셋과 관련된 소식