앞의 게시물에서 hidden layer의 크기가 너무 커서 말의 머리가 두개인 문제가 발생했다.
관련된 예제그림을 살펴본다.

3) over-fitting: loss가 엄청 적기 때문에 train data(알고 있는)에 대해서는 정확하다.
그러나 실제의 data에 대해서는 불안정하다.


regularization(정규화)의 목적
정규화의 강도는 𝜆로 설정한다.
f = Wx
W 값의 range가 크지 않음을 선호.
W1 = 100x1
W2 = 1x2
- Weight의 범위가 클 수록 noise↑ / data의 의존도 ↑






overfitting을 피하려면 𝜆를 높여야한다.
𝜆가 0.1인 그림은 거의 linear 모델 수준으로 단순하다.
그러나 test엔 이런 linear model형태가 훨씬 좋다.
모델을 선택한다.
최적화할 기준을 정한다.(objective function)
학습 알고리즘 개발 (find W and b that minimize)

- -yi: loss function: 예측된 결과값이 틀린 곳에 패널티 부여
- ||W||: 큰 가중치에 패널티 부여
-> 이 함수는 볼록한 형태로 경사하강법(gradient descent)를 사용할 수 있다.
추후에 objective를 미분하면 아래의 수식으로 바뀌게 된다.


.
결국!
최종적으로 보는 부분

[빨간 박스]
wj가 양수이면 결국 저만큼 빼준다는 의미 = graph( ↙ )
wj가 음수이면(작은 값이면) 저만큼 더해준다. graph( ↗ )

j의 절대값의 크기가 작아지면서 (= 0에 가까워지면서)
범위 자체의 크기는 같으니 절대값으로 비교한다.
= data에 민감하고 싶지 않은 것.

||w|| : 모든 element의 절대값을 씌우고 더한 것
절대값은 미분이 안 되니 +, - 로 나누어서 미분해준다.

sign: 0보다 크면 기울기 = 1
sign: 0보다 작으면 기울기 = -1

[빨간 박스]
양수이면 sign = 1 → weight를 1만큼 빼준다
음수이면 sign = -1 -> weight를 1만큼 더해준다.
앞에 -가 있기 때문에 반대의 연산이 일어나는 것이다.
L1, L2 모두 절대값을 줄인다.
앙상블이란?
: 1개의 proeiction → 1개의 output 생성한 후 하나의 network가 아니라 여러 network를 골고루 활용해서 결과를 내는 기법

data에 민감한 상태를 해소하기 위해 중간에 나오는 output을 무작위로 0(sparse)으로 만든다.
0이 된 연산은 의미가 없어지기 때문에 gradient가 update 되지 않는다.
▶ overfitting이 덜 된다.
During model training, use a validation set
: 검증이 된 set를 사용하는 데 전체 중 75%의 data로만 학습하고, 25%의 데이터로 test를 진행한다.
일정 시점(n)이후에도 validation accuracy or loss가 개선되지 않으면 stop
(n called patience)


