은닉층 (Hidden Layer) 이란?
은닉층은 입력층과 출력층 사이의 모든 층을 말한다.
은닉층은 모든 입력노드들로부터 입력값을 받아 가중합을 계산하고, 이 값을 전이함수에 적용하여 출력층에 전달하도록 되어있다.
모든 입력노드와 은닉노드들은 가중치를 가지고 있는 망으로 연결되어있고, 은닉노드와 출력노드 역시 마찬가지이다.
아래이미지를 확인해보자.
기존의 코드에서 5개의 노드를 가진 은닉층만 추가해보았다.
활성화 함수는 'swish'로 하였고, 5개의 노드를 가지게 만들어 주었다.
활성화 함수는 아래 링크에서 참조하길 바란다.
https://sunway-light.tistory.com/m/entry/활성화-함수-총정리
그리고 여기서 한가지 다른점은, 출력층 Dense 끝에 위에 선언해준 레이어 층인 H로 붙여준다.
새로운 레이어를 참조 한다는 뜻이다.
은닉층을 추가하면 추가할수록 예측값의 정확도가 올라간다.
은닉층을 충분히 추가하고 깊게 이루어져 있는 경우의 알고리즘을 DNN(Deep Neural Network) 라고한다.
실제로 우리가 간단하게 만드는 예제에서는 컴퓨터의 성능을 문제삼을일은 없다.
하지만 무분별하게 은닉층을 추가하면 필자처럼 옛날 맥북에서 개발을 하면 CPU 환경으로 디버깅하기에 엄~~청 느려진다.
아무튼, 보스턴 집값예측의 예측 결과값이랑 달라지는지 확인해보자.
아래는 보스턴 집값예측 포스팅이다.
아래 이미지는 5개의 노드를 가진 은닉층을 추가해주었을때 이미지이다.
5개의 노드를 가진 은닉층 하나를 추가해주는 걸로는 loss의 값이 크게 변동이 없다.
그럼 제대로 모델이 학습이 되었을까? 라는 의문이 생길수도 있다.
그럴경우, 해당 모델을 summary로 출력해보면 된다.
보스턴 집값 예측에서의 독립변수 (InputLayer)는 총 13개였고, 종속변수 (Output Layer)는 1개였었다.
그래서 해당 독립,종속 변수를 shape 했던 결과 (506, 13) , (506, 1)이 나왔었다.
그렇다면 위의 summary()가 의미하는것은 예측할때의 공식을 철저히 따라 도출된 값이다.
y = w1x1 + w2x2 .... wnxn + b
여기서 y는 param 의 값이고, 모든 가중치들의 합과 편향 (bias)의 합을 더하면 해당 값이 나온다.
즉 13 + 13 + 13 + 13 + 13 + 5의 값인것이다.
결과적으로 보았을때, 정상적으로 학습이 된 것을 확인할 수 있다.
그럼 은닉층 사용하는 경우 어떻게 사용하는지, 모델에 학습이 제대로 되었는지 등을 알아보았다.
'🔥 Programming > ML & DL' 카테고리의 다른 글
[Machine learning] One-hot encoding와 Softmax Regression, Cross-entropy란? (0) | 2022.11.30 |
---|---|
[Tensorflow / Deep learning] 아이리스 품종 분류 (0) | 2022.11.30 |
[Tensorflow / Deep learning] 보스턴 집값 예측 (1) | 2022.11.29 |
[Tensorflow / Deep learning] 레모네이드 판매 예측 (0) | 2022.11.28 |