[천재교육] 프로젝트 기반 빅데이터 서비스 개발자 양성 과정 9기
학습일 : 2024.09.05
📕 학습 목록
- OpenCV
- 딥러닝 개념 정리
- 인공신경망
- CNN
- Fine-Tuning
- Attention 메커니즘
- Sliding Window
- Stride
- Early Stopping
📗 기억할 내용
1) OpenCV (Open Source Computer Vision Library)
① 정의
- 컴퓨터 비전과 머신러닝을 위한 소프트웨어; 다양한 이미지와 동영상 처리에 필요한 알고리즘을 제공
- 주로 다음과 같은 작업에 사용됨
- 이미지와 동영상 처리 (예: 객체 탐지, 얼굴 인식, 이미지 필터링)
- 머신러닝 (패턴 인식, 데이터 분석 등)
- 실시간 컴퓨터 비전 애플리케이션 (예: 로봇 공학, 자율 시스템, 증강 현실 등)
2) 딥러닝 개념 정리
① 모델 복잡도
- 레이어의 개수와 노드의 개수에 비례하며, 이를 통해 모델이 처리할 수 있는 데이터의 복잡성을 결정
② 넓고 얕은 데이터 vs 좁고 깊은 데이터
- 넓고 얕은 데이터 (MLP에서 사용)
- 넓다: 입력 데이터의 차원이 높다는 것을 의미. 예를 들어, 주가 데이터처럼 여러 변수들이 포함된 데이터를 말함
- 얕다: 데이터의 구조가 단순하며, 각 변수 간의 관계가 복잡하지 않음. 고차원의 다양한 정보가 있으나, 각 정보 간의 깊은 상관관계는 적음
- 주로 MLP에서 사용. MLP는 모든 입력을 한 번에 연결(fully connected)하여 각 변수 간의 깊은 관계를 학습하기보다는 전체 패턴을 학습하는 데 집중
- 좁고 깊은 데이터 (CNN에서 사용)
- 좁다: 입력 데이터의 차원이 상대적으로 낮다. 예를 들어, 이미지에서의 국소적인 영역(커널)이 해당함
- 깊다: 데이터 내에서 지역적 관계가 매우 깊고 복잡함. 이미지나 영상과 같은 경우, 각 픽셀과 인접 픽셀 간의 상관관계가 매우 중요하며, 이를 통해 패턴을 파악함
- 주로 CNN에서 사용. CNN은 국소 영역을 슬라이딩 윈도우로 처리하여, 이미지 내에서 중요한 특징을 단계별로 추출하는 방식으로 깊이 있는 관계를 학습함
3) 인공신경망(Artificial Neural Network, ANN)
① 정의
- 인간 뇌의 뉴런을 본뜬 수학적 모델로, 다양한 입력 데이터를 학습하고 분석하는 시스템
- 입력 데이터에서 특징을 학습하고 그 결과를 바탕으로 예측이나 분류를 수행
- 인공 신경망은 여러 층의 뉴런(노드)으로 구성되어 있으며, 이 노드들은 서로 연결되어 데이터를 처리하고 전달함
- 딥러닝은 이러한 인공 신경망을 여러 층으로 깊게 쌓아 복잡한 문제를 해결하는 학습 방식
- MLP는 기본적인 신경망으로 모든 입력을 동일하게 처리하고, CNN은 이미지와 같은 데이터의 패턴을 더 잘 인식하도록 설계된 신경망
- RNN과 Transformer는 시계열 데이터나 자연어 처리와 같은 순차적 데이터를 다루는 인공신경망
② 유형
- MLP (Multilayer Perceptron, 다층 퍼셉트론)
- MLP는 가장 기본적인 형태의 신경망 중 하나로, Fully Connected Layer(완전 연결층)로 이루어져 있음
- 입력층(Input layer), 숨겨진 층(Hidden layer), 그리고 출력층(Output layer)으로 구성되며, 각 노드(뉴런)는 이전 층의 모든 노드와 연결되어 있음
- 주요 용도 : 표형 데이터(ex : 수치형 데이터)에서 분류 및 회귀 문제 해결에 사용
- 제한점 : 이미지와 같은 공간적 정보를 처리하는 데는 비효율적임. 이미지의 공간적 구조를 무시하고 모든 픽셀을 한 줄로 평평하게 처리하기 때문에 이미지 패턴을 제대로 학습하지 못할 수 있음
- CNN (Convolutional Neural Network, 합성곱 신경망)
- 이미지나 영상 데이터를 처리하는 데 최적화된 신경망 구조. 이미지의 공간적 구조와 패턴을 학습하는 데 뛰어남
- Convolutional Layer(합성곱층), Pooling Layer(풀링층), Fully Connected Layer(완전 연결층) 등의 여러 계층으로 구성됨
- 합성곱(Convolution)을 통해 이미지의 작은 부분에서 특징을 추출하고, 풀링(Pooling)을 통해 차원을 줄이며 중요한 정보를 보존
- 주요 용도 : 주로 이미지 분류(Classification), 객체 탐지(Object Detection), 세그멘테이션(Segmentation) 등과 같은 컴퓨터 비전 작업에 사용
- 강점 : 이미지의 공간적 정보를 효율적으로 처리함
- RNN (Recurrent Neural Network, 순환 신경망)
- 순차적 데이터(시간의 흐름에 따른 데이터, 예: 텍스트, 오디오, 시계열 데이터)를 처리하기 위해 만들어진 신경망
- 이전 상태의 출력을 다음 상태로 전달하여 이전의 정보를 기억하면서 연산을 수행
- 순환 구조 : RNN은 각 시점에서 입력을 받고 그 입력을 처리한 후 그 출력을 다음 단계로 전달하여 이전 정보를 계속 참조할 수 있음. 이를 통해 시계열 데이터나 텍스트 같은 순차적 데이터에서 맥락을 유지할 수 있음
- 주요 용도 : 자연어 처리(NLP), 음성 인식, 기계 번역, 시계열 예측 등에 사용
- 제한점 : 장기간의 의존성(오래된 정보)을 기억하기 어려운 기울기 소실 문제(Gradient Vanishing Problem)가 있음. 이를 해결하기 위해 LSTM(Long Short-Term Memory)과 GRU(Gated Recurrent Unit)와 같은 변형 RNN이 개발됨
- Transformer
- RNN과 달리 순차적으로 데이터를 처리할 필요 없이 병렬 연산을 통해 훨씬 더 빠르고 효율적으로 순차적 데이터를 처리하는 신경망; Attention Mechanism(어텐션 메커니즘)을 기반으로 하며, 입력 데이터의 중요한 부분에 더 집중할 수 있음
- Attention Mechanism : Transformer의 핵심은 Self-Attention 메커니즘으로, 입력 데이터의 각 단어(또는 요소)가 다른 모든 단어와의 관계를 학습해 중요한 정보를 추출하는 방식. 이를 통해 입력 문장 전체에서 중요한 부분을 빠르게 파악할 수 있음
- 병렬 처리 : RNN은 시퀀스를 한 단계씩 처리해야 하지만, Transformer는 병렬로 모든 단어를 처리할 수 있어 처리 속도가 훨씬 빠름
- 주요 구성 : Encoder-Decoder 구조로 이루어져 있음
- EX : BERT(Bidirectional Encoder Representations from Transformers)나 GPT(Generative Pre-trained Transformer)
- 주요 용도 : 자연어 처리, 기계 번역, 텍스트 생성, 요약 등 다양한 NLP 작업에서 탁월한 성능을 보임
- 장점 : RNN에 비해 긴 문맥도 쉽게 처리할 수 있고, 학습 속도도 빠름
인공 신경망 유형 | ||||
MLP | CNN | RNN | Transformer | |
주요 특징 | 완전 연결층(Fully Connected Layer) | 합성곱층(Convolutional Layer)과 풀링층(Pooling Layer) 사용 | 순환 구조, 시계열 데이터 학습 | Attention Mechanism 사용, 병렬 처리 |
주요 용도 | 분류, 회귀 | 이미지 처리, 컴퓨터 비전 | 자연어 처리, 음성 인식, 시계열 데이터 분석 | 자연어 처리, 기계 번역, 텍스트 생성 |
입력 데이터 유형 | 수치형 데이터 | 이미지, 영상 | 텍스트, 음성, 시계열 데이터 | 텍스트, 시계열 데이터 |
처리 방식 | 모든 입력을 동일하게 처리 | 공간적 구조와 패턴을 학습 | 순차적으로 데이터를 처리, 이전 상태 참조 | 병렬로 모든 입력을 처리, 중요한 정보에 집중 |
장점 | 간단한 구조, 다양한 데이터 처리 | 이미지의 공간적 정보 학습에 최적화 | 시계열 데이터에서 맥락 유지 가능 | 긴 문맥 처리에 뛰어나고 빠름 |
단점 | 공간적 정보 처리에 비효율적 | 비순차적 데이터 처리에 한계 | 장기간 의존성 문제(기울기 소실), 학습 느림 | 복잡한 구조, 대량의 데이터와 연산 필요 |
4) CNN
① CNN의 구조 및 연산 과정
- Convolution Layer
- 커널(필터)을 사용해 데이터에서 국소적인 패턴을 추출. 예를 들어, 이미지에서 경계선, 텍스처 등을 인식
- 커널이 입력 데이터의 국소 영역을 슬라이딩하면서 연산을 수행해 특징 맵을 생성
- 커널 사이즈가 클수록 더 많은 영역을 한 번에 학습하지만, 연산량이 증가함
- Pooling Layer
- Pooling : CNN의 연산법으로, 입력 이미지의 크기를 줄이면서 중요한 특징을 유지하는 방법
- Max Pooling(최대값만 선택): 주어진 영역에서 가장 큰 값을 선택해 데이터의 중요한 정보만 남김
- Average Pooling(평균값을 선택): 주어진 영역의 값을 평균 내어 데이터를 요약함
- Pooling은 차원을 줄이고 계산 비용을 줄이는 동시에 오버피팅을 방지하는 역할을 함
- Fully Connected Layer
- 이전 레이어에서 추출된 특징을 Flatten하여, 전통적인 MLP 방식으로 분류나 회귀 작업을 수행
- Stride
- 커널이 한 번에 이동하는 칸 수
- Stride가 클수록 데이터에서 추출되는 정보가 더 적어지지만, 연산량이 줄어듦
- Padding
- 입력 데이터의 가장자리를 처리할 때 0으로 채워서, 출력 데이터의 크기를 입력 데이터와 동일하게 유지
- 이를 통해 정보 손실 없이 경계선을 학습할 수 있음
② Gradient Vanishing 문제와 해결 방안
- Gradient Vanishing 문제 : 신경망이 깊어질수록, 역전파 과정에서 기울기가 사라져 학습이 제대로 이루어지지 않는 현상
- ResNet (Residual Networks)은 스킵 연결(skip connection)을 도입하여 일부 계층을 건너뛰어 학습하는 방식으로 이 문제를 해결. 이를 통해 더 깊은 신경망에서도 학습이 원활하게 이루어짐
③ CNN과 MLP의 성능 차이
- CNN은 이미지, 영상과 같은 시각적 데이터를 다룰 때 뛰어난 성능을 보임. 반면, MLP는 전통적인 구조화된 데이터(예: 표 형식의 데이터)에서 효과적
- CNN이 처리하는 데이터는 주로 국소적 관계가 중요한 반면, MLP는 전역적 관계를 학습하는 데 중점을 둠
- 최근 많은 딥러닝 모델이 CNN 기반으로 발전해 왔으며, 특히 이미지 인식 및 객체 탐지 분야에서 강력한 성능을 자랑함
④ 주요 CNN 모델
- AlexNet:
- CNN의 초기 모델로 이미지 분류 대회에서 큰 성과를 냈으며, 딥러닝의 발전을 이끈 모델 중 하나
- VGGNet:
- 매우 깊은 네트워크 구조로 구성되며, 각 레이어에서 작은 필터(3x3)를 사용. 하지만 연산량이 매우 많아 비효율적일 수 있음
- ResNet:
- 잔차 신경망을 사용해 Gradient Vanishing 문제를 해결. 레이어를 매우 깊게 쌓을 수 있으며, 현재 많이 사용되는 모델 중 하나
- GoogLeNet (Inception):
- 병렬 구조를 사용해 여러 크기의 필터를 동시에 적용, 다양한 특성을 학습함. 효율성과 성능의 균형을 맞춘 모델
- EfficientNet:
- 성능과 효율성에 중점을 두며, 빠른 연산 속도와 적은 자원을 사용하면서도 준수한 성능을 보여줌
⑤ CNN 모델 비교
CNN을 사용하는 모델 | |||||
AlexNet | VGGNet | ResNet | GoogLeNet (Inception) |
EfficientNet | |
특징 | CNN의 초기 모델로 이미지 분류 대회에서 큰 성과를 냈으며, 딥러닝의 발전을 이끈 모델 중 하나 | 매우 깊은 네트워크 구조로 구성되며, 각 레이어에서 3x3 필터 사용. 연산량이 매우 많아 비효율적일 수 있음 | 잔차 신경망을 사용해 Gradient Vanishing 문제 해결. 레이어를 매우 깊게 쌓을 수 있음 | 병렬 구조를 사용해 여러 크기의 필터를 동시에 적용, 다양한 특성을 학습. 효율성과 성능의 균형을 맞춤 | 성능과 효율성에 중점, 빠른 연산 속도와 적은 자원을 사용하면서도 준수한 성능 |
주요 기여 | 딥러닝의 발전을 촉진, 이미지 분류에서 큰 성과 | 딥러닝 모델을 깊게 쌓는 것의 효과를 증명 | Gradient Vanishing 문제 해결, 딥러닝 모델을 더 깊게 쌓는 길 열림 | 병렬 처리 및 다양한 필터 크기 사용을 통한 효율성 증대 | 적은 자원으로도 준수한 성능을 발휘, 효율성 극대화 |
필터 크기 | 다양한 크기 | 3x3 작은 필터 | 3x3 필터 + 잔차 연결 | 다양한 크기의 필터 병렬 적용 | 다양한 크기, 효율성에 맞춘 필터 사용 |
레이어 깊이 |
8개 | 최대 19~24개 | 수백 개 이상의 레이어 구성 가능 | 다양한 레이어 조합 | 적은 레이어로 높은 성능 |
주요 단점 | 비교적 단순한 구조 | 연산량이 너무 많음, 비효율적 | 복잡한 구조, 메모리 사용량 증가 | 구조가 복잡해 학습 및 구현 어려움 | 최고 성능은 아니지만 성능 대비 효율성 우수 |
⑥ 비 CNN 모델 비교
CNN이 아닌 다른 신경망을 사용하는 모델 | ||||
Vision Transformers (ViT) | YOLO (You Only Look Once) | Capsule Networks | Hybrid Models | |
특징 | Attention 메커니즘을 사용하여 이미지 내 전역적인 관계를 학습. CNN 없이도 이미지 처리 가능 | 객체 탐지에 특화된 모델로, 매우 빠른 연산 속도를 제공하며, 실시간 객체 탐지 가능 | CNN의 한계를 보완하기 위해 각 캡슐이 다양한 각도로 학습된 객체 정보를 추출. 객체의 위치, 방향에 민감 | CNN과 Transformer 등 여러 모델을 결합해 장점을 극대화 |
주요 기여 | CNN 없이 이미지와 같은 시각 데이터를 처리하는 새로운 방식 제시. Transformer를 이미지 처리에 도입 | 빠른 연산과 실시간 객체 탐지. 높은 정확도와 효율성 | CNN이 잘 처리하지 못하는 객체의 포즈나 위치 정보 학습 | 서로 다른 모델의 장점을 조합하여 더 나은 성능을 발휘 |
주요 장점 | Transformer를 사용해 전역적 정보 학습. 긴 의존 관계 처리에 탁월 | 실시간 객체 탐지가 가능할 정도로 연산 속도가 빠름. 다양한 환경에서 높은 정확도 제공 | 객체의 회전, 위치 변화에 대해 더 정교한 학습을 함 | CNN의 국소적 특성과 Transformer의 전역적 관계 학습을 결합 |
주요 단점 | 매우 큰 모델로, 학습에 많은 데이터와 연산 자원이 필요함 | 작은 객체를 탐지하는 데 약간의 한계 | 구현 복잡성, 네트워크의 학습 및 해석이 어려울 수 있음 | 복잡한 구조로 인해 연산 자원 소모가 많고, 조정이 어려울 수 있음 |
적용 분야 | 이미지 분류, 객체 탐지, 영상 분석 | 실시간 객체 탐지 (자율주행, 보안, 영상 처리) | 3D 객체 인식, 포즈 추정 | 다양한 멀티모달 데이터 처리 (영상, 이미지, 텍스트 등) |
5) Fine-Tuning
① 정의
- 사전 학습된 모델(Pre-trained model)을 새로운 데이터에 맞게 미세 조정하는 과정
- 새로운 데이터셋에 맞춰 모델을 다시 학습시키는 대신, 이미 학습된 모델의 성능을 효율적으로 개선함
- 데이터가 적거나, 학습 시간이 제한된 상황에 유용
② Fine-Tuning 5단계
- Pre-trained 모델 임포트: 기존에 학습된 모델을 불러와 새로운 데이터셋에 적용
- 레이어 고정: 기존 모델의 초기 레이어를 고정해 기존 학습된 저수준 패턴을 유지
- 새로운 출력 레이어 추가: 새로운 데이터셋에 맞는 출력 레이어를 추가하여 맞춤형 모델 구성
- 새로운 데이터셋으로 학습: 새로운 레이어를 학습하며, 기존 레이어는 고정
- 모델 평가 및 추가 미세 조정: 필요시 고정된 레이어를 일부 해제하고 추가 학습, 성능 향상
6) Attention Mechanism
① 정의
- 모든 입력에 동일한 중요도를 부여하는 대신, 특정 부분에 가중치를 부여하여 모델이 중요한 부분에 더 집중하게 만듦
- 긴 문장이나 복잡한 입력에서 중요한 요소를 골라내는 데 유용함
- 딥러닝, 특히 자연어 처리(NLP), 컴퓨터 비전(CV)에서 사용되는 기법
② 작동 원리
- 입력과 출력 관계
- 어텐션은 각 입력이 다른 입력과 얼마나 관련이 있는지를 계산
- 예를 들어, 번역 모델에서는 하나의 단어가 그 문장에서 어떤 다른 단어와 강하게 연결되는지를 파악
- 가중치 계산
- 어텐션 메커니즘은 입력 간의 유사도를 계산하여 가중치를 부여
- 이 가중치를 기반으로 모델은 어느 부분에 집중할지를 결정. 중요한 부분은 높은 가중치를 받고, 덜 중요한 부분은 낮은 가중치를 받음
- 합성 출력
- 각 입력의 가중치가 계산된 후, 이 가중치가 반영된 합성 출력을 만듦. 이 과정에서 중요한 부분은 더 강조되며, 덜 중요한 부분은 무시
③ 주요 활용
- 자연어 처리(NLP)
- 번역(Translation): 예를 들어, 영어 문장을 다른 언어로 번역할 때, 모든 단어에 동일한 중요도를 부여하는 대신, 어텐션을 사용해 번역 시 중요 단어에 더 집중
- 텍스트 생성: GPT, BERT 같은 모델은 어텐션을 활용해 텍스트의 앞뒤 문맥을 파악하고, 중요한 부분에 집중하여 문장을 생성
- 컴퓨터 비전
- 이미지 분석: 이미지 내 특정 부분에 더 집중하는 방식으로 객체 탐지, 이미지 설명 생성 등에 활용
- Vision Transformers (ViT): CNN이 아닌 어텐션 메커니즘을 사용해 이미지의 중요한 영역을 파악하고 처리
④ 종류
- Self-Attention
- 입력의 각 요소가 다른 요소와 비교되는 것이 아니라, 자기 자신과 비교하여 중요한 부분을 찾는 방식
- Transformer 모델에서 많이 사용되며, 입력 데이터 간의 복잡한 관계를 파악하는 데 강력한 효과를 발휘
- Multi-Head Attention
- 여러 개의 어텐션 메커니즘을 동시에 사용하여 다양한 패턴을 파악하는 방식
- 모델이 다양한 측면에서 데이터를 볼 수 있도록 하여 성능을 높임. 이는 Transformer에서 중요한 부분
7) Sliding Window
① 정의
- CNN에서 Convolution Layer가 이미지를 처리하는 방식
- 필터(커널)를 사용해 입력 데이터(주로 이미지)의 작은 영역을 반복적으로 읽으면서, 특정 패턴을 추출
② 작동 원리
- 필터(커널): 일반적으로 3x3, 5x5 같은 작은 크기의 필터가 이미지의 국소적인 부분을 스캔
- 슬라이딩: 필터가 이미지의 좌측 상단부터 시작해 오른쪽으로 이동하며, 일정 간격으로 다음 위치로 슬라이딩(이동)함. 각 위치에서 필터는 해당 부분의 픽셀 값들과 연산(보통 곱셈 후 합산)을 수행해 특징 맵(feature map)을 생성
③ 예시
- 3x3 필터가 5x5 이미지에 대해 적용되면, 필터는 이미지에서 3x3 크기의 작은 영역을 한 번에 처리하고, 한 칸씩(스트라이드 1) 오른쪽으로 이동함. 다음 행에서는 다시 좌측부터 시작하여 아래로 이동하면서 반복
④ 효과
- 필터가 이미지를 국소적으로 분석하면서 지역적 패턴(예: 경계선, 텍스처)을 추출하는 역할을 함
- 필터 크기가 작을수록 세밀한 패턴을 학습할 수 있고, 필터 크기가 클수록 넓은 영역의 정보를 학습할 수 있음
8) Stride
① 정의
- 필터(커널)가 이동하는 간격을 의미. 필터가 한 번 연산을 수행한 후 다음 위치로 얼마나 멀리 이동할지를 결정하는 매개변수
② 작동 원리
- Stride = 1: 필터가 한 번 연산을 수행한 후 한 칸씩 이동
- Stride = 2: 필터가 한 번 연산을 수행한 후 두 칸씩 건너서 이동
- 스트라이드 값이 커질수록 필터가 한 번에 건너뛰는 칸 수가 늘어나며, 특징 맵의 크기가 더 작아짐. 스트라이드 값이 작을수록 더 많은 부분을 세밀하게 처리하지만, 출력 데이터(특징 맵)의 크기는 커짐
③ 예시
- Stride = 1: 필터가 1칸씩 이동하며, 각 픽셀 영역을 세밀하게 분석. 입력 크기가 5x5일 경우, 출력 크기는 3x3
- Stride = 2: 필터가 2칸씩 이동하며, 더 많은 부분을 건너뛰므로 출력 크기가 더 작아집니다. 입력 크기가 5x5일 경우, 출력 크기는 2x2
④ 효과
- 스트라이드는 연산 효율성과 특징 맵의 크기에 영향을 줌
- 작은 스트라이드(예: 1)는 필터가 많은 위치에서 연산을 수행하므로, 더 많은 정보를 추출하고 세밀한 특징 맵을 생성하지만, 연산량이 많아짐
- 큰 스트라이드(예: 2 이상)는 필터가 더 넓은 간격으로 이동하며, 연산량이 적고 출력 크기가 더 작아집니다. 하지만 세밀한 정보를 잃을 수 있음
9) Early Stopping
① 정의
- 모델의 학습을 조기에 종료하는 기법
- 과적합(overfitting)을 방지하기 위해, 검증 데이터(validation data) 성능이 더 이상 향상되지 않을 때 학습을 멈추는 방법
- 이를 통해 학습 시간이 단축되며, 모델이 검증 데이터에서 더 나은 일반화 성능을 보일 수 있음
- TensorFlow에서는 tf.keras.callbacks.EarlyStopping을 사용하여 이 기능을 구현
② 장점
- 과적합 방지: 더 이상 검증 성능이 향상되지 않는 시점에 학습을 멈추어 모델의 일반화 성능을 높임
- 시간 절약: 모델이 최적 성능에 도달한 시점에서 학습을 종료하여 불필요한 반복을 방지
③ 잔점
- patience 값이 너무 작으면, 학습이 일시적으로 멈추었을 때, 성능이 다시 향상될 기회를 놓칠 수 있음
- patience 값이 너무 크면, 학습 종료가 늦어지면서 불필요한 학습이 계속될 수 있음
📙 내일 일정
- Deep Learning 실습
'TIL _Today I Learned > 2024.09' 카테고리의 다른 글
[DAY 41] Deep Learning 실습 (0) | 2024.09.09 |
---|---|
[DAY 40] Deep Learning 실습 (0) | 2024.09.06 |
[DAY 38] 딥러닝 모델의 최적화 및 평가 (0) | 2024.09.04 |
[DAY 37] 딥러닝 프레임워크 (5) | 2024.09.03 |
[DAY 36] Machine Learning 실습 (0) | 2024.09.02 |