벌써 전체 과정의 10프로가 끝났고, 새로운 한 주가 시작됐다.
이번주도 열심히 해보자 ,,!
from string import ascii_lowercase
라는 라이브러리를 통해서 영어 소문자를 숫자로 바꿀 수 있었다!
가끔 하나씩 조건을 놓쳐서 문제를 제대로 파악하지 못하는 경우가 생긴다.
조건을 꼼꼼히 읽는 연습을 하자!
functools.cmp_to_key
: C++에서 조건문으로 정렬하는 것처럼 python에서도 가능하다.
Optimization Algorithms
Deep learning 모델이 학습 데이터에만 잘 대응하는 것이 아닌,
학습하지 않은 데이터에도 잘 대응할 수 있도록 하는 여러 방법론들이 있다.
Dropout, Early stopping, k-fold validation, Weight decay, Batch normalization, MixUp, Ensemble, Bayesian Optimization 등
Boostrapping
학습 데이터가 고정되어 있을 때 그 안에서 서브 샘플링을 하여 여러 모델을 만드는 방법을 뜻한다. 추론을 진행할 때도, 여러 모델에 값들을 넣고 결과의 평균치를 사용하는 식으로 ensemble
을 진행한다.
Flat / Sharp Minimum
같은 극솟값이라도, 기울기가 작은 부분에서의 극솟값과 큰 부분에서의 극솟값이 존재하는데, Test
시에는 기울기가 작은 부분에서의 극솟값이 데이터의 변화에 General하게 대응할 수 있다.
Momentum
한 번 흘러간 gradient
를 어느 정도 유지 시켜준다. 물리에서의 관성처럼 원래 가려는 방향을 유지하는 성질과 비슷한 것 같다.
Adagrad
값이 많이 변한 파라미터들은 적게 변화 시키고, 값이 적게 변한 파라미터는 많이 변화하게끔 해서 파라미터의 전체적인 변화량을 비슷하게 유지한다. 하지만, 파라미터의 변화값들이 G
에 저장되며, 무수히 커지면 파라미터의 업데이트가 멈춘다
Adadelta
위의 문제를 해결하기 위해서, window
처럼 일정 시간 동안만의 파라미터 변화만 고려해서 파라미터의 변화량을 조정한다. 가장 큰 특징은, 학습률이 식에 들어가지 않는다는 점이다. G
를 통해서 조절하기 때문이다.
RMSprop
Adagrad에 Step size를 추가한 폼인데, 잘 된다고 한다.
Adam
gradient 정보에 따라 adaptive
하게 파라미터를 수정하고, 이에 더해 momentum
까지 유지한다.
파라미터 계산
filter_size * #_of_input_channel * #_of_output_channel
layer 하나하나 쌓아가면서 모델 만드는 것이 신기하고 재밌다,,!
알아야 할 게 역시 많은 것 같다.
서두르지 말고,
한 발짝씩 나아가기
화이팅!!