[AIFFEL] 22.Feb.11 - Regularization

Deok Jong Moon·2022년 2월 11일
0
post-thumbnail

오늘의 학습 리스트

  • Linear Regression이 L2 norm과 관련 있단다.

  • Lasso, Ridge에서 Lasso는 왜 어떤 feature의 기울기를 0으로 만들까...?

    • https://www.youtube.com/watch?v=Xm2C_gTAl8c
    • 정리하면, feature마다 다를 텐데, λ\lambda가 커질 경우 어떤 건 loss의 최저점, 즉 gradient가 0이 되는 구간이 해당 feature에 대한 coefficient가 0이 되는 구간이다.
    • 그래서 L1은 그것을 죽여버린다.(그리고 그 feature는 대개 coefficient가 작은 값이다...?)
    • 반면 L2는 coeifficient를 0으로 만들지 않는다.
    • 왜냐하면 error term(?)이 제곱이어서 그런데,
    • L1, L2 regularization을 이해하는 키 포인트는 결국 기존 loss fucntion의 식과 페널티 항에 반비례적으로 동작하는 coeifficient의 역할이다.
    • 그리고 L1은 왜 coeifficient를 0으로 만들 수 있는가의 포인트는
    • λ\lambda의 사이즈 및 coeifficient가 0으로 갈 때 생기는 일이다.
    • L1의 오차항(절대값)+기본 loss값은 coeifficient가 0에 가까울 때 λ\lambda가 커지면 coeifficient가 0일때 뾰족하게 아래로 향해서 gradient가 0이 되어버리는 반면,
    • L2는 coeifficient가 0으로 가까이가도 coeifficient가 0 이외의 다른 곳에서 최소의 gradient를 갖게 된다.
model = keras.Sequential([
    keras.layers.Flatten(input_shape=(28, 28)),
    keras.layers.Dense(128, activation='relu'),
    # 여기에 dropout layer를 추가해보았습니다. 나머지 layer는 아래의 실습과 같습니다.
    keras.layers.Dropout(0.9),
    keras.layers.Dense(10, activation='softmax')
])
  • 여기에서 맨 위에 Flatten()이 없는데, (60000, 28, 28) 데이터를 인풋으로 넣으면
    • 일단 배치화가 저절로 돼서 (32, 28, 28) 가 되고
    • Dense(128) 때문에 (32, 28, 128)이 됐다가
    • Dense(10) 때문에 (32, 28, 10)이 된다.
    • 즉, (10,)이 아니라 차원이 계속 유지된다.
  • Dropout
    • 단점이 있는데,
    • Dropout을 쓰면 Loss function이 복잡해진다.
    • 그래서 loss가 줄어드는 것을 그래프로 보면서 뭔가 잘못 된 게 있는지 debug하기 힘들어진다.
    • 그래서 하는 방법은,
      • 1) 먼저 dropout 없이 진행해서 loss가 줄어드는 걸 확인했다면
      • 2) 그 때 dropout을 실행한다.
    • 근데 이것의 실행 방법이 생각했던 것과 다른 것 같다.

아... 오늘은 코딩테스트 준비용으로 갖는 알고리즘 연습 시간에 4문제 중 1개 밖에 못 풀었다.......
Dropout, Batch Normalization 관련해서는 실제로 어떤 수식을 갖고 작동하는지 더 찾아봐야 하는데, 알고리즘 푸느라 오늘 오후가 거의 다 가버렸다....

profile
'어떻게든 자야겠어'라는 저 아이를 닮고 싶습니다

0개의 댓글