1. Evaluation Metrics
2. How to Train Neural Network in a Better Way?
- Data Preprocessing
- Use ReLU or its variants (due to Vanishing Gradient)
- Batch Normalization
- Weight Initialization
- Regularization (+Dropout)
- Data Augmentation
- + Learning rate schedules, Hyperparameter optimization, Model ensembles
Simple Binary Classification


Confusion matrix


Training을 통한 Prediction 성능을 측정하기 위해 예측 value와 실제 value를 비교하기 위한 표

민감도(Sensitivity, Recall)?
- 민감도(True Positive Rate) = TP / P
- Recall과 동일한 것
재현도(Recall)?
- 정밀도와 비교되는 척도로써, 전체 예측 중에 TP가 얼마나 많은 가에 관한 것이다.
- 관심 영역만을 얼마나 추출해냈는지를 말한다. 즉, 모형의 실용성과 관련된 척도라고 할 수 있다.
- 일반적으로 Precision, Recall은 상충되는 수치라기 보다는, 독립적으로 평가되는 수치이다. 두 가지를 함께 평가하는 수치로 F-score라는 것이 있는데, Precision과 Recall의 곱을 둘의 합으로 나눈 뒤, 2를 곱해준 수치이다.
특이도(Specificity)?
- 민감도와 정 반대되는 개념
- Recall이 (판정한 것 중 실제 양성 / 전체 양성)인 양성에 대한 민감도를 의미한다면 특이도는 (판정한 것 중 실제 음성 / 전체 음성)을 의미한다.
- 특이도(False Positive Rate) = TN / N = (1 - FP / N)
정밀도(Precision)?
- 모델을 통해 1이라고 분류해낸 그룹 A가 있을 때, 모델이 얼마나 믿을만한 정도로 A를 만들어 냈는지를 평가하는 것이다.
- 어부가 그물을 던져 물고기를 잡을 때, 그물 안에 1이라는 물고기가 얼마나 들어있는가에 대한 척도이다.
정확도(Accuracy)?
- 정확도는 1을 1로, 0을 0으로 정확하게 분류해낸 것을 의미한다. 모델이 얼마나 정확한지를 평가하는 척도
이렇게 총 4가지의 평가 척도를 각각 상황에 맞게 사용해야 한다.
F1 score: Harmonic Mean of Precision and Recall

Binary Classification’s Score Distribution






6가지의 형태 잘 이해하고 넘어가기 !
ROC Curve & AUC


- X축은 1 - specificity
- 다른 말로, P(FP)와 같다.
- Y축은 sensitivity
- 다른말로 P(TP)와 같다.
PR Curve & PR AUC

- 우리를 ROC보다 PR AUC를 많이 사용한다.
- 그래프의 곡선 아래의 면적


Data Preprocessing


하지만 일반적으로 이미지의 경우에는 픽셀들을 너무 많이 정규화할 필요가 없다. 왜냐하면 이미지는 각 위치에서 이미 비교적 비슷한 규모와 분포(0~256)를 가지고 있기 때문이다. 따라서 zero-centering 정도만 해주면 충분하다. 우리는 전형적으로 convolutional networks를 공간적으로 적용해서, 원본 이미지 위에서 공간 정보를 포함한 형태로 특징을 추출해낸다.
정한 디시전 바운더리가 변한다. 그런데 기울기ㄹ를 보면 0근처에서 w가 변화하는 크기가 멀리떨어질수록 확확변한다. 이때 근ㄷ 0을 기준으로 하면 최선의 변형만 줘도 적절하게 변경할 수 있다. 이러한 것들을 고려해서 들어오는 값들을 normalize해야 한다.
Use ReLU or its variants (due to Vanishing Gradient)
ReLU
레이어를 깊게 쌓아서 학습을 시켜야 하는데, 어떻게 잘 학습시켰을까?
최근에는 렐루를 잘 사용한다.
양 끝의 값이 나올때마다 업데이트가 되지 않는다.......
뒤로갈수록 업데이트가 안 될 가능성이 높아진다... 그래서 그런이유로 Layer를 게 쌓는게 어려워서
RELU가 극복을 해줌!
Exponential Linear Unit (ELU)

- ReLU의 변형으로 나온 것이다.
- ReLU의 모든 장점을 가지고 있고, zero mean과 가까운 결과가 나오게 된다.
- 그러나 exp 계산을 해야하는 것이 단점
Gaussian Error Linear Unit (GELU)

