文章部分内容参考自captainbed.net
计算图
计算图是研究神经网络时经常用到的一个重要手段。
计算图概述
实际工作中的神经网络非常复杂,必须要借助图才能让其变得更加直观。
一个人工智能学习任务的核心是模型的定义以及模型的参数求解方式,二者抽象后可以确定一个唯一的计算逻辑,称为计算图。
计算图表现为有向无环图,定义了数据的流转方式、数据的计算方式、以及各种计算之间的相互依赖关系。
神经网络的计算过程
神经网络的计算过程由前向传播和反向传播构成:
- 先通过前向传播计算出预测结果以及损失
- 然后通过反向传播计算出损失函数关于每一个参数 ( w , b ) (w,b) (w,b)的偏导数,并对其进行梯度下降
- 再用新的参数进行前向传播计算,如此循环往复
通过计算图就可以将上述过程清晰表述出来。
简单示例
以一个简单的神经网络计算过程为例:
示例:逻辑回归函数的偏导计算与计算图
逻辑回归(Logistic Regression)是一个非常经典的算法,其中包含非常多的细节,曾看到一句话:如果面试官问你熟悉哪个机器学习模型,可以说 SVM,但千万别说 LR,因为细节真的太多了。
虽然称为回归,但其实际上是一个分类模型,并常用于二分类(例如肿瘤是良性还是恶性)。
其属于广义线性模型(generalized linear model),这一类算法模型都是 w ′ x + b w'x+b w′x+b的形式,其中 w w w和 b b b是待求参数。
计算过程
根据之前所学,逻辑回归的前向传播计算公式如下(分别是逻辑回归函数、预测结果/激活函数、损失函数):
{ z = w T x + b y ^ = a = σ ( z ) = 1 1 + e − z L ( a , y ) = − ( y l o g ( a ) + ( 1 − y ) l o g ( 1 − a ) ) \begin{cases}z=w^{T}x+b&\\ \hat{y} =a=\sigma(z)=\frac{1}{1+e^{-z}} &\\ L(a,y)=-(ylog(a)+(1-y)log(1-a))&\end{cases} ⎩⎪⎨⎪⎧z=wTx+by^=a=σ(z)=1+e−z1L(a,y)=−(ylog(a)+(1−y)log(1−a))
其前向传播计算图如下:
前向传播的目的是计算出损失函数关于各个参数的偏导数 d w 1 、 d w 2 . . . dw_{1}、dw_{2}... dw1、dw2...,然后通过梯度下降算法更新各个参数,使得损失函数越来越小,即结果越来越精准。
然后再用新的参数进行前向传播、反向传播,如此循环往复。
具体数学推导过程如下:
多训练样本
上面说的情况是单训练样本,如果是多训练样本,把所求偏导数除以m求平均数即可。
小结
通过目前所学可以总结出神经网络的一个大致流程如下:
⚠️注意:是否达到标注并没有一个标准,而是根据自己的需要来判断。
tensorflow
tensorflow就是一个用计算图的形式来表示计算的人工智能框架,在tensorflow中所有的数据和计算都能被转化成计算图的形式。tensorflow由点和边组成,每个节点代表一个操作(tf.Operation),每条边代表在节点之间传播的张量(tf.Tensor)。
💡tensor:数据;flow:流
数据流图或计算图是tensorflow的基本计算单位,