рд░реИрдЦрд┐рдХ рдкреНрд░рддрд┐рдЧрдорди рдФрд░ рдЧреНрд░реЗрдбрд┐рдПрдВрдЯ рд╡рдВрд╢

X рдФрд░ Y рд╕рдВрдХреЗрддрдХ рджреЗрдВ, рдЬрд┐рдирдХреА рдорд╛рддреНрд░рд╛рддреНрдордХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИ, рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╡рд┐рд╖рдп рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЕрдзреНрдпрдпрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдорд╛рдирдиреЗ рдХрд╛ рд╣рд░ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╕реВрдЪрдХ Y рд╕рдВрдХреЗрддрдХ X рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕реНрдерд┐рддрд┐ рдПрдХ рд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рдкрд░рд┐рдХрд▓реНрдкрдирд╛ рджреЛрдиреЛрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ рдФрд░ рдкреНрд░рд╛рдердорд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рдЬреНрдЮрд╛рди рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реЛ рд╕рдХрддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд┐рд░рд╛рдиреЗ рдХреА рджреБрдХрд╛рдиреЛрдВ рдХреЛ рд▓реЗрдВред

рджреНрд╡рд╛рд░рд╛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ:

рдПрдХреНрд╕ - рдмрд┐рдХреНрд░реА рдХреНрд╖реЗрддреНрд░ (рд╡рд░реНрдЧ рдПрдоред)

рд╡рд╛рдИ - рд╡рд╛рд░реНрд╖рд┐рдХ рдХрд╛рд░реЛрдмрд╛рд░ (рдорд┐рд▓рд┐рдпрди рдкреАред)

рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ, рдЙрдЪреНрдЪ рд╡реНрдпрд╛рдкрд╛рд░ рдХреНрд╖реЗрддреНрд░, рдЙрдЪреНрдЪ рд╡рд╛рд░реНрд╖рд┐рдХ рдХрд╛рд░реЛрдмрд╛рд░ (рд╣рдо рдПрдХ рд░реИрдЦрд┐рдХ рд╕рдВрдмрдВрдз рдорд╛рдирддреЗ рд╣реИрдВ)ред

рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреБрдЫ n рд╕реНрдЯреЛрд░реНрд╕ (рд░рд┐рдЯреЗрд▓ рд╕реНрдкреЗрд╕ рдФрд░ рд╡рд╛рд░реНрд╖рд┐рдХ рдЯрд░реНрдирдУрд╡рд░) рдкрд░ рдбреЗрдЯрд╛ рд╣реИ - рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рдФрд░ k рд░рд┐рдЯреЗрд▓ рд╕реНрдкреЗрд╕ (X), рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣рдо рд╡рд╛рд░реНрд╖рд┐рдХ рдЯрд░реНрдирдУрд╡рд░ (Y) - рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдп рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рд╣рдо рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рддреЗ рд╣реИрдВ рдХрд┐ Y рдХрд╛ рд╣рдорд╛рд░рд╛ рдорд╛рди X рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ: Y = a + b * X

рд╣рдорд╛рд░реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЧреБрдгрд╛рдВрдХ a рдФрд░ b рдЪреБрдирдирд╛ рд╣реЛрдЧрд╛ред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдПрдХ рдФрд░ рдмреА рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдорд╛рди рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдиреБрдХрд╕рд╛рди рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдЕрдиреБрдХреВрд▓рди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд░реВрдЯ рдорд╛рдзреНрдп рд╡рд░реНрдЧ рд╣рд╛рдирд┐ рдлрд╝рдВрдХреНрд╢рди ( MSELoss ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреА рдЧрдгрдирд╛ рд╕реВрддреНрд░ рджреНрд╡рд╛рд░рд╛ рдХреА рдЬрд╛рддреА рд╣реИ:



рдЬрд╣рд╛рдБ y [i] = a + b * x [i] рдХреЗ рдмрд╛рдж a = рд░реИрдВрдб () рдФрд░ b = рд░реИрдВрдб (), рдФрд░ Y [i] x [i] рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдорд╛рди рд╣реИред
рдЗрд╕ рд╕реНрддрд░ рдкрд░, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдорд╛рдирдХ рд╡рд┐рдЪрд▓рди (рдП рдФрд░ рдмреА рдХрд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдХрд╛рд░реНрдп) рд╣реИред рдФрд░ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐, рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдореВрд▓реНрдп рдЬрд┐рддрдирд╛ рдЫреЛрдЯрд╛ рд╣реЛрддрд╛ рд╣реИ, рдЙрддрдиреЗ рд╣реА рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ рдкреИрд░рд╛рдореАрдЯрд░ a рдФрд░ b рдХреЛ рдЙрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдЪреБрдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдЦреБрджрд░рд╛ рдЕрдВрддрд░рд┐рдХреНрд╖ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдФрд░ рдЗрд╕ рдХрдорд░реЗ рдореЗрдВ рдХрд╛рд░реЛрдмрд╛рд░ рдХреЗ рдмреАрдЪ рд╕рдЯреАрдХ рд╕рдВрдмрдВрдз рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред

рдЕрдм рд╣рдо рдврд╛рд▓ рд╡рдВрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдмрд╕ рдиреБрдХрд╕рд╛рди рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП)ред

