neural-network - 为什么线性函数在多层神经网络中没有用?最后一层如何成为第一层输入的线性函数?
问题描述
我正在研究 NN 中的激活函数,但无法正确理解这部分 - “每一层都由一个线性函数激活。该激活又作为输入进入下一个级别,第二层计算该输入的加权和,它在转,基于另一个线性激活函数触发。
不管我们有多少层,如果本质上都是线性的,最后一层的最终激活函数只不过是第一层输入的线性函数!"
解决方案
这是我在学习神经网络时遇到的最有趣的概念之一。我是这样理解的:
一层的输入 Z 可以写成权重矩阵和前一层节点输出向量的乘积。因此,第 L 层的输入在Z_l = W_l * A_l-1
哪里。Z_l
现在A_l = F(Z_l)
其中 F 是层的激活函数L
。如果激活函数是线性的,那么A_l
将只是一个因素K of Z_l
。因此,我们可以写成Z_l
:
输入Z_l = W_l*W_l-1*W_l-2*...*X
在哪里X
。所以你看到输出Y
最终将是几个矩阵乘以特定数据实例的输入向量。我们总能找到权重矩阵的乘积。因此,输出Y
将是 W_Transpose * X
. 这个方程只不过是我们在线性回归中遇到的一个线性方程。因此,如果所有输入层都具有线性激活,则输出将只是输入的线性组合,并且可以使用简单的线性方程来编写。
推荐阅读
- python-3.x - 如何在 azure blob 存储中读取存储在 .py 文件中的变量
- c# - 为我的项目定义 LocalAppData 不起作用,因为它尝试在我的项目目录中查找 %LOCALAPPDATA%
- google-sheets - 请给我这个公式的 ArrayFormula
- game-development - 将 Navigation2D 限制为 4 个基点
- javascript - 如何在不丢失任何数据的情况下重新加载页面
- c# - C# 拖放 Gif 到 MS Edge
- kotlin - 未解决的参考:VS 代码中的 GlobalScope.launch
- android - Android - LinearView - 视图的动态实例化
- python - Twilio Conversations - 关闭的对话是否计入每个身份限制的频道
- html - 用 CSS 翻转 3 个硬币图像