1. 모두가 알고 있는 절대적인 필요과목
당연히 우선순위 1순위로 공부해야 할 지식은 아래와 같음. 이는 모두가 말하는 과목들이니 필수로 칭하고 다음으로 넘어감.
프로그래밍 언어
- 문법, 변수, 조건문, 반복문, 함수, 클래스 등 객체지향 프로그래밍 개념
선형 대수학
- 데이터들이 벡터, 행렬, 텐서로 표현되기 때문에 선형 대수학 필수
미적분학
- 딥러닝의 학습 과정(기울기, 경사 하강법 등)에 대한 이해
확률 통계
- 데이터 분석 및 모델 성능 평가
알고리즘 데이터 구조
- 정렬, 검색, 리스트, 스택, 큐, 트리, 그래프 등에 대한 이해
2. CS 이론 기본 과목별 중요도 및 이유 분석
CS 이론[프로그래밍언어,알고리즘/자료구조, 데이터베이스, 데이터통신(네트워크), 운영체제, 컴퓨터 구조]들이 딥러닝에서 어떤 부분에서 구체적으로 사용되고, 딥러닝의 특정 단계와 요소에서 어떻게 연결되는지에 대한 내용.
2-1. 프로그래밍 언어
역할 : 주로 python이 사용되고 Tensorflow, Pytorch 같은 프레임워크와의 호환성을 위해 사용됨
- 모델 설계 : 신경망 모델의 구조를 정의
- 데이터 전처리 : Numpy, pandas 등으로 데이터들을 처리
- 학습과정 : 손실함수, 옵티마이저 설정, 역전파 등 코드 작성
2-2. 알고리즘/자료구조
역할 : 딥러닝 모델의 내부 작동 원리 이해, 데이터를 효율적으로 다루고, 학습 알고리즘 최적화
- 신경망 구조 이해 : 노드와 가중치들의 연결구조를 파악하기 위함
- 최적화 알고리즘 : 경사 하강법, Adam등의 옵티마이저
- 효율적 데이터 처리 : 대량의 데이터에서 배열이나 해시 테이블로 빠르게 접근 및 처리
- 스택/큐 활용 : 학습 중 역전파 계산 시, 연산 순서를 스택으로 관리해 효율적으로 처리
- 디테일한 예시 : CNN에서 풀링 연산은 알고리즘적으로 최대값/평균값을 선택하는 과정을 최적화하며 이를 위해 2D배열을 슬라이딩 윈도우로 처리한다.
2-3. 데이터 베이스
역할 : 대규모 데이터셋을 저장하고 관리, 모델 학습에 필요한 데이터를 효율적으로 제공하는 데 사용, 데이터 준비단계에서 사용
- 데이터 저장 : 이미지, 텍스트 데이터를 SQL 데이터베이스에 저장하고 쿼리로 필요한 데이터 추출
SELECT image_path, label FROM dataset WHERE split='train'
- 데이터 파이프라인 : 데이터베이스에서 배치 단위로 데이터를 모델에 입력
- MongoDB에서 이미지 경로를 읽어 PyTorch 데이터 로더로 전달
- 데이터 정합성 관리 : 데이터셋의 라벨링 오류 수정 및 중복 데이터 제거
- 디테일한 예시 : ImageNet 데이터셋을 MySQL에 저장하고 학습 시 JOIN 쿼리로 특정 클래스 데이터만 불러와 전처리 후 모델에 입력
2-4. 네트워크
역할 : 학습된 모델을 배포, 분산 학습 환경에서 데이터를 주고받을 때 필요. 실무적용에서 중요
- 모델배포 : Flask나 FastAPI로 RESTful API를 만들어 모델 예측 결과를 네트워크로 전달
- POST /predict 엔드포인트로 이미지 데이터를 받아 예측값 반환
- 분산 학습 : 여러 GPU/서버 간 데이터와 가중치를 동기화할 때 네트워크 프로토콜(TCP/IP) 사용
- Pytorch의 DistributedDataParallel로 노드 간 통신 설정
- 클라우드 활용 : AWS에서 학습 데이터를 다운로드 하거나, EC2에서 모델 실행
- boto3로 S3 버킷에서 데이터 가져오기
- 디테일한 예시 : 실시간 객체 탐지 모델을 웹 앱에 배포할 때, 클라이언트가 보낸 이미지를 HTTPS로 받아 처리 후 JSON으로 결과 반환
2-5. 운영체제
역할 : 학습 환경을 구성하고 관리하며, 하드웨어 자원을 효율적으로 활용하는데에 필요. 리눅스 기반 환경 등
- 환경 설정 : GPU 드라이버 설치, Python 가상환경 설정 등
conda create -n dl python=3.10
- 프로세스 관리 : 학습 중 CPU/GPU 사용량ㅇㄹ 모니터링 하거나 프로세스 종료
- nvidia-smi로 GPU상태 확인, kill -9로 프로세스 종료
- 파일 시스템 관리 : 대량의 데이터셋을 디렉토리에 정리, 학습 로그 저장
- ls -lh로 데이터 크기 확인, ls -al로 디렉토리 파일들 확인
- 디테일한 예시 : 리눅스 서버에 학습 스크립트를 백그라운드로 실행하고, 로그 파일로 학습 진행 상황을 기록
2-6. 컴퓨터 구조
역할 : 하드웨어 자원을 최적화, 모델 학습 속도 높이는 데 기여. GPU,CPU의 작동원리 이해
- GPU 병렬 연산 : 딥러닝의 행렬 연산을 CUDA로 가속화
- 메모리 최적화 : 배치크기를 조정해 GPU 메모리 초과를 방지
- 캐시 활용 : 데이터 로딩 속도 높이기 위해 CPU 캐시를 효율적으로 사용
- 저수준 최적화 : 모델 연산을 커스텀 연산으로 작성해 성능 개선
- CUDA C로 커널 작성
- 디테일한 예시 : 대규모 Transformer 모델을 학습할 때, GPU 메모리 한계를 고려해 혼합 정밀도 학습을 적용하고 , torch.amp로 연산을 최적화
3. 요약 및 우선순위
가장 중요한 과목
- 프로그래밍 언어 : 모델 구현과 실험의 기본도구
- 알고리즘 / 자료구조 : 모델의 이론적 이해와 효율적 데이터 처리의 핵심
보조적인 역할
- 컴퓨터 구조 : 성능 최적화와 하드웨어 활용
- 운영체제 : 환경 설정과 자원관리
- 네트워크 : 모델 배포 및 분산 학습
- 데이터 베이스 : 대규모 데이터 관리
'DeepLearning|MachineLearning' 카테고리의 다른 글
Confusion Matrix(분류 모델 성능 평가지표) 란? (2) | 2023.12.20 |
---|---|
DeepLearning 기초 개념 : batch_size, steps, epoch, iteration (0) | 2022.04.28 |
TTA(Test-Time Augmentation) (0) | 2022.04.28 |
Deep Pose (0) | 2022.01.21 |
Face Detection (0) | 2022.01.13 |