pytorch 기본 문법 및 코드, 팁 snippets
gaussian37's blog
gaussian37.github.io
모를 시 참고. https://wikidocs.net/52460
02. 텐서 조작하기(Tensor Manipulation) 1
이번 챕터에서 배울 내용에 대해서 리뷰해보겠습니다. 벡터, 행렬, 텐서의 개념에 대해서 이해하고, Numpy와 파이토치로 벡터, 행렬, 텐서를 다루는 방법에 대해서 이 ...
wikidocs.net
배열(어레이)
: 데이터의 크기가 정해져 있고, 추가적인 삽입 삭제가 일어 나지 않으며 검색을 필요로 할 때 유리
리스트
: 데이터의 크기가 정해져 있지 않고, 삽입 삭제가 많이 일어나며, 검색이 적은 경우 유리.
배열은 int num[4] 이라고 선언하고 사용하면, 주소값 + 4byte의 형식으로 메모리가 연속적으로 잡히게 됩니다.
이에 비하여 리스트는 주소가 연속적이지 않기 때문에 예측을 할 수 없고, 그만큼 소요 시간이 들어가게 됩니다.
○ 딥러닝 기본 개념
(0) 벡터 - 1차원 / 행렬 - 2차원 / 텐서 - 3차원 이상
- shape : (batch size, _, _ ) 목적에 따라 다르게 주어짐
(1) Epoch / Batch size / Iteration
최종 가중치 갱신 횟수 = epoch 횟수 * mini-batch 갯수 = epoch 횟수 * (Dataset size / batch size)
- Epoch
: 전체 데이터 셋에 대해 한 번 학습을 완료한 상태. 즉 신경망에서 사용되는 Backpropagation algorithm에 따라 forward pass와 packward pass 과정이 한 번 완료 {이를 학습이라 한다}되면 1 epoch
: 1 epoch = batch size * iteration [ 1 번의 학습 = 일괄 학습 크기 * 반복 횟수]
- Batch
: 사전의 정의는 일괄적으로 처리되는 집단으로, 머신러닝에서는 1회 Iteration에 사용되는 Training Data Set의 묶음
- Batch size
: 한 번의 batch (=일괄처리)마다 사용되는 데이터 셋의 size
: Mini-batch = Dataset size / Batch size
= 작은 경우 : 가용 메모리가 적을 때는 사용 및 generalization performance가 좋음, 보다 넓은 범위의 learning rate로 학습 가능. 너무 작은 경우 학습 자체가 불안해짐
= 큰 경우 : 보다 안정적으로 학습을 시키고 싶다면 batch size를 상대적으로 높게 설정
= 메모리 한계와 속도 저하 때문에 일반적으로 한 번의 epoch에 모든 데이터를 한 번에 넣지 않고, 적정 경우로 32, 64가 가장 좋다고 알려져 있음
= 배치 사이즈가 데이터의 갯수와 같으면, 전체 데이터의 그래디언트를 한꺼번에 모두 계산하고 한 epoch 당 딱 한 번의 iteration 으로 딱 한 번 가중치 갱신 일어나므로 이런 경우는 SGD가 아니라 GD이다.
- Iteration
: 정해진 Batch size를 사용하여 학습을 반복하는 횟수
: Iteration 횟수 = Dataset size / Batch size
예시1) Datasize = 1000 이고 epoch = 10, batchsize = 100 로 지정한 경우
=> iteration = 1000 / 100 = 10 회
=> 최종 가중치 갱신 = epoch * (Dataset size / batch size) = 10 * 1000 / 100 = 100
예시2) Datasize = 3000 이고 epoch = 100, batchsize = 500 로 지정한 경우
=> iteration = 3000 / 500 = 6 회
=> 최종 가중치 갱신 = epoch * (Dataset size / batch size) = 100 * 3000 / 500 = 600
(2) 활성 함수 - Activation Function
- Sigmoid Function
: S자형 곡선 함수 / 이진 분류에서 사용되며 출력층에서 보통 사용
- ReLU (Rectified Linear Unit) Function
- Hyperbolit tangent (tanh) Function
- Softmax Function
: 입력받은 값을 출력으로 0~1 사이의 값으로 모두 정규화하며 출력 값들의 총합이 항상 1이 되게 하는 함수 [은닉층에 있는 경우, 기울기 소실 문제 등 기울기를 찾지 못해 학습 효율 감소]
: 3개 이상의 다중 클래스 분류에서 사용 (n개의 클래스 중 어디에 속할지 확률을 추정)
(3) 데이터 처리 과정
- 전처리 (preprocessing)
: 사용할 데이터 용도에 맞게 가공 (가속도 => Jerk 값 만들기)
[Feature Scaling - 변수의 범위를 일정하게 혹은 비교 가능하게 만들기]
- Normalization [=Re-scaling]
: scaling 같이 넓은 범위의 값들을 0~1로 축소시키는 방법 (전체 통일화)
- Standardization [=정규분포화]
: Normalization과 비슷하게 feature scaling 과 관련되어 값의 범위를 평균 0, 분산 1이 되도록 변환
- Regulation [=제약]
: 과적합을 막는 방법으로, L1(Lasso), L2(Ridge), Dropout등이 있음
(4) 손실 함수(LOSS function)란?
- 모델 학습(Learning) 시 발생하는 비용(cost) 즉, 예측한 값과 실제 정답 차이를 비교하기 위한 함수
[손실 함수는 성능 척도(Performance Measure)와는 다른 개념]
- 학습은 오류를 최소화 하는 방향(= 최적화)으로 진행하는데, 이때 비용/손실(Loss)의 값을 최소화하는 가중치(W)와 편향(b)를 찾아가는 것이' 학습의 목표'이다 ( = 손실이 작을수록 좋다)
- loss [손실] : single data에 대한 에러
- cost [비용] : loss들의 합 또는 평균 (entire data)
※ LOSS FUNCTION 정리
▶분류 모델(ClassificationModel)에 적용
Binary Crossentropy (이항 교차 엔트로피)
=> Multi-Label (이진 분류기) Classification에 사용
Categorical Crossentropy (희소 교차 엔트로피)
=> Multi-Class Classification에 사용
Sparse Crossentropy (범주형 교차 엔트로피)
=> Multi-Class Classification에 사용
▶회귀 모델(Regression Model)에 적용
MSE (Mean Squared Error, 에러 제곱 평균 오차)
=> Regression Model 에 사용
MAE (Mean Absolute Error, 에러 절대값 평균 오차)
=> Regression Model 에 사용
(5) Optimization[최적화] ***(학습 알고리즘 ; 머신 러닝의 꽃)
- 손실함수를 줄여나가는 모델 선택 => Optimizer
- Gradient Descent(경사하강법), Adam, Backpropagation, 확률적 경사하강법(SGD; Stochastic GD), 미니 배치(MGD; Mini-batch) 확률적 경사하강법, 뉴턴/준 뉴턴 방법 등 여러가지가 존재
※ 최적화 기법 비교 참고 링크
딥러닝 용어정리, MGD(Mini-batch gradient descent), SGD(stochastic gradient descent)의 차이
제가 공부한 내용을 정리한 글입니다. 제가 나중에 다시 볼려고 작성한 글이다보니 편의상 반말로 작성했습니다. 잘못된 내용이 있다면 지적 부탁드립니다. 감사합니다. MGD(Mini-batch gradient descent
light-tree.tistory.com
● 손실과 최적화 자세한 정보는 링크 : https://truman.tistory.com/164
손실 함수(Loss Function)와 최적화(Optimizer)
1. 손실 함수 (Loss Function) 손실 함수는 실제값과 예측값의 차이(loss, cost)를 수치화해주는 함수이다. 오차가 클수록 손실 함수의 값이 크고, 오차가 작을수록 손실 함수의 값이 작아진다. 손실 함
truman.tistory.com
(6) embedding이란?
- 입력된 것을 float 형태로 변환하는 것 (자연어 처리의 경우 단어들을 숫자의 벡터로 변환)
- nn.Embedding / nn.Linear 등 존재
-
(7) 전이학습 [Transfer Function]
- 비슷한 새로운 과제에 기존 지식을 적용해 빨리 해결하는 방법
- Advantage : 데이터가 풍부하지 않은 새로운 데이터 셋 학습에 효과적, 새로운 신경망의 일부를 부분적 학습하여 학습시간 감소
(8) 다양한 기법 비교 (ANN, DNN, CNN, RNN, SLP, MLP)
https://dbrang.tistory.com/1537
Deep Learning(ANN, DNN, CNN, RNN, SLP, MLP) 비교
/* -- Title : Deep Learning(ANN, DNN, CNN, RNN, SLP, MLP) 비교 -- Reference : 구글링, www.analyticsvidhya.com bbnflow.tistory.com */ ■ Machine Learning vs. Deep Learning ■ ANN(Artificial Neura..
dbrang.tistory.com
(9) 성능 척도 (Performance Measure)
성능 척도는 학습된 알고리즘의 성능을 정량적으로 평가하기 위한 지표로 정확도, F1 점수, 정밀도 등이 있습니다.
즉, 이는 학습이 끝났을 때 모델의 성능을 평가하기 위한 지표이기 때문에 알고리즘 학습 중에는 전혀 사용되지 않습니다.
'PYTHON > DL' 카테고리의 다른 글
[딥러닝 공부노트] 2. 사용 함수 소개 및 설명 (2) | 2022.02.28 |
---|