崂山x牛x预备队第一次直面深度学习


一组第二次小组作业,深度学习基础

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

吴博群

学习心得

绪论部分
  • 机器学习并非最初用于有解析解的问题,而是用于给出一个近似解,但是随着问题复杂度的提升,后期也会有人采用使用机器学习解决存在解析解的问题

  • 使用机器学习前要考虑是否可以使用,是否采用人工处理或者专家系统更容易解决问题

  • 参数模型:对数据分布做了假设(如线性回归),非参数模型:不对数据分布进行假设,数据的所有统计特性都来源于数据本身(随机森林,SVM等),且非参数模型的时空复杂度一般比参数模型大得多

  • 看到了西瓜书和花书,意识到非常难啃(泪目

  • 深度学习不再需要人工提取特征

  • 神经网络是通过多个感知器的组合叠加来解决非线性的分类问题.,SVM通过核函数视图将非线性的问题的数据集转变为核空间中一个线性可分的数据集,这也把神经网络带入了第二次寒冬(因为当时的神经网络隐藏层多为单层)

深度学习概述部分
  • 深度学习输出易被攻击,甚至在图像识别中改变单像素的值就可以强烈的干扰结果的输出
  • 深度学习参数不透明,难以调试和复现
  • 深度学习会采用现实世界中的大量真实数据,难以避免的引入机器偏见
  • 深度学习较其他机器学习算法,准确性非常高,但是可解释性非常差
  • 符号主义:知识图谱为代表,联结主义:神经网络为代表,两者正在走向联合发展的道路,为了同时提高准确性和可解释性
  • 没有激活函数相当于矩阵相乘,多层和一层一样,只能拟合线性函数
  • sigmoid和tanh均容易饱和(斜率在数值很大时会非常小),但是relu很有可能导致神经元死亡(在x<0的情况下),故存在很多对relu激活函数的变种函数(如leaky relu等)
  • 最简单的非线性问题:异或
  • 一个隐层(3层神经网络,输入-隐层-输出),可以以任意精度逼近任意的的连续函数,双隐层可以逼近任意精度的非连续函数
  • 矩阵的线性变换(增加节点,增加线性可分能力),激活函数的非线性变换(增加层数,增加非线性转换次数),将原始的输入空间投影到线性可分的空间
  • 增加网络深度可以比增加宽度带来更强的网络表示能力
  • 梯度是一个向量,方向是最大方向导数的方向,模是方向导数的最大值
  • 残差:损失函数在某个节点的偏导(反向传播需要对激活函数求偏导)
  • 自编码器是一种利用反向传播算法使得输出值等于输入值的神经网络

问题总结

序列部分
  • AI方向在17年左右缺口较大,但是目前存在过热的趋势,且目前AI方向的应用并非很多,大致可行的落地项目分为cv和nlp两大类,在3,4年后这个行业是否会存在竞争压力过大而难以就业的问题
  • 在未来,神经网络(如RNN)是否能够发展到可以根据人的一两句语音(数据集相当匮乏的情况下),还原出非常贴近这个人的真实语音
深度学习概述部分
  • 大数据是否与深度学习方面关系密切,未来的发展方向如何,如果从事这个行业需要学习什么知识

潘飞宇

视频学习心得

绪论

? 谈到深度学习,我们往往会想到其他各种名词:人工智能、机器学习等等。根据视频的学习,它们大概是一个包含关系,即:人工智能是一个领域,一个目标。机器学习是实现人工智能这个目标的一类方法。而深度学习只是机器学习中很小的一个点。

? 机器学习是计算机利用经验提高自身性能,基于经验数据的函数估计问题,理解数据。总结一下就是从数据中自动提取有意义的模式。一般是在机器学习中,使用了深度神经网络的学习称之为深度学习。

概述

? 在具体的神经网络中,基本组成单位是人工神经元。其具备多输入,单输出,空间整合和时间整合、兴奋输入/抑制输入,阈值特性。由于单纯人工神经元的组合是线性的,表达能力不强,因此有各种激活函数。

? 神经网络学习如何利用矩阵的线性变换加激活函数的非线性变换,将原始输入空间投影到线性可分的空间去分类、回归。一个隐层包含足够多的神经元,三层前馈神经网络(输入—隐层—输出),能以任意精度逼近任意预定的连续函数。而当隐层足够宽时,双隐层感知器(输入—隐层1—隐层2—输出),可以逼近任意非连续函数。

? 增加节点数:增加维度,线性转换能力。增加层数:层架激活函数的次数,增加非线性转换次数。而节点数和层数对函数复杂度的贡献是不同的,深度贡献是指数级增长的,一般更倾向于“瘦高”的网络。

? 在神经网络中,我们利用梯度进行误差反向传播更新神经网络,让其达到更好的效果。但是误差反向传播时,可能会导致梯度的消失使神经网络难以训练。所以一开始出现了自编码器、玻尔兹曼向量机等技术。

遇到的问题

首先是不少数学知识都忘了个差不多,在误差反向传播这部分内容里,听不太懂,也跟不上公式讲解的速度,然后理解的就不透彻。

然后是对梯度那个地方也有些问题。参数沿负梯度方向更新可以使函数值下降,会找到局部极值,乃至最小值。但是我不太明白这个最小值的意义是什么。

最后就是玻尔兹曼机这个地方吧,还是因为数学那块忘的有点多加上内容有点多,没咋听懂。

详见博客部分

闫向前

视频学习心得:

人工智能是一个目标,该目标是指实现机器能够像人一样思考,感知和推理;机器学习是实现人工智能的一种方法;深度学习只是使用了深度神经网络的机器学习。
基于人工定义规则的专家系统无法处理规模大,结构复杂的问题;传统的机器学习虽抛弃了规则这一概念,但仍需根据人的理解去提取研究对象特征,再将特征和结果建立映射关系,人承担的任务量依旧巨大;深度学习则是采用分层的模式去提取有价值的特征,层与层之间进行训练、组合演变为复杂的特征,最后实现精准识别。该过程就是对线性函数进行非线性转换,最终拟合出原来复杂的非线性函数。

问题:

不太理解误差反向传播、自编码器和RBM

刘明晖

视频学习心得:

看完两个视频后,首先大致了解了人工智能的起源、发展过程以及现状和前景。明晰了人工智能、机器学习、深度学习的概念区别,了解了传统机器学习与深度学习之间的利弊关系。第二个视频里关于深度学习的理论与实现引出了激活函数、梯度下降、梯度消失、反向传播、逐层预训练等概念,是我目前未接触过的知识,很有意思,希望在今后的课程里能够更深一步地了解。

问题:

当优化目标具有大量局部极值点时,梯度下降如何逼近最优解,从而达到优化的目的。

李浩然

学习总结

  • 绪论部分
    1. 在处理一些准则比较复杂,问题规模比较庞大的模型时,相较于人工,具有省时省力,灵活性强的优点。但需要注意,使用机器学习时,需要有数据,同时需要判定是否是有意义的模式。
    2. 深度学习相较于机器学习而言,当数据很少的时候,其性能表现并不算很好,但随着数据规模的增加,其性能表现也会相应的增加。同时,深度学习虽然功能强大,但是仍然具有一些不可避免的缺陷。
  • 神经网络

    神经网络中的每个神经元节点接受上一层神经元的输出值作为本神经元的输入值,并将输入值传递给下一层,输入层神经元节点会将输入属性值直接传递给下一层(隐层或输出层)。单层神经网络只能学习线性的函数,但在多层神经网络中,上层节点的输出和下层节点的输入之间具有一个函数关系,为了更好的去提升网络的逼近能力,采用了非线性的激活函数。再通过反向传播算法,将输出与期望的值进行比较,这些误差再用来调整权重,以达到更好的输出结果。但同时增加了深度的神经网络看似会越来越强,但由于反向传播算法也会带来梯度消失这个现象,导致神经网络训练失效,所以需要逐层与训练,通过自编码器和受限玻尔兹曼机来实现。

提出问题

  1. 反向传播部分的实现还不是很懂
  2. 自编码器和受限玻尔兹曼机那部分还就那个一窍不通

刘玉龙

心得

对于我来说,人工智能,深度学习,神经网络等等是我从未接触过的领域,因此对视频的学习也有些模棱两可。在绪论的视频中我了解了人工智能的起源、发展、三个层面等等。在深度学习概论的视频里,我认识了深度学习的概述,了解到神经网络起初是模拟人体的神经传导而建立,但在发展中又出现了越来越多的不同点的系统。而深度学习也存在着一些不能做到的事物,比如学习来自于数据,而数据的来源是有分歧的、本身就不“平等”的。希望在接下来的学习中我能够逐渐理解人工智能和深度学习,提高自己的能力。

问题

不理解受限玻尔兹曼机和自编码器,对于误差的反向传播部分不是很清楚。

【第二部分】代码练习

小组成员 代码博客地址
吴博群
潘飞宇
闫向前
刘明晖
李浩然
刘玉龙

相关