독서 리마인더/밑바닥부터 시작하는 딥러닝

[밑바닥부터 시작하는 딥러닝] 1~3장

hwijin97 2021. 5. 3. 13:34

퍼셉트론 알고리즘 :  신경망(딥러닝)의 기원이 되는 알고리즘으로, 다수의 신호를 입력받아 하나의 신호를 출력한다. 

다수의 입력에 각각의 가중치를 곱한 값이 임계치를 넘어설 때 1 , 넘어서지 못할때 0 을 출력한다.

ex) y = 0 (w1x1 + w2x2 <= theta) , 1 (w1x1 + w2x2 > theta)

임계치를 편향으로 변경가능하다.

ex) y = 0 (b + w1x1 + w2x2 <= 0) , 1 (b + w1x1 + w2x2 > 0 ) (theta = -b)

 

이를통해 AND, NAND, OR 게이트를 표현하는 퍼셉트론을 만들 수 있다.

퍼셉트론은 선형을 띄어 XOR 게이트를 표현 불가능 하지만, 층을 쌓아 다층 퍼셉트론(multi-layer perceptron)을 만들어 더 다양한 것들을 구현 가능하게 한다.

 

신경망 : 입력층 , 은닉층 ,출력층으로 나뉘어진 다층 퍼셉트론.

활성화 함수 : 입력 신호와 가중치의 총합이 활성화를 일으키는지 정하는 역할을 가진 함수.

ex) a = b + w1x1 + w2x2, y = h(a) (h 는 활성화 함수)

 

시그모이드 활성화 함수 : h(x) = 1 / (1 + exp(-x)) 식을 가지고  0 부터 1까지 매끄럽게 연속적으로 증가하는 함수

계단 활성화 함수 : x 값 0을 기준으로 불연속적으로 0에서 1로 급변하는 함수

두 함수의 공통점 : 입력이 작을 땐 출력이 0에 가깝고, 입력이 커지면 출력이 1에 가까워지는 구조/ 입력이 중요하면 큰 값을 출력하고, 반대의 경우 작은 값을 출력한다. / 아무리커도 출력이 0 과 1 사이에 존재함.

 

선형 함수 : f(x) = ax + b 의 형태로 무언가를 입력했을때, 입력의 상수배만큼 변하는 함수.(a,b는 상수)

활성화 함수로 선형 함수를 사용하면 안되는 이유 : 선형함수는 층을 아무리 깊게 해도 은닉층이 없는 네트워크로도 똑같은 기능을 할 수 있다.

ex) h(x) = cx 를 활성화 함수로 지정하자. => 3층 네트워크를 사용했을시 y(x) = h(h(h(x))) = c * c * c * x 로 결국은 y(x) = ax 의 형태를 지니기 때문에 은닉층이 없어진다고 표현 가능하다.

 

비선형 함수 : 선형 함수로 표현불가능 한것들(시그모이드, 계단 함수 ...)

ReLU(Rectified Linear Unit, 렐루) 함수 : 입력이 0 을 넘으면 입력 그대로를 출력하고, 0 이하이면 0 을 출력하는 함수이다. 수식으로 h(x) = x (x > 0), 0 (x <= 0)

 

소프트맥스 함수 : 출력노드에서 사용되는 시그마함수 중 하나로, yk = exp(ak) + sigma i = 1 to k ( exp(ai) 의 형태로, 분자는 입력신호 ak의 지수함수, 분모는 모든 입력신호 a의 지수함수의 합을 나타낸다. 이로서 출력층은 각 뉴런이 모든 입력 신호에서 영향을 받는다.

소프트맥스 함수 구현시 오버플로를 주의하여 입력의 최대값을 각각 입력에 빼준다.

 

소프트맥스 함수의 특징 : 출력의 범위는 0 에서 1 사이이고, 모든 출력의 합이 1 이 된다. 따라서 각 출력이 나올 확률적인 결론을 낼 수 있다.

소프트맥스 함수의 주의점 : 함수를 적용하더라도, 각 원소의 대소관계는 변하지 않는다. 신경망을 이용한 분류에서 일반적으로 가장 큰 출력을 내는 뉴런에 해당하는 클래스로만 인식하기 때문에, 출력의 대소관계가 변하지 않는 소프트맥스함수는 지수 함수 계산에 드는 낭비를 줄이고자 생략하기도 한다.

 

개인 github : github.com/kimhwijin/Deeplearning_tutorial

출판사 github : github.com/WegraLee/deep-learning-from-scratch