1. 머신러닝과 딥러닝
컴퓨터가 데이터에서 패턴을 찾아 학습하고 예측 수행
• 데이터
학습 모델을 만드는데 사용
훈련(훈련+검증) 데이터셋 / 테스트 데이터셋으로 분류
검증 데이터셋
: 학습하는 과정에서 모델의 성능을 평가하기 위해 사용
모델의 과적합(overfitting)을 방지
테스트 데이터셋
: 학습을 모두 마친 후, 최종적으로 모델의 성능을 객관적으로 평가하기 위해 사용
• 모델
학습 단계의 최종 결과물
특성(특징) 추출 : 데이터 → 벡터 변환
: 정답을 알려주고 학습시키는 방법
데이터를 명확하게 분류 가능
: 비슷한 데이터를 클러스터링하여 예측하는 학습 방법
데이터 간 거리를 기반으로 유사한 데이터끼리 범주화
: 에이전트가 행동에 대한 보상을 받으며 학습
심층 신경망 이론을 기반으로 고안된 머신러닝
• 모델 정의 : 신경망을 생성
은닉층 수가 많을수록 성능 증가, but 과적합 가능성 증가
• 모델 컴파일 : 활성화 함수, 손실 함수, 옵티마이저 선택
• 모델 훈련 : 한 번에 처리할 데이터양을 지정. batch와 epoch 선택
• 모델 예측 : 검증 데이터셋으로 실제 예측을 진행
: 심층 신경망, 역전파
• 심층 신경망 (deep neural network)
은닉층(Hidden Layer)이 여러 개 있는 신경망
• 역전파 (Backpropagation)
출력층에서 계산된 오차(손실)를 입력층 방향으로 거슬러 올라가며 각 가중치(weight)와 편향(bias)이 얼마나 오차에 기여했는지를 계산해주는 알고리즘.
계산 결과를 바탕으로 가중치와 편향을 업데이트, 모델이 오차를 줄이는 방향으로 학습을 진행.
→ pytorch가 자동으로 처리해 줌
: 지도 학습, 비지도 학습, 전이 학습
• 지도 학습 : 입력(sequence)과 그에 해당하는 정답(레이블)이 주어진 경우
CNN(합성곱 신경망)은 대표적 지도학습 알고리즘
CNN의 응용
RNN, LSTM은 주로 지도학습 형태로 사용됨
RNN(순환 신경망, Recurrent Neural Network)
LSTM(Long Short-Term Memory)
• 비지도 학습 : 훈련 데이터에 정답(레이블)이 없는 경우
워드 임베딩(word embedding)
군집
• 전이 학습 : 사전 학습을 모델을 다른 관련된 문제에 재사용하여 학습 효율과 성능을 높이는 기법
2. 실습 환경 설정과 파이토치 기초
: GPU에서 텐서 조작 및 동적 신경망 구축이 가능한 프레임워크
GPU
Tensor
동적 신경망
• 연산 그래프
텐서(변수)와 연산이 화살표(방향성)로 연결된 형태
사용자 인터페이스 제공, 실제 계산은 수행하지 않음.
파이토치 엔진으로 작업을 전달.
파이토치 API가 제공하는 패키지 :
파이토치 엔진 구성 요소:
• Autograd C++
• Aten C++
• JIT C++ (Just-In-Time 컴파일러)
가장 아래 계층인 C, CUDA 패키지는 상위 API에서 할당된 거의 모든 계산 수행
N차원 배열인 tensor의 각 요소가 1차원인 컴퓨터 메모리에 어떻게 배치되는지 정의
stride=(3,1) :
행(첫 번째 차원)을 1 증가시킬 때 스토리지 인덱스를 3 건너뛰고,
열(두 번째 차원)을 1 증가시킬 때 스토리지 인덱스를 1 건너뜀.
stride=(2,1) :
행(첫 번째 차원)을 1 증가시킬 때 스토리지 인덱스를 2 건너뛰고,
열(두 번째 차원)을 1 증가시킬 때 스토리지 인덱스를 1 건너뜀.
오프셋과 스트라이드는 실제 데이터 값을 복사·이동하는 데 쓰이는 것이 아니라, 1차원 메모리 배열에 저장된 데이터의 shape을 해석하기 위해 사용
• matplotlib : 2D, 3D 형태의 플롯을 그릴 때 사용하는 패키지
• seaborn : 시각화 차트 제공
• scikit-learn : 머신 러닝 알고리즘을 적용할 수 있는 함수 제공