신경망과 활성함수

yoon·2021년 10월 9일
0

(*이 시리즈의 내용은 모두 '인공지능 100점을 위한 파이썬 수학' 서적의 내용을 정리한 것입니다. 사진과 같은 자료들 또한 출처가 위 책임을 밝힙니다.)

1. 인공신경망(ANN, Artificial Neural Network)

  • 인간의 신경세포를 본떠 인공지능에 도입한 것이 퍼셉트론이다.

  • 퍼셉트론은 뉴런과 같이 다수의 입력을 받고 그것을 조합해서 하나의 출력을 만들고, 이 신호는 여러 곳으로 전달될 수 있다.

  • 이것을 여러 번 적용해서 적층한 것이 신경망 중 딥러닝의 특징이다.

  • 과거 퍼셉트론이 해결하지 못했던 XOR 문제를 2개 층을 중첩하여 사용함으로써 극복했다.

2. 퍼셉트론과 논리게이트

  • 퍼셉트론 NAND만을 조합하여 AND, OR, NOT 등을 만들 수 있다.

3. 신경망의 수학적 이해

  • 책 124 페이지를 봐야함.

  • 활성화 함수: 입력 신호의 총합을 출력 신호로 변환하는 함수

4. 활성함수

  • 어떤 값이 들어왔으 ㄹ때 그 값을 어떻게 변형해서 출력으로 내보낼지를 결정하는 함수

  • 활성화 함수라고도 한다.

  • 퍼셉트론은 입력값을 모아 그것이 일정한 임계치를 넘었는지 아닌지를 판별해야 하는데, 이때 활성화 함수를 사용한다.

(1) 계단함수

  • 출력값을 그래프로 표현했을 때 계단 모양이어서 계단함수라고 한다.

(2) 시그모이드(sigmoid) gkatn

  • 곡선, 즉 S자형 곡선을 가지는 함수. 상당히 많은 곳에 사용된다.

  • 출력의 최솟값과 최댓값이 0과 1사이이다.

  • 중간값, 즉 입력 x가 0일 때 0.5를 출력값으로 갖는다.

  • 입력이 아무리 큰 값이더라도 출력은 1이고, 입력이 음의 값으로 작아지면 0에 가까워진다.

  • 기울기, 각 점의 미분값은 0에서 최댓값 .25를 갖는다.

  • 입력이 작아지거나 커지면 기울기인 미분값은 점점 작아져서 0에 가까워진다.

  • 시그모이드 함수가 최근에는 많이 사용되지 않는 이유?

첫째. x가 커지면 기울기가 계속 줄어드는 특징 때문이다: x = [0,1,2,3,4,5,6]일 때, 기울기 값은 [0.24994, 0.19659, 0.10500, 0.04519, 0.01766, 0.00665, 0.00246]인데, 미분값 0.00246의 의미는 입력이 1 변화할 때 출력은 0.00246 변한다는 뜻이다. 즉, 출력을 1만큼 변화시키는 데 필요한 입력의 변화량이 406(=1/0.00246)이 된다.

둘째. 컴퓨터에서 호출하는 exp() 함수 사용에 많은 시간과 메모리가 필요하다: 활성화 함수는 신경망 프로그램의 많은 부분을 담당하는데, 여기에 많은 시간과 메모리가 사용되면 그만큼 효율이 떨어진다.

(3) 하이퍼볼릭 탄젠트(tanh)

  • 시그모이드 함수와 마찬가지로 S자 곡선을 가지는 미분 가능한 활성함수.

  • 비선형이고, 0.5가 아닌 0을 기준으로 대칭이라는 점에서 시그모이드와 차이가 있다.
    (이 때문에 시그모이드보다 학습 속도가 빠르다!)

  • 시그모이드와 마찬가지로 입력값이 크더라도 1과 -1의 제한에 걸리기 때문에 여러 층의 활성함수를 거치면 기울기값을 소멸시킨다는 단점이 있다.

(4) ReLU(렐루, Recitified Linear Unit)

  • 계단 함수와 유사한 모양이지만 상한선의 제한이 없다.

  • 입력이 0인 부분에서 기울기를 측정할 수 없기 때문에 미분 불가능.

  • 입력값이 0 이하면 출력은 0으로 수렴, 0 이상이면 출력은 입력과 동일하다.(p.143 그래프 참고)

  • 파이썬 코드로 구현할 때 최댓값을 반환해주는 numpy의 maximum() 함수를 사용하면 편리하다.
    (max() 함수는 array와 함께 사용할 수 없기 때문에 maximum()을 사용한다!)

  • 시그모이드와 하이퍼볼릭 탄젠트와 달리 복잡한 계산이 사용되지 않는다.
    (0보다 작으면 0, 0 이상이면 입력값을 그대로 출력하기 때문에 컴퓨팅 파워를 거의 소모하지 않는다.)

  • 기울기값 소멸을 극복하였다.

profile
공부하자

0개의 댓글