합성곱 신경망 (Convolutional Neural Networks , CNN)
완전 연결 신경망의 한계점
- 이미지 데이터를 학습하기 위해선 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
출력과 은닉상태를 모두 표현한 LSTM 그리고 GRU
- 추가 공부 자료
- https://karpathy.github.io/2015/05/21/rnn-effectiveness/
From AlexNet to ChatGPT
- 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 : 최신 딥러닝 모델이나 데이터셋과 관련된 소식
'Study > 머신러닝' 카테고리의 다른 글
텐서 조작, Tensor Manipulation(with PyTorch) (0) | 2024.12.16 |
---|---|
Pytorch (0) | 2024.12.16 |
Deep Learning 성능 고도화 학습 (0) | 2024.12.16 |
Deep Learning 모델 학습법 (0) | 2024.12.13 |
Deep Learning 기본 개념 (5) | 2024.12.10 |