tf.keras.layers.Dense의 Args 분석 - TNT 스터디 중 몰랐던 것

2021. 9. 17. 16:32전공공부/전자전기전공

 

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

Just your regular densely-connected NN layer.

www.tensorflow.org

 

Dense layer은 NN으로 다시 연결할 때 사용한다. 

 

output = activation(dot(input, kernel) + bias)

 

kernel : layer에 주어진 weight matrix

bias : layer에 정해진 bias vector로 model을 optimize하기 위해 사용된다. 

 

1. kernel_initializer

그 중 kernel_initializer = 'he_normal'을 많이 사용하는데 0을 중심으로 정규분포 해당하는 kernel을 가중치로 가져온다. 이외에도 ReLu가 0 이하의 신호를 제거하기 때문에 분산을 두배 주어 분산을 유지한다는 의도도 있다.  

 

Keras documentation: Layer weight initializers

» Keras API reference / Layers API / Layer weight initializers Layer weight initializers Usage of initializers Initializers define the way to set the initial random weights of Keras layers. The keyword arguments used for passing initializers to layers dep

keras.io

이외에도 다양한 함수가 존재한다. 중요한 점은 초기화를 어떻게 시켰냐는 것에 따라 다른 성능이 나온다는 것이다. 그래서 각각의 상황에 맞게 잘 선택해야한다.

https://towardsdatascience.com/hyper-parameters-in-action-part-ii-weight-initializers-35aee1a28404

2. kernel_constraint, bias_constraint

 

Keras documentation: Layer weight constraints

Layer weight constraints Usage of constraints Classes from the tf.keras.constraints module allow setting constraints (eg. non-negativity) on model parameters during training. They are per-variable projection functions applied to the target variable after e

keras.io

에를 들어 kernel_constraint = max_norm(3)을 사용하면 weight vector가 3이 되는 것을 막아 급격하게 weight가 늘어나는 것을 방지 가능하다. 

 

3. kernel_regularizer, activity_regularizer

L1, L2 norm을 regularize하는게 가능하다. 가중치가 너무 커지는 것을 제한한다.

 

4. Dropout

사실 제일 좋고 언급이 많이 되는 부분이 Dropout이다. 보통 dense안에 쓰기 보다는 keras.layers.Dropout으로 독립된 layer로 많이 사용되는 것 같다.

 

오늘도 overfitting을 방지하면서 열심히 model을 돌려봅시다~