비선형성과 모델 해석 가능성
2장에서는 선형 모델을 보스턴 주택 데이터셋으로 훈련하고 나서 모델의 가중치를 조사하여 개별 파라미터의 의미를 합리적으로 해석했습니다. 예를 들어 ‘평균적인 방의 개수’ 특성에 해당하는 가중치가 양의 값을 가지고, ‘범죄율’ 특성에 해당하는 가중치는 음의 값을 가집니다. 이런 가중치의 부호는 주택 가격과 해당 특성 사이의 관계가 양성인지 음성인지를 나타냅니다. 가중치의 크기는 모델이 특성에 할당한 상대적인 중요도를 알려 줍니다. 이 장에서 배운 것을 감안하면 자연스럽게 한 질문이 떠오릅니다. 하나 이상의 은닉층을 가진 비선형 모델에서도 여전히 가중치 값을 직관적으로 해석하고 이해할 수 있을까요?
가중치 값을 참조하는 API는 비선형 모델과 선형 모델 모두 동일합니다. 모델 객체나 층 객체의 getWeights() 메서드를 사용하면 됩니다. 코드 3-1의 MLP를 예로 들어 보죠. 모델 훈련이 끝난 후에 (model.fit() 호출 직후에) 다음 라인을 추가할 수 있습니다.
model.layers[0].getWeights()[0].print();
이 라인은 첫 번째 층(즉, 은닉층)의 커널 값을 출력합니다. 이는 모델에 있는 네 개의 가중치 텐서 중 하나입니다. 다른 세 개는 은닉층의 편향, 출력층의 커널과 편향입니다. 출력된 결과를 보면 선형 모델의 커널보다 많은 것을 알 수 있습니다.
Tensor [[-0.5701274, -0.1643915, -0.0009151, ..., 0.313205 , -0.3253246], [-0.4400523, -0.0081632, -0.2673715, ..., 0.1735748 , 0.0864024 ], [0.6294659 , 0.1240944 , -0.2472516, ..., 0.2181769 , 0.1706504 ], [0.9084488 , 0.0130388 , -0.3142847, ..., 0.4063887 , 0.2205501 ], [0.431214 , -0.5040522, 0.1784604 , ..., 0.3022115 , -0.1997144], [-0.9726604, -0.173905 , 0.8167523 , ..., -0.0406454, -0.4347956], [-0.2426955, 0.3274118 , -0.3496988, ..., 0.5623314 , 0.2339328 ], [-1.6335299, -1.1270424, 0.618491 , ..., -0.0868887, -0.4149215], [-0.1577617, 0.4981289 , -0.1368523, ..., 0.3636355 , -0.0784487], [-0.5824679, -0.1883982, -0.4883655, ..., 0.0026836 , -0.0549298], [-0.6993552, -0.1317919, -0.4666585, ..., 0.2831602 , -0.2487895], [0.0448515 , -0.6925298, 0.4945385 , ..., -0.3133179, -0.0241681]]