본문 바로가기
TIL _Today I Learned/2024.09

[DAY 39] Deep Learning 실습

by gamdong2 2024. 9. 5.
[천재교육] 프로젝트 기반 빅데이터 서비스 개발자 양성 과정 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는 시계열 데이터나 자연어 처리와 같은 순차적 데이터를 다루는 인공신경망

② 유형

  1. MLP (Multilayer Perceptron, 다층 퍼셉트론)
    • MLP는 가장 기본적인 형태의 신경망 중 하나로, Fully Connected Layer(완전 연결층)로 이루어져 있음
    • 입력층(Input layer), 숨겨진 층(Hidden layer), 그리고 출력층(Output layer)으로 구성되며, 각 노드(뉴런)는 이전 층의 모든 노드와 연결되어 있음
    • 주요 용도 : 표형 데이터(ex : 수치형 데이터)에서 분류 및 회귀 문제 해결에 사용
    • 제한점 : 이미지와 같은 공간적 정보를 처리하는 데는 비효율적임. 이미지의 공간적 구조를 무시하고 모든 픽셀을 한 줄로 평평하게 처리하기 때문에 이미지 패턴을 제대로 학습하지 못할 수 있음
  2. CNN (Convolutional Neural Network, 합성곱 신경망)
    • 이미지영상 데이터를 처리하는 데 최적화된 신경망 구조. 이미지의 공간적 구조 패턴을 학습하는 데 뛰어남
    • Convolutional Layer(합성곱층), Pooling Layer(풀링층), Fully Connected Layer(완전 연결층) 등의 여러 계층으로 구성됨
    • 합성곱(Convolution)을 통해 이미지의 작은 부분에서 특징을 추출하고, 풀링(Pooling)을 통해 차원을 줄이며 중요한 정보를 보존
    • 주요 용도 : 주로 이미지 분류(Classification), 객체 탐지(Object Detection), 세그멘테이션(Segmentation) 등과 같은 컴퓨터 비전 작업에 사용
    • 강점 : 이미지의 공간적 정보를 효율적으로 처리함
  3. RNN (Recurrent Neural Network, 순환 신경망)
    • 순차적 데이터(시간의 흐름에 따른 데이터, 예: 텍스트, 오디오, 시계열 데이터)를 처리하기 위해 만들어진 신경망
    • 이전 상태의 출력을 다음 상태로 전달하여 이전의 정보를 기억하면서 연산을 수행
    • 순환 구조 : RNN은 각 시점에서 입력을 받고 그 입력을 처리한 후 그 출력을 다음 단계로 전달하여 이전 정보를 계속 참조할 수 있음. 이를 통해 시계열 데이터나 텍스트 같은 순차적 데이터에서 맥락을 유지할 수 있음
    • 주요 용도 : 자연어 처리(NLP), 음성 인식, 기계 번역, 시계열 예측 등에 사용
    • 제한점 : 장기간의 의존성(오래된 정보)을 기억하기 어려운 기울기 소실 문제(Gradient Vanishing Problem)가 있음. 이를 해결하기 위해 LSTM(Long Short-Term Memory)과 GRU(Gated Recurrent Unit)와 같은 변형 RNN이 개발됨
  4. 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 실습