퍼셉트론(Perceptron)
- 다수의 신호를 입력받아 하나의 신호를 출력
- 신경망(딥러닝)의 기원

y={01w1x1+w2x2≤θw1x1+w2x2>θ
θ를 b(편향, bias)로 치환 시,
y={01w1x1+w2x2+b≤0w1x1+w2x2+b>0
신호의 총 합이 θ를 넘을 때만 1 출력 (θ: 임계값)
→ 뉴런이 활성화 한다.
1. AND 게이트 구현
x1 | x2 | y |
---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
이를 만족하는 매개변수(w1,w2,θ(b))가 무수히 많다.
w1 | w2 | θ |
---|
0.5 | 0.5 | 0.7 |
0.5 | 0.5 | 1 |
... | ... | ... |
2. NAND 게이트 구현
AND 게이트 매개변수 반전
w1 | w2 | θ |
---|
-0.5 | -0.5 | -0.7 |
-0.5 | -0.5 | -1 |
... | ... | ... |
3. OR 게이트 구현
w1 | w2 | θ |
---|
0.5 | 0.5 | 0.4 |
... | ... | ... |
4. XOR 게이트 구현
배타적 논리합, 어느 한쪽만 1인 경우
- 단층 퍼센트론으로는 구현 불가 (∵ 선형으로 분류 불가)
- 다층 퍼셉트론(비선형)으로 구현 가능!
x1 | x2 | s1 | s2 | y |
---|
0 | 0 | 1 | 0 | 0 |
0 | 1 | 1 | 1 | 1 |
1 | 0 | 1 | 1 | 1 |
1 | 1 | 0 | 1 | 0 |
x1, x2는 입력, s1는 NAND의 출력, s2는 OR의 출력
∴ 이와 같이 퍼셉트론의 층을 깊게 쌓아 매우 복잡한 것 구현 가능
퍼셉트론은 복잡한 함수도 표현할 수 있지만, 가중치를 설정하는 작업을 사람이 수동으로 해야한다.
→ 신경망이 자동으로 해결
신경망(Neural Network)

- 한 층에서의 출력 과정
ay=w1x1+w2x2+b=h(a)
1. 활성화 함수(activation function)
- 입력 신호의 총합을 출력 신호로 변환하는 함수
- 입력 신호의 총합이 활성화를 일으키는지 정함
- 위의 식에서 h를 의미
- 계단 함수(Step Function)

- 임계값(θ)을 경계로 출력이 변하는 함수
- 퍼셉트론에서 사용하는 활성화 함수
- 0과 1로 밖에 출력할 수 없다.(다중 출력 불가)
- 선형 함수(Linear Activation Function)

h(x)=cx+b
- 선형으로 이루어진 함수
- 다중 출력 가능
- 오차역전파법(BackPropagation) 불가
- 여려겹으로 쌓아도 출력 c′x로 동일
- 시그모이드 함수(Sigmoid Function)
σ(x)=1+e−x1
- 출력 값 범위가 0~1이다.
- 라장 많이 사용되는 활성화 함수
- Saturation(포화상태) 발생
- 오차역전파법 사용 시 미분 값을 사용해야 하는데, 미분 값이 σ(x)(1−σ(x))이므로 최대값이 0.25이다.
- 그러므로 함수의 기울기가 0에 가까워져 Gradient Vanishing 문제 야기
- non-zero centered
- 쌍곡탄젠트 함수(Hyperbolic Tangent Function)
tanh(x)=cosh(x)sinh(x)
- 출력 값의 범위: -1 ~ 1
- Gradient Vanishing 문제 야기
- 미분 시 (1−tanh(x))(1+tanh(x))이기 때문
- ReLU함수(Rectified Linear Unit)
ReLU(x)={0,ifx<0x,ifx≥0
- 양의 값에서는 Saturation 발생하지 않음
- 계산 효율이 뛰어남(빠름)
- 비선형함수
- non-zero centered
- Dying ReLU: 입력 값이 0 이하일 때, gradient가 0이 되어 학습을 하지 못함.
- Leaky ReLU
Leaky_ReLU(x)={0.01x,ifx<0x,ifx≥0
- ReLU와 유사하지만 0 이하의 범위에서 더이상 0이 아니다.
- PReLU(Parametric ReLU)
Leaky_ReLU(x)={αx,ifx<0x,ifx≥0
- 0 이하일 때, 기울기가 α인 Leaky ReLU
- α는 Backpropagation으로 학습
- ELU(Exponential Linear Unit)

ELU(x)={α(ex−1),ifx<0x,ifx≥0
- zero-mean에 가까운 출력 값 보임
- ReLU의 모든 장점 및 Dying ReLU 문제 해결
- 지수함수를 사용해 연산비용 추가
- 큰 음수 값에 쉽게 포화
- Maxout Neuron
maxout(x)=max(w1Tx+b1,wxTx+b2)
- ReLU와 LeakyReLU의 더 일반화 된 형태(두 개의 선형 함수를 취하기 때문)
- 선형이기 때문에 Saturation 발생하지 않는다.
- Dropout과 함께 사용하기 좋음
- neuron 당 parameter 수가 두 배가 됨(계산량 많고 복잡)
- 출력층 활성화함수
- 분류 문제
- 이진 분류: 시그모이드 함수
- 다지 분류: 소프트맥스 함수(softmax)
yk=Σk=1neakeak
지수함수가 매우 쉽게 커지기 때문에 오버플로 문제 발생
→ C를 대입하여 개선(C는 ak의 최대값)
yk=Σk=1neak+lnCeak+lnC
시그모이드 함수 일반화한 형태
- 회귀문제
참고
밑바닥부터 시작하는 딥러닝 <사이토 고키>
https://deepinsight.tistory.com/113
https://subinium.github.io/introduction-to-activation/