blog2

深度学习和 pytorch 基础

前言

本博客为OUC2022秋季软件工程第二周作业

【第一部分】视频学习心得及问题总结

  • 杨淋云

    第一堂课是人工智能和机器学习概论。当下各国在人工智能领域展开军备竞赛,人才缺口巨大,急需人工智能高等教育。我知道了人工智能是感知、认知、决策、执行的人工程序或系统。还明白了人工智能的三个层面,而我们现在还停留在感知智能,即能听会说,能看会认。了解了传统的机器学习的三步,模型:问题建模,确定假设空间。策略:确认目标函数。算法:求解模型参数。最后老师从数据标记,数据分布,建模对象三方面对模型进行了分类。

    第二堂课是深度学习概述。首先比较了传统的机器学习和深度学习,让我明白了前者的落后性。然后我了解了深度学习的发展史:从感知器开始,发展神经网络结构,然后是ImageNet的冲击,流行机器学习模型的演变,最后播放了一段Google无人自行车的视频。深度学习三个助推器中只有算法跟学术界有关。工程低门槛,科技高门槛。

    第三堂课是神经网络基础。深度学习应用于视觉和语言,但是还有六点“不能”。解释性有三个层次:找得到,看得懂,留得下。从生物神经元受到启发,前人提出了M-P神经元模型。由单层感知器发展到多层感知器,还理解了万有逼近定理。

    第四堂课继续神经网络基础。多层神经网络可以看成复合的非线性多元函数。自编码器没有额外的监督信息。还对比了自编码器和受限玻尔兹曼机,最后解决了梯度消失的问题。但是其中有大量的函数模型,我感觉很抽象难懂,对我的理解造成了很大的障碍。

  • 王匀卓

    • 绪论

      在第一个视频中,我了解了人工智能的历史,人工智能这个词,从初中就一直听到,在人工智能领域,我们大众听的最多的就是alpha go击败围棋世界冠军,人工智能这个技术还包括翻译软件、自动驾驶。人工智能经历了三个层面,第一个层面是计算智能,这是通过穷举的一种方法。第二个层面是感知智能,类似于人的听觉、视觉、触觉,我认为自动驾驶领域应该就是感知智能。第三个层面是认知智能,机器将会像人一样思考,有人一样的意识和观念。

    • 神经网络

      在这个部分中,我了解到了深度学习的一些“缺陷”:

      • 算法输出不稳定,容易被攻击

        视频中给出了一个例子,有两张人眼看着一模一样的大象图片,只是在图片中加入了一些“噪声”,机器识别的结 果却完全不一样(一张识别的是大象,另一张识别的是考拉)

      • 模型复杂度高,难以纠错和调试

      • 模型层级复合程度高,参数不透明

      • 端到训练方式对数据依赖性强,模型增量性差

      • 专注直观感知类问题,对开放性推理问题无能为力

      • 人类知识无法有效的引入进行监督,机器偏见难以避免

      构建什么样的神经网络更好?

      • 瘦高的网络比矮胖的网络更好(在处理数据量一样的不同层次网络时,多层的网络错误率更低)

      但是多层神经网络会引发梯度消失(训练失败)

      • 梯度是一个向量,方向是最大方向导数的方向,模是方向导数的最大值

      • 在多层神经网络中,影响因素主要是权值和激活函数的偏导数

      • 是采用了不合适的损失函数,比如sigmoid也会出现梯度消失

      • 神经网络的第二次衰落与梯度消失有关

      梯度消失的解决方法:

      通过逐层预训练,让网络有一个很好的初始值,然后进行微调。

    • 问题
      没有很听明白自编码器和受限玻耳兹曼机

  • 叶鹏

    通过视频的学习,我首先了解了人工智能的三个层面:计算智能、感知智能和认知智能。其次,我也了解了机器学习的步骤:问题建模、确定目标函数、求解模型参数三步,总结来说就是模型、策略、算法三方面。深度学习相比传统机器学习效果好,效率高,但深度学习存在6个“不能”,需要根据不同的缺点进行对症下药,让机器越学与聪明,避免对牛弹琴。通过继续学习,我也知道了深度学习相比于传统机器学习的一大明显优势:学习时间短,效率高。但是深度学习也存在一些缺点,例如模型复杂度高,难以纠错和调试、模型层级复合程度高,参数不透明等,但这些缺点相对于它的优势,是完全可以忽略的。之后又学习了深度学习神经网络基础的相关知识,此部分学习了浅层神经网络的部分知识,如误差反向传播,梯度下降和消失等等,其中有许多复杂的公式与推导,所以说深度学习的学习,数学基础要牢固!之后还介绍了逐层预训练,自编码器和受限玻尔兹曼机等的相关内容,难度也挺大的,不太容易理解。通过此次学习,我感受到了深度学习的迷人之处,在互联网时代的背景下,深度学习必定能在未来大有可为。

  • 张丁月

    第一课:人工智能和机器学习概论
    1.总体上了解了人工智能发展的标志性事件、人工智能发展阶段以及人工智能的三个层面,还有部分机器学习的知识。
    2.还了解了传统的机器学习的三步,模型:问题建模,确定假设空间。策略:确认目标函数。算法:求解模型参数。
    3.最后跟随老师从数据标记,数据分布,建模对象三方面对模型进行了分类。

    第二课:深度学习概述
    1.从神经网络引入到深度学习,比较了传统的机器学习和深度学习。
    2.了解了深度学习的发展史,即神经网络的发展史,还看了老师分享的Google无人自行车的视频。
    3.深度学习三个助推器中只有算法跟学术界有关,工程低门槛,科技高门槛。

    第三课:一些浅显的神经网络基础
    1.通过比较我知道了深度学习的六个“不能”:1)算法输出不稳定,容易被“攻击”;2)模型复杂度高,难以纠错和调试;3)模型层级复合程度高,参数不透明;4)端到端训练方式对数据依赖性强,模型增量性差;5)专注直观感知类问题,对开放性推理问题无能为力;6)人类知识无法有效引入进行监督,机器偏见难以避免。总结有三个层次:找得到,看得懂,留得下。
    2.深度学习应用于视觉和语言,从生物神经元受到启发,前人提出了M-P神经元模型。由单层感知器发展到多层感知器。
    3.万有逼近定理。

    第四课:神经网络基础
    1.多层神经网络可以看成复合的非线性多元函数。
    2.自编码器没有额外的监督信息。
    3.从结构上、原理上以及训练优化上对比了自编码器和受限玻尔兹曼机,
    4.预训练的作用,以及如何解决梯度消失的问题。
    总的来说学习内容中概念较多,有些晦涩难懂,感觉压力很大。

  • 朱泽灵

    1、机器学习初印象

    • 基于数据自动学习(90年代中期~)
    • 减少人工繁杂工作,但结果可能不易解释
    • 提高信息处理的效率,且准确率较高
    • 来源于真实数据,减少人工规则主观性,可信度高

    2、机器学习定义

    • 最常用定义:“计算机系统能够利用经验提高自身的性能”
    • 可操作定义:“机器学习本质是一个基于经验数据的函数估计问题”
    • 统计学定义:“提取重要模式、趋势,并理解数据,即从数据中学习”
    • 总结:从数据中提取知识

    2.机器学习适用的问题类型

    • 问题规模大——不适用人工解决
    • 问题复杂——不适用知识工程
    • 有大量数据——不需要额外采集数据
    • 问题有解析解

    3.解决机器学习问题的步骤

    • 模型:问题建模,确定假设空间——对要学习问题映射的假设
    • 策略:确定目标函数——从假设空间中学习/选择最优模型的准则
    • 算法:求解模型参数——根据目标函数求解最优模型的具体计算方法

    4.模型分类

    • 数据标记:监督模型、半监督模型、无监督模型和强化学习模型
    • 数据分布:参数模型、非参数模型
    • 建模对象:判别模型、生成模型

    5、深度学习不同时期的学习过程

    • 前深度学习时代:目标数据+专家知识驱动的特征设计+专家选择的分类器
    • 深度学习时代:海量目标数据+专家选择深度模型+机器优化深度模型
    • 后深度学习时代:少量目标数据+机器选择和优化模型

    6、深度学习的“不能”与解释性

    blog2_第1张图片

    7.深度神经网络的问题:梯度消失

    • 增加深度会造成梯度消失(gradient vanishing),误差无法传播——三层神经网络是主流;
    • 多层网络容易陷入局部极值,难以训练——预训练、新激活函数使深度成为可能
    • 训练困难(梯度消失、局部极值)/参数多,计算力不够/数据不够——神经网络第二次衰落,被支持向量机(全局最优解(凸二次规划)/无需调参/基于支持向量,小样本训练)代替

    8、深度神经网络的优化——逐层预训练

    • 产生的原因:局部极小值、梯度消失

    • 局部极小值:随着层数的增加,局部极小值的数量呈指数递增,导致神经网路收敛到一个非常差的局部极小值的可能性大大增加

    • 梯度消失:只能更新当前层的数据,不能更新之前的内容

    • 共同的解决办法:权重初始化

    • 优点:逐层预训练后收敛的极值点更加收敛、训练速度更快、训练效果更好、更明显

    • 难点:前面各层看不到最后的结果,没有监督信息——解决办法:自编码器、受限玻尔兹曼机

    9、逐层预训练的实际作用

    blog2_第2张图片

【第二部分】代码练习

  • 定义数据

    blog2_第3张图片

    可以看到tensor有多种创建方法,而且tensor类似各种数据类型的一个大综合

    blog2_第4张图片

    并且tensor支持改变其类型及其属性

    并且支持各种加减乘除增删查改计算

  • 根据教程绘制出螺旋形的图像

    blog2_第5张图片
  • 构建线性模型分类

    blog2_第6张图片 blog2_第7张图片

    从最直观的图像来看,这个线性模型的准确率很低(0.504),看来训练的模型不够有效率

  • 构建两层神经网络分类

    blog2_第8张图片 blog2_第9张图片

可以看到这次的准确率就很高了,具体原因是加了ReLU这个函数,虽然我不清楚这个函数具体有什么作用,但是他做到了质的飞跃

通过这次代码练习,简单体会了一次机器学习的过程,但老实说没有亲身参与的感觉,而且不知道机器学习的具体过程,好像是直接走进了一个新的领域,希望能动手亲自实验一番。

你可能感兴趣的:(软件工程)