본문 바로가기

딥러닝 학습

3장 머신러닝 기초 다지기-수치 예측 (2)

반응형

3-3 손실 함수와 경사 하강법의 관계

- 가중치에 대하여 제곱 오차 미분하기

y_hat = x_i * w + b
err = y_i - y_hat
w_rate = x_i
w = w +w_rate *err

 

- 절편에 대하여 제곱 오차 미분하기

err = y_i - y_hat
b = b+1 *err

 

3-4 선형 회귀를 위한 뉴런

- Neuron 클래스 만들기

1. init()메서드 작성하기

def __init__(self):
    self.w = 1.0
    self.b =1.0

 

2. 정방향 계산 만들기

def forpass(self, x):
  y_hat = x * self.w + self.b
  return y_hat

 

3. 역방향 계산 만들기

def backprop(self, x, err):
  w_grad = x * err
  b_grad = 1 * err
  return w_grad, b_grad

 

4. Neuron 클래스

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

 

5. 훈련을 위한 fit() 메서드 구현하기

def fit(self, x, y, epochs=100):
  for i in range(epochs):
    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

 

6. 모델 훈련하기(학습시키기)

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

 

7. 학습이 완료된 모델의 가중치와 절편 확인하기

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.xlabel('x')
plt.ylabel('y')
plt.show()

 

 

 

※ 해당 내용은 <Do it! 딥러닝 입문>의 내용을 토대로 학습하며 정리한 내용입니다.

반응형