仅仅是自己向大佬们学习过程中,知识的一个记录和积累,后续有新的认识会及时更新。

1 认识机器学习与深度学习

1.1 学习

介绍机器学习与深度学习之前,让我们先了解下什么是学习,即:系统通过执行某个过程,就此改进了它的性能,那么这个过程就是学习。

1.2 机器学习

  1. 机器学习
    该方法以统计语言模型为基础,利用数据及某种特定的方法,如统计方法或推理方法等来学习数据中的有价值的知识,以提升系统的性能。
  2. 机器学习意义:从数据中抽取规律,并预测未来。
  3. 机器学习缺点: 机器学习主要利用数据特征进行分类,然而这些特征过于依赖人工完成,并且需要大量领域专业知识,耗时耗力。

1.3 深度学习

为解决上述机器学习问题,有学者开始利用神经网络通过训练自动捕获数据特征,取得了不错的效果(特征表示学习)。随着神经网络进一步加深,出现了多层次的“表示学习”,它把学习的性能提升到另一个高度。这种学习的层次多了,其实也就是套路深了。于是,人们就给它取了一个特别的名称—Deep Learning(深度学习)。

  1. 深度学习:深度学习就是一种包括多个隐含层(越多即为越深)的多层感知机。它通过组合低层特征,形成更为抽象的高层表示,用以描述被识别对象的高级属性类别或特征。能自生成数据的中间表示(虽然这个表示并不能被人类理解)。
  2. 深度学习缺点:
    根据“麻烦守恒定律“可知“麻烦不会减少,只会转移”。因此深度学习也存在一定的缺点:即深度学习的不可解释性,因为机器学习的特征,对人而言,相当于黑盒,人们无法去解释,只能根据经验,通过调参来提高深度学习模型的性能。
  3. 深度学习是否可靠?
    那么问题就来了,既然深度学习中间过程相当于黑盒,具有不可解释性,那么深度学习是否可靠呢?
    深度学习通过自动完成逐层特征变换,将样本在原空间的特征表示变换到一个新特征空间,从而使分类或预测更加准确,与原来的人工提取特征的方法相比,深度学习利用了大数据来自动获得事物特征,让“数据自己说话”,因此,更能够刻画数据丰富的内在信息。一般来说,层数更多的网络,通常具有更强的抽象能力(即数据表征能力),也就能够产生更好的分类识别的结果。但也不是层次越多越好,毕竟“物极必反”,经过学者们的不断实验表明,这种极深的架构叠加,带来的通信开销会淹没性能的提升,因此深度”仅仅是手段,“表示学习”才是目的。

1.4 机器学习与深度学习之间的联系与区别

  1. 联系:深度学习是实现机器学习算法的技术。
  2. 区别:个人觉得他们之间的区别主要是他们提取特征方式的不同,另外从模式分类角度来看,机器学习主要分为特征提取和分类预测两个独立的步骤。深度学习采用“端到端(end-to-end)”学习方式,即特征提取和分类任务合二为一(黑盒),输入的是原始数据(始端),输出的直接就是最终目标(末端),中间过程不可知。

2 通过现象看本质

2.1机器学习

根据台湾大学李宏毅博士的通俗说法:

所谓机器学习,在形式上可近似等同于,在数据对象中通过统计或推理的方法,寻找一个有关特定输入和预期输出的功能函数。

比如:输入变量(特征)空间记作大写的X,而把输出变量空间记为大写的Y。那么所谓的机器学习,在形式就是完成如下变换:Y=f (X)
但是如何去构造,同时让其准确的识别输入特征并输出正确的结果?因此,需要通过训练数据来构造符合标准的函数,构建一套评估体系去判断函数的好坏。

2.1.1 机器学习三板斧:

  1. 建模:感知机、支持向量机、最大熵函数等;
  2. 评估:F值、损失函数;
  3. 优化:BP、Adam等算法。

