之所以有这样的疑问,是因为计算图是正向传播和反向传播的载体,不理解它,就没有办法理解神经网络是如何工作的。
以下为我的一点粗浅认知。
因为神经网络整体实质就是一个函数,只不过是个复杂的函数罢了,下面化繁为简,描述一下。
以目标检测用到的神经网络为例,抽象成:
y
=
F
(
a
,
x
)
y=F(a,x)
y=F(a,x)
- y是最终预测的结果;
- a是输入的样本,因为样本是数据化后的一组向量,在计算过程中也不会被改变,本质是常数,所以用a表示
- x是自变量,它才是重点,它是一个总体的代称,而不是一个具体的单一的自变量,是包含了无数组(w,b)的自变量包
- F(a,x)是整个神经网络所有层汇总在一起的计算过程,从a作为输入开始,到产出结果y为止,中间对a进行了逐layer的、每个layer中又逐nueron的子运算
所以,可见:
- 计算过程都是可以以nueron为单位拆解成一个个子运算的,而每个nueron实质上就是一个子函数
- 每个nueron接受上层layer中若干nueron传进来的数(它们的计算结果),并产出自己的结果
- 每个子函数可以继续拆解下去,直到拆成以单个运算符和两个操作数(涉及引入中间变量)就可以表示的计算过程,简称为一个计算节点(node)
- 经过上面的大而小、小而再小的拆解,F(a,x)就可以用计算图来精确描述了
后记:前向传播计算出每个node的结果和最终损失,反向传播计算出最终损失对每个node的偏导数,这些偏导数又构成了梯度。