首页 > 解决方案 > 神经网络 - 锻炼

问题描述

我目前正在为自己学习神经网络的概念,并且正在使用来自 http://neuralnetworksanddeeplearning.com/chap1.html的非常好的 pdf

做的练习也很少,但是有一个练习我真的看不懂,至少一步

任务:有一种方法可以通过在上面的三层网络中添加一个额外的层来确定数字的按位表示。额外层将前一层的输出转换为二进制表示,如下图所示。为新的输出层找到一组权重和偏差。假设前 3 层神经元使得第三层(即旧输出层)中正确输出的激活度至少为 0.99,而错误输出的激活度小于 0.01。 在此处输入图像描述

我也找到了解决方案,如第二张图片所示 在此处输入图像描述

我理解为什么矩阵必须具有这种形状,但我真的很难理解用户计算的步骤

0.99 + 3*0.01
4*0.01

我真的不明白这两个步骤。如果有人能帮助我理解这个计算,我会很高兴

非常感谢您的帮助

标签: neural-networklayeractivation-function

解决方案


前一层的输出是 10x1(x)。权重矩阵为 4x10。新的输出层将是 4x1。首先有两个假设:

  • x 仅在一行中为 1。xT = [1 0 0 0 0 0 0 0 0 0]。如果您将此向量与矩阵 W 相乘,您的输出将是 yT=[0 0 0 0],因为 x 中只有 1。乘以 W 后将是 W 的第 0 列的 1 倍,它们是零。

  • 第二个假设是,如果 x 不再是 1,xT=[0.99 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01] 而不是一个 x 会怎样。如果您将 x 与 W 的第一行相乘,结果是 0.05(我相信这里是错字)。当 xT=[0.01 0.99 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01] 与第一行 W 相乘后,结果为 1.03。因为:

0.01*0 + 0.99*1 + 0.01*0 + 0.01*1 + 0.01*0 + 0.01*1 + 0.01*0 + 0.01*1 + 0.01*0 + 0.01*1 = 1.03

所以我相信有一个错字,因为作者可能假设 W 的第一行有 4 个,这是不正确的,因为有 5 个。因为如果第一行有 4 个,那么在 x 的第一行 0.99 的实际结果将是 0.04,在 x 的第二行 0.99 的实际结果将是 1.02。


推荐阅读