| μΌ | μ | ν | μ | λͺ© | κΈ | ν |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- latent factor
- μ¬μ΄ν·λ°
- λ¬Έμμ΄
- νμ΄μ¬
- ν
- DROPTABLE
- SQL
- Key μ’ λ₯
- λ°±μ€
- TDD
- ν€ μ’ λ₯
- μκ³ λ¦¬μ¦
- μΈλλ³κ°λΉμ§μ»¬λ ν°
- SQLDDL
- 무결μ±μ μ§
- latent factor model
- CREATETABLE
- RENAMETABLE
- Hyperlink Graphs
- μ μ¬μμλͺ¨λΈ
- λΆκ½λ°μ΄ν°μ
- μ£Όμ±λΆ μ°ΎκΈ°
- 컨ν μ΄λκ°μ²΄
- knn_classify
- ALTERTABLE
- ν΄λ¦°μ½λ
- sklearn
- Python
- 무결μ±
- 무결μ±μ μ§λ©μ»€λμ¦
- Today
- Total
DonHurry
step42. μ ν νκ· λ³Έλ¬Έ
π’ λ³Έ ν¬μ€ν μ λ°λ°λ₯λΆν° μμνλ λ₯λ¬λ3μ κΈ°λ°μΌλ‘ μμ±νμμ΅λλ€. λ°°μ΄ λ΄μ©μ κΈ°λ‘νκ³ , κ°μΈμ μΈ κ³΅λΆλ₯Ό μν΄ μμ±νλ ν¬μ€ν μ λλ€. μμΈν λ΄μ©μ κ΅μ¬ ꡬ맀λ₯Ό κ°λ ₯ μΆμ²λ립λλ€.

μ΄λ² λ¨κ³μμλ μ ννκ·(linear regression)μ ꡬνν΄λ³΄κ² μ΅λλ€. λ¨Έμ λ¬λ λ¬Έμ μμ κ°μ₯ κΈ°λ³Έμ΄ λλ μ£Όμ μ λλ€. μ°μ κ°μ λ°μ΄ν°λ‘ κ³μ μ§νν΄μΌνλ, μλκ°μ κ³ μ ν΄λκ³ μμ λ°μ΄ν°μ μ μμ±ν©λλ€.
import numpy as np
np.random.seed(0)
x = np.random.rand(100, 1)
y = 5 + 2 * x + np.random.randn(100, 1)

λͺ©νλ μ£Όμ΄μ§ xκ°μΌλ‘ yκ°μ μμΈ‘νλ λͺ¨λΈ(μμ)μ λ§λλ κ²μ λλ€. μ΄λ λ― xλ‘λΆν° μ€μ«κ° yλ₯Ό μμΈ‘νλ κ²μ νκ·λΌκ³ νλ©° μμΈ‘κ°μ΄ μ νμ μ΄λ£¨λ κ²μ μ ν νκ·λΌ ν©λλ€. νμ¬ μμμ yμ xκ° μ ν κ΄κ³λΌκ³ κ°μ νκ³ μκΈ° λλ¬Έμ $y = Wx + b$λΌλ μμΌλ‘ ννμ΄ κ°λ₯ν©λλ€.

λ°μ΄ν°μ λ§λ μ§μ $y=Wx + b$λ₯Ό μ°ΎκΈ° μν΄ λ°μ΄ν°μ μμΈ‘μΉμ μ°¨μ΄μΈ μμ°¨λ₯Ό μ΅μνν΄μΌ ν©λλ€. μμΈ‘μΉμ λ°μ΄ν°μ μ€μ°¨λ₯Ό λνλ΄λ μ§νλ [μ 42.1]κ³Ό κ°μ΅λλ€. μ΄ μμμ νκ· μ κ³± μ€μ°¨, mean squared errorλΌκ³ ν©λλ€. μ΄ μμΌλ‘ ννλλ μμ€ν¨μμ μΆλ ₯μ μ΅μννλ Wμ bλ₯Ό μ°Ύλ κ²μ΄ μ°λ¦¬μ λͺ©νμ λλ€. μμ€ ν¨μλ λͺ¨λΈμ μ±λ₯μ΄ μΌλ§λ λμκ°λ₯Ό νκ°νλ ν¨μμ΄λ―λ‘ μ΅λν μ€μ¬μΌν κ°μ λλ€.

