AI 전문가 양성 과정의 효과적인 학습을 위해 체계적인 진도 관리는 필수적입니다. 이 문서는 현재 scripts/progress_checker.py를 통한 기본적인 진도 확인에서 더 나아가, 학습 동기를 높이고 성취감을 강화하는 인터랙티브 진도 관리 시스템의 설계 및 구현 방안을 제시합니다.
**⬅️ 이전 시간: [Part 5: AI 핵심 라이브러리](../05_ai_core_libraries/part_5_ai_core_libraries.md)**
**➡️ 다음 시간: [Part 6: 머신러닝 모델링과 평가](../06_machine_learning/part_6_machine_learning.md)**
---
## 1. 학습 목표 (Learning Objectives)
이번 파트가 끝나면, 여러분은 다음을 할 수 있게 됩니다.
- 머신러닝과 딥러닝의 수학적 기반이 되는 선형대수학의 핵심 개념을 이해할 수 있습니다.
- NumPy를 사용하여 벡터와 행렬 연산을 수행하고 선형대수학 개념을 코드로 구현할 수 있습니다.
- 벡터, 행렬, 텐서의 차이점을 설명하고 각각의 연산 방법을 NumPy로 구현할 수 있습니다.
- 고유값과 고유벡터, 특이값 분해(SVD)의 개념을 이해하고 NumPy로 계산할 수 있습니다.
- 선형대수학 개념이 머신러닝과 딥러닝에서 어떻게 활용되는지 설명할 수 있습니다.
## 2. 핵심 요약 (Key Summary)
이 파트에서는 머신러닝과 딥러닝의 기반이 되는 선형대수학의 핵심 개념들을 NumPy를 활용하여 학습합니다. 벡터와 행렬의 기본 연산부터 시작하여 내적, 외적, 행렬 분해, 고유값과 고유벡터, 특이값 분해(SVD)까지 다양한 선형대수학 개념을 직접 코드로 구현하며 이해합니다. 또한 이러한 개념들이 머신러닝 알고리즘과 딥러닝 모델에서 어떻게 활용되는지 실제 사례를 통해 학습합니다.
print("오류: `source_code` 디렉토리에 'image.jpg' 파일을 찾을 수 없습니다.")
print("실습을 진행하려면 이미지를 해당 경로에 추가해주세요.")
```
### 문제 2: 선형 시스템 해결
다음 선형 방정식 시스템을 NumPy를 사용하여 해결하세요:
2x + y - z = 8
-3x - y + 2z = -11
-2x + y + 2z = -3
```python
# 계수 행렬 A와 상수 벡터 b 정의
A=np.array([[2,1,-1],
[-3,-1,2],
[-2,1,2]])
b=np.array([8,-11,-3])
# 선형 시스템 해결
x=np.linalg.solve(A,b)
print(f"해: x = {x[0]}, y = {x[1]}, z = {x[2]}")
# 검증
verification=A@x
print(f"A @ x = {verification}")
print(f"b = {b}")
```
---
## 8. 트러블슈팅 (Troubleshooting)
-**`LinAlgError: Singular matrix`가 발생했나요?**
- 이 오류는 행렬이 역행렬을 가지지 않을 때(특이 행렬) 발생합니다. 행렬식이 0이거나 행렬의 행이나 열이 선형 종속인 경우 이런 문제가 발생합니다. 이런 경우 `np.linalg.pinv()`를 사용하여 유사 역행렬(pseudo-inverse)을 계산할 수 있습니다.
-**행렬 곱셈 차원 오류가 발생했나요?**
- 행렬 곱셈 A @ B에서 A의 열 수와 B의 행 수가 일치해야 합니다. `A.shape[1] == B.shape[0]`를 확인하세요.
-**수치적 불안정성 문제가 있나요?**
- 부동소수점 연산으로 인해 매우 작은 오차가 발생할 수 있습니다. 이런 경우 `np.round(result, decimals=10)`와 같이 반올림하거나, `np.allclose(a, b)`를 사용하여 두 배열이 근사적으로 같은지 확인할 수 있습니다.
-**SVD나 고유값 분해 결과가 예상과 다른가요?**
- 고유벡터와 SVD의 결과는 부호가 반대로 나올 수도 있습니다. 이는 수학적으로 동등한 결과이므로 걱정하지 않아도 됩니다.
---
## 9. 되짚어보기 (Summary)
이번 파트에서는 머신러닝과 딥러닝의 수학적 기반인 선형대수학의 핵심 개념들을 NumPy를 활용하여 학습했습니다.
-**벡터와 행렬의 기본 연산**: 덧셈, 뺄셈, 곱셈, 내적, 외적 등 기본 연산을 NumPy로 구현했습니다.
-**LLMOps (Large Language Model Operations)**: 프롬프트 관리, 정성적 성능 평가, 실행 과정 추적 등 LLM 기반 애플리케이션의 전체 수명 주기를 안정적으로 관리하고 운영하기 위한 MLOps의 특화된 분야입니다.
-**LangSmith**: LLM 애플리케이션의 개발 및 운영을 위한 통합 플랫폼으로, 복잡한 체인과 에이전트의 내부 동작을 추적, 모니터링, 평가하는 강력한 기능을 제공합니다.
-**LangSmith**: LLM 애플리케이션의 개발 및 운영을 위한 통합 플랫폼으로, 복잡한 체인과 에이전트의 내부 동작을 추적, 모니터링, 평가하는 강력한 기능을 제공합니다.
-**하이브리드 검색 (Hybrid Search)**: 키워드 기반 검색(BM25 등)과 의미 기반 벡터 검색을 함께 사용하여 각 방식의 장점을 결합, 더 정확한 검색 결과를 얻는 RAG 기법입니다.
-**Cross-Encoder**: 두 텍스트(질문과 문서)를 함께 입력 받아 직접 관련성 점수를 계산하는 신경망 모델로, RAG에서 검색된 문서의 재순위화에 사용되며, 높은 정확도를 보이지만 계산 비용이 큽니다.
-**Bi-Encoder**: 텍스트를 독립적으로 임베딩(벡터화)하고 두 벡터 간의 유사도를 계산하는 모델로, RAG의 1차 검색에 주로 사용됩니다. Cross-Encoder보다 정확도는 낮지만 효율적입니다.
-**멀티 쿼리 확장 (Multi-Query Expansion)**: 하나의 사용자 질문을 LLM을 통해 여러 개의 다양한 관점의 질문으로 변환하여, 각 질문으로 검색 후 결과를 종합함으로써 검색의 다양성과 정확도를 높이는 기법입니다.
-**문맥 압축 (Contextual Compression)**: RAG 시스템에서 검색된 문서의 크기를 줄이고 관련성을 높이기 위해, 사용자 질문과 무관한 부분을 제거하고 핵심 내용만 추출하는 기술입니다. 임베딩 필터링, 중복 제거, LLM 기반 내용 추출 등의 방식을 조합하여 구현됩니다.
-**멀티에이전트 협업 시스템 (Multi-Agent Collaboration System)**: 여러 AI 에이전트가 각각 다른 역할과 전문 지식을 가지고 복잡한 작업을 협력하여 해결하는 시스템입니다. 각 에이전트는 특정 영역의 전문가로 동작하며, 최종 목표 달성을 위해 서로 통신하고 작업 결과를 공유합니다.
-**State Graph (상태 그래프)**: LangGraph에서 에이전트 워크플로우를 정의하는 핵심 개념으로, 노드(에이전트/함수)와 엣지(전환 경로)로 구성된 그래프입니다. 노드 간 메시지 전달 및 조건부 라우팅을 통해 복잡한 에이전트 시스템의 흐름을 제어합니다.