2.1.2 机器学习三大门派:

  1. 监督学习
    所有的监督学习,基本上都是“分类”的代名词。它从有标签的训练数据中学习模型,然后给定某个新数据,利用模型预测它的标签。这里的标签,其实就是某个事物的分类。
  2. 无监督学习
    无监督学习,本质上就是‘聚类(Cluster)’的近义词。通过聚类分析将非标签数据聚成几个群。
  3. 半监督学习
    既用到了标签数据,又用到了非标签数据。(更贴近人类的学习方式)。

另外强化学习也是机器学习中重要流派,通过多步恰当的决策,来逼近一个最优的目标。其灵感来源于行为主义理论:有机体如何在环境给予的奖励或惩罚刺激下,逐步形成对刺激的预期,从而产生能获得最大利益的习惯性行为。
强化学习的优势就在于不需要准备大量的训练样本,它重视的是环境给予的反馈。

2.2 深度学习

机器学习在本质上,就是找好一个合适的函数。而神经网络最牛的地方可能就在于,它可以在理论上证明:“一个包含足够多隐层神经元的多层前馈网络,能以任意精度逼近任意预定的连续函数(Universal Approximation Theorem)。但需要注意以下两点:

  1. 神经网络尽可能好地去“近似”某个特定函数,而不是说“准确”计算这个函数。因此可以通过增加隐含层神经元的个数来提升近似的精度。
  2. 被近似的函数,必须是连续函数。如果函数是非连续的,也就是说有极陡跳跃的函数,神经网络就“爱莫能助”了。

2.2.1 神经网络是如何模拟函数的呢?

见链接1中第五部分,讲的非常详细。

3 了解深度学习

3.1 感知机

  1. 感知机:神经网络的起点,神经网络中的“Hello World”。从其几何意义来说,感知机可看做一个由超平面划分的空间位置的识别器。
    当特征n为两三个维度时,可以利用它的几何空间来直观解释这个分类器,但当n更大时,就很难再用它的几何意义来研究神经网络感知机超平面。
  2. 感知机缺点:
    感知机虽然可以解决一些简单的问题,但面对复杂问题,如异或计算等就略显乏力了。

3.2 多层神经网络

为解决上述问题,有学者在输入层和输出层之间添加一层神经元,即隐藏层,使得网络复杂起来,便可解决一些相关复杂的问题。类似的,如果将若干个单层神经网路联系在一起,便简单的构成了多层神经网络,从而增强神经网络的表达能力。(需要注意:每一层神经元仅仅与下一层的神经元全连接。但在同一层之内,神经元彼此不连接,而且跨层之间的神经元,彼此也不相连。)
在多层前馈神经网络中,输入层神经元主要用于接收外加的输入信息,在隐含层和输出层中,都有内置的激活函数,可对输入信号进行加工处理,最终的结果,由输出层“呈现”出来。

3.2.1分布式特征表达

分布式表征:是人工神经网络研究的一个核心思想。简单来说,就是当我们表达一个概念时,神经元和概念之间不是一对一对应映射(map)存储的,它们之间的关系是多对多。具体而言,就是一个概念可以用多个神经元共同定义表达,同时一个神经元也可以参与多个不同概念的表达,只不过所占的权重不同罢了。
分布式表征表示有很多优点。其中最重要的一点,莫过于当部分神经元发生故障时,信息的表达不会出现覆灭性的破坏。

3.2.2损失函数

损失函数也称为代价函数,用来度量预期和实际二者之间的“落差”程度。因此,损失函数值越小,模型越好。
常见的损失函数有如下3类:

有了损失函数,那么我们就可以利用其进行神经网络的调参,主要有以下两种方法:

  1. 第一类方法从后至前调整网络参数,典型代表就是“误差反向传播”,如BP算法。
    首先随机设定初值,然后计算当前网络的输出,然后根据网络输出与预期输出之间的差值,采用迭代的算法,反方向地去改变前面各层的参数,直至网络收敛稳定。
  2. 第二类方法正好相反,从前至后调整参数,代表就是目前流行的“深度学习”。
    该方法常用“逐层初始化”(layer-wise pre-training)训练机制,即:从“从前至后”的逐层训练方法。

