神经网络原来这么简单,机器学习入门贴送给你 | 干货
import numpy as np def mse_loss(y_true, y_pred): # y_true and y_pred are numpy arrays of the same length. return ((y_true - y_pred) ** 2).mean() y_true = np.array([1, 0, 0, 1]) y_pred = np.array([0, 0, 0, 0]) print(mse_loss(y_true, y_pred)) # 0.5 训练神经网络——最小化损失 计算了损失函数之后,就需要将损失最小化,这也是训练神经网络的最终目的所在。 接下来帖子有一段多变量演算,涉及微积分。 作者表示, 如果对微积分不满意,可随时跳过。 简单起见,我们就假设这个数据集中只有Alice。 那么,它的损失函数就是这样。 那么它的权重w跟偏差b,在图上标示,那么就有6个权重变量,3个偏差变量。 于是,便将损失函数写为多变量函数。 想象一下,我们只要调整w1,就可能导致L的变化。那具体是如何变化的呢?这就需要计算偏导数了。 利用链式求导法则进行反向求导,而这一过程就叫做反向传播。 详细计算过程就不放在这里了,大家去他个人网站去看哦~(链接已附文末) 作者温馨提示,看这个过程的时候不要着急,拿出手中的笔和纸,能够帮助你理解。 接下来,使用随机梯度下降的优化算法,公式表示如下(以w1为例): 其中的“学习速率”控制着训练速度,过大或者过小都不合适。 如果我们将所有的变量都进行这样的优化,那么损失函数将逐渐减少,神经网络就能够得到改善。 简单来说,整个训练过程是这样的: 1、数据集中选择一个样本,就如Alice。 2、利用反向传播计算所有变量的偏导数。 3、使用随机梯度下降来训练神经网络,更新变量。 4、返回步骤1。 神经网络的部分就介绍到这里,怎么样?看完之后,有什么感想? 是不是觉得神经网络也还好了。还有其他概念等着你来学习呢!
(编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |