
经过几次分享我们已经设计好了神经网络图,今天有所学过的线性代数来整理我们的模型,所以一下我们有时间可以复习一下线性代数代数的知识。
相当在这个神经网络上有 13000 节点需要你来尝试调整。我们需要让计算机来计算出这些数值。
想一下如果这件事要我们手动去做,还是多么大的工程量呀。

这里我们已经通过图形给大家解释神经网络是如何设计和实现的。我们需要用简洁的表达式来整理这一大坨,细思极恐的模型。如下图

把神经网络的某一层中的所有激活值统一成一列向量。

再把这一层和他的向下一层间的权重放到一个矩阵中。矩阵第 n 行就是这一层所有神经元和下一层第 n 个神经元间所有连线的权重值。

这一层所有的激活值和下一层第 n 个神经元间连线权重的加权的和。

要想更好地解解上面的表达式,我们需要有基本的线性代数的知识。

可以每个模型的偏移量列为向量,把他和之前的矩阵乘积相加。然后再把整个表达式用一个 sigmoid 包起来。对表达式

现在我们把权重矩阵和用向量符号抽象地表示。这样我们就用简单的表达式表示神经网络各层间激活值的转化。

这样的表达式可以轻松容易用 Python 或者 R 需要来实现。

我们之前提及到每个神经元都是包含数值的容器,实际上神经元中装着的值是取决于你输入图形的。

所以,准确地说每个神经元应该是一个函数而不是数值。输入是上一层的神经元的函数的结果值。输出是一个 0 1间的数值,这个神经网络也是一个函数,输入是 784 像素值,输出是 10 数值。
网友评论