본문으로 바로가기

Perceptron

- 뉴런을 본따 만든 알고리즘 하나의 단위

 

https://www.researchgate.net/figure/Structure-of-Perceptron_fig2_330742498

 

참고: 이미지에서 hidden layer
Input : Visible pixels
1rd hidden layer : edges
2nd hidden layer : corners and contours (simple shapes)
3rd hidden layer : object parts (shapes)
Output : object identity

 

 

가장 적합한 θ들의 set 찾기 위한 2가지 연산

1. 넘겨져 온 데이터와 θ들의 Linear Combination 계산 (행렬 합&곱)

- GPU가 행렬 빠르게 연산

 

2. 선형결합 결과에 Activation Function (활성화 함수) 적용

- Linear Combination의 결과값이 Non-linear Function을 거치게 하여 최종 출력값 계산

- Activation function 거치지 않는다면 아무리 layer를 쌓아도 결국 Linear Regression

- 선형 함수로 표현하지 못하는 것을 비선형 함수로 푸는 것

 

 


Activation Functions (활성화 함수), g(x)

[이전 레이어의 모든 입력에 대한 가중 합]을 받아 출력값을 생성하여 다음 레이어로 전달하는 비선형 함수

 

https://commons.wikimedia.org/wiki/File:Multilayer_Neural_Network.png

 

- 알고가면 좋은 지식1

(Perceptron 하나를 미분한 값) * (현재의 Error) = (한 단계 과거의 Error)

위에서 동그라미 하나가 Perceptron 하나를 의미한다.

각각 최적의 파라미터 θ를 구하기 위해 반복해서 한 단계 전의 layer로 가서 weight를 조정해주어야 한다.

그렇게 하기 위해서는 활성화 함수, g(x)가 미분 가능해야 한다.

 

- 알고가면 좋은 지식2

인공 신경망 내부에서는 Learnable Kernel을 사용해서 새로운 차원을 만든다.

100행이 있었다고 가정해보자.

Input : (100,3)

kernel1 : (3,4)

1st hidden layer : (100,4)

kernel2 : (4,2)

2nd hidden layer : (100,2)

kernel3 : (2,2)

Output : (100,2)

 

1. Step 함수

https://data-science-hi.tistory.com/138

- 0에서 미분 불가능

- Linear Combination 값이 0.00000이 나올 가능성은 없다고 생각해도 Step Function은 어느 x에서나 미분해도 결과값이 0이기 때문에 의미가 없음

- 현재는 아예 쓰지 않음

 

 

2. Sigmoid 함수

https://data-science-hi.tistory.com/138

- 미분 가능

- 하지만, 미분한 값이 너무 작음 (미분한 값이 가장 높은 것이 0.25)

- 5단계만 이전으로 가도 0.25^5=0.001

- 판단의 기준인 Error값이 너무 희미해져서 의미가 없음 = Vanishing Gradient

(레이어가 깊어질수록 앞선 오차 값이 역방향으로 뒤까지 전달되지 않는 문제 발생)

- 현재는 거의 쓰지 않음

 

 

3. tanh

https://data-science-hi.tistory.com/138

- sigmoid 함수에서 y값의 범위를 0~1로 늘려줌

- 텍스트 분석에서는 tanh의 성능이 좋을 때도 있음

 

 

4. ReLU

https://data-science-hi.tistory.com/138

- 미분했을 때 값이 0 또는 1

- 성능이 좋음 (대부분 사용 추천)

 

 

5. LeakyReLU

 

 

활성화 함수 정리

https://hwk0702.github.io/ml/dl/deep%20learning/2020/07/09/activation_function/

 

 

 

활성화 함수 활용

- 결과값을 그대로 받아 Regression

- Sigmoid를 거쳐 Binary Classification (하나의 ouput 받아서 sigmoid / 두 output 받아서 softmax)

- Softmax를 거쳐 k-class Classification