| **캡스톤 프로젝트 (Capstone Project)** | 학문 분야에서 여러 학기 동안 배운 이론과 기술을 총동원하여 실제 결과물(작품, 서비스, 논문 등)을 기획, 설계, 개발, 구현하는 종합 프로젝트입니다. 학습한 지식의 실질적인 적용 능력을 평가하고, 포트폴리오의 핵심적인 부분을 구성합니다. ("졸업 작품"과 유사) |
| **포트폴리오 (Portfolio)** | 개인이 자신의 기술, 능력, 경험, 성과를 보여주기 위해 만든 작품집 또는 자료 모음입니다. 개발자에게는 자신이 참여하거나 직접 만든 프로젝트, 코드 샘플, 기술 블로그, GitHub 프로필 등이 해당되며, 구직 및 경력 관리에 매우 중요합니다. |
| **문제 정의 (Problem Definition)** | 해결하고자 하는 특정 문제나 필요성을 명확하고 구체적으로 기술하는 과정입니다. 프로젝트의 목표와 범위를 설정하는 첫 단계이며, "무엇을 왜 만드는가?"에 대한 답을 제시합니다. |
| **프로젝트 기획 (Project Planning)** | 정의된 문제를 해결하기 위한 구체적인 실행 계획을 수립하는 과정입니다. 목표 설정, 범위 정의, 필요한 리소스(시간, 인력, 기술 등) 파악, 일정 계획, 위험 관리 등을 포함합니다. |
| **요구사항 정의서 (Product Requirements Document, PRD)** | 개발하고자 하는 제품(서비스)의 목적, 기능, 사용자, 기술적 요구사항 등을 상세하게 기술한 문서입니다. 프로젝트 팀원 모두가 동일한 이해를 바탕으로 제품을 개발할 수 있도록 하는 청사진 역할을 합니다. |
| **시스템 아키텍처 (System Architecture)** | 개발하려는 시스템의 전체적인 구조와 구성 요소, 그리고 그들 간의 관계 및 상호작용을 정의한 설계도입니다. 데이터 흐름, 컴포넌트 간 인터페이스, 사용 기술 등을 시각적으로 표현하여 시스템의 이해를 돕습니다. (예: Mermaid, draw.io 사용) |
| **깃헙(GitHub) 협업 (GitHub Collaboration)** | 버전 관리 시스템인 Git의 웹 기반 호스팅 서비스인 GitHub를 사용하여 여러 개발자가 함께 프로젝트를 진행하는 방식입니다. 이슈 트래킹, 브랜치 전략, 풀 리퀘스트(PR)를 통한 코드 리뷰, 프로젝트 관리 등의 기능을 활용하여 효율적인 팀 개발을 지원합니다. |
| **코드 리뷰 (Code Review)** | 다른 개발자가 작성한 소스 코드를 검토하고 피드백을 제공하는 과정입니다. 코드의 품질 향상, 버그 조기 발견, 지식 공유, 팀 전체의 코드 이해도 증진 등의 효과가 있습니다. GitHub의 풀 리퀘스트(Pull Request) 기능을 통해 주로 이루어집니다. |
| **데모 (Demonstration)** | 개발한 제품이나 서비스의 주요 기능을 실제로 시연하여 보여주는 것입니다. 프로젝트의 결과물을 시각적으로 전달하고, 이해 관계자(팀원, 평가자, 사용자 등)의 피드백을 받는 데 효과적입니다. |
| **기술 블로그 (Tech Blog)** | 개발자가 자신이 학습한 기술, 프로젝트 경험, 문제 해결 과정, 개발 팁 등을 글로 작성하여 온라인에 공유하는 것입니다. 지식 정리, 개인 브랜딩, 커뮤니티 기여, 포트폴리오 강화 등 다양한 이점이 있습니다. |
---
*이 용어집은 `geumdo_docs/ai lecture/part_11_capstone_project_guide.md` 파일 내용을 기반으로 작성되었습니다.*
\ No newline at end of file
# Part 11: MLOps 용어집
-**Kubeflow**: Kubernetes 기반으로 머신러닝(ML) 워크플로우를 배포, 관리, 확장하는 오픈소스 플랫폼입니다. ML 파이프라인 구성, 하이퍼파라미터 튜닝, 모델 서빙 등 ML 수명주기 전반을 지원합니다.
-**CI/CD (Continuous Integration/Continuous Deployment)**: 코드 변경사항을 자동으로 빌드, 테스트, 배포하는 프로세스입니다. MLOps에서는 코드뿐만 아니라 데이터와 모델의 변경사항까지 관리하여 ML 시스템의 배포를 자동화합니다.
-**GitHub Actions**: GitHub 리포지토리 내에서 코드 푸시, Pull Request 등의 이벤트에 따라 CI/CD 와 같은 워크플로우를 자동화하는 도구입니다.
-**Prometheus**: 시스템 및 서비스의 상태를 모니터링하기 위해 시계열 데이터(time-series data)를 수집하고 저장하는 오픈소스 모니터링 시스템입니다.
-**Grafana**: Prometheus 등 다양한 데이터 소스로부터 수집된 메트릭을 시각화하고 분석하기 위한 오픈소스 대시보드 및 분석 플랫폼입니다.
-**Evidently AI**: 데이터 드리프트, 컨셉 드리프트, 모델 성능 저하 등 머신러닝 모델의 품질을 전문적으로 모니터링하고 시각화하는 오픈소스 라이브러리입니다.
-**Feature Store**: 머신러닝 모델의 학습과 추론에 사용되는 피처(feature)를 중앙에서 관리, 저장, 제공하는 데이터 시스템입니다. 학습-서빙 스큐를 방지하고 피처 재사용성을 높입니다.
-**Feast**: Feature Store를 구축하기 위한 널리 사용되는 오픈소스 프레임워크입니다.
-**PEFT (Parameter-Efficient Fine-Tuning)**: 거대 언어 모델(LLM)의 사전 학습된 가중치 대부분을 고정한 채, 일부 파라미터만 학습시켜 적은 리소스로 효율적으로 모델을 특정 작업에 맞게 미세 조정하는 기법들의 총칭입니다.
-**LoRA (Low-Rank Adaptation)**: PEFT의 대표적인 기법 중 하나로, 기존 가중치 행렬 옆에 작은 크기의 학습 가능한 행렬 두 개(Low-rank 행렬)를 추가하여 파라미터 업데이트를 효율화합니다.
-**RAG (Retrieval-Augmented Generation)**: LLM이 답변을 생성할 때, 외부 데이터베이스나 문서에서 관련 정보를 실시간으로 검색(Retrieval)하여 그 내용을 참고해 답변의 정확성과 신뢰도를 높이는(Augmented Generation) 기술입니다.
-**쿼리 변환 (Query Transformation)**: 사용자의 원본 질문을 더 나은 검색 결과를 얻기 위해 여러 개의 다양한 질문으로 변형하거나, 더 명확한 형태로 재구성하는 RAG의 심화 기법입니다.
-**재순위화 (Re-ranking)**: 1차적으로 검색된 문서들을 더 정교한 모델을 사용해 사용자 질문과의 관련도 순으로 다시 정렬하여, LLM에게 전달할 최종 문서의 정확도를 높이는 과정입니다.
-**AI 에이전트 (AI Agent)**: 목표 달성을 위해 스스로 생각하고(Reasoning), 계획을 세우며, 도구(Tools)를 사용하고, 환경과 상호작용하는 능동적인 AI 시스템입니다. LLM이 '뇌'의 역할을 수행합니다.
-**ReAct (Reason + Act)**: AI 에이전트가 '생각(Thought) -> 행동(Action) -> 관찰(Observation)'의 순환적인 추론 과정을 통해 복잡한 문제를 해결하도록 하는 대표적인 프레임워크입니다.
-**LangGraph**: 여러 에이전트가 협력하거나 순환적인 작업 흐름을 처리하는 복잡한 AI 시스템을 상태(State) 기반의 그래프 형태로 쉽게 구현하도록 돕는 LangChain의 확장 라이브러리입니다.
-**LLMOps (Large Language Model Operations)**: 프롬프트 관리, 정성적 성능 평가, 실행 과정 추적 등 LLM 기반 애플리케이션의 전체 수명 주기를 안정적으로 관리하고 운영하기 위한 MLOps의 특화된 분야입니다.
-**LangSmith**: LLM 애플리케이션의 개발 및 운영을 위한 통합 플랫폼으로, 복잡한 체인과 에이전트의 내부 동작을 추적, 모니터링, 평가하는 강력한 기능을 제공합니다.
| **캡스톤 프로젝트 (Capstone Project)** | 학문 분야에서 여러 학기 동안 배운 이론과 기술을 총동원하여 실제 결과물(작품, 서비스, 논문 등)을 기획, 설계, 개발, 구현하는 종합 프로젝트입니다. 학습한 지식의 실질적인 적용 능력을 평가하고, 포트폴리오의 핵심적인 부분을 구성합니다. ("졸업 작품"과 유사) |
| **포트폴리오 (Portfolio)** | 개인이 자신의 기술, 능력, 경험, 성과를 보여주기 위해 만든 작품집 또는 자료 모음입니다. 개발자에게는 자신이 참여하거나 직접 만든 프로젝트, 코드 샘플, 기술 블로그, GitHub 프로필 등이 해당되며, 구직 및 경력 관리에 매우 중요합니다. |
| **문제 정의 (Problem Definition)** | 해결하고자 하는 특정 문제나 필요성을 명확하고 구체적으로 기술하는 과정입니다. 프로젝트의 목표와 범위를 설정하는 첫 단계이며, "무엇을 왜 만드는가?"에 대한 답을 제시합니다. |
| **프로젝트 기획 (Project Planning)** | 정의된 문제를 해결하기 위한 구체적인 실행 계획을 수립하는 과정입니다. 목표 설정, 범위 정의, 필요한 리소스(시간, 인력, 기술 등) 파악, 일정 계획, 위험 관리 등을 포함합니다. |
| **요구사항 정의서 (Product Requirements Document, PRD)** | 개발하고자 하는 제품(서비스)의 목적, 기능, 사용자, 기술적 요구사항 등을 상세하게 기술한 문서입니다. 프로젝트 팀원 모두가 동일한 이해를 바탕으로 제품을 개발할 수 있도록 하는 청사진 역할을 합니다. |
| **시스템 아키텍처 (System Architecture)** | 개발하려는 시스템의 전체적인 구조와 구성 요소, 그리고 그들 간의 관계 및 상호작용을 정의한 설계도입니다. 데이터 흐름, 컴포넌트 간 인터페이스, 사용 기술 등을 시각적으로 표현하여 시스템의 이해를 돕습니다. (예: Mermaid, draw.io 사용) |
| **깃헙(GitHub) 협업 (GitHub Collaboration)** | 버전 관리 시스템인 Git의 웹 기반 호스팅 서비스인 GitHub를 사용하여 여러 개발자가 함께 프로젝트를 진행하는 방식입니다. 이슈 트래킹, 브랜치 전략, 풀 리퀘스트(PR)를 통한 코드 리뷰, 프로젝트 관리 등의 기능을 활용하여 효율적인 팀 개발을 지원합니다. |
| **코드 리뷰 (Code Review)** | 다른 개발자가 작성한 소스 코드를 검토하고 피드백을 제공하는 과정입니다. 코드의 품질 향상, 버그 조기 발견, 지식 공유, 팀 전체의 코드 이해도 증진 등의 효과가 있습니다. GitHub의 풀 리퀘스트(Pull Request) 기능을 통해 주로 이루어집니다. |
| **데모 (Demonstration)** | 개발한 제품이나 서비스의 주요 기능을 실제로 시연하여 보여주는 것입니다. 프로젝트의 결과물을 시각적으로 전달하고, 이해 관계자(팀원, 평가자, 사용자 등)의 피드백을 받는 데 효과적입니다. |
| **기술 블로그 (Tech Blog)** | 개발자가 자신이 학습한 기술, 프로젝트 경험, 문제 해결 과정, 개발 팁 등을 글로 작성하여 온라인에 공유하는 것입니다. 지식 정리, 개인 브랜딩, 커뮤니티 기여, 포트폴리오 강화 등 다양한 이점이 있습니다. |
---
*이 용어집은 `geumdo_docs/ai lecture/part_11_capstone_project_guide.md` 파일 내용을 기반으로 작성되었습니다.*
-**정의**: 구글에서 제공하는 클라우드 기반의 무료 Jupyter 노트북 환경. 별도의 개발 환경 설정 없이 웹 브라우저만으로 파이썬 코드를 작성하고 실행할 수 있으며, 특히 무료로 GPU 가속을 사용할 수 있어 머신러닝 및 딥러닝 모델 학습에 매우 유용합니다.
-**관련 파트**: [Part 1: AI 개발 환경 완벽 구축 가이드](../part_1_ai_development_environment.md)
-**AI-Powered IDE (AI 기반 통합 개발 환경)**
-**정의**: 기존 IDE에 코드 생성, 수정, 디버깅, 질문 답변 등의 기능을 수행하는 AI 모델이 결합된 차세대 개발 환경. 개발자의 생산성을 극대화하고 반복적인 작업을 자동화합니다. (예: Cursor, GitHub Copilot)
-**관련 파트**: [Part 1: AI 개발 환경 완벽 구축 가이드](../part_1_ai_development_environment.md)
-**Cursor**
-**정의**: VS Code를 기반으로 제작된 AI 네이티브 코드 에디터. VS Code의 모든 기능과 확장 프로그램을 그대로 사용하면서, 프로젝트 전체의 맥락을 이해하는 AI 채팅, 인라인 코드 생성 및 수정, 자동 디버깅 등 강력한 AI 기능을 제공합니다.
-**관련 파트**: [Part 1: AI 개발 환경 완벽 구축 가이드](../part_1_ai_development_environment.md)
-**Code Generation (코드 생성)**
-**정의**: 개발자가 자연어(주석 등)로 원하는 기능이나 로직을 설명하면, AI가 그에 맞는 코드 스니펫이나 전체 함수/클래스를 자동으로 작성해주는 기능.
-**관련 파트**: [Part 1: AI 개발 환경 완벽 구축 가이드](../part_1_ai_development_environment.md)
-**Context-aware AI (맥락 인지 AI)**
-**정의**: 단순히 주어진 질문이나 명령어만 보는 것을 넘어, 현재 작업 중인 프로젝트의 파일 구조, 열려 있는 탭, 터미널 로그, 심지어 참조된 문서까지 종합적으로 파악하여 사용자의 의도에 가장 적합한 답변이나 코드를 제공하는 AI 기술. Cursor의 핵심적인 강점 중 하나입니다.
-**관련 파트**: [Part 1: AI 개발 환경 완벽 구축 가이드](../part_1_ai_development_environment.md)
| **텐서 (Tensor)** | PyTorch에서 데이터를 다루는 기본 단위이자 다차원 배열입니다. NumPy의 `ndarray`와 유사하지만, GPU를 사용한 고속 연산 및 자동 미분 기능을 핵심적으로 지원하여 딥러닝 모델 학습에 필수적입니다. |
| **인공 신경망 (Artificial Neural Network, ANN)** | 인간의 뇌 신경망 구조에서 영감을 받아 설계된 계산 모델입니다. 여러 개의 노드(뉴런)들이 서로 연결되어 계층(layer)을 이루며, 입력 데이터로부터 패턴을 학습하여 특정 작업을 수행합니다. |
| **`nn.Module`** | PyTorch에서 모든 신경망 모델의 기본이 되는 클래스입니다. 사용자는 이 클래스를 상속받아 자신만의 모델 구조(`__init__`)와 데이터 흐름(`forward`)을 정의합니다. 모델의 파라미터 관리, 저장 및 로드, GPU 이동 등의 기능을 제공합니다. |
| **활성화 함수 (Activation Function)** | 신경망의 각 뉴런(또는 노드)에 입력된 신호를 변환하여 다음 뉴런으로 전달할지 여부와 전달할 신호의 크기를 결정하는 함수입니다. 선형 모델에 비선형성을 추가하여 모델의 표현력을 높이는 핵심적인 역할을 합니다. (예: `ReLU`, `Sigmoid`, `Tanh`) |
| **손실 함수 (Loss Function / Cost Function)** | 딥러닝 모델의 예측값과 실제 정답(레이블) 사이의 차이, 즉 '오차'를 측정하는 함수입니다. 모델 학습 과정에서 이 손실 함수의 값을 최소화하는 방향으로 모델의 파라미터(가중치)가 업데이트됩니다. (예: `nn.CrossEntropyLoss` - 분류, `nn.MSELoss` - 회귀) |
| **활성화 함수 (Activation Function)** | 신경망의 선형 계층(Linear Layer) 통과 후 적용되는 비선형(non-linear) 함수입니다. 이 비선형성이 없다면 여러 계층을 쌓아도 결국 하나의 선형 함수와 같기 때문에, 활성화 함수는 모델이 복잡하고 구불구불한 데이터 패턴을 학습할 수 있는 표현력(Expressiveness)을 부여하는 핵심적인 역할을 합니다. |
| **손실 함수 (Loss Function / Cost Function)** | 모델의 예측값(prediction)과 실제 정답(target) 사이의 차이, 즉 '오차(Error)'를 수치적으로 계산하는 함수입니다. 딥러닝 학습은 이 손실 함수의 값을 최소화하는 방향으로 모델의 파라미터(가중치)를 업데이트하는 과정입니다. 해결하려는 문제의 종류(회귀, 분류)에 따라 적합한 손실 함수를 선택해야 합니다. |
| **ReLU (Rectified Linear Unit)** | 딥러닝에서 가장 널리 사용되는 활성화 함수. 입력이 0보다 크면 값을 그대로 출력하고, 0보다 작으면 0을 출력합니다 (`max(0, x)`). 계산이 매우 빠르고 Sigmoid나 Tanh의 Vanishing Gradient 문제를 해결하여 학습 속도를 높입니다. |
| **Softmax** | 다중 클래스 분류 문제의 마지막 출력층에서 사용되는 활성화 함수입니다. 모델의 최종 출력(Logits)을 각 클래스에 대한 '확률'로 변환해줍니다. 모든 출력의 합은 1이 되므로, 가장 확률이 높은 클래스를 선택하는 근거가 됩니다. |
| **교차 엔트로피 (Cross-Entropy)** | 분류 문제에서 사용되는 대표적인 손실 함수입니다. 모델이 예측한 확률 분포와 실제 정답의 확률 분포가 얼마나 다른지를 측정합니다. 모델이 정답 클래스를 낮은 확률로 예측할수록 손실 값이 커집니다. (PyTorch의 `nn.CrossEntropyLoss`는 Softmax를 내장하고 있습니다.) |
| **옵티마이저 (Optimizer)** | 손실 함수가 계산한 오차(손실 값)를 기반으로, 모델의 파라미터(가중치와 편향)를 효과적으로 업데이트하여 손실을 최소화하는 알고리즘입니다. (예: `Adam`, `SGD`, `RMSprop`) |
| **순전파 (Forward Propagation)** | 인공 신경망에서 입력 데이터가 입력층에서 시작하여 은닉층들을 거쳐 출력층까지 전달되면서 각 층에서 가중치와 곱해지고 활성화 함수를 통과하여 최종 예측값을 계산하는 과정입니다. |
| **역전파 (Backward Propagation)** | 순전파를 통해 계산된 예측값과 실제 정답 사이의 오차(손실)를 기반으로, 이 오차에 각 파라미터가 얼마나 기여했는지를 출력층부터 입력층 방향으로 거슬러 올라가며 계산하는 과정입니다(미분을 사용). 이 결과를 바탕으로 옵티마이저가 파라미터를 업데이트합니다. 딥러닝 학습의 핵심 알고리즘입니다. |
| **에포크 (Epoch)** | 전체 훈련 데이터셋이 신경망 모델을 통해 한 번 완전히 통과(순전파 및 역전파)된 횟수를 의미합니다. 즉, 모든 훈련 샘플이 학습에 한 번 사용되면 1 에포크가 완료된 것입니다. |
| **CNN (Convolutional Neural Network / 합성곱 신경망)** | 이미지 인식 및 처리에 특화된 딥러닝 모델 아키텍처입니다. 입력 데이터에서 특징(feature)을 추출하는 합성곱 계층(Convolutional Layer)과 풀링 계층(Pooling Layer)을 사용하여 공간적 계층 구조를 효과적으로 학습합니다. |
| **Attention** | RNN의 장기 의존성 문제를 해결하기 위해 등장한 메커니즘으로, 번역할 문장을 생성할 때 인코더의 모든 출력 중 현재 예측해야 할 단어와 연관이 높은 입력 단어에 더 집중(가중치 부여)하는 방식입니다. |
| **Transformer** | RNN을 사용하지 않고 Attention 메커니즘만으로 데이터의 순차적 정보와 문맥을 학습하는 혁신적인 신경망 아키텍처입니다. 병렬 처리가 가능하여 학습 속도가 매우 빠르며, 현대 자연어 처리 모델의 기반이 됩니다. |
| **Self-Attention** | Transformer의 핵심 구성 요소로, 문장 내의 단어들이 서로를 얼마나 참조해야 하는지(관련이 있는지)를 계산하는 메커니즘입니다. 이를 통해 문맥에 맞는 단어의 의미를 파악할 수 있습니다. |
| **Positional Encoding** | 순서 정보가 없는 Transformer에게 단어의 위치 정보를 제공하기 위해 각 단어의 임베딩 벡터에 더해주는 고정된 값입니다. 사인, 코사인 함수를 사용하여 위치 정보를 벡터로 표현합니다. |
| **Encoder (인코더)** | Transformer 구조의 일부로, 입력 문장을 받아 각 단어의 의미와 문맥 정보를 함축한 벡터 표현(representation)으로 변환하는 역할을 합니다. Self-Attention과 피드포워드 신경망으로 구성됩니다. |
| **Decoder (디코더)** | Transformer 구조의 일부로, 인코더의 출력과 이전에 생성된 출력값을 입력으로 받아 다음 단어를 예측하는 역할을 합니다. |
| **BERT (Bidirectional Encoder Representations from Transformers)** | Google에서 개발한 언어 모델로, Transformer의 인코더 구조만을 사용합니다. 문장의 양방향 문맥을 모두 학습하여 문맥을 이해하는 데 매우 뛰어난 성능을 보입니다. (주로 문장 이해, 분류, 개체명 인식 등에 활용) |
| **GPT (Generative Pre-trained Transformer)** | OpenAI에서 개발한 언어 모델로, Transformer의 디코더 구조만을 사용합니다. 이전 단어들을 기반으로 다음 단어를 예측하는 방식으로 학습되어 문장 생성에 매우 뛰어난 성능을 보입니다. (주로 챗봇, 텍스트 생성 등에 활용) |
---
*이 용어집은 `geumdo_docs/ai lecture/part_7_deep_learning.md` 파일 내용을 기반으로 작성되었습니다.*
\ No newline at end of file
*이 용어집은 `geumdo_docs/ai lecture/part_7_deep_learning.md` 와 `geumdo_docs/ai lecture/part_7.1_transformer_and_llm_principles.md` 파일 내용을 기반으로 작성되었습니다.*
@@ -30,34 +30,41 @@ AI 서비스를 만드는 것은 마치 **'스스로 생각하고 행동하는
- Python 기본 문법은 알지만, 실제 프로젝트 경험이 부족한 **학생 또는 주니어 개발자**
- AI 모델은 개발했지만, 이를 어떻게 서비스로 만들어야 할지 막막한 **연구자 및 데이터 분석가**
## 5. 12주 학습 로드맵 (Course Roadmap)
## 5. 학습 로드맵 (Course Roadmap)
우리는 12주 동안 다음의 로드맵에 따라 체계적으로 학습을 진행합니다. 이 로드맵은 AI 서비스 개발이라는 보물섬을 찾아가는 **'친절한 안내 지도'**입니다. 각 주차별 목표를 따라 한 걸음씩 나아가다 보면, 어느새 유능한 개발자로 성장한 자신을 발견하게 될 것입니다.
우리는 다음의 로드맵에 따라 체계적으로 학습을 진행합니다. 이 로드맵은 AI 서비스 개발이라는 보물섬을 찾아가는 **'친절한 안내 지도'**입니다. 각 주차별 목표를 따라 한 걸음씩 나아가다 보면, 어느새 유능한 AI 전문가로 성장한 자신을 발견하게 될 것입니다.
```mermaid
graph TD
subgraph "1부: 파이썬 기초 다지기 (1-4주)"
W1["<a href='part_1_ai_development_environment.md'><b>1주차</b>: 과정 소개 및<br/>개발 환경 설정</a>"]
subgraph "1부: AI 개발을 위한 파이썬 마스터리 (1-5주)"
W1["<a href='part_1_ai_development_environment.md'><b>1주차</b>: 개발 환경 설정</a>"]
W2["<a href='part_2_python_core_syntax.md'><b>2주차</b>: 파이썬 핵심 문법</a>"]
> A3: 기본적인 코딩은 일반적인 노트북으로 충분합니다. 모델 학습 등 높은 사양이 필요한 경우, 무료로 사용할 수 있는 <a href="glossaries/part_0_glossary.md#google-colab-구글-코랩">Google Colab</a>을 활용하는 방법을 안내해 드리므로 걱정하지 않으셔도 됩니다.
**Q4: 캡스톤 프로젝트는 어떻게 진행되나요?**
> A4: 11-12주차에 진행되며, 수강생들이 직접 주제를 선정하고 기획, 개발, 발표까지 진행합니다. 이 과정에서 멘토링을 통해 프로젝트가 올바른 방향으로 나아갈 수 있도록 적극적으로 지원합니다. 자세한 내용은 <a href="part_11_capstone_project_guide.md">캡스톤 프로젝트 가이드</a>를 참고하세요.
> A4: 과정의 마지막 15-16주차에 진행되며, 수강생들이 직접 주제를 선정하고 기획, 개발, 발표까지 진행합니다. 이 과정에서 멘토링을 통해 프로젝트가 올바른 방향으로 나아갈 수 있도록 적극적으로 지원합니다. 자세한 내용은 <a href="part_15_capstone_project.md">캡스톤 프로젝트 가이드</a>를 참고하세요.
> **💡 비유: 'F-16 전투기'에서 'AI 비서(자비스)가 탑재된 F-35 스텔스기'로**
>
> - **전통적인 IDE (VSCode, PyCharm)**: 수많은 계기판과 버튼을 조종사가 직접 조작해야 하는 'F-16 전투기'와 같습니다. 강력하지만 모든 것을 직접 해야 합니다.
> - **AI 네이티브 IDE (Cursor, GitHub Copilot)**: 조종사의 의도를 파악한 'AI 비서'가 복잡한 태스크 조작, 항로 계산, 위협 감지 등을 도와주는 'F-35 스텔스기'의 조종석과 같습니다. 개발자는 문제 해결이라는 본질적인 목표에만 집중할 수 있습니다.
> - **AI 네이티브 IDE (GitHub Copilot 등)**: 조종사의 의도를 파악한 'AI 비서'가 복잡한 태스크 조작, 항로 계산, 위협 감지 등을 도와주는 'F-35 스텔스기'의 조종석과 같습니다. 개발자는 문제 해결이라는 본질적인 목표에만 집중할 수 있습니다.
### AI 네이티브 IDE, 어떻게 쓸 것인가?
...
...
@@ -170,7 +170,7 @@ graph TD
```
### Lab 2: AI 네이티브 IDE로 코드 리팩터링하기
아래의 비효율적인 코드를 [Cursor](glossaries/part_10_glossary.md#cursor)나 [GitHub Copilot](glossaries/part_10_glossary.md#github-copilot)을 사용하여 리팩터링하세요.
아래의 비효율적인 코드를 [GitHub Copilot](glossaries/part_10_glossary.md#github-copilot)과 같은 AI 네이티브 IDE를 사용하여 리팩터링하세요.
**미션**:
1. 각 기능을 별도의 함수로 분리하세요.
...
...
@@ -254,7 +254,7 @@ AI의 세계는 광활하며 빠르게 변화합니다. 아래 로드맵을 참
-**AI 서비스 개발의 A to Z**: 데이터 처리, 모델링, API 서빙, 배포까지 AI 서비스 개발의 전체 생명주기를 직접 경험하며 '만드는 능력'을 갖추었습니다.
-**지속가능한 AI를 위한 MLOps**: CI/CD, 버전 관리, 모니터링의 개념을 이해하고, `MLflow`와 `DVC`를 통해 AI 서비스를 안정적으로 운영하기 위한 기초를 다졌습니다.
-**AI 시대의 개발 생산성**: `Cursor`와 같은 AI 네이티브 도구를 활용하여 개발의 패러다임이 어떻게 변하고 있는지 체험하고, 생산성을 극대화하는 방법을 배웠습니다.
-**AI 시대의 개발 생산성**: `GitHub Copilot`과 같은 AI 네이티브 도구를 활용하여 개발의 패러다임이 어떻게 변하고 있는지 체험하고, 생산성을 극대화하는 방법을 배웠습니다.
-**AI 전문가로의 성장 로드맵**: SLM, 멀티모달, AI 에이전트 등 최신 트렌드를 파악하고, 기술적 깊이와 윤리적 소양을 함께 갖춘 전문가로 성장하기 위한 방향을 설정했습니다.
이 과정이 여러분의 커리어에 단단한 발판이 되기를 진심으로 바랍니다. 여러분의 성장을 항상 응원하겠습니다.
머신러닝 모델을 성공적으로 개발하는 것과, 이를 안정적으로 운영하여 비즈니스 가치를 창출하는 것은 전혀 다른 차원의 문제입니다. Part 11에서는 '모델 개발' 이후의 단계, 즉 프로덕션 환경에서 마주하게 될 현실적인 과제들을 해결하는 '프로덕션 레벨 MLOps' 기술을 심도 있게 탐구합니다. 이제 여러분의 모델을 실험실에서 꺼내 실제 세상에서 살아 숨 쉬게 만드는 여정을 시작하겠습니다.
---
## 4. ML 파이프라인 오케스트레이션
### Kubeflow 소개
Kubeflow는 머신러닝(ML) 워크플로우를 Kubernetes 상에서 간단하고, 이식성 있으며, 확장 가능하게 배포하는 것을 목표로 하는 오픈소스 플랫폼입니다. Google에서 시작하여 현재는 커뮤니티 중심으로 개발되고 있으며, ML 수명주기 전반을 지원하는 다양한 도구들을 통합 제공합니다.
**주요 특징:**
-**Composability (구성성)**: 각기 다른 클라우드와 온프레미스 환경에서 동일하게 실행되는 ML 파이프라인을 쉽게 구성할 수 있습니다.
-**Portability (이식성)**: 한번 개발한 ML 워크플로우는 큰 변경 없이 로컬, 온프레미스, 클라우드 등 다양한 Kubernetes 환경으로 이전할 수 있습니다.
-**Scalability (확장성)**: Kubernetes의 강력한 확장성을 기반으로 데이터 처리, 모델 학습, 서빙 등 각 단계의 리소스를 유연하게 조절할 수 있습니다.
**핵심 구성 요소:**
-**Kubeflow Pipelines**: ML 워크플로우를 파이프라인으로 구성하고 관리하는 도구입니다. 각 단계를 컨테이너화된 컴포넌트로 정의하고, 이들의 실행 순서와 의존성을 관리합니다. 재사용 가능한 컴포넌트를 만들어 파이프라인을 효율적으로 구축할 수 있습니다.
-**Katib**: 하이퍼파라미터 튜닝 및 신경망 아키텍처 탐색(NAS)을 자동화하는 도구입니다. 최적의 모델을 찾기 위한 다양한 알고리즘(예: Grid Search, Random Search, Bayesian Optimization)을 지원합니다.
-**KServe (구 KFServing)**: 복잡한 서버리스 추론 워크로드를 Kubernetes에서 실행하기 위한 표준 모델 추론 플랫폼입니다. Canary 배포, 자동 스케일링 등 프로덕션 환경에 필수적인 기능을 제공합니다.
-**Training Operators**: TensorFlow, PyTorch, XGBoost, MPI 등 다양한 프레임워크를 사용하여 분산 학습을 쉽게 실행할 수 있도록 Kubernetes Custom Resource (CRD)를 제공합니다.
---
## 5. CI/CD for Machine Learning
### GitHub Actions를 활용한 ML CI/CD
CI/CD(Continuous Integration/Continuous Deployment & Delivery)는 소프트웨어 개발의 핵심적인 자동화 프로세스입니다. 머신러닝 시스템에 CI/CD를 적용하는 것을 특별히 MLOps의 CI/CD라고 하며, 이는 코드뿐만 아니라 데이터와 모델의 변경사항까지 지속적으로 통합하고 테스트하며 배포하는 것을 목표로 합니다.
**ML을 위한 CI/CD의 주요 단계:**
-**CI (Continuous Integration)**:
-**코드 통합**: 새로운 코드(데이터 처리, 피처 엔지니어링, 모델링 등)가 중앙 리포지토리(예: Git)에 통합될 때마다 자동화된 빌드 및 테스트를 실행합니다.
-**단위/통합 테스트**: 코드의 기능적 정확성을 검증합니다.
-**데이터 유효성 검사**: 새로운 데이터의 스키마, 분포 등을 검증합니다.
-**모델 품질 검증**: 학습된 모델이 최소 성능 요구사항을 만족하는지 검증합니다.
-**CD (Continuous Deployment/Delivery)**:
-**모델 배포 자동화**: CI를 통과한 모델을 자동으로 스테이징 또는 프로덕션 환경에 배포합니다.
-**점진적 배포 (Progressive Delivery)**: Canary 배포, Blue/Green 배포, A/B 테스트 등의 전략을 사용하여 새로운 모델을 점진적으로 릴리즈하고, 안정성을 모니터링합니다.
-**모델 롤백**: 새로운 모델에 문제가 발생했을 경우, 이전 버전으로 신속하게 롤백하는 파이프라인을 구축합니다.
**GitHub Actions란?**
GitHub Actions는 GitHub 리포지토리에서 바로 소프트웨어 개발 워크플로우를 자동화할 수 있게 해주는 도구입니다. 코드 푸시, Pull Request 생성 등 특정 이벤트에 의해 트리거되는 워크플로우를 YAML 파일 형식으로 간단하게 정의할 수 있어, ML을 위한 CI/CD 파이프라인을 구축하는 데 매우 유용합니다.
프로덕션 환경에서 운영되는 머신러닝 모델은 시간이 지남에 따라 성능이 저하될 수 있습니다. 입력 데이터의 분포가 변하는 '데이터 드리프트(Data Drift)'나 모델의 예측 성능 자체가 떨어지는 '컨셉 드리프트(Concept Drift)'가 주요 원인입니다. 따라서 모델의 상태와 성능을 실시간으로 모니터링하고, 문제가 발생했을 때 즉시 대응할 수 있는 시스템을 구축하는 것이 필수적입니다.
이 섹션에서는 다음과 같은 오픈소스 도구를 활용한 모니터링 및 알림 시스템 구축 방법을 다룹니다.
-**Prometheus**: 시계열 데이터(Time-series data)를 수집하고 저장하는 모니터링 시스템 및 데이터베이스
-**Grafana**: 수집된 데이터를 시각화하고 대시보드를 구축하는 분석 플랫폼
-**Evidently AI**: 데이터 드리프트, 모델 성능 등 ML 시스템의 품질을 평가하고 시각화하는 전문 라이브러리
### Prometheus: 시스템 메트릭 수집
Prometheus는 서비스 디스커버리 또는 정적 설정을 통해 대상(endpoint)으로부터 HTTP 요청으로 메트릭을 주기적으로 수집(pull)하는 방식으로 동작합니다. FastAPI와 같은 API 서버에서는 클라이언트 라이브러리를 사용하여 예측 요청 수, 지연 시간, 에러율 등 다양한 메트릭을 노출할 수 있습니다.
### Grafana: 모니터링 대시보드 시각화
Grafana는 Prometheus를 데이터 소스(Data Source)로 연동하여, 수집된 메트릭을 의미 있는 그래프와 차트로 시각화합니다. 사용자는 드래그 앤 드롭 인터페이스를 통해 다음과 같은 정보를 포함하는 맞춤형 대시보드를 쉽게 만들 수 있습니다.
- 시간당 예측 요청 수 (RPS)
- 예측 응답 시간의 분포 (Latency)
- HTTP 상태 코드별 에러율
또한, 특정 메트릭이 임계값을 넘었을 때 Slack, 이메일 등으로 알림(Alert)을 보내도록 설정할 수 있습니다.
### Evidently AI: ML 모델 품질 모니터링
Prometheus와 Grafana가 시스템의 운영 메트릭에 중점을 둔다면, Evidently AI는 모델 자체의 품질과 데이터의 통계적 특성 변화를 모니터링하는 데 특화되어 있습니다.
**주요 기능:**
-**데이터 드리프트 감지**: 학습에 사용된 참조(reference) 데이터셋과 현재 프로덕션 환경의 입력 데이터셋 간의 통계적 분포 차이를 감지합니다.
-**타겟 드리프트 및 모델 성능 모니터링**: 예측값의 분포 변화나, 실제 레이블이 제공될 경우 정확도/F1 점수 등 모델 성능 지표의 변화를 추적합니다.
-**시각적 리포트 생성**: 드리프트 및 성능 분석 결과를 HTML 리포트나 JSON 프로필로 생성하여 직관적으로 확인할 수 있습니다.
Evidently AI는 배치(batch) 작업으로 리포트를 생성하거나, FastAPI 엔드포인트와 통합하여 실시간으로 메트릭을 계산하고 이를 Prometheus로 노출시켜 Grafana 대시보드에 함께 표시하는 방식으로 활용할 수 있습니다.
---
## 7. Feature Store의 이해와 활용
머신러닝 모델을 개발하고 운영하는 과정에서 '피처(Feature)'는 매우 중요한 역할을 합니다. 좋은 피처를 발굴하고, 일관성 있게 관리하며, 학습과 추론 파이프라인에 안정적으로 제공하는 것은 성공적인 MLOps의 핵심 과제 중 하나입니다. Feature Store는 바로 이러한 피처 관련 작업을 중앙에서 체계적으로 관리하기 위한 데이터 시스템입니다.
### Feature Store란?
Feature Store는 ML 피처를 저장, 관리, 검색하고 제공하는 중앙 집중식 저장소입니다. ML 시스템의 학습(Training)과 서빙(Serving)이라는 두 가지 주요 사용 사례를 모두 지원하도록 설계되었습니다.
**주요 필요성:**
-**학습-서빙 스큐(Training-Serving Skew) 방지**: 모델 학습 시점과 실시간 예측 시점에서 피처를 계산하는 로직이 달라 발생할 수 있는 불일치 문제를 해결합니다. 동일한 피처 정의를 공유하여 일관성을 보장합니다.
-**피처 재사용성 증대**: 여러 모델과 팀에서 공통으로 사용하는 피처를 중앙에서 관리하여 중복 개발을 방지하고 협업을 촉진합니다.
-**피처 검색 및 탐색 용이**: 어떤 피처가 사용 가능한지, 어떻게 정의되었는지 쉽게 검색하고 이해할 수 있는 중앙 카탈로그 역할을 합니다.
-**Point-in-Time Correctness 보장**: 특정 시점 기준으로 정확한 피처를 조회할 수 있게 하여, 데이터 누수(Data Leakage) 없이 과거 데이터를 사용한 모델 학습을 지원합니다.
### Feast (Feature Store for ML) 소개
Feast는 Feature Store를 구축하기 위한 널리 사용되는 오픈소스 프레임워크입니다. Python 라이브러리 기반으로 가볍게 시작할 수 있으며, 프로덕션 환경까지 확장 가능한 유연성을 제공합니다.
**Feast의 주요 개념:**
-**Feature Repository**: Feast의 핵심으로, 피처 정의, 데이터 소스, 관련 객체들을 파일 기반으로 관리하는 디렉토리입니다. Git과 같은 버전 관리 시스템으로 쉽게 추적할 수 있습니다.
-**Data Source**: 원본 데이터가 저장된 위치를 가리킵니다. 파일(Parquet, CSV), BigQuery, Redshift, Snowflake 등 다양한 소스를 지원합니다.
-**Entity**: 피처가 연결되는 기본 키(Primary Key)입니다. 예를 들어, '사용자 ID', '상품 ID' 등이 Entity가 될 수 있습니다.
-**Feature View**: 피처를 논리적으로 그룹화하고, 데이터 소스와 Entity를 연결하는 핵심 객체입니다. Feature View를 통해 특정 Entity에 대한 피처들을 어떻게 가져올지 정의합니다.
-**Offline Store**: 대량의 과거 피처 데이터를 저장하는 곳입니다. 주로 모델 학습용 데이터를 생성하는 데 사용됩니다. (예: 파일, BigQuery, Snowflake)
-**Online Store**: 낮은 지연 시간(Low-latency)으로 최신 피처 값을 조회할 수 있도록 저장하는 키-밸류(Key-Value) 저장소입니다. 실시간 모델 추론 시 사용됩니다. (예: Redis, DynamoDB, Datastore)
**Feast 아키텍처:**
Feast는 크게 두 가지 데이터 흐름을 관리합니다.
-**Materialization (구체화)**: 오프라인 스토어의 피처 데이터를 주기적으로 읽어와 온라인 스토어에 최신 상태로 적재하는 프로세스입니다. `feast materialize` 명령어로 실행합니다.
-**Data Retrieval (데이터 조회)**:
-**학습 데이터셋 생성**: `get_historical_features()` 함수를 사용하여 여러 Feature View에서 특정 시점 기준의 피처들을 조인하여 학습용 데이터프레임을 생성합니다.
-**온라인 피처 서빙**: `get_online_features()` 함수를 사용하여 특정 Entity 키에 해당하는 최신 피처 벡터를 빠르게 조회하여 실시간 추론에 사용합니다.
---
## 8. 개념 확인 퀴즈 (Concept Check Quiz)
1. Kubeflow Pipelines의 주요 역할은 무엇이며, ML 워크플로우를 어떻게 구성하나요?
2. ML을 위한 CI/CD 파이프라인에서 '데이터 유효성 검사'와 '모델 품질 검증'이 왜 중요한가요?
3. Feature Store가 해결하고자 하는 핵심 문제인 '학습-서빙 스큐(Training-Serving Skew)'는 무엇인가요?
---
## 9. 과제 (Assignment)
1.**모니터링 시스템 설계**: Prometheus와 Grafana를 사용하여 간단한 FastAPI 애플리케이션의 API 요청 수와 응답 시간을 모니터링하는 대시보드를 구축하는 과정을 순서대로 설명해 보세요. (실제 구축이 아닌, 개념적 순서 설명)
2.**Feature Store 도입 설득**: 여러분이 데이터 사이언티스트 팀의 리드라고 상상해 보세요. 동료들에게 Feature Store 도입의 필요성을 설득하기 위한 3가지 핵심 논거를 제시해 보세요.
---
## 10. 되짚어보기 (Summary)
이번 파트에서는 모델 개발 이후, 프로덕션 환경에서 AI 모델을 안정적으로 운영하기 위한 MLOps 기술들을 심도 있게 다루었습니다.
-**ML 파이프라인 오케스트레이션**: Kubernetes 기반의 ML 워크플로우 자동화 도구인 Kubeflow의 핵심 구성 요소와 역할을 이해했습니다.
-**CI/CD for ML**: GitHub Actions를 활용하여 코드, 데이터, 모델의 변경 사항을 지속적으로 통합하고 배포하는 자동화 파이프라인 구축법을 배웠습니다.
-**실시간 모니터링**: Prometheus, Grafana, Evidently AI를 조합하여 시스템 메트릭부터 데이터 드리프트, 모델 성능까지 다각도로 모니터링하는 방법을 확인했습니다.
-**Feature Store**: 학습-서빙 스큐 방지, 피처 재사용성 증대를 위한 Feature Store의 개념을 이해하고, 오픈소스 프레임워크인 Feast의 작동 방식을 탐구했습니다.
---
## 11. 더 깊이 알아보기 (Further Reading)
-[Kubeflow 공식 문서](https://www.kubeflow.org/docs/): Kubeflow의 다양한 컴포넌트에 대한 상세한 가이드
-[GitHub Actions 문서](https://docs.github.com/en/actions): 워크플로우 작성법 및 다양한 예제
-[Evidently AI 공식 문서](https://docs.evidentlyai.com/): 데이터 드리프트 및 모델 성능 모니터링 리포트 생성 가이드
-[Feast 공식 문서](https://docs.feast.dev/): Feature Store 구축을 위한 튜토리얼 및 핵심 개념
---
**➡️ 다음 시간: [Part 12: 대규모 AI 모델 최적화 및 서빙](./part_12_model_optimization.md)**
AI 기술이 사회 깊숙이 자리 잡으면서, 우리는 그 성능만큼이나 '책임'과 '신뢰'에 대해 고민해야 하는 시대에 살고 있습니다. AI가 내린 결정이 사람과 사회에 미치는 영향이 막대하기 때문입니다. Part 14에서는 "AI를 어떻게 더 똑똑하게 만들 것인가?"라는 질문을 넘어, "어떻게 더 올바르고 공정하게 만들 것인가?"에 대한 답을 찾아갑니다. 모델의 속마음을 들여다보는 XAI 기술부터, 숨겨진 차별을 찾아내는 편향성 분석, 그리고 글로벌 표준이 될 AI 규제까지, 신뢰할 수 있는 AI 전문가로 성장하기 위한 마지막 필수 역량을 갖추게 될 것입니다.
---
## 4. 설명가능 AI (XAI)
복잡한 딥러닝 모델이나 앙상블 모델은 종종 '블랙박스(Black Box)'로 취급됩니다. 뛰어난 예측 성능을 보이지만, 왜 그런 결정을 내렸는지 그 내부 과정을 이해하기 어렵기 때문입니다. 이러한 문제는 금융, 의료, 법률 등 결정에 대한 설명 책임이 중요한 분야에서 모델의 신뢰도를 떨어뜨리고, 공정성 문제를 야기하며, 디버깅을 어렵게 만듭니다.
**설명가능 AI (eXplainable AI, XAI)**는 이러한 블랙박스 모델의 예측 결과를 사람이 이해할 수 있는 형태로 설명하고 해석하는 것을 목표로 하는 기술 및 방법론의 총칭입니다.
**XAI의 중요성:**
-**신뢰성 및 투명성 확보**: 모델의 결정 과정을 이해함으로써 사용자와 규제 기관의 신뢰를 얻을 수 있습니다.
-**공정성 검증**: 모델이 특정 인구 집단에 대해 편향된 예측을 하는지 확인하고, 그 원인을 파악하는 데 도움을 줍니다.
-**디버깅 및 모델 개선**: 예측이 잘못된 경우, 어떤 피처(feature)가 잘못된 판단에 영향을 미쳤는지 분석하여 모델을 개선할 수 있습니다.
-**규제 준수**: GDPR의 '설명을 요구할 권리'나 다양한 AI 관련 규제에 대응하기 위해 필수적입니다.
LIME은 "특정 예측 하나"에 대한 설명을 제공하는 데 중점을 두는 대표적인 **로컬(Local)** XAI 기법입니다. 'Model-agnostic'이라는 이름처럼, 어떤 종류의 블랙박스 모델(딥러닝, 앙상블 등)에도 적용할 수 있는 범용적인 방법입니다.
**핵심 아이디어**:
복잡한 전체 모델의 결정 경계(decision boundary)를 이해하려는 대신, 설명하고자 하는 특정 데이터 포인트 주변의 '지역적인(local)' 공간에만 집중합니다. 그리고 그 좁은 지역에서는 간단한 선형 모델(Linear Model)과 같은 해석 가능한 모델로 복잡한 모델의 행동을 근사(approximate)할 수 있다고 가정합니다.
**작동 방식**:
1. 설명하고 싶은 데이터 포인트(예: 특정 고객의 대출 승인 예측)를 선택합니다.
2. 해당 데이터 포인트 주변에 수많은 가상의 샘플 데이터들을 생성합니다. (예: 특정 피처 값을 약간씩 변경)
3. 생성된 각 샘플에 대해 블랙박스 모델의 예측 값을 얻습니다.
4. 원본 데이터에 가까운 샘플에 더 높은 가중치를 주어, 이 샘플들과 예측 값들을 가장 잘 설명하는 간단한 선형 모델을 학습시킵니다.
5. 학습된 선형 모델의 회귀 계수(coefficients)를 통해, "이 예측에 어떤 피처가 긍정적/부정적으로 얼마나 영향을 미쳤는지"를 설명합니다.
-**장점**: 이해하기 쉽고 직관적이며, 어떤 모델에도 적용할 수 있습니다.
-**단점**: 샘플링 방식에 따라 설명 결과가 불안정할 수 있으며, '지역적'이라는 범위의 정의가 모호할 수 있습니다.
### 2. SHAP (SHapley Additive exPlanations)
SHAP은 협력 게임 이론(Cooperative Game Theory)의 '섀플리 값(Shapley Value)' 개념을 AI 모델 설명에 적용한 기법입니다. 각 피처를 게임에 참여하는 '플레이어'로 보고, 모델의 예측에 각 피처가 얼마나 '기여'했는지를 공정하게 배분하여 설명합니다.
**핵심 아이디어**:
어떤 피처의 기여도는 "해당 피처가 있을 때의 예측 값"과 "해당 피처가 없을 때의 예측 값"의 차이로 계산할 수 있습니다. SHAP은 가능한 모든 피처 조합에 대해 이 기여도를 계산하고 평균을 내어, 각 피처의 최종적인 기여도(SHAP Value)를 결정합니다.
**SHAP Value의 의미**:
-**양수(+) SHAP Value**: 해당 피처의 값이 예측을 증가시키는 방향으로 작용했습니다.
-**음수(-) SHAP Value**: 해당 피처의 값이 예측을 감소시키는 방향으로 작용했습니다.
-**절대값 크기**: 기여도의 크기를 의미합니다.
**주요 특징 및 시각화**:
-**로컬 및 글로벌 설명**: LIME처럼 개별 예측에 대한 설명(Local)이 가능할 뿐만 아니라, 전체 데이터셋에 대한 각 피처의 영향을 종합하여 모델 전체를 설명(Global)하는 것도 가능합니다.
-**일관성 및 정확성**: 탄탄한 이론적 배경을 바탕으로, LIME보다 일관성 있고 신뢰도 높은 설명을 제공합니다.
-**다양한 시각화 도구**:
-**Force Plot**: 특정 예측에 대한 각 피처의 긍정/부정적 영향을 시각적으로 보여줍니다.
-**Summary Plot**: 전체 데이터에 대해 각 피처가 예측에 미치는 영향의 분포와 중요도를 한눈에 보여줍니다.
-**장점**: 이론적 기반이 탄탄하고, 로컬/글로벌 설명을 모두 제공하며, 시각화 도구가 강력합니다.
-**단점**: 계산량이 많아, 특히 데이터가 크거나 피처가 많을 경우 계산 시간이 매우 오래 걸릴 수 있습니다.
---
## 5. 편향성 탐지 및 완화
AI 모델은 학습 데이터에 내재된 사회적, 역사적 편견을 그대로 학습하여 특정 그룹에 불리한 예측을 내놓을 위험이 있습니다. 예를 들어, 과거 채용 데이터에 남성 지원자가 많았다면, AI 채용 모델은 성별을 중요한 판단 기준으로 학습하여 여성 지원자에게 불리한 결정을 내릴 수 있습니다. 이러한 모델의 **편향성(Bias)**은 기업의 신뢰도를 해치고, 법적 문제를 야기하며, 사회적 불평등을 심화시킬 수 있습니다.
**공정한 AI(Fair AI)**는 이러한 편향성을 탐지하고, 측정하며, 완화하여 모델이 모든 사람에게 공평하게 작동하도록 보장하는 것을 목표로 합니다.
### Microsoft Fairlearn: 공정성 측정을 위한 도구
Fairlearn은 Microsoft에서 개발한 오픈소스 라이브러리로, 머신러닝 시스템의 공정성을 평가하고 개선하는 데 필요한 다양한 기능을 제공합니다.
**주요 기능:**
-**편향성 시각화**: 다양한 공정성 지표에 대한 모델의 성능을 그룹별(예: 성별, 인종별)로 비교하여 시각적으로 보여주는 대시보드를 제공합니다.
-**공정성 지표 측정**: 수십 가지의 공정성 관련 지표를 계산하여 모델의 편향성 정도를 정량적으로 평가할 수 있습니다.
-**편향성 완화 알고리즘**: 학습 데이터나 모델을 수정하여 편향성을 줄일 수 있는 다양한 완화 알고리즘을 제공합니다.
### 공정성 지표의 종류
Fairlearn에서는 크게 두 가지 유형의 공정성 문제를 다룹니다.
1.**Allocation Harms (자원 할당의 피해)**: AI의 결정이 기회나 자원(예: 채용, 대출 승인)의 분배에 영향을 미칠 때 발생합니다.
-**Demographic Parity (인구 통계학적 동등성)**: 모든 그룹에서 '긍정적인 예측 결과(예: 합격, 대출 승인)'의 비율이 동일해야 한다는 원칙입니다. 즉, `P(모델 예측=1 | 그룹=A) = P(모델 예측=1 | 그룹=B)` 입니다. 가장 직관적이지만, 그룹 간 실제 긍정 비율(base rate)이 다른 경우 오히려 역차별을 낳을 수 있습니다.
-**Equalized Odds (동등한 기회)**: 실제 결과가 참(True)인 경우와 거짓(False)인 경우 각각에 대해, 모든 그룹이 동일한 예측 확률(True Positive Rate, False Positive Rate)을 가져야 한다는 원칙입니다. 즉, 모든 그룹에서 민감도(Sensitivity)와 특이도(Specificity)가 같아야 합니다. Demographic Parity보다 더 엄격하고 정교한 기준으로 여겨집니다.
2.**Quality-of-Service Harms (서비스 품질의 피해)**: 모델의 성능(예: 정확도)이 특정 그룹에서 현저히 낮게 나타날 때 발생합니다.
-**Equal Accuracy (동일 정확도)**: 모든 그룹에서 모델의 정확도(Accuracy)가 동일해야 합니다.
어떤 지표를 사용할지는 문제의 종류와 사회적 합의에 따라 달라지며, 모든 지표를 동시에 만족시키는 것은 일반적으로 불가능합니다.
### 편향성 완화 기법
Fairlearn은 편향성을 완화하기 위해 머신러닝 파이프라인의 각 단계에 적용할 수 있는 세 가지 유형의 알고리즘을 제공합니다.
1.**전처리 (Preprocessing)**: 모델을 학습시키기 전에, 원본 데이터를 변환하여 데이터 자체의 편향성을 줄이는 방법입니다.
- 예: `Reweighing` - 소수 그룹의 데이터 샘플에 더 높은 가중치를 부여하여 학습 과정에서 더 큰 영향을 미치도록 합니다.
2.**인프로세싱 (In-processing) / 학습 중 처리**: 모델 학습 과정 자체에 공정성 제약 조건을 추가하여, 정확도와 공정성을 동시에 최적화하는 모델을 학습시키는 방법입니다.
- 예: `GridSearch` - 정확도와 공정성 지표 사이의 트레이드오프를 고려하여 여러 모델을 학습시키고 최적의 모델을 선택합니다.
3.**후처리 (Post-processing)**: 이미 학습된 블랙박스 모델의 예측 결과를 조정하여 편향성을 완화하는 방법입니다. 모델 자체를 수정할 수 없을 때 유용합니다.
- 예: `ThresholdOptimizer` - 각 그룹별로 최적의 예측 임계값(threshold)을 다르게 설정하여 공정성 지표를 만족시키도록 조정합니다.
이러한 기법들을 사용하여 개발자는 모델의 성능과 공정성 사이의 균형을 맞추고, 더 책임감 있는 AI 시스템을 구축할 수 있습니다.
---
## 6. AI 규제와 컴플라이언스
AI 기술이 사회 전반에 확산되면서, 각국 정부와 국제기구는 AI의 잠재적 위험을 관리하고 신뢰를 확보하기 위한 규제 및 거버넌스 체계를 마련하고 있습니다. 개발자와 기업은 이러한 규제를 준수하고 사회적 책임을 다하기 위해 노력해야 합니다.
### EU AI Act: 세계 최초의 포괄적 AI 법안
유럽연합(EU)의 AI Act는 AI 시스템을 위험 수준에 따라 4단계(불용, 고위험, 제한된 위험, 최소 위험)로 분류하고, 각 등급별로 차등적인 의무를 부과하는 세계 최초의 포괄적인 AI 법률입니다.
**핵심 내용**:
1.**위험 기반 접근 방식 (Risk-Based Approach)**:
-**불용 위험 (Unacceptable Risk)**: 사회적 점수화, 잠재의식적 조작 등 인간의 안전과 권리에 명백한 위협이 되는 AI 시스템은 **전면 금지**됩니다.
-**고위험 (High-Risk)**: 채용, 신용 평가, 의료, 핵심 인프라 등 개인과 사회에 중대한 영향을 미칠 수 있는 AI 시스템입니다. 고위험 AI는 시장에 출시되기 전과 운영 중에 엄격한 요구사항(데이터 품질, 문서화, 투명성, 인간 감독 등)을 준수해야 합니다.
-**제한된 위험 (Limited Risk)**: 챗봇, 딥페이크 등 사용자가 AI와 상호작용하고 있다는 사실을 인지해야 하는 시스템입니다. **투명성 의무**가 부과됩니다.
-**최소 위험 (Minimal Risk)**: AI 기반 비디오 게임, 스팸 필터 등 대부분의 AI 시스템이 여기에 해당하며, 별도의 의무는 없지만 자발적인 행동 강령 준수가 권장됩니다.
2.**범용 AI (General-Purpose AI) 모델에 대한 규제**:
- GPT, Claude와 같은 대규모 AI 모델도 규제 대상에 포함됩니다. 모델 개발자는 기술 문서를 작성하고, EU 저작권법을 존중하며, 학습 데이터에 대한 상세한 요약을 제공해야 할 의무가 있습니다.
EU AI Act는 유럽 시장에 AI 제품이나 서비스를 제공하는 모든 기업(EU 외 기업 포함)에 적용되므로, 글로벌 스탠더드로 자리 잡을 가능성이 높습니다.
### 모델 카드 (Model Cards)
모델 카드는 구글에서 제안한 개념으로, 학습된 머신러닝 모델의 성능, 특성, 한계 등을 투명하게 공개하기 위한 **표준화된 문서**입니다. 마치 제품의 '영양성분표'처럼, 모델 사용자가 모델에 대해 충분히 이해하고 책임감 있게 사용할 수 있도록 돕는 것을 목표로 합니다.
**주요 포함 내용**:
-**모델 기본 정보**: 모델 이름, 버전, 개발자, 연락처 등
-**용도**: 모델이 어떤 목적으로 개발되었고, 어떤 상황에서 사용되어야 하는지(Intended Use)와 사용되어서는 안 되는지(Out-of-Scope Use)를 명시합니다.
-**성능 지표**: 전체 데이터셋 및 인구 통계학적 하위 그룹(성별, 인종 등)에 대한 정확도, 정밀도, 재현율, 공정성 지표 등을 상세히 기술합니다.
-**학습 데이터**: 모델 학습에 사용된 데이터셋의 출처, 구성, 전처리 과정 등을 설명합니다.
-**윤리적 고려사항**: 모델의 잠재적 편향성, 개인정보보호 문제, 사회적 영향 등에 대한 분석과 완화 노력을 포함합니다.
### 데이터 시트 (Datasheets for Datasets)
데이터 시트는 마이크로소프트에서 제안한 개념으로, 데이터셋 자체에 대한 상세한 정보를 제공하는 문서입니다. 머신러닝 모델의 성능과 편향성은 학습 데이터에 크게 의존하기 때문에, 데이터셋의 특성과 한계를 명확히 이해하는 것은 매우 중요합니다.
**주요 포함 내용**:
-**데이터셋 기본 정보**: 데이터셋 이름, 버전, 생성자, 라이선스 등
-**수집 동기 및 과정**: 어떤 목적으로, 누가, 어떻게 데이터를 수집하고 정제했는지 상세히 기록합니다.
-**데이터 구성**: 데이터의 형식(이미지, 텍스트 등), 통계적 특성, 민감 정보 포함 여부 등을 기술합니다.
-**권장 사용법 및 한계**: 데이터셋이 어떤 종류의 작업에 적합하며, 잠재적으로 어떤 편향을 포함하고 있는지, 사용 시 주의할 점은 무엇인지 명시합니다.
모델 카드와 데이터 시트는 AI 시스템의 투명성과 책임성을 높이는 핵심적인 도구입니다. 개발자는 이러한 문서를 충실히 작성하고 공개함으로써 사용자와의 신뢰를 구축하고, AI 기술의 건강한 생태계를 만드는 데 기여할 수 있습니다.
---
## 7. 개념 확인 퀴즈 (Concept Check Quiz)
1. XAI 기법인 LIME과 SHAP의 가장 큰 차이점은 무엇인가요? (설명의 범위 관점에서)
2. AI의 공정성 지표 중 'Demographic Parity'와 'Equalized Odds'는 각각 무엇을 의미하며, 어떤 상황에서 서로 다른 결론을 내릴 수 있을까요?
3. '모델 카드'를 작성하는 가장 중요한 목적은 무엇이라고 생각하시나요?
---
## 8. 과제 (Assignment)
1.**공정성 문제 해결 시나리오**: 여러분이 은행의 대출 심사 AI 모델 개발자라고 가정해 봅시다. 모델이 특정 그룹에게 불리한 결정을 내린다는 의심이 제기되었습니다. Fairlearn 라이브러리를 사용하여 이 문제를 (1)탐지하고, (2)측정하고, (3)완화하기 위한 단계를 구체적으로 설명해 보세요.
2.**모델 카드 작성 연습**: 여러분이 이전에 만들었던 프로젝트(또는 가상의 이미지 분류 모델)에 대한 '모델 카드'의 주요 항목(용도, 성능 지표, 학습 데이터, 윤리적 고려사항)을 간략하게 채워보는 연습을 해보세요.
---
## 9. 되짚어보기 (Summary)
이번 파트에서는 AI를 더 똑똑하게 만드는 것을 넘어, 더 올바르고 공정하게 만들기 위한 AI 윤리와 거버넌스 실무에 대해 학습했습니다.
-**설명가능 AI (XAI)**: '블랙박스' 모델의 결정을 이해하기 위한 XAI의 필요성을 배우고, 대표적인 기법인 LIME과 SHAP의 원리와 활용법을 익혔습니다.
-**편향성 탐지 및 완화**: AI 모델이 학습 데이터로부터 편견을 학습할 수 있음을 인지하고, Fairlearn을 사용하여 모델의 편향성을 측정하고 완화하는 다양한 기법들을 살펴보았습니다.
-**AI 규제와 컴플라이언스**: EU AI Act와 같은 글로벌 AI 규제 동향을 파악하고, 모델 카드와 데이터 시트를 통해 AI 시스템의 투명성과 책임성을 확보하는 방법을 학습했습니다.
---
## 10. 더 깊이 알아보기 (Further Reading)
-[LIME 원문 논문 (KDD 2016)](https://arxiv.org/abs/1602.04938)
-[SHAP 원문 논문 (NeurIPS 2017)](https://arxiv.org/abs/1705.07874)
-[Fairlearn 공식 문서](https://fairlearn.org/): 공정성 측정 및 완화 알고리즘 가이드
-[Hugging Face Blog: Model Cards](https://huggingface.co/blog/model-cards): 모델 카드 작성에 대한 좋은 예시와 설명
-[EU AI Act 최종안 (영문)](https://artificialintelligenceact.com/): AI 법안의 상세 조항 확인
---
**➡️ 다음 시간: [Part 15: 나만의 AI 서비스 만들기 (캡스톤 프로젝트 가이드)](./part_15_capstone_project.md)**
@@ -343,6 +343,52 @@ Jupyter Notebook/Lab은 코드 스니펫을 빠르게 테스트하고, 데이터
VS Code는 단순한 스크립트 작성부터 대규모 프로젝트 개발까지 모두 지원하는 강력하고 유연한 도구입니다. Jupyter Notebook과 함께 사용하면 더욱 효율적인 개발이 가능합니다.
### 6.3. AI 기반 코드 에디터 활용 (Cursor)
지금까지 우리는 AI 개발을 위한 기초 체력을 기르기 위해 Anaconda, VS Code 등 필수적인 도구들을 설치하고 가상 환경을 구축했습니다. 이제 개발 생산성을 극대화할 수 있는 강력한 도구인 **AI 기반 코드 에디터, Cursor**의 활용법에 대해 알아봅니다.
VS Code가 '스마트 작업대'라면, Cursor는 **'AI 조수가 함께하는 최첨단 스마트 작업대'**라고 할 수 있습니다. Cursor는 VS Code를 기반으로 만들어져 기존 VS Code의 모든 기능을 그대로 사용하면서, 강력한 AI 기능을 통합하여 개발의 모든 단계에서 도움을 줍니다.
#### 왜 AI 코드 에디터를 사용해야 할까요?
-**개발 시간 단축**: 반복적인 코드 작성, 복잡한 로직 구현, 문서 검색 등에 소요되는 시간을 AI가 대신 처리해주어 핵심 비즈니스 로직에 더 집중할 수 있습니다.
-**학습 곡선 완화**: 새로운 라이브러리나 프레임워크를 배울 때, AI에게 직접 질문하고 코드 예시를 받으며 빠르게 학습할 수 있습니다.
-**코드 품질 향상**: AI가 코드 스니펫 생성, 리팩토링, 버그 수정 등을 제안하여 더 깨끗하고 효율적인 코드를 작성하도록 돕습니다.
-**맥락(Context) 기반의 정확한 지원**: AI가 현재 작업 중인 전체 프로젝트 구조, 열려 있는 파일, 터미널 내용 등을 이해하고 질문의 의도에 맞는 정확하고 실용적인 답변을 제공합니다.
#### Cursor 설치 및 기본 설정
1.**설치**:
-[Cursor 공식 홈페이지](https://cursor.sh/)에 접속하여 자신의 운영체제에 맞는 버전을 다운로드하고 설치합니다.
- 설치 과정은 일반적인 애플리케이션과 동일하며 매우 간단합니다.
2.**기본 설정 (OpenAI API 키 연동 - 선택 사항)**:
- Cursor는 기본적으로 내장된 AI 모델을 무료로 제공하지만, 더 높은 성능의 GPT-4와 같은 모델을 사용하려면 개인의 OpenAI API 키를 등록할 수 있습니다.
-`File > Preferences > Settings` (단축키: `Ctrl + ,`) 로 이동한 후 'Cursor'를 검색하여 관련 설정을 찾을 수 있습니다.
3.**기존 VS Code 설정 마이그레이션**:
- Cursor는 최초 실행 시 기존에 사용하던 VS Code의 확장 프로그램과 설정을 그대로 가져올지 묻습니다. 이를 통해 별도의 설정 없이 기존 개발 환경을 그대로 사용할 수 있습니다.
#### Cursor 핵심 기능 완전 정복
Cursor의 핵심 기능은 단축키 `Ctrl + K` (AI에게 질문/코드 생성)와 `Ctrl + L` (채팅)에 집약되어 있습니다.
| 기능 | 단축키 (Windows/Linux) | 설명 | 활용 예시 |
|---|---|---|---|
| **AI 채팅 (Chat)** | `Ctrl + L` | 사이드바 형태의 채팅창을 열어 AI와 대화합니다. 현재 열린 파일이나 선택된 코드 블록을 자동으로 인식(`@` 기호 활용)하여 맥락에 맞는 답변을 제공합니다. | - "이 `calculate_metrics` 함수의 코드를 설명해줘."<br>- "Pandas 데이터프레임에서 중복된 행을 제거하는 방법을 알려줘."<br>- "이 프로젝트의 전체 구조를 다이어그램으로 그려줘." |
| **인라인 코드 생성/수정 (Inline Edit/Generate)** | `Ctrl + K` | 코드 편집기 내에서 직접 AI에게 코드 생성을 요청하거나, 기존 코드를 수정하도록 지시합니다. | - 빈 줄에서: "사용자 정보를 담는 `User` Pydantic 모델을 만들어줘."<br>- 기존 코드 블록 선택 후: "이 코드를 try-except 구문으로 감싸서 예외 처리를 추가해줘."<br>- "이 함수의 이름을 `process_data`로 변경하고 관련 참조도 모두 수정해줘." |
| **컨텍스트 활용 (`@` 기호)** | 채팅 또는 인라인(`Ctrl+K`)에서 `@` 입력 | AI에게 참고할 파일이나 심볼(함수/클래스), 문서를 명시적으로 지정하여 더 정확한 답변을 유도합니다. | - `@main.py` 파일의 내용을 기반으로 질문<br>- `@calculate_metrics` 함수에 대해 질문<br>- `@fastapi` 공식 문서를 참고하여 답변 요청 |
| **AI를 이용한 디버깅 (Debug with AI)** | 코드 에디터의 'Run and Debug' 또는 에러 발생 시 | 코드 실행 중 발생한 에러에 대해 `Fix with AI` 버튼을 클릭하면, AI가 에러의 원인을 분석하고 해결책을 제시합니다. | - `NullPointerException` 발생 시 원인 분석 및 해결 코드 제안 |
#### 사내 Best Practice 공유
-**새로운 기능 구현은 AI와 함께**: 새로운 API 엔드포인트나 데이터 처리 로직을 구현할 때, 주석으로 원하는 기능을 명시하고 `Ctrl + K`를 눌러 AI에게 초안 작성을 맡겨보세요. 개발 속도가 비약적으로 향상됩니다.
-**문서(Documentation)는 AI에게**: 잘 작성된 코드 블록을 선택하고 "이 코드에 대한 docstring을 작성해줘"라고 요청하면, 표준 형식에 맞는 문서 초안을 얻을 수 있습니다.
-**리팩토링은 부담 없이**: 개선하고 싶은 코드(예: 중복 코드, 긴 함수)를 선택하고 "이 코드를 더 효율적으로 리팩토링해줘" 또는 "이 함수를 여러 개의 작은 함수로 분리해줘" 와 같이 요청하여 코드 품질을 지속적으로 관리하세요.
-**막힐 때는 바로 질문하기**: 개발 중 모르는 것이 생겼을 때 웹 브라우저를 열어 검색하는 대신, `Ctrl + L`을 눌러 바로 AI에게 질문하세요. 작업의 흐름을 유지하면서 필요한 정보를 즉시 얻을 수 있습니다.
Cursor와 같은 AI 기반 도구를 적극적으로 활용하는 것은 이제 선택이 아닌 필수입니다. 이러한 도구를 통해 반복적인 작업을 자동화하고, 창의적인 문제 해결에 더 많은 시간을 투자하여 개발자로서의 가치를 더욱 높일 수 있습니다.
## 7. 개발 환경 설정 FAQ 및 트러블슈팅 (Troubleshooting)
개발 환경 설정 과정에서 몇 가지 일반적인 문제에 직면할 수 있습니다. 다음은 자주 묻는 질문과 해결 방법입니다. ([용어집의 FAQ 섹션](glossaries/part_1_glossary.md#자주-묻는-질문-faq)도 참고하세요.)
...
...
@@ -401,10 +447,10 @@ VS Code는 단순한 스크립트 작성부터 대규모 프로젝트 개발까
***Anaconda**는 Python과 필수 데이터 과학 패키지를 쉽게 설치하고 관리할 수 있게 해주는 배포판입니다.
***가상 환경(`conda`)**은 프로젝트별로 독립된 개발 환경을 제공하여 의존성 문제를 해결하고 재현성을 높입니다. **모든 프로젝트는 새로운 가상 환경에서 시작하는 것을 강력히 권장합니다.**
***Jupyter Notebook/Lab**은 대화형 코드 실행 및 문서화에 유용하며, 특히 데이터 분석과 실험에 효과적입니다.
***VS Code**는 강력한 기능을 갖춘 코드 편집기로, Python 개발 및 대규모 프로젝트 관리에 적합합니다.
***VS Code**는 강력한 기능을 갖춘 코드 편집기로, Python 개발을 비롯한 다양한 프로그래밍 작업에 널리 사용됩니다.
환경 설정은 때때로 지루하고 복잡하게 느껴질 수 있지만, 이 단계를 탄탄하게 다져놓으면 앞으로의 학습과 개발 과정이 훨씬 수월해질 것입니다.
**다음 시간에는 본격적으로 Python 프로그래밍의 세계로 뛰어들어, AI 개발의 기초 체력을 기르기 위한 핵심 문법을 배우게 됩니다.** 준비되셨나요?
**➡️ 다음 시간: [Part 2: Python 핵심 문법 마스터하기](part_2_python_core_syntax.md)**
\ No newline at end of file
**➡️ 다음 시간: [Part 2: 파이썬 핵심 문법](part_2_python_core_syntax.md)**
## 3. 도입: 문장의 '진짜 의미'를 파악하는 똑똑한 번역가 (Introduction)
> **💡 비유: Transformer는 '능숙한 동시통역사'**
> - **초보 번역가 (RNN)**: 문장을 앞에서부터 한 단어씩 순서대로 듣고 바로 번역합니다. "나는 강가에 가서..." 까지 듣고 'I go to the river bank and...' 라고 번역을 시작합니다. 하지만 뒤에 '낚시를 했다'가 나올지 '수영을 했다'가 나올지에 따라 문맥이 달라질 수 있습니다. 긴 문장을 들으면 앞부분을 잊어버리는 단점도 있습니다.
> - **능숙한 통역사 (Transformer)**: 문장 전체("그는 강가에서 낚시를 했다")를 일단 다 듣습니다. 그리고 '낚시를 했다'라는 핵심 행동을 파악한 뒤, 이 행동과 가장 관련이 깊은 '강가', '그'라는 단어에 **더 집중(Attention)**하여 "He went fishing by the river" 라는 자연스러운 번역을 완성합니다. 문장 전체의 핵심과 단어 간의 관계를 파악하는 데 능숙합니다.
이처럼 Transformer는 문장 전체를 보고 단어 간의 관계와 중요도를 파악하는 **Attention** 메커니즘을 사용하여 자연어의 복잡한 문맥을 이해하는 혁신적인 방법을 제시했습니다.
---
## 4. Transformer 핵심 원리 파헤치기
### 4-1. Attention 메커니즘의 등장: RNN의 한계를 넘어서
기존의 순차 데이터 처리 모델인 RNN(Recurrent Neural Network)은 문장이 길어질수록 앞쪽 정보가 뒤로 전달되며 소실되는 **장기 의존성 문제(Long-Term Dependency Problem)**가 있었습니다. 또한, 순차적으로 계산해야 해서 GPU 병렬 처리가 어려워 학습 속도가 느렸습니다.
이를 해결하기 위해 **Attention**이 제안되었습니다. 출력 단어를 예측할 때마다, 입력 문장 전체를 다시 참고하여 **가장 관련 높은 단어에 '주목'**하는 방식입니다.
### 4-2. Transformer: "Attention Is All You Need"
2017년 구글 논문 "Attention Is All You Need"에서 소개된 Transformer는 RNN 구조를 완전히 버리고 오직 Attention 메커니즘만으로 언어를 처리하는 모델입니다.
**주요 구성 요소**
-**인코더 (Encoder)**: 입력 문장을 받아 각 단어의 의미와 문맥 정보를 풍부하게 담은 **표현(Representation)**으로 변환합니다. 문장을 '이해'하는 데 특화된 부분입니다.
-**디코더 (Decoder)**: 인코더가 만든 표현과 이전에 생성된 단어들을 바탕으로 다음 단어를 예측하여 새로운 문장을 '생성'하는 데 특화된 부분입니다.
### 4-3. 핵심 메커니즘: Self-Attention
Transformer의 심장은 **Self-Attention**입니다. 문장 안에서 단어들이 **서로에게 얼마나 중요한지**를 계산하여, 문맥에 맞는 단어의 의미를 파악하는 과정입니다.
> **예시**: "The animal didn't cross the street because **it** was too tired."
>
> 여기서 'it'이 가리키는 대상은 'animal'일까요, 'street'일까요? 사람은 쉽게 'animal'이라고 파악합니다. Self-Attention은 'it'과 문장 내 다른 모든 단어와의 관련도 점수를 계산하여, 'it'이 'animal'을 가리킨다는 것을 높은 확률로 학습하게 됩니다.
이 과정은 각 단어에 대해 `Query(Q)`, `Key(K)`, `Value(V)`라는 세 가지 벡터를 만들어 계산합니다.
-`Query`: 현재 단어의 정보 (분석의 주체)
-`Key`: 다른 단어들과의 관련성을 계산하기 위한 '꼬리표'
-`Value`: 다른 단어들의 실제 의미
현재 단어의 `Query`가 다른 모든 단어의 `Key`들과 얼마나 '어울리는지(유사도)'를 계산하고, 이 점수를 각 단어의 `Value`에 곱해 최종적으로 문맥이 반영된 새로운 표현을 만들어냅니다.
### 4-4. 순서 정보 학습: Positional Encoding
Transformer는 RNN과 달리 단어를 한 번에 처리하므로, "나는 너를 좋아해"와 "너는 나를 좋아해"를 구분하지 못합니다. 단어의 순서 정보를 알려주기 위해, 각 단어의 위치마다 고유한 값을 더해주는 **Positional Encoding**을 사용합니다. 사인(sine), 코사인(cosine) 함수를 이용해 각 위치에 대한 벡터를 만들어 입력 임베딩에 추가해 줍니다.
---
## 5. Transformer의 두 갈래: BERT와 GPT
Transformer 아키텍처는 현대 LLM의 근간이 되었습니다. 대표적인 두 모델인 BERT와 GPT는 Transformer의 구조를 각기 다른 방식으로 활용합니다.
| 구분 | BERT (Bidirectional Encoder Representations from Transformers) | GPT (Generative Pre-trained Transformer) |
|---|---|---|
| **개발사** | Google | OpenAI |
| **주요 구조** | Transformer의 **인코더(Encoder)만** 사용 | Transformer의 **디코더(Decoder)만** 사용 |
| **특징** | **"문맥을 이해하는 전문가"**<br>문장 전체를 보고 빈칸(Mask)을 채우는 방식으로 학습 (양방향). 문맥 이해, 의미 분석, 분류 등 **이해(Understanding)** 기반 작업에 강력함. | **"이야기를 만들어내는 작가"**<br>이전 단어들을 보고 다음 단어를 예측하며 순차적으로 학습 (단방향). 문장 생성, 요약, 번역 등 **생성(Generation)** 기반 작업에 강력함. |
| **주요 활용** | 구글 검색 엔진, 텍스트 분류, 감성 분석, 개체명 인식 | 챗봇(ChatGPT), 콘텐츠 초안 생성, 코드 자동 완성 |
---
## 6. 개념 확인 퀴즈 (Concept Check Quiz)
1. Transformer 이전의 순차 데이터 모델(RNN)이 가졌던 가장 큰 한계점은 무엇이었나요?
2. 'Self-Attention' 메커니즘의 역할을 한 문장으로 설명해 보세요.
3. GPT가 주로 사용하는 Transformer의 구성요소는 인코더(Encoder)인가요, 디코더(Decoder)인가요?
---
## 7. 과제 (Assignment)
1.**BERT와 GPT의 활용 분야 비교 조사**: BERT와 GPT가 각각 어떤 종류의 AI 서비스(e.g., 검색 엔진, 챗봇, 번역기)에 더 적합한지, 그 이유와 함께 실제 서비스 예시를 2가지 이상 찾아 설명해 주세요.
2.**쉬운 비유로 설명하기**: 'Self-Attention'의 원리를 비전공자 친구에게 설명한다고 상상하고, 쉬운 비유를 들어 3문장 이내로 설명하는 글을 작성해 주세요. (예: "칵테일 파티에서 여러 사람과 대화할 때, 나와 가장 관련 있는 주제를 이야기하는 사람의 목소리에 더 집중하는 것과 같아요.")
---
## 8. 되짚어보기 (Summary)
이번 파트에서는 현대 NLP의 혁신을 가져온 Transformer에 대해 배웠습니다.
-**Attention의 등장**: RNN의 장기 의존성 문제를 해결하기 위한 아이디어로 시작했습니다.
-**Transformer의 구조**: RNN을 완전히 배제하고, 인코더-디코더 구조와 Self-Attention만으로 문장의 문맥을 파악하는 방법을 이해했습니다.
-**BERT와 GPT**: Transformer의 인코더와 디코더가 각각 어떻게 문맥 이해와 텍스트 생성이라는 두 가지 큰 흐름을 만들어냈는지 확인했습니다.
## 9. 더 깊이 알아보기 (Further Reading)
-[Attention Is All You Need (원문 논문)](https://arxiv.org/abs/1706.03762): 모든 것의 시작이 된 논문.
-[The Illustrated Transformer (영문 블로그)](http://jalammar.github.io/illustrated-transformer/): 그림과 함께 Transformer를 쉽게 설명한 최고의 자료 중 하나.
-[Hugging Face Course - How do Transformers work?](https://huggingface.co/learn/llm-course/en/chapter1/4): 본문에 많이 참고된 허깅페이스의 LLM 강좌.
---
**➡️ 다음 시간: [Part 7.5: LangChain으로 LLM 애플리케이션 개발 맛보기](./part_7.5_llm_application_development_with_langchain.md)**
> 선형 계층(`nn.Linear`)만 계속 쌓으면 결국 하나의 큰 선형 계층과 다를 바 없습니다. 활성화 함수는 여기에 '비선형성'이라는 마법을 더해, 복잡하고 구불구불한 데이터 패턴도 학습할 수 있게 해주는 필수 요소입니다.
---
## 5. 딥러닝 모델 학습 과정
> **🎯 3-4일차 목표:** 손실 함수, 옵티마이저의 개념을 이해하고 전체 학습 루프를 구현합니다.
### 5-1. 모델의 나침반과 조율사
-**손실 함수(Loss Function)**: 모델의 예측이 실제 정답과 얼마나 다른지를 측정하는 **'오차 측정기'**. (예: `nn.CrossEntropyLoss` - 분류 문제)
-**옵티마이저(Optimizer)**: 손실 함수가 계산한 오차를 기반으로, 모델의 파라미터(가중치)를 어느 방향으로 얼마나 업데이트할지 결정하는 **'조율사'**. (예: `torch.optim.Adam`)
### 5-2. 핵심 프로세스: 학습 루프(Training Loop)
> ### 심화: 활성화 함수, 왜 필요한가? (Deep Dive: Activation Functions)
>
> **Q: 왜 굳이 `ReLU` 같은 활성화 함수를 중간에 삽입해야 할까요? 선형 계층(`nn.Linear`)만 여러 개 쌓으면 더 간단하지 않을까요?**
>
> **A: 모델에 '비선형성(Non-linearity)'을 부여하기 위해서입니다.** 만약 활성화 함수 없이 선형 계층만 계속 쌓는다면, 이는 결국 하나의 거대한 선형 계층을 쌓은 것과 수학적으로 동일합니다.
>
> - **선형 변환의 한계**: 선형 변환은 데이터를 늘리거나, 줄이거나, 회전시키는 것은 가능하지만, 구불구불한 복잡한 형태의 데이터를 구분하는 경계선을 만들 수는 없습니다.
> - **비선형성의 마법**: 활성화 함수는 이러한 선형 변환 결과에 '비틀기'나 '접기'와 같은 비선형적인 변환을 가합니다. 이 과정을 여러 층 반복함으로써, 신경망은 아무리 복잡한 데이터 분포라도 학습하고 구분해낼 수 있는 유연하고 강력한 표현력(Expressiveness)을 갖추게 됩니다.
>
> **주요 활성화 함수 비교**
>
> | 활성화 함수 | 수식 / 특징 | 장점 | 단점 | 주요 사용처 |
> |---|---|---|---|---|
> | **Sigmoid** | `1 / (1 + e^-x)`<br>출력을 (0, 1) 사이로 압축 | 출력을 확률처럼 해석 가능 | **Vanishing Gradient** 문제 발생<br>출력의 중심이 0이 아님 | 이진 분류 문제의 출력층 |
> | **Tanh** | `(e^x - e^-x) / (e^x + e^-x)`<br>출력을 (-1, 1) 사이로 압축 | 출력의 중심이 0 (Sigmoid 단점 보완) | **Vanishing Gradient** 문제 여전히 존재 | RNN의 은닉층에서 종종 사용 |
> | **ReLU** | `max(0, x)`<br>입력이 0보다 작으면 0, 크면 그대로 출력 | 계산이 매우 빠름<br>Vanishing Gradient 문제 해결 | **Dying ReLU** 문제 (입력이 음수면 뉴런이 죽음) | 대부분의 딥러닝 모델의 은닉층 (가장 대중적) |
> | **Leaky ReLU** | `max(α*x, x)` (α는 작은 수, 예: 0.01)<br>ReLU의 변형 | Dying ReLU 문제 해결 | α 값을 직접 설정해야 함 | ReLU 대신 사용해볼 수 있는 대안 |
>| **Softmax** | `e^zi / Σ(e^zj)`<br>다중 클래스 분류의 출력을 확률 분포로 변환 | 각 클래스에 대한 확률을 직관적으로 보여줌 | - | 다중 클래스 분류 문제의 출력층 |
>
>
> ---
>
> ## 5. 딥러닝 모델 학습 과정
>
> > **🎯 3-4일차 목표:** 손실 함수, 옵티마이저의 개념을 이해하고 전체 학습 루프를 구현합니다.
>
> ### 5-1. 모델의 예측을 어떻게 평가할까? (손실 함수)
>
> 훌륭한 모델을 만들기 위해서는, 현재 모델이 얼마나 '잘하고' 또는 '못하고' 있는지를 측정할 객관적인 '평가 지표'가 필요합니다. 이 역할을 하는 것이 바로 **손실 함수(Loss Function)** 입니다.
>
> - **손실 함수(Loss Function)**: 모델의 예측값(`prediction`)과 실제 정답(`target`) 사이의 차이, 즉 **'오차(Error)'를 계산하는 함수**입니다. 딥러닝 학습의 목표는 이 손실 함수가 계산한 값을 **최소화(Minimize)**하는 것입니다.
> - **옵티마이저(Optimizer)**: 손실 함수가 계산한 오차를 기반으로, 모델의 파라미터(가중치)를 어느 방향으로 얼마나 업데이트할지 결정하는 **'조율사'**. (예: `torch.optim.Adam`)
>
> ### 심화: 대표적인 손실 함수 (MSE vs Cross-Entropy)
>
> 손실 함수는 해결하려는 문제의 종류에 따라 적절한 것을 선택해야 합니다.
>
> #### 1. 평균 제곱 오차 (Mean Squared Error, MSE)
> - **개념**: 예측값과 실제 정답 사이의 '거리'를 기반으로 오차를 측정합니다. 각 데이터 포인트의 오차를 제곱하고, 이를 모두 더한 후 평균을 냅니다.
> - **언제 사용하나?**: **회귀(Regression)** 문제. (예: 집값 예측, 주가 예측 등 연속적인 값을 예측할 때)