• 动手学深度学习 | 深度卷积神经网络AlexNet | 22


    AlexNet

    AlexNet从2012年开始到今天,真正的引爆了深度学习的热潮。

    2000年之前,最火的机器学习方法应该是核方法。

    特征提取 & 选择核函数来计算相关性 & 凸优化问题 & 漂亮的定理。

    使用核方法,可以变换这个空间,将这个空间拉成我们想要的样子,通过核函数计算之后就会成为一个凸优化问题。因为是凸优化,所以有比较好的数学定理。核方法最大的特色就是有一套完整的数学定理,这也是最优美的地方。

    当然现在SVM还是被很广泛使用,因为它不需要调参(应该说SVM对调参不那么敏感),通常大家闭着眼睛用SVM一点问题也没有。

    10年前,机器学习最重要的步骤是特征工程,也就是如何进行特征的抽取。

    在深度学习之前,大家不会太关心使用的机器学习是什么(基本默认是SVM),大家关心的都是如何进行特征的抽取。

    看对比,数据的增长大概是1000倍,计算的增长是10000倍,也就是其实现在计算的增长速度是大于数据的增长速度的。

    不同的数据大小,计算能力也对应不同机器学习方法的发展。

    数据是一个非常重要的事情,这次深度学习能够起来,首先数据起到非常重要的作用。

    因为有足够的大的数据集,所以允许更深的神经网络来进行特征的抽取。

    AlexNet本质就是一个更深更大的LeNet,它和LeNet没有本质的差别。

    主要改进:dropout & ReLU & MaxPooling

    MaxPooling 让输出更大,也就是让梯度更大,更加好的进行训练。

    dropout控制了模型的大小。

    ReLU是更好的,计算的更快的激活函数。

    要清楚,传统的机器学习,对数学的要求,特征提取(要求对计算机视觉、时序数据)都有一个比较深的理解,而深度学习只要能够搭建模型即可。

    深度学习可以看作是一个端到端的输出,也就是原始的数据输入到最终的答案输出,其实中间可以看作是一个黑盒。

    AlexNet其实就是一个更深、更大的LeNet。

    AlexNet的stride=4,其实也是受限于当时的GPU计算性能,当初的GPU显存也只有2G,计算能力也没有现在那么好。

    AlexNet的输出通道相对于LeNet的输出通道更多,也就意味着识别了更多的模式。

    这里非常重要的是进行了数据增强,就是它觉得1,2M张图片还不够多,对图片进行随机截取,亮度的调节,调节图片的色温等。

    卷积网络对图片比较敏感,那么如何让卷积网络不敏感呢?那么就是给网络输入很多“奇奇怪怪”的图片,就是在训练的时候模拟这种可能出现的各种变化。神经网络最擅长的就是“记住”数据,那么给同一张图片的不同形式,其实是可以降低网络对这张图片的“记忆能力”的。

    后面会有一次课专门讲解数据增强,因为这在计算机视觉实在是太重要了。

    这里是AlexNet和LeNet的复杂度对比。

    代码

    QA

    1. 如何估算网络说需要的训练时间?

    如果是CV的话,可以使用网络先在一个小的数据集上跑,然后等比例进行换算,大概就是估算出一个训练时间。

    1. 在其他学习资料中,讲到AlexNet会提及Local Response Normalization,但没太看懂。

    LRN其实后面证明是没有什么作用的。

    基本上整个神经网络,大家就是去看谁有用,谁没用。发现者一开始可能没有多想,可能觉得好用就这样了,后面的人会去看每个东西到底有没有用,这是这也是 AB Test(消融实验)。

    1. 为什么AlexNet最后要有两个相同的全连接层Dense4096,一个行吗?

    一个还真不行,沐神说他之前试过,一个效果会差,两个4096的全连接是非常厉害的一个模型。

    可以理解为全面的卷积特征抽取的不够好,不够深,所以后面需要两个大的dense来补。

    1. 没太明白为什么LeNet不属于深度卷积神经网络?

    这是一个很意思的问题,那帮搞深度学习的人,其实最厉害的不是调参,而是包装。

    其实15年之前基本认为是没有新东西的,只是把原来的这些东西做深,换新名字。

    1. 网络要求输入的size是固定的,实际使用的时候图片不一定是要求的size,如果强行resize层网络要求的size, 会不会最后的效果要差?

    其实resize也是会保证高宽比的,所以其实效果不会那么变差,不用太担心这个问题。

  • 相关阅读:
    idea不显示gradle的视图解决办法
    curl: (51) Unable to communicate securely with peer: requested domain name does not match the server's certificate.报错
    记录使用yum安装nginx之后的目录问题
    已安装nginx动态添加模块
    nginx的http_sub_module模块使用之替换字符串
    利用referer属性,记录百度搜索跳转参数
    Springboot中Aspect实现切面(以记录日志为例)
    vue_axios请求封装、异常拦截统一处理
    使用jetty工具包处理url参数成map
    利用Java自带的MD5加密
  • 原文地址:https://www.cnblogs.com/Rowry/p/15341564.html
Copyright © 2020-2023  润新知