Deep Learning

3.신경망,활성화 함수

Younder 2021. 4. 19. 18:32

-신경망이란 

  • 신경망의 예 

출처 : 밑바닥 부터 시작하는 딥러닝

  • 입력층부터 0층,1층,2층 으로 불려지기도 합니다.
  • 은닉층은 '보여지지 않는 층' 입니다. 
  • 퍼셉트론과 유사한 점이 많다.

-퍼셉트론 복습

 

  •  여기서 x1,x2는 입력, w1,w2는 가중치 y는 출력층 b는 편향 입니다.
  • 편향은 뉴런이 얼마나 쉽게 활성화 될 수 있는가를 제어합니다.
  • 가중치는 각 신호의 영향력을 제어합니다.
  • 회색 동그라미는 입력이 1이고 가중치가 b인 뉴런입니다.

 

위의 식을 좀더 간단하게 변형한 것이 아래의 식입니다.

입력의 총합이 0을 넘으면 1을 넘겨주고 그렇지 않다면 0을 넘겨줍니다.

 

이처럼 입력의 총합을 출력신호로 변환하는 함수를 "활성화 함수" 라고합니다

이 식을 다시 그림으로 표현하면 아래와 같습니다 .

 

  • 가중치의 신호를 조합한 결과가 a라는 노드가 되고 활성화 함수를 통과하여 y노드로 변환됩니다.
  • 활성화 함수는 임계값을 경계로 출력이 바뀌게 되는데 이런 함수를 "계단함수" 라고 합니다.

- 시그모이드(Sigmoid) 함수 

  • S 자 형태의 함수로 계단함수의 단점을 대신하여 사용할 수 있습니다. 
  • 이진분류의 경우 사용하며, 실수값을 기준으로 0이나 1로 출력합니다.

- 계단함수 구현하기.

  • 첫번째 함수처럼 구현하게되면 단순하고 직관적이지만 실수만 인자로 올 수 있다는 단점이 있습니다.
  • 두번째 함수처럼 구현하여 numpy 의 트릭을 이용할 수 있습니다. 
  •  

  • 이처럼 numpy 배열은 부등호 연산이 가능하고, 그 결과로 bool 값을 return 해줍니다.
  • 예제는 0보다 크면 True를 작으면 False를 출력합니다
  • 이를 다시 int형으로 변경시켜 주기 위해 astype() 함수를 사용하였습니다.
  • 이제 계단함수를 matplotlib를 이용하여 그려보면 아래와 같습니다.

  • 계단함수는 보이는거와 같이 어떠한 경계를 기준으로 0 과 1 만을 출력합니다. 
  • 하지만 극단적이라는 단점이 있습니다.
  • 이어서 시그모이드 함수를 구현해보면 아래와 같습니다. 

  • 여기서 np.exp 함수는 exp(-x) 에 해당하는 함수로 쓰여집니다. 

- 시그모이드와 계단함수의 차이점

  • 시그모이드 함수가 계단함수에 비해 위에서 말한거와 같이 좀더 매끄러운 느낌이고 이러한 매끄러움으로 신경망 학습에서 아주 중요한 역할을 맡게 됩니다!

-공통점은 ?

  • 입력이 작을때 0에 가까운값 혹은0 입력이 클때 1에 가까운값 혹은 1 을 출력하게 됩니다. 
  • 둘 모두 비선형 함수 입니다.
    • 비선형 함수란 말 그대로 직선하나로 그릴 수 없는 함수를 뜻합니다
  • 신경망을 구성할 때 활성화 함수로 반드시 비선형 함수를 사용해야 합니다.
  • 선형함수를 사용하면 층을 깊이 쌓는 의미가 사라지게 되기 때문입니다.

- 또 다른 활성화 함수들 

  • 최근에는 ReLu 함수를 주로 사용합니다. 
  • 그래프에서 보이듯이 0이하의 값은 0으로 출력 이상의 값은 입력값을 그대로 출력합니다. 

- 신경망 구현하기.

  •  입력이 2개 출력이 3개인 신경망을 구현하도록 입력이 2(1 x 2) 개, 가중치가 6(2 x 3) 개 편향이 3 ( 1x3 )개를 선언하였습니다
  •  이걸 그림으로 표현하면 아래와 같고 , 한층을 건너가는 과정을 다음과 같은 함수를 사용했습니다.

 

  •  이는 1층의 출력 Z1 이 2층의 입력으로 들어오는것을 제외하곤 작동원리는 똑같습니다.
  • 마지막으로 2층에서 출력층으로 출력하는 과정을 함수로 정의해보겠습니다
  • 단 마지막으로 구현하는 이과정에서 활성화 함수로 항등함수를 사용했습니다.
  • 이처럼 출력층의 활성화 함수는 문제의 성질에 맞는 활성화 함수를 사용해야 합니다.
  •  

 

마지막으로 지금까지 구현한 신경망과 그 과정을 그림으로 살펴보고 이번 신경망 구현을 마치도록 하겠습니다 ! 

 

'Deep Learning' 카테고리의 다른 글

4. 출력층 설계하기, 소프트맥스 함수.  (0) 2021.04.19
퍼셉트론  (0) 2021.04.16
딥러닝 개요  (0) 2021.04.15