Artificial Neuron
- 생물학적인 뉴런을 수학적으로 모델링한 것
- 주어진 입력에서 특정 패턴을 추출해내는 함수로 이해할 수 있다.
affine function과 activation function의 합성함수로 모델링
Artificial Neuron의 구성요소
- Weighted Sum
- 가중치 w들을 각각의 feature x에 대해 곱하여 더하는 것을 의미
z=w1x1+w2x2+...+wnxn
- Affine Function
- 계산된 Weighted Sum에 bias(b)를 더해주는 함수
z=w1x1+w2x2+...+wnxn+b=W⋅X+b
- Activation Function
- 생체 신경세포의 시냅스 소포를 모방한 것
- 들어오는 값이 일정치가 되었을 때, 그 값이 다음 뉴런으로 전달 되게 하는 역할을 수행함
- ex) sigmoid function, ReLU function 등
sigmoid function
- h(z)=1+e−z1=ez+1ez
- 입력된 값을 0과 1 사이의 값으로 조정하여 반환
- 절대값이 3 이상일때부터 크게 변하지 않는 특징이 있음

Multilayer Perceptron

출처: 양정은 T
- 여기서, 각 neuron은 weight vector와 scalar bias를 가지고 있음
- 한 레이어의 각 뉴런들의 weight vector를 합치면 weight matrix, scalar bias를 합치면 bias vector가 만들어짐

- 레이어를 통과하면 행렬의 곱셈으로 출력을 정의할 수 있음
파이썬으로 표현하기
affine function
import numpy as np
class AffineFunction:
def __init__(self, w, b):
self.w = w
self.b = b
def forward(self, x):
z = np.dot(self.w, x) + self.b
return z
sigmoid function
class Sigmoid:
def forward(self, z):
a = 1 / (1 + np.exp(-z))
return a
Artificial Neuron
class ArtificialNeuron:
def __init__(self, w, b):
self.affine = AffineFunction(w=w, b=b)
self.sigmoid = Sigmoid()
def forward(self, x):
z = self.affine.forward(x)
a = self.sigmoid.forward(z)
return a
logic gate 뉴런을 레이어로 가지는 간단한 Model
class Model:
def __init__(self):
self.and_ = ArtificialNeuron(w=[0.5, 0.5], b=-0.7)
self.or_ = ArtificialNeuron(w=[0.5, 0.5], b=-0.2)
self.nand = ArtificialNeuron(w=[-0.5, -0.5], b=0.7)
def forward(self, x):
a1 = self.and_.forward(x)
a2 = self.or_.forward(x)
a3 = self.nand.forward(x)
a = np.array([a1, a2, a3])
return a