那么如何使损失函数达到最小呢?大致分为以下三步:

  1. 损失是否足够小?如果不是,计算损失函数的梯度;
  2. 按梯度的反方向走一小步,以缩小损失;
  3. 循环到(1)
    这种按照负梯度的若干倍数,不停地调整函数权值的过程就叫做“梯度下降法”。通过这样的方法,改变每个神经元与其他神经元的连接权重及自身的偏置,让损失函数的值下降得更快,进而将值收敛到损失函数的某个极小值

3.2.3 神经元的设计

  1. 输入层神经元个数
    如果图片的维度是16×16,那么我们输入层神经元就可以设计为256个(也就是说,输入层是一个包括256个灰度值的向量),每个神经元接受的输入值,就是归一化处理之后的灰度值。0代表白色像素,黑色像素像素代表1,灰度像素的值介于0到1之间。也就是说,输入向量的维度(像素个数)要和输入层神经元个数相同
  2. 输出层神经元个数
    对输出层而言,其神经元个数和输入神经元的个数,是没有对应关系的,而是和待分事物类别有一定的相关性。
    如:任务是识别手写数字,而数字有09共10类。所以,如果在输出层采用Softmax回归函数,它的输出神经元数量仅为10个,分别对应是数字“09”的分类概率。最终的分类结果,择其大者而判之。
  3. 隐藏层神经元个数
    隐含层暂定为一个黑箱,它负责输入和输出之间的非线性映射变化,因此,隐含层的层数不固定,每层的神经元个数也不固定,它们都属于“超参数”,是人们根据实际情况不断调整选取的。
    权值:神经元与神经元之间的影响程度。
    偏置:连接的强弱程度,告诉下一层相邻神经元更应该关注的部分。
    神经网络结构的设计目的在于,让神经网络以“更佳”的性能来学习。而这里的所谓“学习”,就是找到合适的权重和偏置,让损失函数的值达到最小。

3.2.4BP算法

神经网络层数的增多,虽然可为其提供更大的灵活性,让网络能有更强的表征能力,(能解决更多更复杂的问题),但随之而来的庞大网络参数训练,一直是制约多层神经网络发展的一个重要瓶颈,BP算法可以有效地解决该问题。
BP算法是一个双向算法,主要分为两步:

  1. 正向传播输入信息,实现分类功能(所有的有监督学习,在本质都可以归属于分类);
  2. 反向传播误差,调整网络权值。

所谓的正向传播就是信号通过激活函数的加工,一层一层的向前“蔓延”,直到抵达输出层。

3.2.5 激活函数

神经元与神经元的连接都是基于权值的线性组合。但线性的组合依然是线性的,网络的表达能力非常有限。因此,需要加入非线性层,自此激活函数就登场了!

3.2.6 池化层

池化层函数力图用统计特性反应出来的1个值,来代替原来的整个子区域,从而减少了参数数量,从而可以预防网络过拟合。
池化之后的图片,虽然比较模糊。但计算机的“视界”和人类完全不同,池化后的图片,丝毫不会影响它们对图片的特征提取。

参考资料:https://www.zhihu.com/column/zhangyuhong(通俗易懂,可作为深度学习科普入门资料)
https://github.com/frank-lam/fullstack-tutorial