μ΄μ ꡬνμΌλ‘ λμ΄κ°κ² μ΅λλ€. ν¨μλ₯Ό μ΅μ ννλ λ¬Έμ λ μ΄λ―Έ 28λ¨κ³μμ μ§ννμμ΅λλ€. ν° νμ λΉμ·ν©λλ€. νκ· μ κ³± μ€μ°¨λ₯Ό ꡬνλ ν¨μλ₯Ό ꡬννκ³ , κ²½μ¬νκ°λ²μ ν΅ν΄ λ§€κ°λ³μλ₯Ό κ°±μ νλ©΄ λ©λλ€.
np.random.seed(0)
x = np.random.rand(100, 1)
y = 5 + 2 * x + np.random.randn(100, 1)
x, y = Variable(x), Variable(y)
W = Variable(np.zeros((1, 1)))
b = Variable(np.zeros(1))
def predict(x):
y = F.matmul(x, W) + b
return y
def mean_squared_error(x0, x1):
diff = x0 - x1
return F.sum(diff ** 2) / len(diff)
lr = 0.1
iters = 100
for i in range(iters):
y_pred = predict(x)
loss = mean_squared_error(y, y_pred)
W.cleargrad()
b.cleargrad()
loss.backward()
W.data -= lr * W.grad.data
b.data -= lr * b.grad.data
print(W, b, loss)
# Plot
plt.scatter(x.data, y.data, s=10)
plt.xlabel('x')
plt.ylabel('y')
y_pred = predict(x)
plt.plot(x.data, y_pred.data, color='r')
plt.show()
μ½λλ₯Ό ν΅ν΄ μ»μ΄μ§λ μ§μ κ·Έλνλ λ€μκ³Ό κ°μ΅λλ€. (μ€μ λ‘ μ μ½λλ₯Ό μ€ννλ©΄ λ°μ΄ν°κ° μ‘°κΈ λ νΌμ Έμμ μ μμ΅λλ€.) μΆλ ₯κ°μ 보면 μ μ§μ μΌλ‘ μμ€ ν¨μμ μΆλ ₯κ°μ΄ μ€μ΄λλ κ²μ νμΈν μ μμ΅λλ€.

μ¬μ€ μμμ ꡬνν νκ· μ κ³± μ€μ°¨ ν¨μμλ μ½κ°μ λ¬Έμ κ° μμ΅λλ€. [κ·Έλ¦Ό 42-6]κ³Ό κ°μ΄ μ€κ°μ μ΄λ¦ μλ λ³μ 3κ°κ° λ±μ₯νλλ°, λ¬Έμ λ κ³μ° κ·Έλνκ° μ‘΄μ¬νλ λμ λ©λͺ¨λ¦¬μ κ³μ μ΄μμλ€λ κ²μ λλ€. λ©λͺ¨λ¦¬κ° μΆ©λΆνλ€λ©΄ λ¬Έμ λ κ²μ΄ μμ§λ§, λ λμ λ°©μμ λμ νλ κ²μ΄ μ’μ 보μ λλ€.

λ°λΌμ λ€μκ³Ό κ°μ΄ κ°μ νκ² μ΅λλ€. μ΄μ κ°μ΄ ꡬννλ©΄ μ€κ°μ λ±μ₯νλ λ³μλ€μ΄ MeanSquaredError ν΄λμ€μ forward λ©μλμμλ§ μ¬μ©λ©λλ€. λ°λΌμ μ΄ λ³μλ€μ ndarray μΈμ€ν΄μ€λ‘ μ¬μ©λκ³ , forward λ©μλλ₯Ό λ²μ΄λλ μκ° λ©λͺ¨λ¦¬μμ μμ λκ² λ©λλ€.
class MeanSquaredError(Function):
def forward(self, x0, x1):
diff = x0 - x1
y = (diff ** 2).sum() / len(diff)
return y
def backward(self, gy):
x0, x1 = self.inputs
diff = x0 - x1
gx0 = gy * diff * (2. / len(diff))
gx1 = -gx0
return gx0, gx1
def mean_squared_error(x0, x1):
return MeanSquaredError()(x0, x1)'DeZero > π»μ 4κ³ μ§' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
| step44. λ§€κ°λ³μλ₯Ό λͺ¨μλλ κ³μΈ΅ (0) | 2023.02.23 |
|---|---|
| step 43. μ κ²½λ§ (0) | 2023.02.19 |
| step41. νλ ¬μ κ³± (0) | 2023.02.16 |
| step40. λΈλ‘λμΊμ€νΈ ν¨μ (0) | 2023.02.15 |
| step39. ν©κ³ ν¨μ (0) | 2023.02.14 |