[深度学习][5] 前馈神经网络与反向传播 以及TensorFlow2.0实现

1 前馈神经网络及其产生动机

1.1 问题的产生

前馈神经网络(feedforward neural network)也称作深度前馈网络(deep feedforward network)或者多层感知机(multilayer perceptron MLP),是一种典型的机器学习模型。
回顾经典的机器学习模型,大致遵循以下步骤:

  • 建立输入到输出的含参函数模型,往往选取一个宽泛抽象的函数族来满足多样性
  • 建立损失函数来描述拟合结果与实际结果的差值
  • 采用合适的优化方法优化你和函数的参数,使得损失函数最小化
  • 在合适的迭代次数或者损失函数足够小并且拟合结果不至于欠拟合和过拟合时,我们认为学习结果可以接受

来到一个具体典型的例子,例如多元线性回归模型,我们使用矩阵w作为映射矩阵,向量b作为偏置向量来描述输入与输出的关系,使用拟合值和实际值的均方误差MSE作为损失函数,采用梯度下降(其实是一步到位了,没有下降的过程)进行优化。
可惜的是多元线性回归只能学习线性模型,我们没有办法表示输入变量之间的联系。
logistics回归其实就是无偏置的多元线性回归映射到sigmoid函数,用交叉熵cross entropy作为损失函数。
以上的机器学习方法都只使用了含少量参数的函数组去描述输入输出的映射关系,我们自然想到有没有一种工具可以成为一种万能的函数近似机,无论多么复杂多么非线性的函数都可以完成近似。

1.2 前馈神经网络的模型描述

前馈神经网络中,我们使用非线性的复合函数去完成函数拟合,像这样
f ( x ) = f ( 3 ) ( f ( 2 ) ( f ( 1 ) ( x ) ) ) (1.2.1) f(x) = f^{(3)}(f^{(2)}(f^{(1)}(x))) \tag{1.2.1} f(x)=f(3)(f(2)(f(1)(x)))(1.2.1)
用专业术语来讲,我们通常称

  • f右上角的小标代表层数, f ( 3 ) f^{(3)} f(3)就是第三层
  • 最大层数称为深度
  • 每一层被定义为激活函数作用在线性映射上 f ( i ) ( x ) = σ ( w T x + b ) f^{(i)}(x)=\sigma(w^Tx+b) f(i)(x)=σ(wTx+b),激活函数有很多种可以选择,我们在后面会介绍
  • 最开始是输入层,最终是输出层,中间的每一层成为隐藏层(因为训练数据并没有给出隐藏层的输入输出是多少,所以成为“隐藏”,但你是确切知道训练数据的每个输入对应什么输出的)

现在你可能会疑惑,包括为什么要这样定义每一层的映射,包括整个神经网络具体的函数递推式是怎样的,现在我希望从形象的角度阐述这个数学关系:
随便找的图
上图给出了一个神经网络的拓扑结构,我们首先考虑没有激活函数的情形,先看input层到hidden1层,可以发现每一层的每一个结点均由上一层的每一个结点作用(其实并不是所有的层都是这样,但这时最常见的一种层,叫做全连接层,在TensorFlow中成为Dense层),我们不妨设input的四个节点可以写成一个向量 x x x,hidden1层的三个结点的值分别是 h 1 h_1 h1, h 2 h_2 h2, h 3 h_3 h3,那么有:
x = [ x 1 , x 2 , x 3 , x 4 ] T h i = w i T x + b i (1.2.2) x=[x_1,x_2,x_3,x_4]^T \\ h_i=w^T_ix+b_i \tag{1.2.2} x=[x1,x2,x3,x4]Thi=wiTx+bi(1.2.2)
如此以来每一层到下一层结点的映射可以写成向量运算,层与层的关系可以写成矩阵运算,这实在是太酷了。在有些博客中你会发现示例图把每一个结点上都加了一个w,称作这个节点的权重,我个人不喜欢这个称呼,因为他就是为了表示一种线性映射而已。为什么用线性映射?没错,因为便于计算,足够简单,关系明确。
此时你应该就发现问题了,当每一层的映射都是线性映射的时候,显然输出关于输入也是线性的,依然无法表示非线性映射,因此我们对每一层的输出结果增加一个非线性的激活函数,变成这样:
h i = σ ( w i T x + b i ) (1.2.3) h_i=\sigma(w_i^Tx+b_i) \tag{1.2.3} hi=σ(wiTx+bi)(1.2.3)
激活函数有很多可以选择,例如很常见的sigmoid函数,后面会详细介绍。
线性函数嵌套非线性激活函数,再不断复合真的能够近似所有函数吗? 这是我当时最真实的疑惑。
前人给出了解答,万能近似定理(universal approximation theorem)(Hornik et al.,1989;Cybenko&#x

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值