Neural Networks 학습 방법과 이슈
신경망은 Gradient기반의 optimization기법 사용
- gradient는 각 input에 따른 output의 변화량을 나타낸다.
Gradient descent recap
optimization 진행
gradient를 계산하고 그 반대 방향으로 업데이트를 진행한다.
너무 큰 learning rate는 loss값을 발산시킨
너무 작으면 학습속도를 지나치게 느리게 하고 global minima에 도달하는데 어려움을 겪을 수 있음
- 딥러닝의 학습을 가능하게 만드는 주요 알고리즘이다.
- 어떤 종류의 smooth enough한 function에서도 잘 동작
- 특정 조건에 따라 non-smooth function에서도 업데이트 가능
- local optimum에 빠지는 문제가 흔하게 발생하고 이를 해결한 많은 변형 버전이 존재
Overfitting
- 일반적으로 우리는 트레이닝 데이터로 학습을 진행하고, 모델이 우리의 네트워크가 본적이 없는 데이터로 테스트를 진행
- 처음 본 데이터가 들어왔을때 우리 모델이 얼마나 잘 처리할 것이냐에 가깝다.
- 트레이닝 데이터에 대해서 학습하고 모델을 키우고 로스를 줄여나가는 과정을 반복하다 보면 이론상 트레이닝 로스를 점점 줄여나갈 수 있다.
- 하지만 모델에 학습을 진행하면 어느정도 구간까지는 trainning arrow와 test arrow가 서로 감소
- 너무 적으면 적어서 예측을 정확하게 하지 못한다(underfitting)
- 반대로 너무 많으면 모델이 너무 복잡한 부분을 고려하여 예측을 하려고 하기 때문에 예측을 정확하게 하지 못한다(overfitting)
- 모델의 표현력이 지나치게 복잡하지 않고 최대한 간단한 형태로 유지되도록 해야한다.
Regularization
overfitting을 방지하고 모델을 최대한 간단하게 유지하기 위한 기법
일반적으로 lp regularization, dropout, data augmentation, early stopping등 다양한 normalization 기법들을 사용한다.
- lp regularization
$$
L(W) = \frac{1}{N}\sum_{i=1}^NL_i(f(x_i,W),y_i)+\lambda R(w)
$$
- 현재까지 다루고 사용했던 loss는 data loss
- data loss를 줄이는 방향으로만 가면 네트워크가 트레이닝 데이터에 대해서만 신경을 쓰고 복잡한 표현력을 가지게 될 가능성이 있음.
- data loss를 계산한 후에 L1,L2와 같은 규제를 적용하면 모델이 지나치게 복잡해지는 것을 완화시켜 줌
dropout
- forward pass에서 임의의 뉴런을 사용하지 않는 기법
- 일반적으로 50%의 확률로 사용하지 않음
- 모든 뉴런의 특징을 사용하지 않고 부분적인 특징들로 학습을 할 수 있도록 만들어줌
- 새로운 데이터가 들어왔을 때 네트워크가 반응을 잘 할 수 있도록 도와줌
Data Augmentation
학습시킬 때 변형을 주어 trainning data set에 존재하지 않는 데이터에 대해서도 네트워크가 처리를 할 수 있도록 만들어 줌
기본적으로는 로테이션, 클럽, 플립 등 다양한 transformation을 적용하여 진행
MixUp : 2개의 이미지를 섞어서 다양성을 줌
CutOut 이미지의 특정 부분을 0으로 만들어 활용
CutMix : MixIp과 CutOut을 섞은 형태, 이미지 특정 부분에 다른 클래스 이미지를 넣어 augmentation 진행
이러한 기법은 다양한 dataSet에 대해 좀 더 우리 네트워크의 성능을 높일 수 있음을 증명함
Early stopping
- 일정 시점 이후로 로스가 계속해서 증가한다면 거기서 학습을 멈춰버리는 것
Diagnosing and Debugging
- 뉴럴 네트워크를 학습시키는 것은 까다로울 수 있다.
- 학습 초기에 학습이 잘 진행되고 있는지 계속 확인할 필요가 있다.
- 해결하고자 하는 문제와 dataSet에 따라 적합하게 initialization을 진행해야 한다.
- 적합하게 되었고 네트워크 구성과 설정이 올바르게 되었다면 적은 샘플에 대해서는 빠르게 overfitting이 이루어져야 한다
- 항상 trainning loss가 올바른 방향으로 줄어들고 있는지 살펴볼 필요가 있다.
- loss가 줄어들지 않거나 explode하다면 learning rate또는 initialization에 문제가 있을 수 있다.
- weight가 적당한 비율로 업데이트되고 있는지 항상 확인해야 한다.
신경망의 한계점
$$
f(x,z) = <x,z>
$$
- x와 z라는 인풋이 들어왔을 때 두개의 inner product를 표현할 수 없다.
- 신경망은 아주 가깝게 approximate를 할 뿐 완벽하게 표현할 수 있지는 않다.
- 이러한 한계를 해결하고자 Multiplicative interaction을 사용하는 연구가 최근 진행되고 있다.
'Etc.. > 인공지능 연구동향' 카테고리의 다른 글
[인공지능 연구동향] Convolutional_Neural_Netwrok_구조 사례 분석 (0) | 2021.08.28 |
---|---|
[인공지능 연구동향] Convolutional_Neural_Netwrok_기본 (0) | 2021.08.28 |
[인공지능 연구동향] Neural_Netwrok_기본 (0) | 2021.08.28 |
[인공지능 연구동향] Deep Learning OverView (0) | 2021.08.28 |
[인공지능 연구동향]인공지능의 역사 (0) | 2021.08.28 |