④ 모델의 네트워크 계층을 구축하기 위해 for 문을 이용하여 각 계층을 all_layers 목록에 추가합니다. 추가된 계층은 다음과 같습니다.
• Linear: 선형 계층(linear layer)은 입력 데이터에 선형 변환을 진행한 결과입니다. 선형 변환을 위해서는 다음 수식을 사용합니다.
y = Wx + b
(y: 선형 계층의 출력 값, W: 가중치, x: 입력 값, b: 바이어스)
따라서 선형 계층은 입력과 가중치를 곱한 후 바이어스를 더한 결과입니다.
• ReLU: 활성화 함수로 사용
• BatchNorm1d: 배치 정규화(batch normalization)5 용도로 사용
• Dropout: 과적합 방지에 사용
⑤ forward() 함수는 학습 데이터를 입력받아서 연산을 진행합니다. forward() 함수는 모델 객체를 데이터와 함께 호출하면 자동으로 실행됩니다.
모델 훈련을 위해 앞에서 정의했던 Model 클래스의 객체를 생성합니다. 객체를 생성하면서 (범주형 칼럼의 임베딩 크기, 출력 크기, 은닉층의 뉴런, 드롭아웃)을 전달합니다. 여기에서는 은닉층을 [200,100,50]으로 정의했지만 다른 크기로 지정하여 테스트해 보는 것도 학습하는 데 도움이 될 것입니다.
코드 2-11 Model 클래스의 객체 생성
model = Model(categorical_embedding_sizes, 4, [200,100,50], p=0.4)
print(model)