해당 게시글은 BDA학회 10기
'딥러닝의 이해'를 수강하고 복습하며 정리한 내용입니다.
퍼셉트론이란 ?
딥러닝의 핵심은 퍼셉트론을 제대로 이해하는 것에서 시작됩니다.
인공신경망은 인간의 뇌 신경망 구조와 유사한 방식으로 동작합니다.
해당 이미지에선 인공신경망의 기본 구조는 아니지만, 다수의 신호를 받아 하나의 출력을 생성하는 예시를 보여줍니다.
1. x1의 신호가 들어오고, w1이라는 가중치가 들어오면서 출력 y 값에 기여한다. (여기서 w는 weight를 의미)
2. 복수의 입력치(x1, x2, .... xn)와 각각의 가중치(w1, w2, .... wn)가 곱해져 y 값이 된다.
3. y 값 자체가 특정 임계값(θ, 세타)보다 크거나 같으면 활성화 되어 출력이 발생하고, 작으면 성능이 다운된다. 1과 가까울 수록 출력 신호가 강하다고 볼 수 있고, 모델의 활성화를 의미하기도 한다.
퍼셉트론에서 θ, 세타는 임계값(threshold)이다.
y = Σ (xi * wi) 라는 합산된 결과가 0보다 크거나 같으면 1, 작으면 0출력
출력 뉴련이 활성화 될지 결정하는 기준선이다.
1 if y >= 0
output =
0 if y < 0
선형결합
임계치 대신 편향b(bias)를 사용하여 유동적으로 활성여부를 결정합니다.
이렇게 계산된 선형 결핪 값 z 를 비선형 활성화 함수에 넘겨 출력값 a를 결정합니다.
식으로 작성한다면 아래와 같습니다.
a = activation(z)
간단한 다층 신경망 구현
이러한 방식을 통해 다층 신경망으로 xor 게이트를 구현 할 수 있습니다.
(xor 게이트의 경우 단층 퍼셉트론으로는 해결 할 수 없습니다.)
먼저 단층 퍼셉트론으로 AND 게이트부터 확인해보겠습니다.
AND 진리표
입력값 x1, x2 출력 y
w1*x1 + w2*x2 + b = z
w1 = 1, w2 =1, b = -1.5라고 할 때
x1 =0, x2= 0 / z=1*0 + 1*0 - 1.5 = - 1.5, y = 0
x1 =0, x2= 1 / z=1*0 + 1*1 - 1.5 = - 0.5, y = 0
x1 =1, x2= 0 / z=1*1 + 1*0 - 1.5 = - 0.5, y = 0
x1 =1, x2= 1 / z=1*1 + 1*1 - 1.5 = 0.5, y = 1
z ≤ 0.5 이면 y 는 = 0, z ≥0.5 y 는 1
NAND 진리표
x1 =0, x2= 0 / z= -2*0 + -2*0 + 3 = 3, y = 1
x1 =0, x2= 1 / z= -2*0 + -2*1 + 3 = 1, y = 1
x1 =1, x2= 0 / z= -2*1 + -2*0 + 3 = 1, y = 1
x1 =1, x2= 1 / z= -2*1 + -2*1 + 3 = -1,
y = 0 z ≤ -1 이면 y 는 = 0, z ≥ 1 y 는 1
OR 진리표
x1 =0, x2= 0 / z=1*0 + 1*0 - 0.5 = - 0.5, y = 0
x1 =0, x2= 1 / z=1*0 + 1*1 - 0.5 = 0.5, y = 1
x1 =1, x2= 0 / z=1*1 + 1*0 - 0.5 = 0.5, y = 1
x1 =1, x2= 1 / z=1*1 + 1*1 - 0.5 = 0.5, y = 1
z ≤ 0.5 이면 y 는 = 0, z ≥0.5 y 는 1
앞선 게이트들은 선형의 형태를 띄지만, XOR은 비선형의 형태를 만들어야합니다.
단순한 하나의 퍼셉트론으론 구현할 수 없습니다.
다층 퍼셉트론 XOR
해당 이미지를 통해 XOR은 선형으로 구현할 수 없다는 것을 알 수 있게 됩니다.
여러 퍼셉트론을 사용하여 문제를 해결 할 수 있습니다.
XOR 문제 해결
NAND 처음 사용 - AND의 반대로 작용하여 XOR 중요한 키를 줄 것
OR XOR 중간의 값으로 만들기
AND - NAND결과 OR 결과를 통해서 최종적으로 XOR문제를 해결한다.
1차 NAND
0. 0 -> 1
0. 1 -> 1
1. 0 -> 1
1. 1 -> 0
2차 OR
0. 0 -> 0
0. 1 -> 1
1. 0 -> 1
1. 1 -> 1
3차 두개를 결합한 결과 값 AND
1. 0 -> 0
1. 1 -> 1
1. 1 -> 1
0. 1 -> 0
그림으로 나타내면 아래와 같은 형태가 됩니다.
앞서 얘기한 OR 게이트와 NAND 게이트가 은닉층이 되고, 출력층을 통해 결과값이 도출되게 됩니다.
정리
- 비선형 활성화 함수를 사용하게 되면 더 많은 패턴을 사용할 수 있게 됩니다.
다층 퍼셉트론의 구조
1. 입력층
- 모델에서 입력되는 데이터 (x1, x2)
2. 은닉층
- 입력층과 출력층 사이에 존재
- 하나 이상의 은닉층을 만들 수 있습니다.
- 해당 층에서 비선형 활성화함수가 적용되어 네트워크가 더욱 복잡한 패턴을 배울 수 있도록 학습하게 도와줍니다.
- 은닉층 개수와 뉴런의 개수는 늘릴 수 있습니다.
3. 출력층
- 모델이 최종적으로 예측하여 분류하는 값
- 풀고하는 문제에 따라서 출력층의 값은 달라집니다.
- 다중에 대한 클래스를 분류한다고 한다면, 다중 클래스 만큼의 출력층이 필요하게 됩니다.
4. 활성화 함수
- 비선형 활성화 함수를 사용하여 모델이 복잡한 패턴을 학습할 수 있도록 도와줍니다.
은닉층에 대해
은닉층의 수를 늘리고, 뉴런, 노드의 수가 많아지게 된다는 것은 ?
- 층을 늘리면서 확장을 한다는 의미가 됩니다.
- 이는 곧 모델이 표현할 수 있는 능력이 확장되는 것입니다.
- 다층의 은닉층 확장들은 복잡한 데이터의 패턴 특징을 추출하는 데 사용되면서, 좀 더 깊이 있는 모델들이 만들어집니다.
- 여러 층을 쌓으면서 모델은 점점 더 복잡한 관계에 대해서 비선형적인 학습을 할 수 있게 됩니다.
- 구체적으로 고차원적인 특징(추상적인 특징인 소리와 같은 것들)을 추출할 수 있게 됩니다.