[AI부트캠프]신경망 프레임워크와 학습규제(regularization) 전략 - Weight Decay, Constraint, Learning Rate

가중치 제어 방법

early stopping 과적합까지 안가게 중간에 멈추는거

작은 가중치들은

dropout = 팀플
모든 노드들이 열일 하진 않음. 랜덤하게 몇개 꺼버림.
그러면 노드 몇개가 일을 열심히하고 학습이 잘되게 할 수 있음
학습할때 일시적으로 끄고 예측할땐 다시 킴 영구적 아님
weight decay
첫번째 절댓값, 두번째 제곱값
가중치의 합을 더해줌으로써 가중치가 너무 크게 업데이트 되는 것을 방지함.

손실함수가 나왔을 때 에러값에다가 가중치의 합을 더해서 학습을 시키면 에러값이 전체적으로 더 크니까 가중치를 더 줄여줌. 그래서 과적합을 방지함.

constraint max값을 정해서 3보다 커지면 무조건 3으로 치환
가중치가 커지는 것을 막게 함

  1. 모델을 젖아하기 위해 체크포인트를 둔다고 했는데 학습시킨 데이터를 어디에 어떻게 저장하는 걸까요?

  2. 왜 저장할까요?
    a. 다음에 쉽게 사용가능.
    b. 일종의 백업!
    c. 오류 났을 때 처음으로 안돌아가려고

  3. norm을
    weight dacay를 왜 할까?

가중치가 너무 커져서 해당 노드의 영향력이 너무 크게 잡힐 때 일어나는 과적합을 피하기 위해

수식이 어떻게 가중치를 규제하는 걸까?
-ridge regression 왜 했나여?
과적합 방지를 하려고 > 크기가 커지는 가중치를 줄여줌
가중치의 합을 코스트 펑션안에 넣어줌 만약 가중치의 합이 커지면 cost가 커지는 거라고 인지하도록함.
가중치의 합이 커지는 것을 인지할 수 있당?

릿지는 각각의 변수를 임의로 하는 것은 아닌 것처럼
라쏘는 절댓값을 활용해서 안중요한 것들 아주 작은 가중치들은 0이 됨
릿지는 제곱값을 활용해서 아주 작은 값이라도 0에 도달하진 않고 큰값들도 줄어드는 역할

cost function = target - output 차이를 줄여줌 이 값이 줄어들여야 이 모델이 학습을 잘한거임
줄이는 방법 MSE, RSS쓸수도 잇음
(target- outut) + 가중치의 합
10 + 5
15만큼 모르고 있네
실제 에러보다 더 크다고 생각해서 가중치 업데이트가 덜 크게 된다.
가중치의 합도 줄어들게 해야함.
가중치의 합이 커지는 것을 막아야 한다.

L1 , L2의 차이
(-, +) - > 상쇄되므로 절댓값쓰거나 제곱해줘야함
L1은 절댓값, L2는 제곱값
L1 작은 가중치들이 -> 0


코스트 펑션 미분하면 원형으로 형성
절댓값 은 마름모, 제곱해주는건 원형

  1. layer.Dropout(0.5)의 Layer.Dropout(0.2)등 지정해주는 수는 어떻게 정해지는 걸까?

튜닝을 해줘야할 하이퍼파라미터

a. o x o x o
b. 0.1, 0.5 -> cv

  1. 히든레이어의 수를 직접 수정하지 않고 드롭아웃을 사용하는 이유
    테스트에서는 드롭아웃을 하지 않음
    앙상블 기법

  2. flatten 사용할 때 input_shape를 꼭 사용해야하나요?
    인서플로우가 똑똑해서 그냥 해주는데 확실하게 하려면 해야됨.
    인풋shape을 써주는 경우
    첫번째로 데이터를 받아서 처리하는 경우에는 써줌 중간에있다면 안써줘도 작동함.

  3. earlystop에서는 'callback=[early_stop, save_best]'을 써줬는데 weight decay

  4. input shape input_dim은 같은건가?
    shape는 문제고 dim은 차원. 입력되는 값의 형태는 다르지만 역할은 같다.

  5. weigth decay에서 kernel_regularizer = regularizers.l2(0.01)에서 0.01은 어떻게 정하는 걸까요?
    내가 알아서 정해야함.. 공식문서 확인해보셈


오후 QnA

  1. loss의 정의
    a. target, ouput(error)
    b. metric
    i. 평가지표
  2. drop out의 비율은 어느정도 해야할까요?
    a. 0.3~0.5
    b. 0.5~0.8
    c. cross validation
    d. param = []

tf.keras.regularizers.L2(0.1)
(0.1) => lamda

  1. 람다가 0이면 릿지가 리니어와 유사해지는가?
    람다가 0이면 통제하지 않는 거라서

  2. 딥러닝의 하이퍼 파라미터가 머신러닝보다 다이나믹하게 accuracy값이 변하지 않는데, 잘못해서 그런건지 아니면 전반적으로 머신러닝이 튜닝의 영향을 더 많이 받나요?

딥러닝이 지금 상태에선

  1. 어떤 프로세스로 오차값과 가중치를 줄일 수 있는가?
    경사하강법
    a. 산 꼭대기-> 평지
    b. 밑으로 -> 기울기를 감소
    wt+1-wt(가중치가 업데이트 된 양) = -aL(Wt)
역전파 과정에서 loss함수의 Gradiant가 기존 가중치에서 빠져서 업데이트 됩니다. 
만약 loss함수에 가중치를 더해준다면 그 가중치의 Gradiant가 업데이트 과정에서 추가로 빠지게 됩니다.

질문타임

  1. decay
  2. dropout
  3. constraint max

과제설명!
개념을 익히는 것 중요
코드는 어떻게 개념을 구현한 건지 봐야함

pr해줘야함...
퀴즈도 최종제출해야함
seed값 주의
귀찮아도 seed를 계속 실행해줘야함

문제에 대한 조건들은 설명이 되어 있으니까 잘 이해해봅시다
도전과제도 하자..

좋은 웹페이지 즐겨찾기