全面直观认识深度神经网络

作者:石文华

编辑:赵一帆

01

深度学习的精准定义

一类通过多层非线性变换对高复杂性数据建模算法的集合。它的两个非常重要的特征是多层性和非线性。俗称多层非线性变换。所以深度学习要去线性化。

为什么呢?因为线性模型存在局限性,任意线性模型得到组合仍然还是线性模型。所以只要通过线性变换,任意层的全连接神经网络和单层神经网络模型的表达能力没有任何区别,而且他们都是线性模型,线性模型解决问题的能力是有限的。

02

激活函数实现去线性化

每个神经元(也就是神经网络上的节点)的输出通过一个非线性函数,那么整个神经网络的模型也就不再是线性的了,这个非线性函数就是激活函数。

tensorflow常见的激活函数有:

tf.nn.relu
tf.sigmoid
tf.tanh

tensorflow 也支持自定义激活函数。

带激活函数的前向传播算法:

a = tf.nn.relu(tf.matmul(x, w1) + biases1)
y = tf.nn.relu(tf.matmul(a, w2) + biases2)

03

单层神经网络解决不了的问题

事实上,一个单极网络可以将平面划分为两部分,用多个单极网络组合在一起,并用其中的一个区综合其他单极网络的结果,就可以构造出一个两极神经网络。

04

组合特征提取

深度神经网络具有组合特征提取的功能,这个特征对于不易提取特征向量的问题(比如图片识别和语音识别等)有很大的帮助。隐藏层的主要作用也就是隐藏层节点可以被认为代表了从输入特征中抽取更高纬度的特征。

05

损失函数

损失函数用于评价模型的效果。分类问题使用最广泛的损失函数是交叉熵。

交叉熵:

刻画两个概率分布的距离,也就是说交叉熵越小两个概率分布越接近。

交叉熵的数学定义是:

其用来衡量在给定真实分布下,使用非真实分布所指定的策略消除系统不确定性所需付出的努力的大小。

神经网络的输出不一定是概率模型,可以使用Softmat回归将神经网络的前向传播的结果变成概率分布。

代码实例:

