Computer Vision
- 1959년도 고양이 뇌를 이용한 실험
고양이 뇌에 전자칩을 심어 다양한 피사체를 두어 고양이의 반응을 예측하는 실험
어느 부분을 봤을 때 전자칩 신호가 크게 작동하는지 확인
이미지가 사과일 때 고양이가 어떤 부분을 보고 사과라고 예측했는지 파악하는 것을 확인
- Edge 모서리
- 모서리에서 얻을 수 있는 정보?
- 피사체의 명암이 변하는 부분이 모서리이기 때문에 영상의 밝기가 높은 것에서 낮은 것으로, 모양(shape), 방향성(direction) 정보 추출.
- Edge Detection 알고리즘
- 명암의 밝기 “명암의 기울기(Gradient)” ex) 동전 윤곽선 추출
- 모서리를 통해서 얻어내는 정보량이 그리 많지 않기 때문에 어느 각도에서 보느냐에 따라 결과 차이가 난다.
Convolutional Neural Network (CNN)
딥러닝의 대가 3인방
제프리 힌튼, 얀 루큰, 조슈아 베지오 // 얀 루큰은 제프리 힌튼의 제자이다.
Relu 활성화 함수
인간이 눈을 통해 본 것을 뇌구조의 메카니즘을 Linear 모델로 만든 Neural Network
딥러닝의 대표적인 public 데이터들
- MNIST
- 0~9 class 10개
- 흑백
- 크기 28(height/width)281
- 7만장 (train 6만, test 1만장)
- CIFAR10
- class 10개
- 32323(color)
- 6만장 (train 5만, test 1만장)
- CIFAR100
- class 100개
- 32323
- 6만장 (train 5만, test 1만장)
Q. 동일한 학습 조건일 때 가장 학습 성능이 높은 것?
A. MNIST
데이터 크기가 작을 수록, 클래스 수가 적을 수록 학습 성능이 높아진다.
고양이 이미지를 픽셀 단위로 나눠 0~255까지 표현
픽셀 단위의 사각형이 3개의 layer로 총 3가지 color를 표현할 수 있음
Augmentation : 데이터셋에 변형(rotation, darkness, crop 등) 기법을 통해 데이터 다양화 필수
def classify_image(image):
# Some magic here? 학습
return class_label # 라벨 반환
Data-Driven Approach
- Collect a dataset of images and labels
- Use Machine Learning to train a classifier
- Evaluate the classifier on new images
▪️ Choices about the algorithm that we set rather than learn
⇒ 기계가 학습으로부터 배운 값이 아니라 인간이 경험으로 알아내는 값
(Heuristic Values) 휴리스틱 value .. Art(인간의 경지를 넘어서다)
ex) k-fold cross validation, learning rate, epoch, and number of layers
▪️ 전체 데이터 양이 적을 때 cross-validation 사용함
500개의 데이터를 400개는 학습용 데이터, 100개는 테스트용 데이터일 때 400개의 학습용 데이터 중 100개를 validaion 값으로 사용할 때 데이터 양이 더 적어지기 때문에 부분별로 데이터를 나누어 validation값으로 지정해 성능을 각각 구한다.
k-fold 에서 hyperparameter인 k 값을 어떻게 주느냐에 따라 성능이 달라짐
k가 7이상이면 성능이 절대적으로 떨어지는 논문에 의거하여 보통 k 값은 5로 설정함
- Classification의 loadmap
- Training Data Loading ⇒ 데이터를 나눠서 학습 batch_size
- Training Data Augmentation ⇒ training data 변형
- Deep Neural Network (Training, Validation) with Training Data
- Deep Neural Network Testing with Testing Data
- Inference with verified Deep Neural Network
고양이 이미지가 입력 데이터 3072개의 픽셀
라벨 10개(클래스 개수)가 출력 데이터
- 행렬 연산
위의 연산과정 자세히 나타내기
Classification Loss Function
예측했을 때 얼마나 예측을 잘 했는지 수치적으로 정량화 한 값
Loss function의 단점, softmax가 포함되어져 있음, 하지만 각각의 원리가 다르기 때문에 중요!
softmax loss + regularization한 것이 Full Loss Function
Loss Function
고양이, 차, 개구리 이미지 예측 결과 33% accuracy 성능을 낸다고 할 수 있음 ⇒ 이런 표현 X
4-1) Hinge Loss
고양이 이미지를 넣어 예측하자.
카테고리 : (고양이, 차, 개구리)
A 모델 | B 모델 | |
CAT | 4 | 8 |
CAR | 3 | 1 |
FROG | 3 | 1 |
Q. A와 B 중 어느 모델이 더 학습을 잘 한 모델일까?
A. B 모델 성능이 더 좋은 것! 값이 극대화 exponential 되어야 한다.
지금은 8/1/1 표를 받았지만 800/20/3 인 것처럼 중구난방일 땐 값을 확률적(표준화)으로 만들어줘야 한다.
위의 Hinge 의 단점을 어떻게 극복할 수 있을까?
4-2) Softmax Loss
- 확률값으로 Nomalization ex) 4 → 40%, 3 → 30%, 3 →30% ⇒ 득표수(4)/전체 득표수(10)
- exponantial 위의 1. 조건에 약간의 트릭 주기y = 2.7^3 → e^3(19) Normalization해서 0.26로 만들어 줌
ex) 4 → e^3(53) Normalization해서 확률값 0.58로 만들어 줌
x 값이 작을 땐 별 차이 없다가 x 값이 커지면 극대화시킴
✅ softmax는 loss function과 아무 상관 없이 우리가 얻은 Wx+b 같은 값들인 예측 값들을 변형한 것일 뿐! 결과값일 뿐 loss 값이 아니다!
✍️ 왜? 극대화시키고 확률값으로 만들어 확인하기 편하게 변형한 과정일 뿐이기 때문에!
예측 결과가 잘됐는지 못 됐는지 수치화하기 위해서는 loss function을 사용해야 한다.
CAT → 0.13% -log(0.13)
CAR → 0.87%
FROG → 0.00%
위의 값들을 가지고 loss function을 만들자. 이때 -log() 함수 동작한다.
그래프의 파형은 1사분면에서 오른쪽 아래 방향으로 내려가는 형태
4-3) Regularization
X 값으로 나온 예측값을 Exp 하고 Nomalization을 거친다. 이 두 과정을 거치면 softmax 과정을 거친 것이고, 이때 나온 결과를 가지고 얼마나 예측을 잘했는지 보는 게 loss function이다.
🗨 정리
loss는 전체 평균 값을 나타내기 때문에 accuracy 하나만 보고 성능을 판단하면 안 됨. 데이터가 입력되어 모델에서 연산 작용이 일어난다. 데이터 각각에 가중치가 곱해지고 최종적으로 bias 하나가 더해져서 예측 값 나와. 이미지 하나에 대한 예측 값 하나 나오고, 이미지가 5만 개이면 예측 값도 5만 개 나오겠지. 이 raw한 예측값을 극대화시키고 확률값으로 바꾸어주는 softmax는 예측값 나오면 무조건 수행한다. 그제서야 라벨값과 비교하여 loss 값을 하나하나 구해내어 L(W)로 평균내어 준다. ⇒ L Loss 이 전체 모델에 대한 Loss는 지금까지 나온 loss의 평균값을 낸 것이야.
최종적인 Loss는 Full Loss Function
Overfitting을 줄이기 위한 m-square가 여기서는 L(W)와 같음 ⇒ Weight를 규제하는 것
✅ CrossEntropyloss
딥러닝 모델 사용할 때 CrossEntropyloss를 사용
- softmax가 들어있다.
- softmax에는 Exponential, Normalization 확률값
- 1/n 시그마 (f(x)-y) 예측값에 대한 loss 값을 일일이 구해서 평균들을 구해 모델에 대한 loss function을 구한다. L(W) ⇒ 이 모든 과정이 CrossEntropyloss에 들어있음
- 마지막 단계로 우리가 배웠던 규제이다. 위에서 L(W)에서 끝나버리면 삐죽삐죽 Linear를 거쳤기 때문에 학습 과정에서 중요한 것은 가중치 크게, 아닌 것은 0에 수렴하면서 Overffing이 이루어지기 때문에 weight 값의 진폭을 줄여야 한다. 그래서 맨 마지막에 loss에 대한 규제(L2 규제)를 준다. ⇒ L(W)+알파*R(W)
⇒ Full loss(softmax와 L(W)와 Regularization이 합쳐진 것)
'AI > 딥러닝' 카테고리의 다른 글
[딥러닝] Neural Network (0) | 2022.04.26 |
---|---|
[딥러닝] Optimization Colab 환경 실습 (0) | 2022.04.24 |
[딥러닝] Backpropagation (0) | 2022.04.24 |
댓글