{"id":344292,"date":"2023-01-21T21:00:50","date_gmt":"2023-01-21T21:00:50","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=344292"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=344292","title":{"rendered":"<span>\u041f\u0435\u0440\u0446\u0435\u043f\u0442\u0440\u043e\u043d \u043d\u0430 numpy<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u042f \u043f\u0440\u0438\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0441\u044c \u043c\u043d\u0435\u043d\u0438\u044f, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0445\u043e\u0447\u0435\u0448\u044c \u0432 \u0447\u0435\u043c-\u0442\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f, \u0442\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0439 \u044d\u0442\u043e\u0439 \u0441\u0430\u043c. \u041a\u043e\u0433\u0434\u0430 \u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u043b \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c\u0441\u044f \u0434\u0430\u0442\u0430\u0441\u0430\u0435\u043d\u0441\u043e\u043c, \u044f \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0441\u044f, \u043a\u0430\u043a \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u044b \u043d\u0430 \u0431\u0443\u043c\u0430\u0436\u043a\u0435, \u043f\u0435\u0440\u0435\u0441\u043a\u043e\u0447\u0438\u043b \u044d\u0442\u0430\u043f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0435\u0442\u043e\u043a \u043d\u0430 numpy \u0438 \u0441\u0440\u0430\u0437\u0443 \u0441\u0442\u0430\u043b \u0438\u0445 \u043e\u0431\u0443\u0447\u0430\u0442\u044c. \u041e\u0434\u043d\u0430\u043a\u043e, \u043a\u043e\u0433\u0434\u0430 \u0441\u043f\u0443\u0441\u0442\u044f \u0434\u043e\u043b\u0433\u043e\u0435 \u044f \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 \u0440\u0435\u0448\u0438\u043b \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u0442\u043e \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u043d\u0435 \u043c\u043e\u0433\u0443 \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0443 \u043c\u0435\u043d\u044f \u043d\u0435 \u0441\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0438. <\/p>\n<p>\u041f\u0435\u0440\u0435\u0431\u0440\u0430\u0432 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432, \u044f \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0441\u044f \u043d\u0430 \u043a\u043d\u0438\u0433\u0435 <a href=\"https:\/\/www.amazon.com\/Deep-Learning-Scratch-Building-Principles\/dp\/1492041416\" rel=\"noopener noreferrer nofollow\">Deep Learning from Scratch<\/a>. \u0422\u0435\u043f\u0435\u0440\u044c \u044f \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0441\u044f, \u0438 \u0445\u043e\u0447\u0443 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b.<\/p>\n<p>\u041d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441 &#171;\u0417\u0430\u0447\u0435\u043c \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b \u0441 \u0441\u0435\u0442\u043a\u043e\u0439 \u043d\u0430 numpy&#187; \u044f \u043e\u0442\u0432\u0435\u0447\u0443:<\/p>\n<ul>\n<li>\n<p>\u0412 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0435 \u0441\u0434\u0435\u043b\u0430\u043d\u044b \u0430\u043a\u0446\u0435\u043d\u0442\u044b \u0432 \u043d\u0435\u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0445 \u043c\u0435\u0441\u0442\u0430\u0445, \u0433\u0434\u0435 \u043c\u043e\u0433\u0443\u0442 \u043d\u0435 \u0441\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0438;<\/p>\n<\/li>\n<li>\n<p>\u0412 \u043a\u043e\u0434\u0435 \u043d\u0435\u0442 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0439 (\u043a\u043b\u0430\u0441\u0441\u044b \u0441\u043b\u043e\u0451\u0432), \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043e\u0442\u0432\u043b\u0435\u043a\u0430\u0442\u044c \u043e\u0442 \u0441\u0443\u0442\u0438.<\/p>\n<\/li>\n<\/ul>\n<p>\u041a\u043e\u0434 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d <a href=\"https:\/\/github.com\/EgShes\/dl_from_scratch\/blob\/master\/dl_from_scratch\/examples\/bare_perceptron.py\" rel=\"noopener noreferrer nofollow\">\u0442\u0443\u0442<\/a>. \u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c <a href=\"https:\/\/youtu.be\/kWTC1NvL894\" rel=\"noopener noreferrer nofollow\">\u044d\u0442\u043e \u0432\u0438\u0434\u0435\u043e<\/a> \u0441 \u043a\u0443\u0440\u0441\u0430 <a href=\"https:\/\/dlcourse.ai\/\" rel=\"noopener noreferrer nofollow\">deep learning \u043d\u0430 \u043f\u0430\u043b\u044c\u0446\u0430\u0445<\/a>, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u044b \u043d\u0430 \u0431\u0443\u043c\u0430\u0436\u043a\u0435.<\/p>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u0443\u0447\u0438\u0442\u044c \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u044c, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c chain rule (<a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%94%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D1%81%D0%BB%D0%BE%D0%B6%D0%BD%D0%BE%D0%B9_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8\" rel=\"noopener noreferrer nofollow\">\u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043b\u043e\u0436\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438<\/a>). \u0414\u0430\u043d\u043d\u043e\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442, \u043a\u0430\u043a \u0431\u0440\u0430\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u0443\u044e \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0439. \u0415\u0441\u043b\u0438 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 <em>y = f(g(x))<\/em>, \u0442\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u0430\u044f y \u043f\u043e x.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"\\frac{dy}{dx} = \\frac{dy}{du} . \\frac{du}{dx}, u = g(x)\" alt=\"\\frac{dy}{dx} = \\frac{dy}{du} . \\frac{du}{dx}, u = g(x)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/bb6\/88c\/c38\/bb688cc38b34a29cf49da99cba487965.svg\" width=\"192\" height=\"41\"\/><\/p>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u0430\u044f \u0441\u0435\u0442\u044c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u0435\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 (\u0441\u043b\u043e\u0451\u0432), \u0442\u043e \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u0443\u044e (\u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442) \u043e\u0448\u0438\u0431\u043a\u0438 \u043c\u044b \u043f\u0435\u0440\u0435\u043c\u043d\u043e\u0436\u0438\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u044b\u0435 \u0432\u0441\u0435\u0445 \u0441\u043b\u043e\u0451\u0432.<\/p>\n<p>\u041e\u0431\u0443\u0447\u0430\u0442\u044c \u0431\u0443\u0434\u0435\u043c \u0434\u0432\u0443\u0445\u0441\u043b\u043e\u0439\u043d\u044b\u0439 \u043f\u0435\u0440\u0441\u0435\u043f\u0442\u0440\u043e\u043d (\u0434\u0432\u0430 \u043f\u043e\u043b\u043d\u043e\u0441\u0432\u044f\u0437\u043d\u044b\u0445 \u0441\u043b\u043e\u044f) \u0441 \u0441\u0438\u0433\u043c\u043e\u0438\u0434\u0430\u043b\u044c\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0435\u0439 \u043c\u0435\u0436\u0434\u0443 \u0441\u043b\u043e\u044f\u043c\u0438 \u0434\u043b\u044f \u0437\u0430\u0434\u0430\u0447\u0438 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0438 (\u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0446\u0435\u043d\u044b \u0434\u043e\u043c\u0430) \u043d\u0430 <a href=\"https:\/\/inria.github.io\/scikit-learn-mooc\/python_scripts\/datasets_california_housing.html\" rel=\"noopener noreferrer nofollow\">\u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0435<\/a> \u0446\u0435\u043d \u043d\u0430 \u0434\u043e\u043c\u0430 \u0432 \u043a\u0430\u043b\u0438\u0444\u043e\u0440\u043d\u0438\u0438.<\/p>\n<pre><code class=\"python\">w1 = np.random.randn(in_dim, hidden_dim) b1 = np.zeros((1, hidden_dim)) w2 = np.random.randn(hidden_dim, out_dim) b2 = np.zeros((1, out_dim))<\/code><\/pre>\n<p>\u041d\u0435\u0439\u0440\u043e\u043d\u043d\u0443\u044e \u0441\u0435\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432 \u0432\u0438\u0434\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0433\u0440\u0430\u0444\u0430:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/19c\/325\/4be\/19c3254be85cbfa8de2d50cfbe98f65e.png\" alt=\"\u0412\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0433\u0440\u0430\u0444 \u0441\u0435\u0442\u0438\" title=\"\u0412\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0433\u0440\u0430\u0444 \u0441\u0435\u0442\u0438\" width=\"774\" height=\"340\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/19c\/325\/4be\/19c3254be85cbfa8de2d50cfbe98f65e.png\"\/><figcaption>\u0412\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0433\u0440\u0430\u0444 \u0441\u0435\u0442\u0438<\/figcaption><\/figure>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"y = B(C(D(E(F(X, w1), b1)), w2), b2)\" alt=\"y = B(C(D(E(F(X, w1), b1)), w2), b2)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3d3\/c94\/481\/3d3c94481b98507931951c064e63fc2f.svg\" width=\"307\" height=\"21\"\/><\/p>\n<p>\u042d\u0442\u043e \u043a\u0430\u043a \u0440\u0430\u0437 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044f, \u0438 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0437\u043d\u0430\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043e\u0448\u0438\u0431\u043a\u0438 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0432\u0435\u0441\u043e\u0432. \u041e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u0442\u0430\u043a\u0438\u0435:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"\\frac{dL}{db_2} = \\frac{dL}{dA} . \\frac{dA}{dB} . \\frac{dB}{db_2}\" alt=\"\\frac{dL}{db_2} = \\frac{dL}{dA} . \\frac{dA}{dB} . \\frac{dB}{db_2}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/699\/ce3\/61e\/699ce361e07102dfb84f48a25e17ce57.svg\" width=\"168\" height=\"44\"\/><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"\\frac{dL}{dw_2} = \\frac{dL}{dA} . \\frac{dA}{dB} . \\frac{dB}{dC} . \\frac{dC}{dw_2}\" alt=\"\\frac{dL}{dw_2} = \\frac{dL}{dA} . \\frac{dA}{dB} . \\frac{dB}{dC} . \\frac{dC}{dw_2}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/660\/485\/08a\/66048508aaf9df5fd3dbdabf98ad9daf.svg\" width=\"217\" height=\"44\"\/><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"\\frac{dL}{db_2} = \\frac{dL}{dA} . \\frac{dA}{dB} . \\frac{dB}{dC} . \\frac{dC}{dD} . \\frac{dD}{dE} . \\frac{dE}{db_2}\" alt=\"\\frac{dL}{db_2} = \\frac{dL}{dA} . \\frac{dA}{dB} . \\frac{dB}{dC} . \\frac{dC}{dD} . \\frac{dD}{dE} . \\frac{dE}{db_2}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4a7\/e2b\/8ce\/4a7e2b8ceee1d3965110975fc2cc20e8.svg\" width=\"287\" height=\"44\"\/><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"\\frac{dL}{dw_1} = \\frac{dL}{dA} . \\frac{dA}{dB} . \\frac{dB}{dC} . \\frac{dC}{dD} . \\frac{dD}{dE} . \\frac{dE}{dF} . \\frac{dF}{dw_1}\" alt=\"\\frac{dL}{dw_1} = \\frac{dL}{dA} . \\frac{dA}{dB} . \\frac{dB}{dC} . \\frac{dC}{dD} . \\frac{dD}{dE} . \\frac{dE}{dF} . \\frac{dF}{dw_1}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/440\/f3b\/f04\/440f3bf04d54bbc63f9c0b832ebd822a.svg\" width=\"336\" height=\"44\"\/><\/p>\n<p>\u041f\u043e\u0441\u0447\u0438\u0442\u0430\u0435\u043c \u0432\u0441\u0435 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u044b\u0435:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"L = A^2; \\frac{dL}{d\u0410} = 2a\" alt=\"L = A^2; \\frac{dL}{d\u0410} = 2a\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ebf\/20d\/731\/ebf20d731989588ded1a4b0c9c8a3043.svg\" width=\"141\" height=\"47\"\/><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"A = Y_{true} - Y_{pred}; \\frac{dA}{dB} = -1\" alt=\"A = Y_{true} - Y_{pred}; \\frac{dA}{dB} = -1\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/26f\/8b7\/4e3\/26f8b74e33c7c99af365319757c6ab23.svg\" width=\"224\" height=\"41\"\/><\/p>\n<p>\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u043e\u0439 \u043c\u043e\u0433\u0443\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044f\u043c\u0438. \u0415\u0434\u0438\u043d\u0438\u0446\u0430 \u0437\u0434\u0435\u0441\u044c &#8212; \u044d\u0442\u043e \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u044b\u0439 \u0432\u0435\u043a\u0442\u043e\u0440 \u0441 \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c\u044e \u043a\u0430\u043a \u0443 \u0421 <code>np.ones_like(C)<\/code>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"B = C + b_2; \\frac{dB}{dC} = 1\" alt=\"B = C + b_2; \\frac{dB}{dC} = 1\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4a6\/b16\/3bf\/4a6b163bfed08db7bbb7bda817ea9457.svg\" width=\"165\" height=\"42\"\/><\/p>\n<p>\u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e <code>np.ones_like(b2)<\/code>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"B = C + b_2; \\frac{dB}{db2} = 1\" alt=\"B = C + b_2; \\frac{dB}{db2} = 1\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/16d\/f60\/f39\/16df60f3939a7dcf45d81583981711c8.svg\" width=\"168\" height=\"41\"\/><\/p>\n<p>\u0422\u0443\u0442 \u0442\u043e\u0436\u0435 \u043d\u0430\u0434\u043e \u0431\u044b\u0442\u044c \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u044b\u043c. \u0422\u0430\u043a \u043a\u0430\u043a \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u0430\u044f \u043f\u043e D, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u0442\u043e\u0438\u0442 \u0441\u043b\u0435\u0432\u0430, \u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c w2 \u0438 \u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u0441\u043f\u0440\u0430\u0432\u0430 \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0438 \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u043c\u0430\u0442\u0440\u0438\u0446\u0435\u0439 <code>np.dot(prev_grad, w2.T)<\/code>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"C = D @ w2; \\frac{dC}{dD} = w2^T\" alt=\"C = D @ w2; \\frac{dC}{dD} = w2^T\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/722\/d7a\/ceb\/722d7aceb5f4fdfdeb034c89192a517b.svg\" width=\"190\" height=\"41\"\/><\/p>\n<p>\u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c D \u0438 \u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u0441\u043b\u0435\u0432\u0430 \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0438 \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u043c\u0430\u0442\u0440\u0438\u0446\u0435\u0439 <code>np.dot(D.T, prev_grad)<\/code><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"C = D @ w2; \\frac{dC}{dw2} = D^T\" alt=\"C = D @ w2; \\frac{dC}{dw2} = D^T\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2a2\/9c4\/cd4\/2a29c4cd4bb7b60ad043cb3e38232c0d.svg\" width=\"190\" height=\"41\"\/><\/p>\n<p>\u0423 \u0441\u0438\u0433\u043c\u043e\u0438\u0434\u044b \u043a\u043b\u0430\u0441\u0441\u043d\u0430\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u0430\u044f.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"D = sigmoid(E); \\frac{dD}{dE} = sigmoid(E)*(1 - sigmoid(E)\" alt=\"D = sigmoid(E); \\frac{dD}{dE} = sigmoid(E)*(1 - sigmoid(E)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2ef\/8ae\/863\/2ef8ae86353e499998e72faeecc07dc9.svg\" width=\"445\" height=\"41\"\/><\/p>\n<p>\u0422\u0443\u0442 <code>np.ones_like(b1)<\/code>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"E = F + b_1; \\frac{dE}{dF} = 1\" alt=\"E = F + b_1; \\frac{dE}{dF} = 1\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/023\/84c\/289\/02384c2895663a896fbeb5762619fe41.svg\" width=\"165\" height=\"41\"\/><\/p>\n<p>\u0422\u0443\u0442 <code>np.ones_like(b1)<\/code>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"E = F + b_1; \\frac{dE}{db1} = 1\" alt=\"E = F + b_1; \\frac{dE}{db1} = 1\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/86f\/175\/962\/86f1759626221a4c6ace185ba40e0288.svg\" width=\"168\" height=\"41\"\/><\/p>\n<p>\u0422\u0443\u0442 \u043d\u0443\u0436\u043d\u043e \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c D \u0438 \u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u0441\u043f\u0440\u0430\u0432\u0430 \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0438 \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u043c\u0430\u0442\u0440\u0438\u0446\u0435\u0439 <code>np.dot(prev_grad, X.T)<\/code><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"E = X @ w_1; \\frac{dF}{dw1} = X^T\" alt=\"E = X @ w_1; \\frac{dF}{dw1} = X^T\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/75e\/385\/112\/75e3851124025d7ece5c0145123651f1.svg\" width=\"190\" height=\"41\"\/><\/p>\n<p>\u0412 \u043a\u043e\u0434\u0435 \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"python\">dLdA = 2 * A  # (bs, out_dim) dAdB = -1  # (bs, out_dim) dBdC = np.ones_like(C)  # (bs, out_dim) dBdb2 = np.ones_like(self.B2)  # (bs, out_dim) dCdD = self.W2.T  # (out_dim, hidden_dim) dCdw2 = D.T  # (hidden_dim, bs) dDdE = D * (1 - D)  # (bs, hidden_dim) dEdF = np.ones_like(F)  # (bs, hidden_dim) dEdb1 = np.ones_like(self.B1)  # (bs, hidden_dim) dFdw1 = X.T  # (in_dim, bs)  dLdb2 = np.mean(dLdA * dAdB * dBdb2, axis=0, keepdims=True)  # (1, out_dim) dLdw2 = np.dot(dCdw2, dLdA * dAdB * dBdC)  # (bs, out_dim) dLdb1 = np.mean(   np.dot(dLdA * dAdB * dBdC, dCdD) * dDdE * dEdb1, axis=0, keepdims=True )  # (1, hidden_dim) dLdw1 = np.dot(   dFdw1, np.dot(dLdA * dAdB * dBdC, dCdD) * dDdE * dEdF )  # (bs, in_dim)<\/code><\/pre>\n<p>\u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0435\u0441\u0430 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u043c\u0438 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u0430\u043c\u0438. \u0422\u0430\u043a \u043a\u0430\u043a \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u043a\u0430\u043a\u043e\u0439 \u0432\u043a\u043b\u0430\u0434 \u0432\u0435\u0441\u0430 \u0434\u0430\u044e\u0442, \u0447\u0442\u043e\u0431\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u0448\u0438\u0431\u043a\u0438 \u0440\u043e\u0441\u043b\u0430, \u0442\u043e \u043c\u044b \u0435\u0433\u043e \u0432\u044b\u0447\u0438\u0442\u0430\u0435\u043c. \u0422\u043e \u0435\u0441\u0442\u044c, \u0434\u0435\u043b\u0430\u0435\u043c \u0448\u0430\u0433 \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443, \u0447\u0442\u043e\u0431\u044b \u043e\u0448\u0438\u0431\u043a\u0430 \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u043b\u0430\u0441\u044c.<\/p>\n<pre><code class=\"python\">b2 -= self.lr * dLdb2 w2 -= self.lr * dLdw2 b1 -= self.lr * dLdb1 w1 -= self.lr * dLdw1<\/code><\/pre>\n<p>\u041a\u0430\u043a \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u0441\u044f &#171;\u041e\u0445\u0430\u043f\u043a\u0443 \u0434\u0440\u043e\u0432 \u0438 \u043f\u0435\u0440\u0446\u0435\u043f\u0442\u0440\u043e\u043d \u0433\u043e\u0442\u043e\u0432&#187;. \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u044d\u0442\u043e\u0442 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0442\u0435\u043c, \u043a\u0442\u043e \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f \u0441 \u0442\u043e\u0439 \u0436\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439, \u0447\u0442\u043e \u0438 \u044f.<\/p>\n<p>\u0410 \u0435\u0449\u0435 \u0443 \u043c\u0435\u043d\u044f \u0435\u0441\u0442\u044c <a href=\"https:\/\/t.me\/yet_another_mle\" rel=\"noopener noreferrer nofollow\">\u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c \u043a\u0430\u043d\u0430\u043b<\/a>, \u0433\u0434\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u044e \u043f\u0440\u043e \u0441\u0435\u0442\u043a\u0438 \u0441 \u0443\u043f\u043e\u0440\u043e\u043c \u0432 \u0438\u043d\u0444\u0435\u0440\u0435\u043d\u0441.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p> <!----> <!----><\/div>\n<p> <!----> <!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/711998\/\"> https:\/\/habr.com\/ru\/post\/711998\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u042f \u043f\u0440\u0438\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0441\u044c \u043c\u043d\u0435\u043d\u0438\u044f, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0445\u043e\u0447\u0435\u0448\u044c \u0432 \u0447\u0435\u043c-\u0442\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f, \u0442\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0439 \u044d\u0442\u043e\u0439 \u0441\u0430\u043c. \u041a\u043e\u0433\u0434\u0430 \u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u043b \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c\u0441\u044f \u0434\u0430\u0442\u0430\u0441\u0430\u0435\u043d\u0441\u043e\u043c, \u044f \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0441\u044f, \u043a\u0430\u043a \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u044b \u043d\u0430 \u0431\u0443\u043c\u0430\u0436\u043a\u0435, \u043f\u0435\u0440\u0435\u0441\u043a\u043e\u0447\u0438\u043b \u044d\u0442\u0430\u043f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0435\u0442\u043e\u043a \u043d\u0430 numpy \u0438 \u0441\u0440\u0430\u0437\u0443 \u0441\u0442\u0430\u043b \u0438\u0445 \u043e\u0431\u0443\u0447\u0430\u0442\u044c. \u041e\u0434\u043d\u0430\u043a\u043e, \u043a\u043e\u0433\u0434\u0430 \u0441\u043f\u0443\u0441\u0442\u044f \u0434\u043e\u043b\u0433\u043e\u0435 \u044f \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 \u0440\u0435\u0448\u0438\u043b \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u0442\u043e \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u043d\u0435 \u043c\u043e\u0433\u0443 \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0443 \u043c\u0435\u043d\u044f \u043d\u0435 \u0441\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0438. <\/p>\n<p>\u041f\u0435\u0440\u0435\u0431\u0440\u0430\u0432 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432, \u044f \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0441\u044f \u043d\u0430 \u043a\u043d\u0438\u0433\u0435 <a href=\"https:\/\/www.amazon.com\/Deep-Learning-Scratch-Building-Principles\/dp\/1492041416\" rel=\"noopener noreferrer nofollow\">Deep Learning from Scratch<\/a>. \u0422\u0435\u043f\u0435\u0440\u044c \u044f \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0441\u044f, \u0438 \u0445\u043e\u0447\u0443 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b.<\/p>\n<p>\u041d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441 &#171;\u0417\u0430\u0447\u0435\u043c \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b \u0441 \u0441\u0435\u0442\u043a\u043e\u0439 \u043d\u0430 numpy&#187; \u044f \u043e\u0442\u0432\u0435\u0447\u0443:<\/p>\n<ul>\n<li>\n<p>\u0412 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0435 \u0441\u0434\u0435\u043b\u0430\u043d\u044b \u0430\u043a\u0446\u0435\u043d\u0442\u044b \u0432 \u043d\u0435\u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0445 \u043c\u0435\u0441\u0442\u0430\u0445, \u0433\u0434\u0435 \u043c\u043e\u0433\u0443\u0442 \u043d\u0435 \u0441\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0438;<\/p>\n<\/li>\n<li>\n<p>\u0412 \u043a\u043e\u0434\u0435 \u043d\u0435\u0442 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0439 (\u043a\u043b\u0430\u0441\u0441\u044b \u0441\u043b\u043e\u0451\u0432), \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043e\u0442\u0432\u043b\u0435\u043a\u0430\u0442\u044c \u043e\u0442 \u0441\u0443\u0442\u0438.<\/p>\n<\/li>\n<\/ul>\n<p>\u041a\u043e\u0434 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d <a href=\"https:\/\/github.com\/EgShes\/dl_from_scratch\/blob\/master\/dl_from_scratch\/examples\/bare_perceptron.py\" rel=\"noopener noreferrer nofollow\">\u0442\u0443\u0442<\/a>. \u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c <a href=\"https:\/\/youtu.be\/kWTC1NvL894\" rel=\"noopener noreferrer nofollow\">\u044d\u0442\u043e \u0432\u0438\u0434\u0435\u043e<\/a> \u0441 \u043a\u0443\u0440\u0441\u0430 <a href=\"https:\/\/dlcourse.ai\/\" rel=\"noopener noreferrer nofollow\">deep learning \u043d\u0430 \u043f\u0430\u043b\u044c\u0446\u0430\u0445<\/a>, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u044b \u043d\u0430 \u0431\u0443\u043c\u0430\u0436\u043a\u0435.<\/p>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u0443\u0447\u0438\u0442\u044c \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u044c, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c chain rule (<a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%94%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D1%81%D0%BB%D0%BE%D0%B6%D0%BD%D0%BE%D0%B9_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8\" rel=\"noopener noreferrer nofollow\">\u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043b\u043e\u0436\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438<\/a>). \u0414\u0430\u043d\u043d\u043e\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442, \u043a\u0430\u043a \u0431\u0440\u0430\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u0443\u044e \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0439. \u0415\u0441\u043b\u0438 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 <em>y = f(g(x))<\/em>, \u0442\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u0430\u044f y \u043f\u043e x.<\/p>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u0430\u044f \u0441\u0435\u0442\u044c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u0435\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 (\u0441\u043b\u043e\u0451\u0432), \u0442\u043e \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u0443\u044e (\u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442) \u043e\u0448\u0438\u0431\u043a\u0438 \u043c\u044b \u043f\u0435\u0440\u0435\u043c\u043d\u043e\u0436\u0438\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u044b\u0435 \u0432\u0441\u0435\u0445 \u0441\u043b\u043e\u0451\u0432.<\/p>\n<p>\u041e\u0431\u0443\u0447\u0430\u0442\u044c \u0431\u0443\u0434\u0435\u043c \u0434\u0432\u0443\u0445\u0441\u043b\u043e\u0439\u043d\u044b\u0439 \u043f\u0435\u0440\u0441\u0435\u043f\u0442\u0440\u043e\u043d (\u0434\u0432\u0430 \u043f\u043e\u043b\u043d\u043e\u0441\u0432\u044f\u0437\u043d\u044b\u0445 \u0441\u043b\u043e\u044f) \u0441 \u0441\u0438\u0433\u043c\u043e\u0438\u0434\u0430\u043b\u044c\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0435\u0439 \u043c\u0435\u0436\u0434\u0443 \u0441\u043b\u043e\u044f\u043c\u0438 \u0434\u043b\u044f \u0437\u0430\u0434\u0430\u0447\u0438 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0438 (\u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0446\u0435\u043d\u044b \u0434\u043e\u043c\u0430) \u043d\u0430 <a href=\"https:\/\/inria.github.io\/scikit-learn-mooc\/python_scripts\/datasets_california_housing.html\" rel=\"noopener noreferrer nofollow\">\u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0435<\/a> \u0446\u0435\u043d \u043d\u0430 \u0434\u043e\u043c\u0430 \u0432 \u043a\u0430\u043b\u0438\u0444\u043e\u0440\u043d\u0438\u0438.<\/p>\n<pre><code class=\"python\">w1 = np.random.randn(in_dim, hidden_dim) b1 = np.zeros((1, hidden_dim)) w2 = np.random.randn(hidden_dim, out_dim) b2 = np.zeros((1, out_dim))<\/code><\/pre>\n<p>\u041d\u0435\u0439\u0440\u043e\u043d\u043d\u0443\u044e \u0441\u0435\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432 \u0432\u0438\u0434\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0433\u0440\u0430\u0444\u0430:<\/p>\n<figure class=\"full-width\"><figcaption>\u0412\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0433\u0440\u0430\u0444 \u0441\u0435\u0442\u0438<\/figcaption><\/figure>\n<p>\u042d\u0442\u043e \u043a\u0430\u043a \u0440\u0430\u0437 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044f, \u0438 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0437\u043d\u0430\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043e\u0448\u0438\u0431\u043a\u0438 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0432\u0435\u0441\u043e\u0432. \u041e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u0442\u0430\u043a\u0438\u0435:<\/p>\n<p>\u041f\u043e\u0441\u0447\u0438\u0442\u0430\u0435\u043c \u0432\u0441\u0435 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u044b\u0435:<\/p>\n<p>\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u043e\u0439 \u043c\u043e\u0433\u0443\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044f\u043c\u0438. \u0415\u0434\u0438\u043d\u0438\u0446\u0430 \u0437\u0434\u0435\u0441\u044c &#8212; \u044d\u0442\u043e \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u044b\u0439 \u0432\u0435\u043a\u0442\u043e\u0440 \u0441 \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c\u044e \u043a\u0430\u043a \u0443 \u0421 <code>np.ones_like(C)<\/code>.<\/p>\n<p>\u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e <code>np.ones_like(b2)<\/code>.<\/p>\n<p>\u0422\u0443\u0442 \u0442\u043e\u0436\u0435 \u043d\u0430\u0434\u043e \u0431\u044b\u0442\u044c \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u044b\u043c. \u0422\u0430\u043a \u043a\u0430\u043a \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u0430\u044f \u043f\u043e D, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u0442\u043e\u0438\u0442 \u0441\u043b\u0435\u0432\u0430, \u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c w2 \u0438 \u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u0441\u043f\u0440\u0430\u0432\u0430 \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0438 \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u043c\u0430\u0442\u0440\u0438\u0446\u0435\u0439 <code>np.dot(prev_grad, w2.T)<\/code>.<\/p>\n<p>\u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c D \u0438 \u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u0441\u043b\u0435\u0432\u0430 \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0438 \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u043c\u0430\u0442\u0440\u0438\u0446\u0435\u0439 <code>np.dot(D.T, prev_grad)<\/code><\/p>\n<p>\u0423 \u0441\u0438\u0433\u043c\u043e\u0438\u0434\u044b \u043a\u043b\u0430\u0441\u0441\u043d\u0430\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u0430\u044f.<\/p>\n<p>\u0422\u0443\u0442 <code>np.ones_like(b1)<\/code>.<\/p>\n<p>\u0422\u0443\u0442 <code>np.ones_like(b1)<\/code>.<\/p>\n<p>\u0422\u0443\u0442 \u043d\u0443\u0436\u043d\u043e \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c D \u0438 \u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u0441\u043f\u0440\u0430\u0432\u0430 \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0438 \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u043c\u0430\u0442\u0440\u0438\u0446\u0435\u0439 <code>np.dot(prev_grad, X.T)<\/code><\/p>\n<p>\u0412 \u043a\u043e\u0434\u0435 \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"python\">dLdA = 2 * A  # (bs, out_dim) dAdB = -1  # (bs, out_dim) dBdC = np.ones_like(C)  # (bs, out_dim) dBdb2 = np.ones_like(self.B2)  # (bs, out_dim) dCdD = self.W2.T  # (out_dim, hidden_dim) dCdw2 = D.T  # (hidden_dim, bs) dDdE = D * (1 - D)  # (bs, hidden_dim) dEdF = np.ones_like(F)  # (bs, hidden_dim) dEdb1 = np.ones_like(self.B1)  # (bs, hidden_dim) dFdw1 = X.T  # (in_dim, bs)  dLdb2 = np.mean(dLdA * dAdB * dBdb2, axis=0, keepdims=True)  # (1, out_dim) dLdw2 = np.dot(dCdw2, dLdA * dAdB * dBdC)  # (bs, out_dim) dLdb1 = np.mean(   np.dot(dLdA * dAdB * dBdC, dCdD) * dDdE * dEdb1, axis=0, keepdims=True )  # (1, hidden_dim) dLdw1 = np.dot(   dFdw1, np.dot(dLdA * dAdB * dBdC, dCdD) * dDdE * dEdF )  # (bs, in_dim)<\/code><\/pre>\n<p>\u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0435\u0441\u0430 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u043c\u0438 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u0430\u043c\u0438. \u0422\u0430\u043a \u043a\u0430\u043a \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u043a\u0430\u043a\u043e\u0439 \u0432\u043a\u043b\u0430\u0434 \u0432\u0435\u0441\u0430 \u0434\u0430\u044e\u0442, \u0447\u0442\u043e\u0431\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u0448\u0438\u0431\u043a\u0438 \u0440\u043e\u0441\u043b\u0430, \u0442\u043e \u043c\u044b \u0435\u0433\u043e \u0432\u044b\u0447\u0438\u0442\u0430\u0435\u043c. \u0422\u043e \u0435\u0441\u0442\u044c, \u0434\u0435\u043b\u0430\u0435\u043c \u0448\u0430\u0433 \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443, \u0447\u0442\u043e\u0431\u044b \u043e\u0448\u0438\u0431\u043a\u0430 \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u043b\u0430\u0441\u044c.<\/p>\n<pre><code class=\"python\">b2 -= self.lr * dLdb2 w2 -= self.lr * dLdw2 b1 -= self.lr * dLdb1 w1 -= self.lr * dLdw1<\/code><\/pre>\n<p>\u041a\u0430\u043a \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u0441\u044f &#171;\u041e\u0445\u0430\u043f\u043a\u0443 \u0434\u0440\u043e\u0432 \u0438 \u043f\u0435\u0440\u0446\u0435\u043f\u0442\u0440\u043e\u043d \u0433\u043e\u0442\u043e\u0432&#187;. \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u044d\u0442\u043e\u0442 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0442\u0435\u043c, \u043a\u0442\u043e \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f \u0441 \u0442\u043e\u0439 \u0436\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439, \u0447\u0442\u043e \u0438 \u044f.<\/p>\n<p>\u0410 \u0435\u0449\u0435 \u0443 \u043c\u0435\u043d\u044f \u0435\u0441\u0442\u044c <a href=\"https:\/\/t.me\/yet_another_mle\" rel=\"noopener noreferrer nofollow\">\u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c \u043a\u0430\u043d\u0430\u043b<\/a>, \u0433\u0434\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u044e \u043f\u0440\u043e \u0441\u0435\u0442\u043a\u0438 \u0441 \u0443\u043f\u043e\u0440\u043e\u043c \u0432 \u0438\u043d\u0444\u0435\u0440\u0435\u043d\u0441.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p> <!----> <!----><\/div>\n<p> <!----> <!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/711998\/\"> https:\/\/habr.com\/ru\/post\/711998\/<\/a><br \/><\/br><\/br><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-344292","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/344292","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=344292"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/344292\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=344292"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=344292"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=344292"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}