ISFP의 느리게 굴러가는 개발 블로그

[딥러닝의 정석] 2강 전방향 신경망 학습 본문

학교 공부/여름방학 랩인턴

[딥러닝의 정석] 2강 전방향 신경망 학습

taeeeeun 2020. 11. 15. 17:16

 

2.1 패스트푸드 문제

세트 메뉴를 구매할 때 단품에 대한 가격을 알고 싶을 때

1. 첫 주문에 음식 하나씩 주문하는 방식->실제 상황에서 거의 결과를 얻을 수 없음

2. 학습 데이터에서 발생하는 오차를 최소화하는 가중치를 선택하기 위해 뉴런을 학습시킴

궁극적인 목표: 오차(E)가 가능한 0에 근접하게 하는 파라미터 벡터를 선택하는 것

 

2.2 경사 하강법(Gradient Descent)

전체 데이터에 대해 신경망의 오차를 단계적으로 접근하면서 최저 오차를 찾아가는 것.

 

 

2.3 델타 규칙과 학습률

하이퍼파라미터: 학습 과정을 수행하기 위한 학습 알고리즘에서 사용하는 한 쌍의 파라미터

곡면이 많이 평평해질 때 최소값에 가까워졌음을 알 수 있다.

학습률(€) 선택의 문제

너무 낮으면 학습 과정이 너무 길다

너무 높으면 최소값 근처에서 발산

델타규칙: 가중치는 입력노드의 출력과 오차에 비례하여 조절한다.

 

 

2.5 역전파 알고리즘

역전파는 결과값을 통해 input쪽으로 역으로 오차를 전달하며 가중치를 업데이트하는 알고리즘이다.

순전파->역전파->가중치 업데이트를 반복하다보면 오차가 0에 가까워진다.

 

 

2.6 확률적 경사 하강법과 미니배치 경사 하강법

확률적 경사 하강법: 추출된 데이터 1개에 대해 gradient를 계산하고 경사하강법을 적용하는 방법. 랜덤하게 추출된 일부 데이터만 사용하는 것이라서 결과값이 불안정하고 빠른 결과가 도출된다.

단점: 데이터를 하나씩 계산하기 때문에 오차율이 매우 크다.

 

미니배치 경사 하강법: 학습 데이터를 사용자가 정한 batch 크기(보통 10~1000)로 나눠서 확률적 경사 하강법 진행

Ex) 데이터가 1000개일 때 batch size100개라면 1epoch10번씩 진행

Shooting(노이즈)이 발생하긴 하지만 크지 않아서 확률적 경사 하강법을 보완한 방법으로 쓰임.

 

 < 미니배치 경사하강법 >

 

(batch size는 사용자가 정하는데, 보통 2n승으로 설정하며 본인 gpuvram 용량에 따라 out of memory가 나타나지 않도록 정해야 한다. 그리고 가능하면 학습 데이터 개수에 맞아 떨어지게 설정하는 것이 좋다.)

 

2.7 테스트 데이터와 검증 데이터 그리고 과적합

과적합(Overfitting): 너무 학습 데이터에 최적화 시켜서 학습을 해서 일반화를 제대로 못한 상황-> 기존 데이터로 트레이닝하면 적중률이 높지만 새로운 데이터를 적용시키면 정중률이 엄청나게 떨어진다.

 

신경망에서 과적합 현상이 나타나는 경우

1. 모델이 복잡하지 않으면 문제를 해결하는 데 필요한 정보를 모두 잡아낼만큼 강력하지 않을 수 있음. But 모델이 복잡하다면 과적합의 위험이 있다.

2. 학습된 데이터로 모델을 평가하면 오류가 생길 수 있다. 이 경우 데이터셋 전체를 모델에 학습시키지 않고 학습 데이터와 테스트 데이터로 분리한다.

3. 학습 데이터에 지나치게 맞춰져 과적합이 될 수 있다. 이 경우 과적합이 시작되자마자 학습을 멈추면 된다. 검증 데이터를 사용할 때 정확도가 동일(혹은 줄어드는데) 학습 데이터를 사용할 때 정확도가 계속 증가하면 과적합이 이루어지고 있다는 뜻이다.

(검증 데이터: 모델이 아직 알지 못하는 데이터를 사용할 때 어떻게 해야할 지 말해주는 데이터)

학습 데이터

검증 데이터

테스트 데이터

 

1) 신경망 구조 만들기

2) 데이터를 수집하여 학습 데이터, 검증 데이터, 테스트 데이터로 나눈다.

3) 경사 하강법을 실행한다

한 번에 한 에포크의 학습 데이터를 모델에 학습시키는데, 이 때 학습과 검증에 대한 오차가 개선되는 것을 볼 수 있다. 둘 중 하나가 개선되지 않으면 종료한다.

 

2.8 신경망에서 과적합 막기

1. 데이터 양을 늘리기

2. 모델의 복잡도 줄이기

3. 정형화(Regularization) (번역이 되면서 regularization을 여러가지 방법(규제, 정규화 등)으로 부르는데 정형화라는 말이 제일 나은 것 같다.)

weight값이 클수록 과적합의 가능성이 높아진다고 한다. 그래서 weight값을 작게 만들도록 하는 장치가 정형화이다.

L1 정형화: 모든 가중치에  λw를 더한 값을 추가한다.

             L1 regularization에서 몇 wi들은 0으로 수렴하여 중요한 가중치만 남게 된다.

L2 정형화: 12 λw2 을 더한 값을 오차함수에 추가한다. L1과 달리 제곱합을 더하므로 w값이 완전히 0이 되지 않고 0에 가까워진다.

L1 feature selection이 가능하다. 몇 개의 의미있는 값이 필요할 때는 L1 regularization을 사용한다. 반면에 L2uniquesolution만을 제공한다.

4. 드롭아웃

학습시킬 때 무작위로(어떤 확률 p에 의해) 뉴런을 제외하는 것. 이렇게 하면 출력층을 계산할 때 어느것에도 의존하지 않게 된다.

Comments