🎶DNN(Deep Neural Networks) 에 대해 알아보자!
DNN을 한마디로 표현하자면, 단층 퍼셉트론의 한계를 극복하고자 나온 다층 퍼셉트론의 일종이라고 할 수 있다!
( 🎃 이전 포스트에서 단층 퍼셉트론의 한계에 대해 설명했으니 첨부하도록 하겠다.)
신경망(Neural Networks)에 대해 알아보자!
신경망(Neural Networks)에 대해 알아보자!
🎶 머신러닝에서 사용하는 신경망이란 무엇일까? 뇌는 '뉴런' 이라는 수없이 많은 신경세포의 연결을 갖고 있는데, 인공신경망은 이러한 신경세포의 동작을 흉내내는 장치나 소프트웨어를
ybbbb.tistory.com
다층 퍼셉트론은 이전에 설명한 단층 퍼셉트론의 입력층과 출력층 사이에 '은닉층(hidden layer)'를 추가해 구현하는데, 이 은닉층이 바로 입력을 변화시켜 새로운 입력을 만드는 역할을 해준다.
이렇게 기존 입력에 변화를 줘 새로운 입력으로 탈바꿈한다면, 단일 선형 결정 경계만으로도 원하는 연산을 모두 수행할 수 있게 되는 것이다!
자세히 설명하자면, 입력층에 있는 n개의 노드를 은닉층에 있는 m개의 노드에 모두 연결하고(fully-connected), 각 노드간의 연결강도를 '가중치'로 설정해 이 가중치를 '학습'을 통해 업데이트 해 나가는 것이다.
이런 은닉층을 2개 이상 삽입한 다층 퍼셉트론을, 우리는 'DNN(Deep Neural Networks)'라고 부른다.
활성화 함수는 출력 노드에 모아진 신호를 다음 노드로 보낼 때, 얼마나 강하게 보낼지를 결정하는 함수이다. 앞서 말한 계단 함수 이외에도 다양한 활성화 함수들이 존재하는데, 여기서는 가볍게 2개 정도만 더 보도록 하겠다.
일단, 최초의 퍼셉트론이 채택한 활성화함수인 계단함수의 경우에는 미분이 되는 구간에서의 미분값이 0이기 때문에, 경사 하강법을 통한 최적화가 불가능하다는 단점이 존재한다.
( 🎃 경사 하강법에 대해서는 나중에 다루겠다. 일단 여기서는 가중치를 업데이트 하는 방법 중 하나로써 미분값을 이용한다는 사실만 알고 넘어가도 충분하다.)
그래서 나온 함수가 바로 '시그모이드(sigmoid) 함수'이다.
시그모이드 함수는 다음과 같이 smooth curve의 형태를 띠는데, 이 특징 때문에 어떤 값이더라도 경사 하강법을 통해 최적화가 가능하다는 큰 장점을 갖고 있는 활성화 함수이다.
( 🎃 smooth curve라는 것은, 쉽게 설명하자면 연속적으로 미분 가능한 곡선이라는 것을 의미한다.)
하지만 이 시그모이드 함수는 개형에서 알 수 있듯이 특정 양수 값으로 수렴하는 특징을 갖고 있어 차후 기술할 기울기 소실문제를 발생시키는 큰 원인이 된다.
( 🎃 기울기 소실 문제에 관해서는 나중에 다루겠다. 일단 1에 매우 근접한 결과를 갖는 입력의 경우 미분값이 0에 근접해 업데이트가 이루어지지 않는다는 사실만 이해하고 넘어가도 충분하다.)
그래서 나온 함수가 바로 'ReLU 함수'이다.
ReLU 함수는 다음과 같이 특정 양수값으로 수렴하지 않아 기울기 소실 문제를 완화하는데 큰 기여를 한 활성화 함수이다.
정리하자면, DNN은 2개 이상의 은닉층을 갖는 다층 퍼셉트론으로써, 각 층(layer)에서의 출력값들을 활성화 함수를 통해 다음 층으로 내보낸 후, 차후 출력층에서의 예측값과 실제값의 차이를 활용해 층간의 연결강도를 수정해 나가는 모델인 것이다.
그렇다면 예측값과 실제값의 차이를 어떻게 활용해서 연결강도를 수정할 것인지 궁금증이 생기기 마련인데, 그것은 바로 앞에서 말한 경사 하강법을 사용하는 '역전파 알고리즘'을 활용하게 된다.
역전파 알고리즘에 관해서는 다음 포스트에서 다루도록 하겠다.
'머신러닝' 카테고리의 다른 글
CNN구현 in python - MNIST 데이터셋을 활용하자! (0) | 2024.12.29 |
---|---|
CNN(합성곱신경망)이란? (2) | 2024.12.28 |
신경망튜닝 - 데이터 전처리와 드롭아웃(drop-out) (2) | 2024.12.27 |
경사 하강법의 최적화 - 모멘텀(momentum), 네스테로프가속경사(Nesterov-accelerated gradient), AdaGrad, RMSProp 그리고 Adam (2) | 2024.12.26 |
사라지는 기울기(Vanishing Gradient) 문제란? (0) | 2024.12.25 |
경사 하강법(gradient descent)의 종류 (0) | 2024.12.24 |
역전파 알고리즘(Back-propagation)이란 무엇일까? (0) | 2024.12.23 |
신경망(Neural Networks)에 대해 알아보자! (4) | 2024.12.21 |