TNT 1주차 스터디 (2)

2021. 9. 9. 14:44전공공부/전자전기전공

1. Batch normalization

https://www.youtube.com/watch?v=nUUqwaxLnWs 

Andrew Ng 교수님 설명

내용을 요약해보면 검은 고양이 사진만으로 train 시킨다고 할 때 test에서 갈색 고양이를 목격한다면 대응하기가 쉽지 않을 것이다. 이를 공변량 변화 (covariate shift)이라고 한다. 이럴 때 생기는 문제를 batch normalization은 안정화시킨다. Normalization은 평균과, 분산을 일정하게 조절하다보니 앞 부분의 NN이 달라지더라도 뒷 부분의 NN이 크게 변화되지 않아 부담을 줄여준다. 그리고 이를 통해 빠르게 훈련을 시킬 수 있다. 또한 regularization effect도 있어 overfitting을 방지하기도 좋다. 하지만 배치 크기에 굉장히 제한을 많이 받는다고 한다. 이와 관련한 내용은 밑에 블로그를 읽어보면 좋다.

 

 

배치 정규화(Batch Normalization)

gaussian37's blog

gaussian37.github.io

 

2. tf.keras.callback() 사용법

 

Module: tf.keras.callbacks  |  TensorFlow Core v2.6.0

Public API for tf.keras.callbacks namespace.

www.tensorflow.org

a) earlystopping
loss가 더이상 줄어들지 않거나 metric이 나아지지 않으면 model.stop_training 이 True가 되고 training을 멈춘다.

 

b) modelcheckpoint

모델을 저장한다. 다양한 옵션이 있다. args에서 mode를 참고하면 될듯하다.

 

c) tensorboard

visualization을 보여준다. 로그나 그래프, 히스토그램등을 볼 수 있다.

 

d) ReduceLROnPlateaumetric이 개선되지 않으면 learning rate를 줄인다. 모델을 더 개선가능할 것 같다.

 

3. LSTM

 

https://www.youtube.com/watch?v=bX6GLbpw-A4  

기존의 RNN으로는 긴 sequential data를 처리하는 데 문제가 발생했다고한다. gradient exploding 이나 vanishing 현상이 일어난 것이다. 이 문제를 극복하기 위해 LSTM이 만들어 졌다. 잊고 기억하는 복잡한 매커니즘을 통해 output이 생성된다. 코드에서는 LSTM을 사용후 Dense를 사용한다. 

 

4. keras.bidirectional()

 

tf.keras.layers.Bidirectional  |  TensorFlow Core v2.6.0

Bidirectional wrapper for RNNs.

www.tensorflow.org

https://www.youtube.com/watch?v=atYPhweJ7ao

기존의 LSTM은 한쪽으로만 진행했다. (가져온 그림은 RNN이다.) 즉 과거의 데이터만이 영향을 주었다. 만약 파란색의 새로운 layer를 만든다면 미래의 데이터도 각각의 결과에 영향을 주게 만든다. 이를 통해 더 효과적으로 구현 할 수 있다고 한다. 간단한 예제 코드는 위의 링크에 있다.

 

5. 인사이트

a) 파라미터 개수는 마치 연장과 같다. 1000개는 커터칼, 10만개는 전기톱 이런 느낌이다. 그러므로 각 상황에 맞게 알맞은 연장을 사용해야 한다. (때로는 머신러닝도 고려)

b) 평가를 할 때는 먼저 정확도를 우선시하고 그담에는 코스트를 줄일 방법을 찾아야 한다.