<Linear Regression && Non Linear Regression>
- 학습 정의
1. Learning(학습)이란 input에 맞는 output을 구하는 함수 f(x)(=perceptron)을 찾는 것이다.
=> input에 맞는 oupt을 구하기 위해 weight를 찾는것이 학습니다.
=> Error 값을 줄여나가면서 weight를 학습한다. 이때 Error 값을 정의한 함수를 Objective function(목적 함수)라고 한다. (일반적으로 Error 값은 MeanSquaredError를 사용한다. * MSE는 아래의 식과 같다)
즉, Error를 최소화할때의 weight 값을 구해야한다.
- Gradient descent learning
error값을 최소화하기 위한 가장 기본적인 학습 방법이다.
1. 학습 시작에서는 random하게 weight를 설정한다.
2. 학습하는 중에는 (error 함수의)경사가 가장 급한쪽으로 (전체의 error값이 줄어들도록)weight를 수정한다.
3. 이를 위해 error의 derivative(미분) 이용한다.
* Error = 1/2* (t(i) - O(i))^2 의 미분값은 -(t(i) - O(i))*~~~~ 이러한 식이 나온다. Error의 최솟값으로 향해 다가갈려면 다음과 같이 해당 미분값(기울기)이 0으로 향하도록 되어야한다. 만일 미분값(기울기가)이 -마이너스일 경우 + 방향이 되도록 해야하고 +일 경우는 - 방향으로 다가가야한다. 즉, 기울기 값의 반대방향으로 가야한다.
=> weight를 다음과 같이 변화한다.
△W(k) = -c *(Error의 미분값(k)) => new W(k) =old W(k) + △W(k)
* 이때 c는 learning rate으로 learning rate이 너무 크면 빨리 학습을 하지만, 진동할 확률이 높아지고 learning rate이 너무 작으면 학습 속도가 느리다. -> 적절한 learning rate이 필요
<Multi Layer perceptron>
- Back Propagation
위에서 본 것 처럼 Single Layer가 아닌, 여러개의 Layer일 때의 △W(k)를 어떻게 구할 것인가?
=> 여러개의 Layer가 쌓이면 굉장히 많은 미분값을 계산해야하는 문제가 있다.
1. △W(k)를 구하기위해서는 Back Propagation이 필요하다.
In fitting a neural network, backpropagation computes the gradient of the loss function with respect to the weights of the network for a single input–output example
2. Multi Layer를 이용하면 굉장히 많은 derivate값을 구해야하지만, 중복되는 값이 존재하기 때문에 해당 중복 값을 저장해놓고 반복하여 사용한다.
=> Back Propagation algorithm
<Loss Optimization>
문제 유형에 따라 댜앙한 activate function과 Loss함수가 있다.
- Regression
: 출력이 연속값을 갖는 함수를 대상으로 훈련 data를 잘 재현하는 함수를 찾는 것
ex) 매출액 추정, 기온, 생산 속도에 따른 불량률 추정
1. Activation function: Linear => activation func이 없는 것
2. Loss function(Objective function): Mean Squared Error
- Binary classfication
:어떤 class에 속하는지를 (두개의 class 중 0과 1로 표현)
1. Activation function: Logistic function(Sigmoid function)
2. Loss function: Binary cross entropy
- Multi class classification
: 여러개의 class 중 어떤 곳에 속하는지
1. Activation function: softmax
어떤 클래스에 더 가까운지 판별
2. Loss function(Objective function): categorical cross entropy
<Optimizers>
어떤 방식으로 weight를 update할 것인지? gradient descent는 가장 간단한 방법 이거에 발전해서 여러 Optimizer가 존재함.
=> 다양한 Optimizers가 존재하는데 사실 어떤것이 제일 좋은지는 해봐야 알 수 있다.
<Generalization>
Overfitting(과적합) 방지를 위해 하는 작업
*Overfitting: training data에 대해 너무 학습하여 일반화한 것이 아닌 해당 값을 외워버린 경우를 말한다.
1. 일반적으로 Data set에 대해 Training data set과 Validation data set, Test data set으로 나눈 후 Trainig data set에 대해 학습한 후 Validation data set으로 측정 error 확인 => 최종적으로 Test data에 대해 확인
2. Regularization: Overfitting을 방지하도록 Loss function에 complexity penalty를 추가한다.
1) L2 Regularization(Ridge regression): 전체적으로 절대값이 작은 weight 값을 얻기 쉽다.
2) L1 Regularization(LASSO): 대부분의 weight 값이 0이되고 몇몇의 weight값만 다른 값이 되기 쉽다.
3. Sparse Representations
:Overfitting을 방지하기 위해서 의도적으로 activation function 을 sparse하게 적용한다.
4. Dropout
: Traning example 마다 일부 hidden unit을 없는 것으로 계산, 일부를 확률적으로 선택하여 학습한다.
=> random하게 노드를 선택하여 작은 Layer로 학습시켜 Overfitting을 줄인다.
5. Ensemble Learning
: 작은 model을 많이 만들어서 각 output의 조합을 사용하면 성능 높임.
=> 각각의 특화된 모델을 training하여 나중에 결과를 합치면 성능 향상
6. data 확장 => 샘플 데이터를 늘린다.
: 이미지의 평행이동, 대칭이동, 회전 등의 기하학적 변환, 색에 변동을 가한 결과 이미지, 노이즈 추가 ...등
'Project > NFT 블록체인을 활용한 딥러닝 기반 사진 거래 웹 애플리케이션 구축' 카테고리의 다른 글
이미지 특징 정보 추출 (0) | 2021.08.03 |
---|---|
[연구실] 프로젝트 정리 (0) | 2021.07.27 |
[연구실] 1. YOLO 논문 (0) | 2021.07.19 |
[pytorch] 기본 (0) | 2021.07.18 |
[1주차] 파이썬을 활용한 데이터 분석 (0) | 2021.06.30 |