ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 밑바닥부터 배우는 딥러닝 (2)
    딥러닝 2020. 5. 18. 16:04
    반응형

    저번시간에 우리는 퍼셉트론에 대해 공부했다.


    이번 시간에는 챕터 3에서 다루는 신경망에 대해서 공부하도록 하겠다.




    Chapter 3 (신경망)


    퍼셉트론에서 원하는 결과를 출력하기 위해서 우리는 가중치의 값을 수동으로 해야 했다.


    하지만 신경망은 가중치 매개변수의 적절한 값을 데이터로부터 자동으로 학습하는 능력이 존재한다.


    신경망은 그림으로 나타내면 다음과 같다



    R] 신용분석:예측적 분석(신경망 이용한 모델링) - 미완성의 신 - Medium


    입력층, 은닉층, 출력층으로 이루어져 있으며 은닉층의 뉴런은 사람 눈에 보이지 않는다.


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


    입력 신호의 총합이 활성화를 일으키는지를 정하는 역할을 한다.


    활성화 함수 h는 f = h(a)의 형태를 띈다. (a = 가중치가 곱해진 입력 신호의 총합)


    또한 이때 임계값을 경계로 출력이 바뀌는 함수를, 계단 함수라고 한다.





    3.2.6 비선형 함수


    신경망에서는 활성화 함수로 비선형 함수를 사용해야 한다.


    선형 함수를 이용하면 신경망의 층을 깊게하는 의미가 없어지기 때문이다.


    또한 층을 아무리 깊게해도 은닉층이 없는 네트워크와 같은 기능이기 때문에 부적절한다.


    예를 들어, h(x) = cx 라고 해보자.


    3층 네트워크의 경우 y(x) = h(h(h(x))) = c^3 * x의 형태로 y(x) = ax와 똑같은 식이 된다. (c가 상수이기 때문에)


    계단 함수, 시그모이드 함수와 달리 ReLU(Recified Linear Unit) 함수가 존재하는데


    입력이 0을 넘으면 그 입력을 그대로 출력하고, 0 이하이면 0을 출력하는 함수이다.





    신경망 구현(numpy를 이용한 내적)


    편향과 활성화 함수를 생략한 가중치만 가지는 신경망 함수는 다음과 같다.



    밑바닥 딥러닝) 3장 신경망 : 네이버 블로그


    x와 w의 곱이 y가 되는 형태로 np.dot 함수를 통해 쉽게 내적시킬 수 있다.


    하지만 딥러닝은 이렇게 1단계로 이루어져 있지 않다.


    여러 층을 통해 출력이 되게 하기 위해서는 3층 신경망을 구현할 줄 알아야 한다.


    3층 신경망은 다음과 같다.



    그림에서 보았듯이 입력층, 2 layer 은닉층, 출력층으로 구성된다.




    3.Function - POD_Deep-Learning


    이 때 각, A, X, B, W의 값은 다음과 같다.


    Alt text


    (B의 값은 가중치기에 더해줘야 한다)


    a의 값은 활성화 함수 h(단계, 사이그몬드 함수)를 통해 z라는 출력이 나오고 다음 단계에서 현재 단계에 했던 것을 똑같이 반복하여


    최종적인 y를 출력하는 것이 우리의 목표다.


    그 외에도 입력 신호가 그대로 출력 신호가 되는 항등함수, 분류에서 사용되는 소프트맥스 함수가 존재하는데,


    항등 함수는 난이도가 낮으므로 다루지 않겠다.




    소프트맥스 함수


    소프트맥스 함수의 식은 다음과 같다.


    Alt text


    보이듯이, 분자는 해당하는 입력 신호의 지수 함수, 분모는 모든 입력 신호의 지수 함수의 합으로 구성된다.



    밑바닥 딥러닝) 3장 신경망 : 네이버 블로그


    소프트맥스 함수의 특징 중 하나는 출력 총합이 1이 된다.


    그래서 소프트맥스 함수의 출력을 '확률'로 해석할 수 있다.


    기계학습은 학습과 추론으로 이루어져 있는데, 학습 단계에서 모델을 학습하고, 


    추론 단계에서 학습한 모델로 미지의 데이터에 대해 분류를 수행한다.


    따라서 신경망을 학습 시킬때는 출력층에서 소프트맥스 함수를 사용해야 한다.




    결론 


    신경망은 각 층의 뉴런들이 다음 층의 뉴런으로 신호를 전달한다는 점에서 퍼셉트론과 같다. 

    (신호를 변화시키는 활성화 함수에 차이)


    신경망에서는 매끄럽게 변화하는 시그모이드 함수, 


    퍼셉트론에서 갑자기 변화하는 계단 함수를 활성화 함수로 사용한다.


    이 차이가 신경망 학습에 중요하여 다음 장에서 설명하도록 하겠다.





    '딥러닝' 카테고리의 다른 글

    밑바닥부터 배우는 딥러닝 (1)  (0) 2020.05.18

    댓글

Designed by Tistory.