1. 딥러닝 개념 및 기본 이론
(1) 딥러닝이란 무엇인가?
딥러닝은 인공 신경망(Artificial Neural Networks, ANN)을 기반으로 한 머신러닝의 한 분야이다. 여러 층(layer)로 이루어진 신경망을 사용하여 복잡한 데이터에서 패턴을 학습하고 추출할 수 있다. 대표적인 딥러닝 모델로는 합성곱 신경망(CNN), 순환 신경망(RNN), 변환자(Transformer) 등이 있다.
(2) 딥러닝과 머신러닝의 차이점은 무엇인가?
- 머신러닝: 컴퓨터가 데이터를 기반으로 학습하여 패턴을 인식하고 예측하는 기술. 주로 특징(feature)을 사람이 직접 설계해야 함.
- 딥러닝: 딥러닝은 머신러닝의 한 분야로, 인공 신경망을 이용하여 데이터에서 자동으로 특징을 추출하는 능력을 갖춤. 따라서 딥러닝은 보다 복잡한 문제를 해결하는 데 적합하다.
- 인공지능 vs 머신러닝 vs 딥러닝 간단 비교
- 인공지능: 인간의 사고 능력을 모방하는 모든 기술
- 머신러닝: 데이터를 학습하여 패턴을 찾아 예측하는 기술
- 딥러닝: 신경망을 활용한 머신러닝의 한 분야
(3) 딥러닝의 장점과 단점
✅ 장점:
- 데이터에서 자동으로 특징(feature)을 추출하여 사람이 직접 특징을 설계할 필요가 없음.
- 복잡한 비선형 문제를 해결할 수 있음.
- 대량의 데이터를 학습하여 높은 성능을 낼 수 있음.
❌ 단점:
- 많은 데이터와 연산 자원이 필요함.
- 학습 과정이 복잡하고 시간이 오래 걸릴 수 있음.
- 과적합(Overfitting)이 발생할 위험이 있음.
(4) 머신러닝의 주요 유형
1. 지도 학습(Supervised Learning): 입력 데이터와 정답(출력)이 주어진 상태에서 학습하는 방법.
- 예시: 선형 회귀, 로지스틱 회귀, 서포트 벡터 머신(SVM), 신경망(ANN)
2. 비지도 학습(Unsupervised Learning): 출력값이 없이 데이터의 패턴을 분석하는 방법.
- 예시: K-평균 군집화(K-Means), 주성분 분석(PCA), 오토인코더(Autoencoder)
3. 강화 학습(Reinforcement Learning): 에이전트(Agent)가 환경과 상호작용하며 보상을 최대화하는 방향으로 학습하는 방식.
- 예시: 알파고(AlphaGo), 자율주행 자동차, 게임 AI
(5) 분류(Classification)와 회귀(Regression) 문제의 차이점은?
- 분류(Classification): 데이터를 미리 정의된 범주(category)로 분류하는 문제 (예: 개 vs. 고양이 분류).
- 회귀(Regression): 연속적인 수치 값을 예측하는 문제 (예: 주택 가격 예측).
(6) Bias-Variance Tradeoff란?
Bias-Variance Tradeoff는 모델의 복잡도와 일반화 성능 사이의 관계를 설명하는 개념으로, 편향(Bias)이 낮으면 분산(Variance)이 높아지고, 편향이 높으면 분산이 낮아지는 경향을 의미
✔ 편향(Bias)
- Training data에서의 오차(error)로, 모델이 데이터의 패턴을 잘 학습하지 못하는 정도를 의미.
- 편향(Bias)이 높은 모델은 학습 데이터의 복잡한 패턴을 제대로 반영하지 못해 과소적합(Underfitting)될 가능성이 있음.
- 하지만 Training data에는 노이즈가 포함될 수 있기 때문에, Bias가 0이 된다고 항상 좋은 것은 아님.
✔ 분산(Variance)
- Training set과 Validation set에서의 성능 차이를 나타내는 지표.
- 분산이 높은 모델은 학습 데이터에 너무 민감하게 반응하여 과적합(Overfitting)될 가능성이 있음.
- 즉, 학습 데이터의 노이즈까지 학습하여 새로운 데이터에 대한 예측 성능이 떨어질 수 있음.
✔ Bias-Variance Tradeoff를 고려하여 편향과 분산 사이의 균형 맞추는 것이 중요
- 편향이 높은 모델 → 너무 단순하여 학습 데이터의 중요한 패턴을 놓침 → Underfitting 발생
- 분산이 높은 모델 → 학습 데이터에 너무 맞춰져 일반화가 안 됨 → Overfitting 발생
- 따라서, 편향과 분산 사이의 균형을 맞추는 것이 중요하며, 이를 통해 모델의 일반화 성능을 최적화할 수 있음
(7) 왜 딥러닝이 인공지능에 큰 영향을 미치고 있는가?
- 자동 feature 추출: 딥러닝 모델은 여러 층을 거치면서 데이터에서 자동으로 feature를 추출하고 학습, 이로 인해 사람의 개입이 줄어들고 더 정교한 패턴 인식 가능
- 큰 데이터셋 처리: 딥러닝은 대용량의 복잡한 패턴 학습하는데 탁월한 성능을 보임
- 강력한 하드웨어 지원: GPU와 같은 고성능 하드웨어의 발전으로 딥러닝 모델의 학습 속도 크게 향상. 이로 인해 더욱 복잡하고 싶은 neural network 상용할 수 있게 되었고, 인공지능 분야 발전 가속화.
2. 주요 딥러닝 모델과 알고리즘
1) CNN(합성곱 신경망)
(1) CNN이란 무엇이고 언제 사용되는가?
CNN은 주로 이미지 인식과 관련된 문제를 해결하기 위한 딥러닝 모델로, Convolution layer과 Pooling layer을 사용하여 이미지의 지역적 특징을 추출하고, 이를 기반으로 이미지 분류 등의 작업을 수행함.
(2) CNN에서 Convolution layer(합성곱층)의 역할
입력 이미지에 필터를 적용하여 feature map을 추출하는 역할을 함. 이를 통해 이미지의 공간 정보와 지역적 특성을 보존할 수 있음
(3) CNN에서 Pooling layer(풀링층)의 역할과 종류 (Max Pooling, Average Polling 등..)
pooling layer는 feature map의 크기를 줄이는 역할을 하여, 연산량을 감소시키고 overfitting을 방지함.
왜 pooling layer가 overfitting을 방지할까?
- Feature Map 크기 감소로 인한 모델의 복잡도 축소: feature map의 크기를 줄여 모델의 파라미터 수가 감소하기 때문에, 모델이 너무 많은 정보를 외우지 않고 더 일반적인 특징 학습
- Translation Invariance: Pooling을 적용하면 특정 패턴이 정확히 어디에 있는지보다 존재 여부에 집중하게 됨. 따라서 세부적인 변화 등에 덜 민감해져 일반화 성능이 향상됨
- Noise 감소 효과: Pooling은 세부적인 작은 변화를 무시하고 중요한 특징만 남김. 따라서 학습 데이터의 노이즈가 줄어들어 불필요한 세부사항에 집착하지 않게 됨
pooling layer의 종류
- Max Pooling: 지정된 영역에서 최댓값만 추출하는 방식, 이미지에서 가장 강한 특징을 남김(edges, corners 등)
- Average Pooling: 지정된 영역에서 평균을 계산하여 대표값으로 사용하는 방식. 전체적인 정보 보존효과가 있지만 중요한 특징(Edge 등)이 약해질 수 있음
- Global Pooling: 전체 입력을 하나의 값으로 축소, CNN의 마지막 단계에서 Fully Connected Layer를 대체할 때 사용, 파라미터 수를 크게 줄여 연산량이 감소되지만 세부 정보 손실의 가능성이 있음
- L2 Pooling: 지정된 영역의 값들을 제곱합한 후 제곱근을 취하는 방식. Average Pooling보다 더 부드러운 feature map 생성. Max pooling 과 average pooling의 중간 성질을 가짐. 하지만 연산량이 증가
(4) CNN 모델과 단순 feed-forward 모델을 비교한다면, 어느 쪽이 파라미터가 더 많은가?
입력의 차원이 같을 경우 일반적으로 feed-forward 모델의 파라미터가 훨씬 많다.
- Fully Connected Layer(FFNN): fully connected layer로 구성되어 모든 뉴런이 연결됨 → 입력 크기가 커지면 학습할 weight가 기하급수적으로 증가
- CNN (Convolution Layer): 작은 크기의 필터를 학습하고, 이 필터를 전체 이미지에서 반복적으로 적용(Weight Sharing)
→ 필터 크기만큼만 학습하면 되니까 weight 수가 크게 줄어든다!
2) RNN(순환 신경망) 및 변형 모델
(1) RNN이란 무엇이고 어떤 경우에 사용되는가?
RNN은 시퀀스 데이터를 처리하는데 적합한 딥러닝 구조로, 내부에 순환 구조를 가지고 있어 과거의 정보를 기억하고, 이를 기반으로 시퀀스의 다음 값을 예측하거나 분류하는데 사용. 자연어 처리, 음성인식, 시계열 데이터 분석 등에 사용된다.
RNN의 문제 -> 장기 의존성 문제(Long-Term Dependency Issue)
시퀀스가 길어질수록 과거 정보를 잊어버리는 문제, 주요 원인으로 gradient vanishing이 있음.
✔역전파(Backpropagation)를 통해 초기 시점의 정보가 기울기(Gradient)를 통해 전파됨.
✔ 그런데 시퀀스가 길어질수록, 기울기가 너무 작아지는(= 0에 수렴하는) 현상 발생
✔ 즉, 초기의 정보가 후반부에 거의 전달되지 않음 → 과거 정보를 기억하지 못함
(2) LSTM(Long Short-Term Memory)과 GRU(Gated Recurrent Unit)의 차이점
LSTM과 GRU는 RNN의 변형 모델로, 기존 RNN의 장기 의존성 문제(Long-Term Dependency Issue)를 해결하기 위해 개발
🔹 LSTM & GRU의 공통점
✔ 둘 다 RNN의 한 종류이며, 기존 RNN보다 장기 기억이 가능함.
✔ 게이트(Gate) 구조를 사용하여 중요한 정보를 유지하고 불필요한 정보를 제거함.
📌 LSTM(Long Short-Term Memory) 특징
- 3가지의 게이트 구조를 가짐
- Input Gate: 새로운 정보를 저장할지 결정
- Forget Gate: 과거 정보를 얼마나 유지할지 결정
- Output Gate: 현재 상태를 다음 단계로 보낼지 결정
- ✔ 정보 흐름을 조절하여 기울기 소실(Gradient Vanishing) 문제를 완화하여 장기기억이 가능하다
- ❌ 구조가 복잡하고 연산량이 많음
📌 GRU(Gated Recurrent Unit) 특징
- GRU는 LSTM보다는 간단한 구조를 가지며 2개의 gate가 있다.
- Reset Gate: 과거 정보를 얼마나 버릴지 결정
- Update Gate: 새로운 정보를 얼마나 반영할지 결정
- ✔ LSTM보다 구조가 단순하여 연산량이 적고 학습 속도가 빠름
- ✔ 짧은 시퀀스 데이터에서는 LSTM과 성능이 비슷하면서 더 효율적
- ❌ LSTM보다 장기 의존성 유지가 어려울 수 있음
3) 트랜스포머(Transformer) 모델 및 자연어 처리(NLP)
(1) Transformer 모델이란 무엇이며 어떤 특징이 있나?
Transformer는 순환 신경망(RNN)없이도 시퀀스 데이터를 효과적으로 처리하는 모델로, self-attention 메커니즘을 활용하여 입력 데이터의 중요한 패턴을 학습함.
✔ 주요 특징
- 기존 RNN처럼 순차적으로 처리하지 않고 병렬 연산이 가능 → 학습 속도가 빠름
- 긴 시퀀스(Long-Term Dependency)를 효과적으로 학습 가능 → RNN의 단점 보완
- Self-Attention 기법을 사용하여 입력 데이터의 모든 요소가 서로의 관계를 고려함
(2) Transformer의 self-attention에 대해 설명하시오
입력 문장의 모든 단어가 서로를 참조하여(비교하면서) 각 단어가 얼마나 중요한지 가중치(Weight)를 부여하는 방법
쉽게 말해서, 문맥 속에서 특정 단어가 다른 단어와 얼마나 연관이 있는지 계산하는 과정
🔹 동작 방식
1️⃣ 각 단어를 query, key value 벡터로 변환한다.
- Query: 현재 단어가 어떤 정보를 찾고 싶은지
- Key: 현재 단어의 특성을 나타냄
- Value: 실제 단어의 정보를 담고 있는 벡터
2️⃣ Query와 Key를 내적하여 유사도를 계산함. -> 각 단어 간의 연관성을 찾고 어떤 단어가 중요한지 파악하는 과정
3️⃣ softmax를 적용하여 weight를 계산함 (각 단어의 모든 단어들에 대한 유사도의 합이 1이 되도록)
4️⃣ 계산한 weight를 Value에 곱하여 최종적인 출력 벡터를 생성한다.
(3) Transformer의 positional encoding에 대해 설명하시오
RNN의 경우 입력을 순차적으로 처리하므로 자연스럽게 단어의 순서를 반영하지만, Transformer는 입력을 병렬 처리하므로, 단어 순서를 직접 알 수 없음. 따라서 단어에 위치 정보를 추가하여 순서를 반영해야함
각 단어의 위치를 사인과 코사인 함수를 사용하여 벡터로 변환한 뒤 이 벡터를 입력 embedding 벡터에 더하여, 모델이 위치 정보를 인식할 수 있게함
(4) Transformer의 Multi-head attention에 대해 설명하시오
self-attention 여러개를 병렬로 실행하여, "다양한 시각에서 관계를 학습할 수 있도록 하는 기법", 단일 self-attention은 하나의 시각에서만 단어의 관계를 분석하는데, 문맥 속에서 단어는 여러개의 의미를 가질 수 있음.
🔹 동작 방식
1️⃣ 여러 개의 Query, Key, Value 행렬을 만들고(값이 서로 다름)
2️⃣ 각 행렬에 대해 Self-Attention을 독립적으로 수행
3️⃣ 모든 어텐션 결과를 합쳐서 최종 결과 생성
(5) Transformer의 구조에 대해 전체적으로 설명하시오
Transformer는 인코더(Encoder)와 디코더(Decoder)로 구성된 구조로, 순차적 처리가 필요한 RNN과 달리 Self-Attention을 활용한 병렬 연산이 가능하다. 인코더는 입력을 처리하여 문맥 정보를 추출하고, 디코더는 이를 바탕으로 최종 출력을 생성한다. 주요 구성 요소로는 Multi-Head Attention, Feed-Forward Network, Positional Encoding, Layer Normalization 등이 있다.
(6) BERT 모델이란 무엇이며 어떻게 학습되는가?
BERT(Bidirectional Encoder Representations from Transformers)는 트랜스포머 기반의 언어 모델로, 양방향 인코더를 사용하여 문맥을 고려한 단어 임베딩을 생성한다. Maked Language Modeling기법으로 학습된 후,(입력 문장에서 일부 단어 가리고 가려진 단어 예측하도록 학습) 다양한 NLP 작업에 맞게 미세 조정된다.
🔹 활용 분야
✅ 문장 분류 (감성 분석, 토픽 분류)
✅ 질의응답 (정답이 포함된 문장 찾는거, 문장 생성 X)
✅ 문장 간 관계 분석 (STS, 자연어 추론)
(7) GPT 모델이란 무엇이며 어떻게 작동하나?
트랜스포머 기반의 언어 모델로, 디코더만 사용한다. 텍스트 생성에 특화되었으며 Autoregressive 방식으로 학습된다(문장의 앞부분을 보고 다음 단어 예측) 단어를 하나씩 예측하는 방식이므로 양방향정보는 활용 불가능하다(왼쪽 정보만 사용한다)
🔹 활용 분야
✅ 챗봇, 대화 생성
✅ 소설, 기사 자동 생성
✅ 코드 생성 (예: Codex, ChatGPT)
(8) 자연어 처리(NLP)에서 사용되는 임베딩이란 무엇인가?
임베딩은 단어를 고정된 크기의 수치 벡터로 변환하는 기법으로,임베딩을 활용하면 단어 간 의미적 유사성을 반영하여 NLP 모델의 성능을 향상시킬 수 있다. 단어를 단순히 원-핫 인코딩할 경우 벡터 크기가 커지고, 단어 간 관계를 표현할 수 없으므로 임베딩은 NLP에서 필수적임
✔ 대표적인 임베딩 기법
- Word2Vec: 단어를 주변 문맥과 함께 학습하여 의미를 반영한 벡터 생성 (같은 단어는 같은 표현)
- BERT Embedding: 문맥을 고려한 단어 벡터 생성 (같은 단어도 문맥에 따라 다르게 표현)
(9) 토큰화(Tokenization)란 무엇이며 어떤 종류가 있나?
토큰화는 텍스트를 의미 있는 단위(토큰)으로 분리하는 과정이다. 단어 토큰화 문장 토큰화 형태소 분석 기반 토큰화 등이 있다.
1️⃣ 단어 토큰화: 단어 단위로 나눔
- 예: "나는 밥을 먹었다." → ["나는", "밥을", "먹었다"]
2️⃣ 문장 토큰화: 문장 단위로 나눔
- 예: "안녕하세요. 만나서 반갑습니다." → ["안녕하세요.", "만나서 반갑습니다."]
3️⃣ 서브워드 토큰화: 희귀 단어 문제를 해결하기 위해, 단어를 더 작은 의미 단위로 분할
- 예: "unhappiness" → ["un", "happiness"]
- gpt와 bert에서 사용
4️⃣ 형태소 분석 기반 토큰화: 한국어처럼 띄어쓰기만으로 단어를 나누기 어려운 언어에서 사용
- 예: "나는 학교에 갔다" → ["나", "는", "학교", "에", "가", "았", "다"]
(10) Sequence-to-Sequence 모델이란 무엇이며 어떤 종류가 있는가?
시퀀스-투-시퀀스(Sequence-to-Sequence, Seq2Seq) 모델은 입력 시퀀스를 다른 도메인의 출력 시퀀스로 변환하는 딥러닝 모델이다. 일반적으로 인코더(Encoder)와 디코더(Decoder)로 구성되며,
- 인코더는 입력 시퀀스를 처리하여 잠재 표현(latent representation)을 생성
- 디코더는 인코더의 출력을 기반으로 출력 시퀀스를 생성
시퀀스-투-시퀀스 모델은 기계 번역, 음성 인식, 텍스트 요약, 대화 모델 등 다양한 시퀀스 기반 문제에 사용된다.
4) 생성 모델 및 기타 신경망
(1) 생성 모델이란?
생성 모델이란 데이터의 확률 분포를 학습하여 새로운 데이터를 생성할 수 있는 모델이다. 이때 단순히 데이터를 분류하거나 예측하는 것이 아니라, 실제 데이터와 유사한 샘플을 생성할 수 있다
➡ GAN, VAE, VQ-VAE, Diffusion Model 모두 생성 모델의 한 종류 (AutoEncoder는 생성형모델은 아님. 근데 VAE, VQ-VAE등으로 확장되면 생성형 모델)
(2) GAN의 원리와 특징
GAN은 generator(생성자)와 discriminator(판별자)가 경쟁하는 방식으로 학습하는 생성모델로,
- 생성자(G): 가짜 데이터를 생성하여 판별자를 속이려 함
- 판별자(D): 입력된 데이터가 진짜인지 가짜인지 구별
경쟁을 통해 생성자가 점점 더 현실적인 데이터를 생성하도록 학습된다. GAN을 사용하면 높은 해상도의 이미지 생성이 가능하지만, Mode Collapse등의 문제가 생길 수 있다.
Mode Collapse란?
✔GAN이 학습 중 생성자가 다양성을 잃고, 한정된 몇 가지 패턴의 데이터만 생성하는 문제이다.
✔GAN의 학습 방식이 불안정하기 때문에 생기며, 생성자가 판별자를 속이는 가장 쉬운 해결책을 찾으면 특정 모드(패턴)만 반복적으로 생성하는 경우가 발생하게 된다.
Mode Collaspe를 해결하는 방법은?
1️⃣ Mini-batch Discrimination
discriminator가 단일 샘플이 아니라 여러 샘플들을 비교하도록 하여, generator가 동일한 패턴을 만들어내면 discriminator가 이를 탐지할 수 있도록 하여 generator가 다양한 패턴 만들도록 유도
2️⃣ 다양한 노이즈 조건 추가
생성자의 입력 노이즈를 다양하게 줘서 항상 같은 결과가 나오지 않도록 함
(3) AutoEncoder란? 용도는?
AutoEncoder는 인코더와 디코더로 구성되며 입력 데이터를 인코딩 한 후 다시 디코딩하는 모델이다.
- 인코더(Encoder): 입력을 저차원 잠재 공간(latent space)으로 압축
- 디코더(Decoder): 압축된 정보를 기반으로 원본 데이터 복원
(4) GAN과 AutoEncoder의 차이
- GAN은 새로운 데이터를 생성하기 위한 목적으로 generator와 discriminator가 경쟁적 학습을 한다. 이미지 생성이나 스타일 변환 등에 사용된다.
- AE는 입력 데이터를 복원하기 위한 목적으로 encoder와 decoder로 구성되며 reconsturction loss를 최소화하는 방식으로 학습된다. 노이즈 제거나 차원 축소 등에 사용된다.
➡ 즉, GAN은 완전히 새로운 데이터를 생성, AutoEncoder는 입력 데이터에서 중요한 특징을 추출하는 데 초점
(5) VAE란?
AutoEncoder의 확장 모델로 확률분포를 학습하여 더 다양한 데이터를 생성할 수 있다.
기존 AutoEncoder는 latent space가 구조적으로 정렬되지 않아 의미있는 데이터 샘플링이 어려웠는데, VAE는 잠재 공간을 정규 분포로 매핑하여 랜덤 샘플링이 가능하다. 또한 입력 데이터와 유사하지만 다양성이 있는 데이터를 생성할 수 있다. 하지만 해상도 낮은 이미지를 생성할 수 있다는 문제가 있다.
➡ GAN처럼 새로운 데이터를 생성하지만, 더 다양한 샘플을 만들 수 있도록 확률적 성질을 부여한 모델!
(6) VQ-VAE란?
VAE의 잠재 공간을 연속적인 값이 아니라, 이산적인 코드북(Codebook)으로 변환하여 더 선명한 결과를 얻는 모델시
기존 VAE는 연속적인 잠재 벡터를 사용하여 이미지 생성 시 Blur가 발생하는 문제가 있었음. VQ-VAE는 잠재벡터를 고정된 코드북으로 양자화하여 더 선명한 결과를 생성한다.
이를 통해 고품질의 이미지, 음성을 생성할 수 있으며 Transformer와 결합하여(VQ-VAE가 출력하는 "양자화된 코드북 벡터 시퀀스"를 Transformer가 학습하는 구조) 이미지/비디오 생성 성능을 향상시킬 수 있다.
(7) Diffusion Model이란?
노이즈를 점진적으로 제거하여 고품질의 이미지를 생성하는 최신 생성 모델이다. 학습 시에 이미지에 점진적으로 노이즈를 추가하고, 생성 시에 랜덤 노이즈에서 출발하여 점진적으로 노이즈를 제거하며 이미지를 새엇ㅇ한다. GAN보다 더 안정적이고 고품질의 이미지를 생성할 수 있지만 샘플링 속도가 느리다.
diffusion model의 학습과정은 두 개의 과정으로 나뉘는데
1️⃣ Forward Process (확산 과정, Noise 추가): 원본 이미지(데이터)에 점진적으로 가우시안 노이즈를 추가하여, 결국 완전한 노이즈 상태로 변환(데이터 분포를 가우시안 분포로 변환하는 과정). 목표는 데이터의 확률분포를 모델링하는 것이다.
2️⃣ Reverse Process (생성 과정, Noise 제거): 완전한 노이즈 상태에서 원본 데이터를 복원하는 과정. 모델이 노이즈를 제거하는 방법을 학습하여 원래 이미지로 변환이 가능하다. 목표는 점진적으로 노이즈를 제거하는 것
- 완전한 노이즈 상태에서 원본 데이터를 복원하는 과정
- 모델이 노이즈를 제거하는 방법을 학습하여 원래 이미지로 변환 가능
- inference time에는 reverse process만 거치며, 가우시안 분포로부터 샘플링된 노이즈로를 사용해 이미지를 생성한다
diffusion model이 주목 받는 이유는
- mode collapse 문제 해결) GAN의 경우 다양성이 부족한 데이터를 생성하는 mode collaspe 문제가 발생했지만, diffusion model은 데이터의 확률분포를 직접 모델링하므로 더 다양한 데이터를 생성할 수 있다.
- 고퀄리티의 이미지 생성 가능) VAE는 잠재 공간을 직접 모델링 함에도 불구하고 생성한 데이터가 뭉개지는 문제가 발생함. diffusion model은 forward-backward 과정을 거치면서 보다 선명한 데이터 생성 가능
+첨언) 여기서 neural network의 역할은 t step의 noisy image로부터 노이즈를 예측해서 t-1 step의 noisy image 만들어내는거. forward process에서 더해주는 noise는 nosie scheduler에 의해 더해진다
3. 딥러닝 모델의 일반화 및 성능평가
(1) 과적합(Overfitting)은 무엇이고 어떻게 피할 수 있나?
과적합(Overfitting)은 모델이 훈련 데이터에 지나치게 적응하여, 새로운 데이터(테스트 데이터)에서 일반화 성능이 저하되는 현상이다. 이는 보통 데이터가 부족하거나 모델이 너무 복잡할 때 발생한다.
과적합 방지 방법
- 더 많은 데이터 확보: 데이터가 충분하면 모델이 학습할 일반적인 패턴을 더 잘 인식할 수 있다.
- 데이터 증강(Data Augmentation): 이미지 회전, 크기 조정 등으로 데이터를 증가시켜 일반화 성능을 향상시킨다.
- 정규화(Regularization) 기법 사용: L1(Lasso), L2(Ridge) 정규화를 적용하여 가중치의 크기를 제한하면 모델이 덜 복잡해진다.
- 드롭아웃(Dropout) 적용: 학습 중 일부 뉴런을 랜덤하게 제외하여 특정 뉴런의 의존도를 줄인다.
- 배치 정규화(Batch Normalization) 사용: 입력을 정규화하여 훈련이 안정적으로 진행되도록 돕는다.
- 조기 종료(Early Stopping): 검증 데이터의 성능이 감소하는 시점에서 학습을 멈춘다.
(2) 과소적합이란?
과소적합(Underfitting)은 모델이 훈련 데이터조차 충분히 학습하지 못하여 성능이 낮은 상태를 의미한다. 이는 보통 모델이 너무 단순하거나 학습 시간이 부족할 때 발생한다.
과소적합 해결 방법
- 더 복잡한 모델 사용
- 더 긴 학습 시간 확보
- 정규화 기법을 너무 강하게 적용하지 않기
(3) Batch Normalization이란 무엇이며 어떻게 동작하는가?
Batch Normalization은 신경망의 각 층에서 입력값을 정규화하여 학습을 안정화하고 가속하는 방법
동작방식) 미니 배치 단위로 평균과 분산을 계산하여 정규화를 수행한다. 그 다음 학습가능한 스케일링과 이동을 적용한다(batch를 재배치 하는 느낌) inference time에는 전체 데이터셋의 평균과 분산 사용한다
Batch Normalization을 수행하면 gradient vanishing 문제를 방지하고(정규화를 통해 기울기가 지나치게 작아지거나 커지는 것을 방지하여 안정적인 학습), 학습속도를 향상시키고 overfitting을 방지할 수 있다.
(4) Layer Normalization이란 무엇이며 어떻게 동작하는가?
Layer Normalization은 각 층에서 뉴런 단위로 정규화를 수행하는 기법이다. Batch Normalization과 비슷한 역할을 하지만, 배치 크기에 의존하지 않고 샘플별로 정규화를 수행한다. 배치 단위가 적을 때 유리한 방식이다. Training time과 Inference time에 동일한 방식으로 정규화 수행
(5) Dropout이란 무엇이며 왜 사용되는가?
드롭아웃은 학습 중, 뉴런의 일부를 랜덤하게 비활성화여 학습 중 특정 뉴런에 과도하게 의존하는 현상을 방지
모델의 복잡도를 낮춰(특정 경로에 의존하지 X 단순한 패턴 학습) 과적합을 방지시키고, 뉴런 간의 독립성을 증가시켜 일반화 성능을 향상시킨다
(6) 정밀도, 재현율, F1-score의 차이점
이들은 분류 모델의 성능을 평가하는 주요 지표이다.
- 정밀도(Precision): 모델이 양성(Positive)으로 예측한 것 중 실제로 양성인 비율
- 재현율(Recall): 실제 양성 중에서 모델이 양성으로 예측한 비율
- F1-score: 정밀도와 재현율의 조화 평균
(7) 딥러닝 모델의 성능평가 지표
- 정밀도, 재현율, F1-score => 분류 모델의 성능 평가하는 주요 지표
- log 손실 => 예측 확률 기반 손실 함수(모델이 예측한 확률을 기반으로 모델이 얼마나 정확하게 예측했는지 평가, 분류 모델에서 출력이 확률값일때 사용가능)
- MSE(mean squared error), MAE(mean absolute error) => 회귀 모델 성능평가
4. 딥러닝 이론 및 수학적 배경
3. 딥러닝 학습 과정 및 최적화
- 딥러닝할 때 GPU를 쓰면 좋은 이유는?
- GPU를 두 개 다 쓰고 싶다. 방법은?
- 학습 시 필요한 GPU 메모리는 어떻게 계산하는가?
- 딥러닝 모델의 손실 함수를 최적화하기 위한 알고리즘은 어떤 것들이 있나?
- 확률적 경사하강법(SGD)과 Adam 최적화 알고리즘의 차이점
- AdamW란?
- 하이퍼파라미터 최적화 방법에는 어떤 것들이 있나?
- 학습 속도를 향상시키기 위한 전략들
- Training 세트와 Test 세트를 분리하는 이유
- Validation 세트가 따로 있는 이유는?
- Test 세트가 오염되었다는 말의 뜻은?
- Regularization(정규화)이란 무엇인가?
- L1 규제와 L2 규제의 차이점
- 전이 학습(Transfer Learning)이란 무엇이고, 어떤 상황에서 사용되나?
- 데이터 증강(Data Augmentation)이란 무엇이며, 왜 사용하는가?
5. 딥러닝 이론 및 수학적 개념
- Gradient Descent(경사 하강법)에 대해서 쉽게 설명한다면?
- 왜 꼭 Gradient를 써야 할까? 가로축과 세로축은 무엇인가?
- GD 중에 때때로 Loss가 증가하는 이유는?
- Backpropagation(역전파)이란 무엇이며 왜 중요한가?
- Local Minima 문제에도 불구하고 딥러닝이 잘 되는 이유는?
- 찾은 해가 Global Minimum인지 아닌지 알 수 있는 방법은?
- ReLU의 문제점은?
- 활성화 함수(Activation Function)의 종류와 특징 (Sigmoid, Tanh, ReLU, Leaky ReLU, Softmax)
- 요즘 Sigmoid보다 ReLU를 많이 사용하는 이유는?
- 비선형성(Non-Linearity)의 의미와 필요성
- ReLU로 어떻게 곡선 함수를 근사하나?
6. 딥러닝 모델의 한계와 해결 방안
- 딥러닝 모델의 크기가 클 때 발생하는 문제와 해결 방법
- 메모리 부족 문제 해결법
- 학습 속도 저하 문제 해결법
- 매개변수 갱신 어려움(Gradient Vanishing, Exploding) 해결법
- 배치 정규화(Batch Normalization) vs 층 정규화(Layer Normalization)
- 잔차 연결(Residual Connection)과 그래디언트 소실 문제 해결
- 적절한 활성화 함수 선택
7. 딥러닝 프레임워크 및 디버깅
- TensorFlow, Keras, PyTorch, JAX의 장단점
- PyTorch 등을 사용할 때 디버깅 노하우
- 딥러닝에서 사용되는 가중치 초기화 방법들 (Zero Init, Random Init, Xavier Init, He Init)
8. 최근 연구 및 발전
- 최근 딥러닝 연구에서 가장 흥미로운 발전은 무엇인가?
- Transformer 모델이 딥러닝 연구에 미친 영향
- AI 모델의 크기 증가와 성능 향상
- 도메인 통합 및 전이 학습의 발전
- 모델의 해석 가능성 증가
'수업정리 > 딥러닝 이론' 카테고리의 다른 글
Latent Diffusion 이해 + 코드 짜보기 (0) | 2025.03.25 |
---|---|
SVM(State-Vector Machine)이란? (0) | 2024.09.30 |
VQ-VAE 이해하기 (0) | 2024.08.16 |
Supervised Contrastive Learning 코드 분석 (0) | 2024.05.28 |
Triplet Loss 이해하기(개념, 수식, 주의사항) (0) | 2024.05.19 |