zoukankan      html  css  js  c++  java
  • 第一次作业:深度学习基础

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

    视频学习心得

    丁泽中:通过绪论的介绍我大概了解到了机器学习发展前景以及目前的应用领域等相关知识。在对于神经网络基础的学习过程之中我对激活函数、感知器和神经网络相关基础知识有了一定的了解和总结(详细见关于神经网络基础的学习笔记)。目前存在的问题就是需要再复习复习高等数学相关知识==有些公式推导存在疑惑。然后,早日彻底理解这些原理。

    李航:绪论主要介绍了目前人工智能的发展现状以及发展前景,通过对其历史的介绍引入下文,并且简要地介绍了人工智能、机器学习、深度学习之间的关系,最后详细地通过实例和图表的形式解释了传统机器学习和深度学习的异同,使我很好地了解到了这几个热门名词地具体含义以及它们之间的关系是怎样的,同时也了解到了网上已经有许多开源的算法可以进行系统地学习,这使得我对今后的学习方向大体有了一个较为清晰地认知。深度学习主要讲了深度学习的一些内容包括了其理论与实现。重点讲了梯度消失、反向传播,梯度消失在神经网络上面随着训练层数增加有一个具体的体现,同时讲了一些解决的办法,但是我感觉有一定的难度,暂时还没有完全理解。

    蒋四海通过第一个视频(绪论)的学习,我了解到了人工智能的起源与发展,人工智能现在以及未来的应用场景。并且还了解到了专家系统和人工智能的联系区别,传统机器学习的缺陷,以及深度学习的大概原理,总体感觉是对人工智能算是有了初步的了解,知道了深度学习的的擅长之处以及缺陷。在第二个视频中学习到了有关深度学习的具体实现的理论知识,主要是学到了重要的几个概念:线性与非线性的引入,梯度消失,反向传播等,以及梯度消失的原因和一些解决办法。这里提到了逐层预训练的两种方法,预训练并没有解决梯度消失而是找到较好的初始数据,虽然现在已基本不再使用,但也曾经起到了积极的作用。

    廖鑫源:在听完机器学习深度学习的两个视频后,首先是大致上了解了机器学习这一个学科的发展来历和目前所处的发展阶段,同时我也了解了机器学习目前所存在的缺陷。尽管通过多层神经网络可以更好的进行机器学习,有着强大的功能,但是其中像开放性问题等仍需要解决。我还知道了浅层神经网络和多层神经网络的概念,由于实际错误率的研究发现,一个神经网络是越瘦高越好,但是一旦层数不断增加,训练的难度又会进一步加大。随着神经网络层数的增加,输出越抽象,梯度也会随着层数增多发生消失或者爆炸的现象,解决方法是使用relu函数取代sigmord作为激活函数,后面的内容就较难理解了。通过本次作业我对机器学习有了一些系统的理解,首先肯定科普的效果,其次是对今后的学习方向有了较为清晰的认知。

    徐凯新通过视频的学习,我对人工智能有了进一步的了解以及未来的发展同时学习到了许许多多关于深度学习的基础知识,如梯度下降等等。同时,我了解了神经网络的简单工作原理并学会了训练模型的简单方法。这次网课的学习加强了我对于深度学习的兴趣并让我更有动力能在今后的工作学好机器学习相关内容并高效完成项目。

    杨宗富:绪论视频中大体介绍了人工智能的历史发展,从视频中的数据得知,我国甚至是世界对于人工智能人才的需求量还是很大的。我国也在努力推进人工智能一级学科的建设,会有越来越多的人工智能+(法学/金融/创作/机器人...)出现。人工智能可以代替人们解决生活中那些处理量大而复杂的问题,例如在语音识别、图形人脸识别等有着重要的应用。从1965年诞生到如今,人工智能在高速发展。但是想要达到第三个层面,认知智能层面,还需要一定的时间。机器学习是达到人工智能的手段,从模型、策略到算法的设计,通过学习大量有意义的、有大体规律的数据,让计算机达到感知智能。而如今人工智能也存在着许多缺陷,如需要大量的学习数据作为基础,在无法监督的情况下产生的结果存在偏见,造成不好的影响等。

    问题总结

    1.在学习逐层预训练是,没搞懂为什么这些方法(比如自编码的先编码后解码,使得输出与输入相差最小)可以使得初始数据会比较好。为什么一般玻尔兹曼机会比受限玻尔兹曼机效果更好。以及初学者学习深度学习的平台使用哪个更好?

    2.对于梯度下降的数学原理理解不是特别深刻。

    【第二部分】代码练习

    2.1 pytorch基础练习

    参考网页

    首先我们需要明确PyTorch有两个高级功能:GPU加速张量计算和构建反向自动求导系统上的深度神经网络

    2.1.1定义数据

    实验运行部分截图:

     2.1.2定义操作

    实验运行部分截图:

    一些想法和解读:

            在这个实验之中我们对tensor这个张量进行许多操作(它的含义是数字各种形式的总和)。tensor支持各种各样的数据类型(跟C++auto类型有类似之处)。通过实验我们知道了对张量的创建和处理的相关方法。然后,我们在定义操作部分对张量进行了各种运算(基本运算、布尔运算、线性运算等)。具体的运算操作我们可以上网查询相关方法(如果需要可以看官方文档)

    2.2 螺旋数据分类

    参考网页

    实验运行部分截图:

     2.1.1构建线性模型分类

     实验运行部分截图:

     2.1.2两层神经网络分类

     实验运行部分截图:

     一些想法和解读:

            上述代码的大概思路为通过公式将数据先分成三种。然后我们再用线性模型和两层神经网络对螺旋数据进行分类。比较两种方法的分类效果。在实验中,我们使用了梯度累加的方法,简单来说就是梯度累加了一定次数后,先optimizer.step() 根据累计的梯度更新网络参数,然后optimizer.zero_grad() 清空过往梯度,为下一波梯度累加做准备。除此之外,我们发现我们使用ReLu激活函数。它的优点:可以使网络训练更快。增加网络的非线性。防止梯度消失。使网格具有稀疏性等等。它是一个较好的激活函数。

  • 相关阅读:
    this直接加在函数或者是 “原型”对象的区别
    网易云课堂_C语言程序设计进阶_第一周:数据类型:整数类型、浮点类型、枚举类型_1计算分数精确值
    #include <stdbool.h>
    网易云课堂_C语言程序设计进阶_第一周:数据类型:整数类型、浮点类型、枚举类型
    #include <locale.h> #include <locale>
    C语言复习
    Apache HTTP Server
    深拷贝_浅拷贝
    04737_C++程序设计_第4章_类和对象
    经典算法_链表
  • 原文地址:https://www.cnblogs.com/lightac/p/13810976.html
Copyright © 2011-2022 走看看