- 입력값에다가 입력값의 standard Gaussian cumulative distribution function:Φ(x)을 곱한 것으로 xΦ(x)이 된다.
- 상대적으로 큰값의 경우 1에 가까운 값을 곱하게 되며, 작은 값의 경우 0에 가까운 값이 곱해진다. 입력값의 상대적인 크기에 따라 가중치가 부여된다.(data-dependent dropout)
- ReLU 및 ELU보다, 양의 영역에서 not linear하며 모든지점에서 curvature을 이루기 때문에 복잡한 기능을 쉽게 접근 할 수 있다고 합니다.
- 학습 팁으로는 모멘텀이이 있는 optimizer를 선택하고, Gaussian distribution의 누적 함수 분포(cumulative distribution function)에 근사를 사용하라고 권하고 있다. (주로 batch-norm이후에 출력값이 정규 분포 형태를 띄고 있음으로)
암튼 요약하면 relu가 제일 좋음. 연산의 시간이 적음... 이러한 것들을 고려하고 사용하여야 한다.
Batch Normalization
layer을 깊게 쌓는 데 역할을 함!
암튼 이거는 평균을 빼주고 분산으로 나눠주는 것이다...
중간의 activation들의 값들을 빼주는 것들이다.
그런데 이게 왜 잘돼?
각각의 k라는 layer가 있으면 이 layer가 x-k이다.
어떤식으로 계산하는지 보자!
fully-connected일 때 모든 데이ㅓ가 순서에 상관없이 연결되니 까 각각의 데이터들의 평균ㅇ 여러방향에서 0이되도록하는 것이다~~
여러개 모든 데이터에 대해서 평균이 0이고 분산이 1이되도록 한다....
그럼 이 각연산을 하고 쌓을것인데 평균 0 분산 1이 아니면 어쩔?
이것은 알파와 베타를 곱함으로써 변형하고 ~~ 하는 것이다.
감마랑 베타도 학습?의 결과이다.
그래서 test할 때는.... 학습했을 떄의 평군
그러니까 실제 저장했을 때의 함수?를 사용하는 것이다...
미니배치로 보는 게 아니라서 ruuning average로 업데이트를 해가는 것이다.
그러면 평균과 분산을 계산하는 것이 아니다.
그러면 곱하고 그러는 연산들이 결국 더하기 곱하기 연산이다. 그럼 어떤 x가 들어오면.... 이런 것들 더하고 ~~ 그러는게 x를 곱하고 p늘 더한다고 했을 떄 이것을 w에 넣어줄 수 잇어야 한다.
그럼 업데이트 해주면서 추가적인 연산을 하지 않는다. fully에 한번마 곱하고 한번만 더해도?되는 것이다.
그런데~~ 다 연결되었아고 사정했는데 conv??
오른쪽을보면 들어오는 값이 공간적인 정보가 있어. 그럼 공간적으로 평균을 내서 채널별로 하면 된다.
일밙겅르ㅗ 순서는 이러하ㅏ.
가끔식 순서 이런ㄴ데 암튼 ㅋ
어떤 효과?
아직 안한건데 giigle let이 인셉션 구조인데 이런 네트워크가 traing할 때 정확도가 올라감..
그런데 여기에 무엇을 넣어봄! 암튼 그럼 훨씬 빨리 수렴하는 것을 볼 ㅜㅅ 있듬

Weight Initialization
그다음에 weigh를 어떻게 초기화할 것인가?
ㄹㅐㄴ덤으로 초기값을 정해야 하나.
모든 걸 0으로 하면 ouput의 값이.... out이 값은 값이라서 서로 같아서 업데이트가 되지 않는다.
그래서 랜덤하게 서로다른 값을 너어야 한다.
어떻게 정할지가 중요하다.
Regularization (+Dropout)
Regularization
- W(weight)가 너무 큰 값들을 가지지 않도록 하는 것이다.
- W가 너무 큰 값을 가지게 되면 과하게 구불구불한 형태의 함수가 만들어지는데, Regularization은 이런 모델의 복잡도를 낮추기 위한 방법이다.
- Regularization은 단순하게 cost function을 작아지는 쪽으로 학습하면 특정 가중치 값들이 커지면서 결과를 나쁘게 만들기 때문에 cost function을 바꾼다.
Dropout

- 일반적으로 신경망에서 hidden layer의 개수가 많아지면(=DNN이 되면) 학습 능력이 좋아지지만 망의 크기가 커지면 커질수록 overfitting에 빠질 가능성이 높아지고 시간도 길어진다.
- 이렇게 망의 크기가 커질 경우 사용할 수 있는 방법이 dropout이다.
- dropout은 random하게 일부 뉴런을 0으로 만들어서 layer에 포함된 weight 중에서 일부만 참여시키는 방법이다.
- 일정한 mini-batch 구간 동안 dropout된 망에 대한 학습을 끝내면, 다시 무작위로 다른 뉴런들을 dropout하면서 반복적으로 학습한다.
Data Augmentation
+ Learning rate schedules, Hyperparameter optimization, Model ensembles
Data Augmentation
CNN 모델의 성능을 높이고 오버피팅을 극복할 수 있는 가장 좋은 방법은 다양한 유형의 학습 이미지 데이터 양을 늘리는 것이다. 하지만 이미지 데이터의 경우 학습 데이터 량을 늘리는 것은 쉽지가 않다. 데이터 증강(Data Augmentation)은 학습 이미지의 개수를 늘리는 것이 아니고 학습 시 마다 개별 원본 이미지를 변형해서 학습하는 것다.
Regularization: DropConnect

Regularization: Fractional Pooling

Regularization: Stochastic Depth

'Lecture > 딥러닝' 카테고리의 다른 글
[딥러닝] CNN Architectures (0) | 2023.05.18 |
---|---|
[딥러닝] Backpropagation Matrix Operation (0) | 2023.05.18 |
[딥러닝] Convolutional Neural Network(CNN) (0) | 2023.05.18 |
[딥러닝] Backpropagation, Optimization (0) | 2023.05.18 |
[딥러닝] Neural Network (0) | 2023.05.18 |
댓글