[DL 기초] 밑바닥부터 시작하는 딥러닝: 신경망
인턴하는 회사에서 진행하는 세미나 2주차의 과제로 사이토 고키의 밑바닥부터 시작하는 딥러닝의 3단원-신경망 부분을 정리해 보고자합니다.
퍼셉트론과 신경망
신경망은 앞서 글에서 소개했던 퍼셉트론의 문제점을 해결해줍니다. 퍼셉트론 단원에서는 직접 게이트들의 진리표를 확인하면서 가중치값과 임계값을 정해주었지만, 신경망은 가중치 매개변수의 적절한 값을 데이터로부터 자동으로 학습할 수 있습니다.

신경망을 그림으로 나타내면 위의 그림으로 나타낼수 있습니다. 이전에 살펴보았던 퍼셉트론에서 편향을 추가한다면 밑의 왼쪽 그림처럼 나타낼 수 있을것입니다. 이것을 활성화 함수라는 개념을 도입해서 나타낸다면 그림의 오른쪽과 같이 나타낼 수 있을 것입니다. 즉, 활성화함수는 입력신호의 총합이 활성화를 일으키는지를 결정하는 역할을 합니다.

이것을 다시 나타낸다면 밑의 그림처럼 가중치와 곱해진 입력신호와 편향을 총합을 a로, 활성화 함수 h에 들어간 a가 y로 출력됩니다.

활성화 함수
퍼셉트론과 신경망의 주된 차이는 활성화함수 입니다. 어떠한 임계값을 경계로 출력이 바뀌는 계단 함수를 다른 함수로 변경하는것이 신경망으로 나아가는데 아주 중요하다고 책에서 소개합니다. 활성화함수는 입력받은 신호를 변환하여 다음 뉴런에 전달합니다.

먼저 신경망에서 자주 사용하는 시그모이드 함수는 다음과같은 수식과 그래프의 개형을 가지고 있습니다.
시그모이드 함수와 계단함수를 비교하면 위의 그림과 같은데요, 계단함수는 0이나 1중 하나의 값을 반환하는 반면, 시그모이드 함수는 0에서 1사이의 연속적인 값을 신경망에서 다음 뉴런에 전달합니다. 이렇게 '매끈하게' 값이 변화하는 것이 신경망학습에서 아주 중요하다고 합니다.
시그모이드 함수 이외에 활성화 함수로 ReLU(Rectified Linear Unit)함수도 있습니다. ReLU함수는 입력이 0을 넘으면 그 입력을 그대로 출력하고, 0 이하이면 0을 출력하는 함수입니다.

비선형 함수
이렇게 계단함수, 시그모이드함수, ReLU함수의 공통점은 비선형함수라는 점입니다. 즉 직선1개로 표현할 수 없는 함수인데요, 신경망에서는 활성화함수로 비선형 함수를 사용해야합니다. 선형함수를 활성화함수로 사용했을때, 신경망의 층을 깊게하는 의미가 없어지기 때문입니다.
예를들어 h(x)=cx라는 선형함수를 활성화 함수로 설정했을때, 3층의 신경망이 구성된다면 y(x) = c*c*c*x가 될것입니다. 하지만 이것은 y(x) = ax, a=c^3 으로 표현할 수 있고 이는 은닉층의 즉 3층이라는 이점을 살릴 수 없습니다. 그렇기 때문에 다층의 신경망의 이점을 활용하려면, 활성화함수는 반드시 비선형 함수를 사용해야합니다.
