본문 바로가기
DeepLearning|MachineLearning

딥러닝/머신러닝을 위한 CS기초과목 필요성과 이유

by yongPro 2025. 3. 28.
반응형

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. 요약 및 우선순위

가장 중요한 과목

  • 프로그래밍 언어 : 모델 구현과 실험의 기본도구
  • 알고리즘 / 자료구조 : 모델의 이론적 이해와 효율적 데이터 처리의 핵심

보조적인 역할

  • 컴퓨터 구조 : 성능 최적화와 하드웨어 활용
  • 운영체제 : 환경 설정과 자원관리
  • 네트워크 : 모델 배포 및 분산 학습
  • 데이터 베이스 : 대규모 데이터 관리