初识机器学习与深度学习相关推荐

  1. 【AI初识境】深度学习中常用的损失函数有哪些?

    这是专栏<AI初识境>的第11篇文章.所谓初识,就是对相关技术有基本了解,掌握了基本的使用方法. 今天来说说深度学习中常见的损失函数(loss),覆盖分类,回归任务以及生成对抗网络,有了目 ...

  2. 【AI初识境】深度学习模型中的Normalization,你懂了多少?

    文章首发于微信公众号<有三AI> [AI初识境]深度学习模型中的Normalization,你懂了多少? 这是<AI初识境>第6篇,这次我们说说Normalization.所谓 ...

  3. 1-1 机器学习和深度学习综述-paddle

    课程>我的课程>百度架构师手把手教深度学习>1-1 机器学习和深度学习综述> 1-1 机器学习和深度学习综述 paddle初级课程 王然(学生) Notebook 教育 初级深 ...

  4. 资源 | AI、神经网络、机器学习、深度学习以及大数据学习备忘单

    向AI转型的程序员都关注了这个号☝☝☝ 以下是关于神经网络.机器学习.深度学习以及大数据学习的备忘单,其中部分内容和此前发布的<资源 | 值得收藏的 27 个机器学习的小抄>有所重复,大家 ...

  5. 超全!CS 顶会历届最佳论文大列表,机器学习、深度学习一应俱全!

    点击上方"Datawhale",选择"星标"公众号 第一时间获取价值内容 工欲善其事必先利其器!今天给大家推荐一份非常棒的资源,该资源罗列收集了 CS 顶会历届 ...

  6. 认认真真推荐几个机器学习、深度学习公众号

    "三人行,必有我师焉",学习就是要从别人身上学到好的.今天特意给大家推荐10个优质公众号,目前属于活跃度非常高的几个原创公众号,涵盖了python和AI,重点是他们还坚持在原创技术 ...

  7. 深度学习“四大名著”发布!Python、TensorFlow、机器学习、深度学习四件套(附免费下载)...

    Python 程序员深度学习的"四大名著": 这四本书着实很不错!我们都知道现在机器学习.深度学习的资料太多了,面对海量资源,往往陷入到"无从下手"的困惑出境. ...

  8. 使用Python,机器学习和深度学习的5个很棒的计算机视觉项目创意!

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 计算机视觉属于人工智能领域,可以通过处理图像和图片来解决现实生活中 ...

  9. 揭秘人工智能、机器学习和深度学习的神秘面纱

    1 题记 AI.机器学习.监督学习.无监督学习.分类.决策树.聚类.深度学习和算法.深度学习.机器学习,人工智能--这些时下流行语代表着对未来技术的分析. 在这篇文章中,我们将通过现实世界中成熟的例子 ...

  10. 2021-03-28为什么用SCALA语言优势在哪里 Scala适合服务端、大数据、数据挖掘、NLP、图像识别、机器学习、深度学习…等等开发。

    Go适合服务端.桌面应用程序开发. Scala适合服务端.大数据.数据挖掘.NLP.图像识别.机器学习.深度学习-等等开发. Python适合做网络爬虫.自动化运维.快速地实现算法的原型. 但是Pyt ...

最新文章

  1. 解决PHP大文件上传问题
  2. 如何选择一个合适的建站系统?
  3. 4.6 计算机网络之网络层IP组播(IGMP、组播路由选择协议、组播地址)
  4. FreeMarker四种变量的用法
  5. 可以通过发声把玻璃震碎吗?
  6. php 生成css文件怎么打开,php生成html文件的多种步骤介绍
  7. 微软 azure_Microsoft Azure,我们迁移数据的第一步
  8. 云中漫步——迎接云计算时代的到来
  9. Pr 视频效果:图像控制、实用程序
  10. 牛,碉堡了:GitHub 加速神器
  11. 微信小程序uniapp实现小图标转成SVN代码
  12. python编写直角三角形边长公式_python 打印直角三角形,等边三角形,菱形,正方形的代码...
  13. js练习之--数组方法,数组实现文字内容高亮、替换!
  14. 搞一下整车以太网技术 | 01 汽车以太网PHY详解
  15. 倒数闩锁CountDownLatch源码浅析
  16. python excel库pip install_超全整理|Python 操作 Excel 库 xlwings 常用操作详解!
  17. 安利一个梅林380机型可用的插件
  18. php个人空间源码,PHP安装 - 牛牛牛大棚的个人空间 - OSCHINA - 中文开源技术交流社区...
  19. abs传感器电压有几伏电_汽车ABS转速传感器工作电压测量方法
  20. 数据标注基础知识:文本数据标注的类型及应用场景

热门文章

  1. 正则匹配以XXX开头的,XXX结束的
  2. 四象限变频器技术介绍
  3. Windows环境,agent在后台运行
  4. window.print打印pdf
  5. 如何使用Keil5开发MSP430及Tiva系列开发板
  6. 如何让RS485总线挂接更多数量的设备?
  7. 为知笔记Linux一键安装版
  8. java String类型的处理
  9. win10 文件系统错误-2147416359
  10. JAVA中的运算规则