TensorFlow的深度学习文章->_->先导篇

作者:陈劲灿 编辑日期: 2017年10月13日 15:49 阅读量: 3417 分类: ai
感知器以及Sigmoid神经元等基础知识
感知器是一个通过加权凭据来进行决策的设备

感知器

  1. 上图中感知器具有三个输入x1, x2, x3。
  2. 每一个输入都包含一个权重w1, w2, w3。
  3. 这个感知器通过计算输入以及权重的加权和并且与某一个阈值进行比较,大于输出1,小于输出0。感知器输出结果
  4. 阈值为threshold, 使用偏移b = -threshold 来代替阈值。则感知器的表达式为使用偏移代替阈值的感知器表达式
Sigmoid神经元与感知器的区别是它的输入可以是0-1的任何实数(如0.51),而感知器只能为0 或者 1

Sigmoid是一个非线性的激活函数,它的图示如下

感知器

  1. Sigmoid的输出不是0或者1 而是神经元输出值 (其中σ是sigmoid函数, 并且函数定义为sigmoid函数表达式)
  2. 神经元通过输入xi 以及权重wi 的加权可以得到Sigmoid神经元的输出为将w*x +b 替换为加权和后的神经元输出
  3. 神经元可以输出0到1之间的实数。

下图为Sigmoid函数的绘制形状:

Sigmoid绘制形状

神经网络体系

神经网络体系

  1. 上图中最左边的一层为输入层。
  2. 上图中最右边的一层为输出层。
  3. 其他的层为隐藏层,它表示不是输入也不是输出层。
梯度下降学习算法

前置定义:

  1. x表示输入
  2. y=y(x) 表示为输出
  3. 对于一个手写数字识别的神经网络来说他的输出可以为手写数字识别案例

我们需要做的是一个能让我们找到合适的权重和偏移的算法,以便网络输出y(x)能够几乎满足所有训练输入x

通过定义一个代价函数(又或者叫损失或者目标函数)来量化这个匹配目标:

  1. w为网络中的所有权重。
  2. b为所有偏移。
  3. n为训练输入的总数。
  4. a为输入为x时的输出向量。
  5. 符号∥v∥只是表示向量v的长度。称C为二次型代价函数;它有时候也叫做均方误差或MSE

当对于所有训练数据x,y(x)和输出a近似相等时候,C(w,b)会变得很小,例如,C(w,b)≈0。因此如果我们的训练算法能找到合理的权重和偏移使得C(w,b)≈0,这将是一个很好的算法。 这就是我们的目标!!!!!!!!!!

通过使用一种叫梯度下降的技术来解决最小化问题. 先想像C(v)此二次型代价函数只有两个变量v1, v2 其绘制的图形如下:

二次代价型函数的绘制图形

  1. 先想象一个小球沿v1移动一个小量Δv1, 沿v2移动一个小量Δv2。通过微分法则可以知道C的改变值为通过微分法则获取的C的改变值,我们将设法选择 Δv1 和 Δv2 以确保 ΔC 是负数,换句话说,我们将通过选择 Δv1 和 Δv2 以确保小球是向着谷底的方向滚动的
  2. 为了弄清楚该怎样选择 Δv1 和 Δv2,定义一个定义的v的改变值
  3. 定义一个C的“梯度”为,C的偏导数构成的矢量,梯度的矢量为∇C, 梯度的矢量
  4. 使用Δv 和梯度 ∇C 来重写 ΔC 的表达式,为使用v的改变量以及梯度来定义C的改变值, ∇C 将 v 的改变和 C 的改变联系在了一起,
  5. 通过4中的方程让我们找到一种 Δv 的选择方法可以确保 ΔC 是负的。公式包含学习率的计算C的改变值的公式(η 是一个正的小参数,被称为“学习率”(learning rate))
  6. 通过上面的步骤使用公式包含学习率的计算C的改变值的公式来计算Δv 的值,然后将小球的位置 v 移动一小步, 我们使用这一规则再将小球移动一小步。如果我们不断这样做,C 将不断减小,符合期望的话,C 将一直减小到全局最小值。
  7. 梯度下降算法(gradient descent algorithm)是通过不断计算梯度∇C,然后向着梯度相反的方向小步移动的方式让小球不断顺着坡面滑向谷底。

使用梯度下降算法让小球沿最佳的方式滚动到谷底


上一篇
下一篇
关于数据结构的知识整理
TensorFlow的深度学习文章->_->Tensorflow windows环境搭建