【Google 机器学习笔记】九、神经网络

【Google 机器学习笔记】

九、神经网络

  对于复杂的非线性规律,若使用特征组合常常难以准确地进行预测,此时,常使用人工神经网络(Artificial Neural Network, 简称ANN,神经网络) 进行建模。


神经网络简介

  神经网络是对人脑自然神经网络 若干基本特性抽象和模拟,由大量神经元组成的非线性动力系统。

  • 人工神经元模型
    【Google 机器学习笔记】九、神经网络_第1张图片
    (图片来源网络,侵删)

       x 1 , x 2 , ⋯   , x n x_1,x_2,\cdots,x_n x1,x2,,xn 表示输入值。
       ω 1 , ω 2 , ⋯   , ω n \omega_1,\omega_2,\cdots,\omega_n ω1,ω2,,ωn 表示各个输入值权重。
       θ , f \theta ,f θ,f 表示激活函数(非线性转换)。
  • 激活函数【Activation function】: 一种函数,用于对上一层的所有输入求加权和,然后生成一个输出值(通常为非线性值),并将其传递给下一层。
      常见的激活函数
    • S型激活函数: F ( x ) = 1 1 + e − x F(x)=\frac1{1+e^{-x}} F(x)=1+ex1
      【Google 机器学习笔记】九、神经网络_第2张图片
    • 修正线性单元激活函数(简称为 ReLU): F ( x ) = m a x ( 0 , x ) F(x)=max(0,x) F(x)=max(0,x)

      【Google 机器学习笔记】九、神经网络_第3张图片

实际上,所有数学函数均可作为激活函数。假设 σ \sigma σ 表示我们的激活函数(ReLU、S 型函数等等)。因此,网络中节点的值由以下公式指定: σ ( ω x + b ) \sigma(\omega x+b) σ(ωx+b)

  在这之前,我们需要手工搭建线性模型或分类模型,虽然预测效果很好,但常常只能分析一些简单的数据,而通过 ANN神经网络训练算法 ,我们可以不需要将精力过多花费在构建模型上,而且还能分析复杂的数据。


训练神经网络
  • 反向传播算法【Backpropagation】:一种神经网络训练算法。在神经网络上执行梯度下降法的主要算法。该算法会先按前向传播方式计算(并缓存)每个节点的输出值,然后再按反向传播遍历图的方式计算损失函数值相对于每个参数的偏导数
      反向传播算法直观说明(前方高数警告!)
      由于TensorFlow 可自动处理反向传播算法,可以不需要过深入研究。(但推荐还是深入了解比较好)
  • 反向传播算法注意事项
    • NaN陷阱: 模型中的一个数字在训练期间变成 NaN,这会导致模型中的很多或所有其他数字最终也会变成 NaN。(当数字超过双精度最大范围时就会出现 NaN)
    • 梯度消失:较低层(更接近输入)的梯度可能会变得非常小。在深度网络中,计算这些梯度时,可能涉及许多小项的乘积。
        ReLU 激活函数有助于防止梯度消失。
    • 梯度爆炸:如果网络中的权重过大,则较低层的梯度会涉及许多大项的乘积。在这种情况下,梯度就会爆炸:梯度过大导致难以收敛。
        批标准化可以降低学习速率,因而有助于防止梯度爆炸。
    • ReLU 单元消失:一旦 ReLU 单元的加权和低于 0,ReLU 单元就可能会停滞。它会输出对网络输出没有任何贡献的 0 激活,而梯度在反向传播算法期间将无法再从中流过。由于梯度的来源被切断,ReLU 的输入可能无法作出足够的改变来使加权和恢复到 0 以上。
        降低学习速率有助于防止 ReLU 单元消失。
    • 丢弃正则化:这是称为丢弃的另一种形式的正则化,可用于神经网络。其工作原理是,在梯度下降法的每一步中随机丢弃一些网络单元。丢弃得越多,正则化效果就越强:
        0.0 = 无丢弃正则化。
        1.0 = 丢弃所有内容。模型学不到任何规律。
        0.0 和 1.0 之间的值更有用。

        总而言之,构建神经网络模型时,注意要先预处理输入数据,注意学习速率不能过小,也不能过大,必要时添加一些神经层(一组神经元),丢弃正则化可以帮助降低神经模型复杂度,可以适当配置。

多类别神经网络

  对于简单的非二元分类问题,可以用分类模型,创建多个 二元分类器:
    1. 这是 A 吗?是/不是
    2. 这是 B 吗?是/不是
     ⋯ \cdots
     n n n. 这是 N 吗?是/不是
  使用分类模型,当 n → ∞ n \to \infin n 时,效率会变得非常低

  • Softmax:一种函数,可提供多类别分类模型中每个可能类别的概率。这些概率的总和正好为 1.0。
      在神经网络中,Softmax 层是紧挨着输出层之前的神经网络层。Softmax 层必须和输出层拥有一样的节点数
    【Google 机器学习笔记】九、神经网络_第4张图片
    (所有分对数总和为1.0)

Softmax 方程式如下所示: p ( y = j ∣ x ) = e ( w j T x + b j ) ∑ k ∈ K e ( w k T x + b k ) p(y=j|x)=\frac{e^{(w^T_jx+b_j)}}{\sum_{k\in K}e^{(w^T_kx+b_k)}} p(y=jx)=kKe(wkTx+bk)e(wjTx+bj)
请注意,此公式本质上是将逻辑回归公式延伸到了多类别。

  • Softmax 变体
    • 完整 Softmax 是我们一直以来讨论的 Softmax;也就是说,Softmax 针对每个可能的类别计算概率。
    • 候选采样 指 Softmax 针对所有正类别标签计算概率,但仅针对负类别标签的随机样本计算概率。例如,如果我们想要确定某个输入图片是小猎犬还是寻血猎犬图片,则不必针对每个非狗狗样本提供概率。

  类别数量较少时,完整 Softmax 代价很小,但随着类别数量的增加,它的代价会变得极其高昂。候选采样 可以提高处理具有大量类别的问题的效率。
  注意!Softmax 一次只能处理一个分类。例如,加入一张照片有不同种类的水果,只能改成多个逻辑回归。


Embedding(中文翻译:嵌套)

  Embedding 是一种相对低维的空间,可以将高维矢量映射到这种低维空间里(可以类比 Hash 算法)。通过使用 embedding,可以让在大型输入(比如代表字词的稀疏矢量)上进行机器学习变得更加容易。
  在理想情况下,embedding 可以 将语义上相似的不同输入 映射到 嵌套空间里的邻近处 ,以此来捕获输入的语义。一个模型学习到的 embedding ,也可以被其他模型重用
  获取嵌套的方式:
    1. 标准降维技术
    2. word2ver


参考文献

  [1]李晶,栾爽,尤明慧.人工神经网络原理简介[J].现代教育科学:高教研究,2010(S1):98-99.
  [2]孙吉辉,孟祥锋.人工神经网络简介[J].中学课程资源,2008(10):159.


上一篇:【Google 机器学习笔记】八、分类模型
下一篇:【Google 机器学习笔记】十、TensorFlow 2.1 实战(一)简单的线性回归预测

你可能感兴趣的:(Google,机器学习笔记,神经网络,机器学习)