cross_entropy = -tf.reduce_mean(
        y_ * tf.log(tf.clip_by_value(y, 1e-10, 1.0)

但是交叉熵一般会和softmax回归一起使用,所以会使用tf.nn.softm

cross_entropy=
    tf.nn.softmax_cross_entropy_with_logits(y,y_)

y代表原始神经网络的输出结果,而y_给出了标准答案。

在只有一个正确答案的分类问题中,Tensorflow提供了函数:

tf.nn.sparse_softmax_cross_entropy_with_logits

来加快计算过程。

回归问题常用的损失函数是均方误差。均方误差是指各数据偏离真实值的距离平方和的平均数。

06

神经网络的优化算法

梯度下降算法主要用于优化单个参数的取值,而反向传播算法则给出了一个高效的方式在所有参数上使用梯度下降算法,从而使神经网络模型在训练数据集上的损失函数尽可能的小。

反向传播算法是训练神经网络的核心算法。它可以根据定义好的损失函数优化神经网络中参数的取值,从而使神经网络模型在训练数据集上的损失函数达到一个较小的值。

神经网络模型中参数的优化过程直接决定了模型的质量。

07

什么是梯度和学习率

梯度:

由导数的概念,对点x0的导数反应了函数在点x0出的瞬时变化速率,或者叫做点x0出的斜度。推广到多维函数中,就有了梯度的概念,梯度是一个向量的组合,反应了多维图形中变化速率最快的反向。

学习率:

每次参数移动的幅度。

08

神经网络的优化过程

神经网络的优化过程分为两个阶段:

1、先通过神经网络的前向传播算法计算得到预测值,并将预测值和真实值做对比得出两者之间的差距。

2、通过反向传播算法计算损失函数对每个参数的梯度,再根据梯度和学习率使用梯度下降算法更新每一个参数。

梯度下降算法并不能保证被优化的函数达到全局最优解,可能只得到局部最优解,只有损失函数是凸函数才能保证达到全局最优解。

结合梯度下降算法和随机梯度下降算法的优缺点,这里采用一小部分数据(batch)来进行梯度下降,所以神经网络的训练过程大致如下:

09

学习率的设置

在训练神经网络时,需要设置学习率控制参数更新的速度,学习率决定参数每次更新的幅度,如果幅度过大,可能导致参数在极优值的两侧来回移动,如果幅度过小,虽然能保证收敛性,但是会大大降低优化速度。所以学习率不能过大也不能过小。

指数衰减法设置学习率:

tf.train.exponential_decay()

实现了指数衰减学习率,通过这个函数,可以先使用较大的学习率快速得到一个比较优的解,然后随着迭代的继续逐步减小学习率,使得模型训练后期更加稳定。实例代码:

上述代码设定了初始的学习率为0.1,因为指定了staircase=True,所以每次训练100轮后学习率乘以0.96。

10

过拟合问题

举几个例子:

1、过拟合就是你想多了,欠拟合就是你太天真。

2、中国著名计算机科学家,中国机器学习之父,被业内尊称为中国图灵的鲁迅先生曾经描述过一个名为「中国人」的机器学习算法,在图像识别上严重的过拟合问题。其原文如下:

一见短袖子,立刻想到白臂膊,立刻想到全裸体,立刻想到生殖器,立刻想到性交,立刻想到杂交,立刻想到私生子。中国人的想像惟在这一层能够如此跃进。《而已集·小杂感》

3、遇到几个渣男就得出结论“男人没一个好东西”。

4、举个物理学上的段子(转自他人博文),费米的话就是一个非常直观的理解:

1953年春天,戴森和自己的学生利用赝标介子理论计算了介子与质子的散射截面,得到了与费米的实验观测值十分相符的结果。然而该理论需要4个自由参数,费米很不屑,讲了一句日后很著名的话:“我记得我的朋友约翰·冯·诺依曼(John von Neumann)曾经说过,用四个参数我可以拟合出一头大象,而用五个参数我可以让它的鼻子摆动。”

有趣的是,2010年6月,尤根·迈尔(Jurgen Mayer)等三位德国分子生物学家在《美国物理学期刊》(American Journal of Physics)发表了题为“用四个复参数画出一头大象”的论文。他们发现,利用四个复参数可以大致勾勒出大象的形态,再引入一个复参数则可以让大象的鼻子摆动起来。

5、直观图:

过拟合:

当一个模型过为复杂之后,它可以很好的“记忆”每一个训练集上的随机噪声的部分而忘记要去“学习”训练数据中通用的趋势。

过拟合主要有两个原因造成:数据太少+模型太复杂

奥斯姆剃刀:

这个原理称为“如无必要,勿增实体”,即“简单有效原理”。正如他在《箴言书注》2卷15题说“切勿浪费较多东西去做,用较少的东西,同样可以做好的事情。”

解决过拟合问题:

增加数据,减少特征(特征提取),交叉验证,正则化。

正则化:

避免过拟合问题最常用的方法,它的思想是在损失函数中加入刻画模型复杂度的指标。

一般来说模型的复杂度由权重w决定,刻画模型复杂度的函数R(w)有两种,L1正则化和L2正则化。

L1:R(w)=∑∣Wi∣;L2:R(w)=∑(∣Wi∣*∣Wi∣)

L1和L2正则化的差别很大:

L1正则化会让参数变得更加稀疏,达到类似特征提取的功能,以及不可导,但是L2则相反。

11

滑动平均模型

在采用随机梯度下降算法训练神经网络时,使用 tf.train.ExponentialMovingAverage 滑动平均操作的意义在于提高模型在测试数据上的健壮性(robustness)。

tf.train.ExponentialMovingAverage需要提供一个衰减率(decay)。该衰减率用于控制模型更新的速度。该衰减率用于控制模型更新的速度。

ExponentialMovingAverage 对每一个(待更新训练学习的)变量(variable)都会维护一个影子变量(shadow variable)。影子变量的初始值就是这个变量的初始值。

shadow_variable=

decay×shadow_variable+(1−decay)×variable

由上述公式可知, decay 控制着模型更新的速度,越大越趋于稳定。实际运用中,decay 一般会设置为十分接近 1 的常数(0.99或0.999)。所有需要计算滑动平均的变量必须是实数型。

代码示例:


原文发布于微信公众号 - 机器学习算法全栈工程师(Jeemy110)

原文发表时间:2017-10-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Fish

Andrew Ng的机器学习课程概述(二)

第七章 过拟合(over-fitting) 这一章主要就是处理过拟合问题。 首先介绍如何选择参数: 选择尽可能少的特征 自动选择模型(这是啥?) 正则化 ...

2145
来自专栏AI科技评论

裴健团队KDD新作:革命性的新方法,准确、一致地解释深度神经网络

AI 科技评论按:你有没有想过,深度神经网络是依据什么来准确识别有猫的图片的?随着深度神经网络在金融、医疗及自动驾驶等领域的广泛应用,深度神经网络无法明确解释...

1413
来自专栏大数据文摘

斯坦福CS231N深度学习与计算机视觉第七弹:神经网络数据预处理,正则化与损失函数

2122
来自专栏计算机视觉战队

CVPR 2018文章解读——腾讯AI Lab

该主要提出了一种全新的自动图像标注的生成式模型,名为多样性和独特性图像标注(D2IA)。受到人类标注集成的启发,D2IA将产生语义相关,独特且多样性的标签。

752
来自专栏AI科技评论

干货 | 深度学习时代的目标检测算法

AI 科技评论按:本文作者 Ronald,首发于作者的知乎专栏「炼丹师备忘录」,AI 科技评论获其授权转发。 目前目标检测领域的深度学习方法主要分为两类:two...

6297
来自专栏SIGAI学习与实践平台

目标检测算法中检测框合并策略技术综述

物体检测(Object Detection)的任务是找出图像或视频中的感兴趣目标,同时实现输出检测目标的位置和类别,是机器视觉领域的核心问题之一,学术界已有将近...

7433
来自专栏目标检测和深度学习

综述:深度学习时代的目标检测算法

来源:https://zhuanlan.zhihu.com/p/33277354 目前目标检测领域的深度学习方法主要分为两类:two stage的目标检测算法;...

4265
来自专栏ATYUN订阅号

27个问题测试你对逻辑回归的理解

逻辑回归可能是最常用的解决所有分类问题的算法。这里有27个问题专门测试你对逻辑回归的理解程度。 ? 1)判断对错:逻辑回归是一种有监督的机器学习算法吗? A)是...

5106
来自专栏企鹅号快讯

机器学习之白话adaboost元算法

阅读本文大约需要5分钟 作为(曾)被认为两大最好的监督分类算法之一的adaboost元算法(另一个为前几节介绍过的SVM算法),该算法以其简单的思想解决复杂的分...

2036
来自专栏SIGAI学习与实践平台

目标检测算法中检测框合并策略技术综述

物体检测(Object Detection)的任务是找出图像或视频中的感兴趣目标,同时实现输出检测目标的位置和类别,是机器视觉领域的核心问题之一,学术界已有将近...

1414

扫码关注云+社区

领取腾讯云代金券