본문 바로가기
CS(Computer Science)/인공지능

5. 뉴런 생성 & 시그모이드 함수

by 동욷 2023. 3. 18.

뉴런 생성  by Class

from sklearn.datasets import load_diabetes
import matplotlib.pyplot as plt

diabetes = load_diabetes()

x = diabetes.data[:,2]
y = diabetes.target

class Neuron:
    def __init__(self):
        self.w = 1.0
        self.b = 1.0
    def forpass(self,x):
        y_hat = x * self.w + self.b
        return y_hat
    def backprop(self, x, err):
        w_grad = x *err
        b_grad = 1 *err
        return w_grad, b_grad
    def fit(self, x, y, epochs=100):
        for i in range(epochs):
            for x_i, y_i in zip(x,y):
                y_hat = self.forpass(x_i)
                err = -(y_i - y_hat)
                w_grad, b_grad = self.backprop(x_i , err)
                self.w -= w_grad
                self.b -= b_grad


neuron = Neuron()
neuron.fit(x,y)

plt.scatter(x,y)
pt1 = (-0.1, -0.1 * neuron.w + neuron.b)
pt2 = (0.15, 0.15 * neuron.w + neuron.b)
plt.plot([pt1[0],pt2[0]],[pt1[1],pt2[1]])
plt.show()

 

 

시그모이드 함수

- 간단하면서 강력한 수학적 도구

- 머신러닝이나 통계학에 많이 적용

 

보통 input 값으로 0~1 사이의 값을 넣으면,

f(x) = 1 / (1 + e^(-x)) 의 식을 가지는 함수이다.

 

S-shaped curve의 형태를 가지며,

input이 커지면 output이 1에 가까워지고

input이 작아지면 output은 0에 가까워진다

 

선형 회귀에서 시그모이드 함수는 한 개 이상의 input 변수들에 대해서 이진 결과의 확률을 계산하기 위해서 (true, false) 사용된다.

 

다른 특징은 시그모이드 함수는 미분이 가능한데, 함수의 차분을 계산하는데 필요한 최적의 알고리즘을 사용될 수 있다.

 

 

예시)

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(42)

probs = np.arange(0,1,0.01)
odds = [p/(1-p) for p in probs]
plt.plot(probs,odds)
plt.show()

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(42)

probs = np.arange(0.001,0.999,0.001)
logit = [np.log(p/(1-p)) for p in probs]
plt.plot(probs, logit)
plt.show()

import numpy as np
import matplotlib.pyplot as plt
np.random.seed(42)

zs = np.arange(-10., 10., 0.1)
gs = [1/(1+np.exp(-z)) for z in zs]
plt.plot(zs, gs)
plt.show()

728x90

'CS(Computer Science) > 인공지능' 카테고리의 다른 글

7. 단일층 신경망  (0) 2023.03.19
6. 로지스틱 회귀  (0) 2023.03.19
4. 경사하강법  (0) 2023.03.18
3. 선형 회귀  (0) 2023.03.18
2. 딥러닝을 위한 도구  (0) 2023.03.18