[2021 머신러닝 야학] 5일차

Chaerin kim
4 min readJan 11, 2021

10. 네번째 딥러닝-신경망의 완성:히든레이어

10. 네번째 딥러닝-신경망의 완성:히든레이어

이번에는 딥러닝의 완성도를 높일 수 있는 히든레이어라는 개념입니다. 히든레이어는 종속변수와 독립변수 관계 사이에 다른 층을 껴넣는 것으로, 많으면 많을수록 딥러닝 성능이 향상되게 합니다.

활성화 함수 swish 함수를 사용하여 히든레이어를 생성합니다. X, Y, H의 관계를 명확히 파악하고 써야 함에 주의합시다!

10–1

마찬가지로 모델을 학습시키고 결과를 확인합니다.

10–2

위의 (모델).summary 함수는 모델의 대략적인 구조를 나타냅니다. 가장 오른쪽에 있는 param은 퍼셉트론 수식의 항의 개수를 나타냅니다. 13개의 항을 10개의 항으로 연결하는데는 가중치항이 총 10*13, 편향(bias)항이 10*1으로 총 140개를 가지게 됩니다. 아래도 이와 마찬가지입니다.

10–3

11. 데이터를 위한 팁

(칼럼).dtypes는 데이터 타입을 알려줍니다. pd.get_dummies는 마찬가지고 원핫인코딩을 해야하는데, 데이터 설정을 맞추지 않으면 원핫인코딩이 불가능합니다. (독립변수를 category화 해야합니다.)

11–1

따라서 (칼럼).astype(‘category’)를 사용해서 독립변수의 타입을 카테고리로 만들어준 후 원핫인코딩을 수행합니다.

또 다른 문제는 데이터의 항이 비어 있을 수도 있다는 점에서 발생합니다. N/A 칸이 존재할 수 있다는 것입니다. 이럴 때는 isna().sum()을 사용하여 N/A 칸이 몇 개인지 개수를 셀 수 있습니다.

N/A 칸을 마땅히 채워 넣을 값이 없을 경우에는 평균값에 해당하는 값을 넣습니다. fillna(“넣을 값”)을 사용하여 빈 칸을 채워줍시다.

11–2

12. 모델을 위한 팁

기존의 보스턴 집값 예측에서 쓴 코드를 조금 변형해봅시다. 모델 구조를 만드는 부분입니다.

기존에 이랬던 코드에서

이렇게 Dense와 히든 레이어 사이에 BatchNormalization layer를 넣어주세요. (이렇게 사용하는 게 가장 성능이 좋게 나타나기 때문입니다.)

여러번 학습을 시켜도 loss가 감소하는 추세가 만족스럽지 않을 때가 있습니다. Batch Normalization만으로도 빠르고 더 정확한 모델을 만들 수 있습니다.

(Batch Normalization은 사전에 따르면, 입력 레이어의 정규화를 통해 인공 신경망을 더 빠르고 안정적으로 만드는 데 사용되는 방법입니다.)

--

--