美文网首页
深度学习是什么?先讲讲VC维

深度学习是什么?先讲讲VC维

作者: 22790fe4fb44 | 来源:发表于2018-02-25 18:02 被阅读0次

学习效率最高的三个地方:高铁,卫生间。这是高铁上3个小时的思考,记录一下。

深度学习,这个名字充满神秘感,其实它的本质很好理解,它是一个数学工具,用来拟合某一个函数,这个函数具有很大的VC维,可以对某一个数据集进行很好的分类,同时它又不过拟合,因此可以对其他数据集进行分类预测。

其他的概念都很好理解,VC维是什么?

数学定义我也看不懂,用大白话来说就是:

H的VC维表示为VC(H) ,指能够被H分散的最大集合的大小。若H能分散任意大小的集合,那么VC(H)为无穷大。

这里需要理解的是,最大集合的大小,我们以二维线性分类器举例说明为什么其VC维是3,而不能分散4个样本的集合这个最简单的场景来讨论。

import matplotlib.pyplot as plt
import numpy as np
dots_x = [1, 2]
dots_y = [2, 1]
cross_x = [1]
cross_y = [1]
plt.xlim(0.0, 4)
plt.ylim(0.0, 4)
plt.plot(dots_x, dots_y, 'o')
plt.plot(cross_x, cross_y, 'x')
x = [0, 2, 2.5]
y = [2.5, 0.5, 0]
plt.plot(x, y)
[<matplotlib.lines.Line2D at 0x175fd7dcda0>]
image.png
dots_x = [1, 1]
dots_y = [1, 2]
cross_x = [2]
cross_y = [1]
plt.xlim(0.0, 4)
plt.ylim(0.0, 4)
plt.plot(dots_x, dots_y, 'o')
plt.plot(cross_x, cross_y, 'x')
x = [1.5, 1.5, 1.5]
y = [0, 2, 4]
plt.plot(x, y)
[<matplotlib.lines.Line2D at 0x175fd704cc0>]
image.png
dots_x = [1, 2]
dots_y = [1, 1]
cross_x = [1]
cross_y = [2]
plt.xlim(0.0, 4)
plt.ylim(0.0, 4)
plt.plot(dots_x, dots_y, 'o')
plt.plot(cross_x, cross_y, 'x')
x = [0, 2, 4]
y = [1.5, 1.5, 1.5]
plt.plot(x, y)
[<matplotlib.lines.Line2D at 0x175fd631a90>]
image.png
dots_x = [1, 1, 2]
dots_y = [1, 2, 1]
plt.xlim(0.0, 4)
plt.ylim(0.0, 4)
plt.plot(dots_x, dots_y, 'o')
x = [2.5, 2.5, 2.5]
y = [0, 2, 4]
plt.plot(x, y)
[<matplotlib.lines.Line2D at 0x175fc299240>]
image.png

虽然存在着下面的分布,导致无法使用单一线性函数对3个数据点进行分类,但是并不影响单一线性函数能够分类的最大集合的大小是3。

dots_x = [0.5, 1.5]
dots_y = [1, 3]
cross_x = [1]
cross_y = [2]
plt.xlim(0.0, 4)
plt.ylim(0.0, 4)
plt.plot(dots_x, dots_y, 'o')
plt.plot(cross_x, cross_y, 'x')
[<matplotlib.lines.Line2D at 0x175fc4fd908>]
image.png

相对的,你可以想象一下,对于任意的4个数据点,无法构造出任何一种分布,使得单一线性函数可以对其进行分类。所以单一线性函数的VC维 < 4。

dots_x = [1, 2]
dots_y = [1, 2]
cross_x = [2, 1]
cross_y = [1, 2]
plt.xlim(0.0, 4)
plt.ylim(0.0, 4)
plt.plot(dots_x, dots_y, 'o')
plt.plot(cross_x, cross_y, 'x')
[<matplotlib.lines.Line2D at 0x175fd84cac8>]
image.png

而深度学习训练出来的函数,它理论上的VC维是无穷大的,所以它甚至可以对下面的数据集进行分类。

dots_x = np.random.uniform(0, 100, size=100)
dots_y = np.random.uniform(0, 100, size=100)
cross_x = np.random.uniform(0, 100, size=100)
cross_y = np.random.uniform(0, 100, size=100)
plt.xlim(0.0, 105)
plt.ylim(0.0, 105)
plt.plot(dots_x, dots_y, 'o')
plt.plot(cross_x, cross_y, 'x')
[<matplotlib.lines.Line2D at 0x175fda6ed30>]
image.png

这就是深度学习在数学上的定义。

相关文章

  • 深度学习是什么?先讲讲VC维

    学习效率最高的三个地方:高铁,卫生间。这是高铁上3个小时的思考,记录一下。 深度学习,这个名字充满神秘感,其实它的...

  • SVM概念

    SVM,基于VC维理论和结构化风险最小化原理。 何为VC维,何为结构化风险? 首先,应该知道任何机器学习模型是对真...

  • 5. VC维

    定义 计算感知器的VC维 VC维的详细解释 将理论泛化为简单形式 定义 假设集合H的VC维记为:dVC(H) ,是...

  • VC维

    参考资料 VC维的来龙去脉

  • VC维

    做一个大概的自我理解的记录。 可以理解为函数的弯曲程度也可以理解为模型的极限能力。例如一个平面上有三个点(只要他们...

  • 人工智能深度学习

    深度学习、深度学习开源平台、深度学习框架这三个是什么关系?

  • Halcon 18.11对应GPU版本

    在使用Halcon 18.11时,使用VC2015调用深度学习模型进行Inference,发生错误,无法使用GPU...

  • breakPoint&growth function&VC Bo

    内容 一、学习VC维前概念介绍 二、breakPoint对growth function的限制 三、边界函数Bou...

  • 机器学习基石笔记:07 The VC Dimension

    一、VC维 当,时,易得:被给bound住。 VC维:最小断点值或能shatter的最大值。这里的指的是存在个输入...

  • 使用Tensorflow实现目标检测(一、基础术语篇)

    1、机器学习与深度学习的区别2、深度学习算法是什么,怎么使用深度学习算法3、数据模型是什么4、什么叫目标检测5、t...

网友评论

      本文标题:深度学习是什么?先讲讲VC维

      本文链接:https://www.haomeiwen.com/subject/tclntftx.html