рдзреАрд░реЗ-рдзреАрд░реЗ рдЙрддрд░рдирд╛


рдЗрд╕рдХрд╛ рд╕рд╛рд░ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ:

y = x*x + 4 * x + 3 



рд╣рдо рдлрд╝рдВрдХреНрд╢рди рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдбреЛрдореЗрди рд╕реЗ x рдХрд╛ рдПрдХ рдордирдорд╛рдирд╛ рдорд╛рди рд▓реЗрддреЗ рд╣реИрдВред рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдмрд┐рдВрджреБ X1 = -4 рд╣реИред

рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдПрдХреНрд╕ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рд╡реНрдпреБрддреНрдкрдиреНрди рдХреЛ рдмрд┐рдВрджреБ X1 рдкрд░ рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ (рдпрджрд┐ рдлрд╝рдВрдХреНрд╢рди рдХрдИ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдП рдФрд░ рдмреА), рддреЛ рд╣рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЗ рд▓рд┐рдП рдЖрдВрд╢рд┐рдХ рдбреЗрд░рд┐рд╡реЗрдЯрд┐рд╡ рд▓реЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)ред y '(X1) = -4 <0

рдЕрдм рд╣рдореЗрдВ x: x2 = X1 - lr * y '(X1) рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдорд╛рди рдорд┐рд▓рддрд╛ рд╣реИред рдПрд▓рдЖрд░ (рд╕реАрдЦрдиреЗ рдХреА рджрд░) рдкреИрд░рд╛рдореАрдЯрд░ рдЖрдкрдХреЛ рдЪрд░рдг рдЖрдХрд╛рд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:

рдпрджрд┐ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдмрд┐рдВрджреБ X1 <0 рдкрд░ рдЖрдВрд╢рд┐рдХ рд╡реНрдпреБрддреНрдкрдиреНрди (рдлрд╝рдВрдХреНрд╢рди рдХрдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ), рддреЛ рд╣рдо рд╕реНрдерд╛рдиреАрдп рдиреНрдпреВрдирддрдо рдХреЗ рдмрд┐рдВрджреБ рдкрд░ рдЪрд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВред (x2 X1 рд╕реЗ рдмрдбрд╝рд╛ рд╣реЛрдЧрд╛)

рдпрджрд┐ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдмрд┐рдВрджреБ X1> 0 (рдлрд╝рдВрдХреНрд╢рди рдмрдврд╝рддрд╛ рд╣реИ) рдкрд░ рдЖрдВрд╢рд┐рдХ рд╡реНрдпреБрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЕрднреА рднреА рд╕реНрдерд╛рдиреАрдп рдиреНрдпреВрдирддрдо рдХреЗ рдмрд┐рдВрджреБ рдкрд░ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред (рдПрдХреНрд╕ 2 рдПрдХреНрд╕ 1 рд╕реЗ рдХрдо рд╣реЛрдЧрд╛)

рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рдЪрд▓рдиреЗ рдХреЗ рджреНрд╡рд╛рд░рд╛, рд╣рдо рдиреНрдпреВрдирддрдо рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд░реЗрдВрдЧреЗ (рд▓реЗрдХрд┐рди рдЙрд╕ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪреЗрдВрдЧреЗ)ред

рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдпрд╣ рд╕рдм рдмрд╣реБрдд рд╕рд░рд▓ рд▓рдЧрддрд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ рдпрд╣ рдХрд╣рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдХрд┐ рдХреМрди рд╕рд╛ рдЧреБрдгрд╛рдВрдХ a рдФрд░ b рджреБрдХрд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдЙрдкрд░реЛрдХреНрдд рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЙрдкрдпреБрдХреНрдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдбреЗрдЯрд╛рд╕реЗрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдлреЙрд░реНрдо y = 1 + 2 * x рдХреА рдирд┐рд░реНрднрд░рддрд╛ рд▓реЗрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рд╣рдорд╛рд░реЗ рдореЙрдбрд▓ рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдбреЗрдЯрд╛рд╕реЗрдЯ):
(рдпрд╣рд╛рдВ рдХреЛрдб рд▓рд┐рдЦрд╛ рд╣реИ )

 import numpy as np #      np.random.seed(42) #  np-  1000     0..1 sz = 1000 x = np.random.rand(sz, 1) #   y = f(x)      y = 1 + 2 * x + 0.1 * np.random.randn(sz, 1) #    0  999 idx = np.arange(sz) #    np.random.shuffle(idx) train_idx = idx #     x_train, y_train = x[train_idx], y[train_idx] #        a = np.random.randn(1) b = np.random.randn(1) print(a,b) #   lr = 0.01 #   n_epochs = 10000 #   for epoch in range(n_epochs): #       a  b #     yhat = a + b * x_train # 1.   #      : error = (y_train - yhat) # 2.   (  ) #   a a_grad = -2 * error.mean() #   b b_grad = -2 * (x_train * error).mean() # 3.  ,     a = a - lr * a_grad b = b - lr * b_grad print(a,b) 

рдХреЛрдб рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдП рдФрд░ рдмреА рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдореВрд▓реНрдп рдХреНрд░рдорд╢рдГ 1 рдФрд░ 2 рдХреЗ рдЖрд╡рд╢реНрдпрдХ рдореВрд▓реНрдпреЛрдВ рд╕реЗ рджреВрд░ рдереЗ, рдФрд░ рдЕрдВрддрд┐рдо рдореВрд▓реНрдп рдмрд╣реБрдд рдХрд░реАрдм рд╣реИрдВред

рдореИрдВ рдереЛрдбрд╝рд╛ рд╕реНрдкрд╖реНрдЯ рдХрд░ рджреВрдВрдЧрд╛ рдХрд┐ a_grad рдФрд░ b_grad рдХреЛ рдЗрд╕ рддрд░рд╣ рдХреНрдпреЛрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред
F(a, b) = (y_train - yhat) ^ 2 = (1 + 2 * x_train тАУ a + b * x_train) ред рдПрдл рдХреЗ рдЖрдВрд╢рд┐рдХ рд╡реНрдпреБрддреНрдкрдиреНрди рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдПрдХ -2 * (1 + 2 * x_train тАУ a + b * x_train) = -2 * error рд╣реЛрдЧрд╛ -2 * (1 + 2 * x_train тАУ a + b * x_train) = -2 * error ред B рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ F рдХрд╛ рдЖрдВрд╢рд┐рдХ рд╡реНрдпреБрддреНрдкрдиреНрди -2 * x_train * (1 + 2 * x_train тАУ a + b * x_train) = -2 * x_train * error ред рд╣рдо error рдФрд░ x_train рдмрд╛рдж рд╕реЗ рдорд╛рдзреНрдп рдорд╛рди (mean()) y_train рд╣реИрдВ рдФрд░ y_train рдорд╛рдиреЛрдВ рдХреЗ рд╕рд░рдгрд┐рдпрд╛рдБ рд╣реИрдВ, рдП рдФрд░ рдмреА рд╕реНрдХреЗрд▓рд░ рд╣реИрдВред

рд▓реЗрдЦ рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рд╕рд╛рдордЧреНрд░реА:

towardsdatascience.com/understanding-pytorch-with-an-example-a-step-by-step-tutorial-81fc5f8c4e8e
www.mathprofi.ru/metod_naimenshih_kvadratov.html

Source: https://habr.com/ru/post/hi471458/


All Articles