人工智能学习教程笔记-3:计算图

397 阅读3分钟

文章部分内容参考自captainbed.net

计算图

计算图是研究神经网络时经常用到的一个重要手段。

计算图概述

实际工作中的神经网络非常复杂,必须要借助图才能让其变得更加直观。

一个人工智能学习任务的核心是==模型的定义以及模型的参数求解方式==,二者抽象后可以确定一个唯一的计算逻辑,称为计算图

计算图表现为有向无环图,定义了==数据的流转方式、数据的计算方式、以及各种计算之间的相互依赖关系==。

神经网络的计算过程

神经网络的计算过程由前向传播和反向传播构成:

  • 先通过前向传播计算出预测结果以及损失
  • 然后通过反向传播计算出损失函数关于每一个参数(w,b)(w,b)的偏导数,并对其进行梯度下降
  • 再用新的参数进行前向传播计算,如此循环往复

通过计算图就可以将上述过程清晰表述出来。

简单示例

以一个简单的神经网络计算过程为例:

image-20210707095743573

示例:逻辑回归函数的偏导计算与计算图

逻辑回归(Logistic Regression)是一个非常经典的算法,其中包含非常多的细节,曾看到一句话:如果面试官问你熟悉哪个机器学习模型,可以说 SVM,但千万别说 LR,因为细节真的太多了。

虽然称为回归,但其实际上是一个分类模型,并常用于二分类(例如肿瘤是良性还是恶性)。

其属于广义线性模型(generalized linear model),这一类算法模型都是wx+bw'x+b的形式,其中wwbb待求参数

计算过程

根据之前所学,逻辑回归的前向传播计算公式如下(分别是逻辑回归函数、预测结果/激活函数、损失函数):

{z=wTx+by^=a=σ(z)=11+ezL(a,y)=(ylog(a)+(1y)log(1a))\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}

其前向传播计算图如下:

image-20210707104617872

前向传播的目的是计算出损失函数关于各个参数的偏导数dw1dw2...dw_{1}、dw_{2}...,然后通过梯度下降算法更新各个参数,使得损失函数越来越小,即结果越来越精准。

然后再用新的参数进行前向传播、反向传播,如此循环往复。

具体数学推导过程如下:

image-20210713202030255

多训练样本

上面说的情况是单训练样本,如果是多训练样本,把所求偏导数除以m求平均数即可。

小结

通过目前所学可以总结出神经网络的一个大致流程如下:

image-20210707183608065

⚠️注意:是否达到标注并没有一个标准,而是根据自己的需要来判断。

tensorflow

==tensorflow就是一个用计算图的形式来表示计算的人工智能框架==,在tensorflow中所有的数据和计算都能被转化成计算图的形式。tensorflow由点和边组成,每个节点代表一个操作(tf.Operation),每条边代表在节点之间传播的张量(tf.Tensor)。

💡tensor:数据;flow:流

数据流图或计算图是tensorflow的基本计算单位,