layer 의 손잡이들
Dense layer 는 인자가 여러 개지만, 거의 모든 layer 에서 만지는 건 딱 둘 — units 와 activation. 나머지는 잘 고른 default 가 있으니 *구체적인 이유* 생기기 전엔 그냥 둬.
| 인자 | 타입 | 설명 |
|---|---|---|
units | int | 출력 차원 — 이 layer 의 뉴런 수 |
activation | str/fn | activation 함수: 'relu', 'sigmoid', 'softmax', 'tanh', None |
input_shape | tuple | 입력 shape (첫 layer 만 필요, keras.Input 권장) |
use_bias | bool | bias 항 추가 여부 (기본 True) |
kernel_initializer | str | weight 초기화: 'glorot_uniform' (기본), 'he_normal' 등 |
activation 은 취향이 아니라 출력에 대한 결정
*마지막* layer 의 activation 은 취향이 아니라 *task* 가 정해. 틀리면 loss 함수가 해석 못 하는 값을 조용히 받아 — 에러 없이 학습이 이상해지는 최악의 케이스:
- ReLU — hidden layer 기본. 단순하고 빠르고, 깊은 stack 에서 sigmoid/tanh 가 빠지는 vanishing-gradient 함정을 피해.
- Sigmoid — binary 분류 출력. [0, 1] 확률 하나로 짜부.
- Softmax — multi-class 분류 출력. class 들 합이 1 인 확률 벡터.
- Tanh — 출력 [-1, 1]. hidden 에 가끔, 옛 RNN cell 에 흔해.
- None / Linear — regression 출력. 변환 안 해서 임의의 실수 뱉을 수 있어.
패턴 보여? hidden 은 거의 항상 ReLU, 마지막 activation 은 *뭘 예측하느냐* 가 정해. 이 규칙 하나가 초보 버그 한 무리를 통째로 없애.