• 【Python深度学习】Python全栈体系(二十七)


    深度学习

    第一章 深度学习概述

    一、引入

    1. 人工智能划时代事件

    • 2016年3月,Google公司研发的AlphaGo以4:1击败世界围棋顶级选手李世石。次年,AlphaGo2.0对战世界最年轻的围棋四冠王柯洁,以3:0击败对方,背后支撑AlphaGo具备如此强大能力的,就是“深度学习”(Deep Learning)。
    • 一时间,“深度学习”这个本专属于计算机学科的术语,成为包括学术界、工业界、风险投资界等众多领域的热词。

    2. 深度学习巨大影响

    • 除了博弈,深度学习在计算机视觉(computer vision)、语音识别、自动驾驶等领域,表现与人类一样好,甚至有些地方超过了人类。2013年,深度学习就被麻省理工学院的《MIT科技评论》评为世界10大突破性技术之一
    • 深度学习不仅是一种算法升级,还是一种全新的思维方式,它的颠覆性在于,将人类过去痴迷的算法问题,演变成数据和计算问题,以前“算法为核心竞争力”正在转换为“数据为核心竞争力”

    二、深度学习的定义

    1. 什么是深度学习?

    • 简单来说,深度学习就是一种包括多个隐含层(越多即为越深)的多层感知机。它通过组合低层特征,形成更为抽象的高层表示,用以描述被识别对象的高级属性类别或特征。能自生成数据的中间表示(虽然这个表示并不能被人类理解),是深度学习区别于其他机器学习算法的独门绝技。
    • 所以,深度学习可以总结成:通过加深网络,提取数据深层次特征

    2. 深度神经网络

    在这里插入图片描述

    3. 深度学习与机器学习的关系

    • 人工智能学科体系
      在这里插入图片描述
    • 人工智能、机器学习、深度学习三者的关系,可以认为深度学习是机器学习的“高级阶段“
      在这里插入图片描述

    三、深度学习的特点

    1. 深度学习的特点

    • 优点:
      • 性能更优异
      • 不需要特征工程
      • 在大数据样本下有更好的性能
      • 能解决某些传统机器学习无法解决的问题
    • 缺点:
      • 小数据样本下性能不如机器学习
      • 模型复杂
      • 过程不可解释

    2. 深度学习的优点

    2.1 性能更优异

    在这里插入图片描述

    2.2 不需要特征工程
    • 传统机器学习需要人进行特征提取(特征工程),机器性能高度依赖于特征工程的质量。在特征很复杂的情况下,人就显得无能为力。而深度学习不需要这样的特征工程,只需将数据直接传递给深度学习网络,由机器完成特征提取
    2.3 深度学习在大样本数据下有更好的性能和扩展性

    在这里插入图片描述

    2.4 深度学习能解决传统机器学习无法解决的问题(如深层次特征提取)

    在这里插入图片描述

    3. 深度学习的缺点

    • 深度学习在小数据上性能不如传统机器学习
    • 深度学习网络结构复杂、构建成本高
    • 传统机器学习比深度学习具有更好的解释性

    4. 深度学习与传统机器学习对比

    在这里插入图片描述

    5. 为什么要学习深度学习?

    • 深度学习具有更强的解决问题能力(例如图像识别准确率明显超过机器学习,甚至超过了人类)
    • 掌握深度学习具有更强的职业竞争力
    • 深度学习在行业中应用更广泛

    四、深度学习的应用

    • 图像分类、人脸识别、图像迁移、语音处理、自动驾驶、机器博弈、机器人、自然语言处理

    五、深度学习总结

    在这里插入图片描述

    第二章 感知机与神经网络

    一、感知机概述

    1. 什么是感知机?

    • 感知机(Perceptron),又称神经元(Neuron)。是神经网络(深度学习)的起源算法,1958年由康奈尔大学心理学教授弗兰克·罗森布拉特(Frank Rosenblatt)提出,它可以接收多个输入信号,产生一个输出信号。
      在这里插入图片描述

    2. 感知机的功能

    • 实现逻辑运算,包括逻辑和(AND)、逻辑或(OR)
    • 实现自我学习
    • 组成神经网络

    3. 实现逻辑和

    在这里插入图片描述

    4. 实现逻辑或

    在这里插入图片描述

    5. 感知机的缺陷

    • 感知机的局限在于无法处理“异或”问题
      在这里插入图片描述

    6. 多层感知机

    • 1975年,感知机的“异或”难题才被理论界彻底解决,即通过多个感知机组合来解决该问题,这种模型也叫多层感知机(Multi-Layer Perceptron,MLP)。如下图所示,神经元节点阈值均设置为0.5
      在这里插入图片描述
      在这里插入图片描述

    7. 代码

    # 自定义感知机
    
    # 实现逻辑和
    def AND(x1, x2):
        w1, w2 = 0.5, 0.5  # 两个权重
        theta = 0.7  # 阈值
        tmp = x1 * w1 + x2 * w2
        if tmp <= theta:
            return 0
        else:
            return 1
    
    
    print(AND(1, 1))  # 1
    print(AND(1, 0))  # 0
    print(AND(0, 0))  # 0
    
    
    # 实现逻辑或
    def OR(x1, x2):
        w1, w2 = 0.5, 0.5  # 两个权重
        theta = 0.2  # 阈值
        tmp = x1 * w1 + x2 * w2
        if tmp <= theta:
            return 0
        else:
            return 1
    
    
    print(OR(1, 1))  # 1
    print(OR(1, 0))  # 1
    print(OR(0, 0))  # 0
    
    
    # 实现逻辑异或
    def XOR(x1, x2):
        s1 = not AND(x1, x2)  # 对x1,x2做逻辑和计算,再取非
        s2 = OR(x1, x2)  # 直接对x1,x2做逻辑或计算
        y = AND(s1, s2)
        return y
    
    
    print(XOR(1, 1))  # 0
    print(XOR(1, 0))  # 1
    print(XOR(0, 0))  # 0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45

    二、神经网络

    1. 什么是神经网络?

    • 感知机由于结构简单,完成的功能十分有限。可以将若干个感知机连在一起,形成一个级联网络结构,这个结构称为“多层前馈神经网络”(Multi-layer Feedforward Neural Networks)。所谓“前馈”是指将前一层的输出作为后一层的输入逻辑结构。每一层神经元仅与下一层的神经元全连接。但在同一层之内,神经元彼此不连接,而且跨层之间的神经元,彼此也不相连。
      在这里插入图片描述

    2. 神经网络的功能

    • 1989年,奥地利学者库尔特·霍尼克(Kurt Hornik)等人发表论文证明,对于任意复杂度的连续波莱尔可测函数(Borel Measurable Function)f,仅仅需要一个隐含层,只要这个隐含层包括足够多的神经元,前馈神经网络使用挤压函数(Spuashing Function)作为激活函数,就可以以任意精度来近似模拟f。如果想增加f的近似精度,单纯依靠增加神经元的数目即可实现。
    • 这个定理也被称为通用近似定理(Universal Approximation Theorem),该定理表明,前馈神经网络在理论上可近似解决任何问题。

    3. 通用近似定理

    在这里插入图片描述
    在这里插入图片描述

    4. 深层网络的优点

    • 其实,神经网络的结构还有另外一个“进化”方向,那就是朝着“纵深”方向发展,也就是说,减少单层的神经元数量,而增加神经网络的层数,也就是“深”而“瘦”的网络模型。
    • 微软研究院的科研人员就以上两类网络性能展开了实验,实验结果表明:增加网络的层数会显著提升神经网络系统的学习性能

    三、激活函数

    1. 什么是激活函数?

    • 在神经网络中,将输入信号的总和转换为输出信号的函数被称为激活函数(activation function)
      在这里插入图片描述

    2. 为什么使用激活函数?

    • 激活函数将多层感知机输出转换为非线性,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中
    • 如果一个多层网络,使用连续函数作为激活函数的多层网络,称之为“神经网络”,否则称为“多层感知机”。所以,激活函数是区别多层感知机和神经网络的依据。

    3. 常用激活函数 - 阶跃函数

    • 阶跃函数(Step Function)是一种特殊的连续时间函数,是一个从0跳变到1的过程,函数形式与图像:
      在这里插入图片描述

    4. 常用激活函数 - sigmoid

    在这里插入图片描述

    5. 常用激活函数 - tanh(双曲正切)

    在这里插入图片描述

    6. 常用激活函数 - ReLU(修正线性单元)

    在这里插入图片描述

    7. 常用激活函数 - Softmax

    在这里插入图片描述

    四、小结

    • 多层前馈网络。若干个感知机组合成若干层的网络,上一层输出作为下一层输入。
    • 激活函数。将计算结果转换为输出的值,包括阶跃函数、sigmoid、tanh、ReLU
  • 相关阅读:
    JavaScript变量、数据类型、类型转换
    XPS测试仪器-科学指南针
    计算机系统基础实验——数据的机器级表示(条件表达式 x?y:z)
    超级菜鸟怎么学习数据分析?
    webpack5学习进阶:Library、模块联邦、构建优化
    1463_英飞凌TC275开发板例程覆盖梳理
    云原生爱好者周刊:延迟加载任意 OCI 镜像 | 2022-09-13
    Oracle 常用命令大全
    Redis的Cluster集群数据倾斜
    ScalableViT网络模型
  • 原文地址:https://blog.csdn.net/sgsgkxkx/article/details/126128237