• Python数据分析与机器学习37-神经网络概述


    一. 什么是人工智能

    1.1 学习的能力,是智能的本质

    image.png

    1.2 大数据时代,万物互联

    其实人工智能诞生比较找,大数据时代的来临,大大加速了人工智能的应用。
    image.png

    1.3 李世石 VS 阿法狗

    4:1 李世石惨败
    image.png

    二. 神经网络概述

    2.1 人工智能 VS 深度学习

    随着数据规模的增加,传统人工智能算法的瓶颈就会出现,此时应该选择深度学习算法。
    image.png

    2.2 述说图片的故事

    这些字幕是深度学习程序写的
    image.png

    2.3 无人驾驶汽车

    1. 物体检测
    2. 行人检测
    3. 标志识别
    4. 速度识别

    image.png

    2.4 黑科技:Image Transfer

    Content + Style = Interesting thing

    image.png

    2.5 图像分类

    图像分类是计算机视觉的核心任务。

    假设我们有一系列的标签:狗,猫,汽车,飞机。。。
    我们怎么才能判断下面这张图是猫呢?
    image.png

    一张图片被表示成三维数组的形式,每个像素的值从0到255
    例如:3001003
    (最后的3代表颜色 RGB. R代表red,G代表Green,B代表Black)
    image.png

    计算机视觉会存在很多干扰项。
    image.png

    2.5.1 挑战: 照射角度

    image.png

    2.5.2 挑战:光照强度

    image.png

    2.5.3 挑战: 形状改变

    image.png

    2.5.4 挑战: 部分遮蔽

    image.png

    2.5.5 挑战: 背景混入

    背景混入是目前最麻烦的一种情况
    image.png

    2.6 图像分类常规套路

    1. 收集数据并给定标签
    2. 训练一个分类器
    3. 测试,评估

    image.png

    三. K近邻

    3.1 K近邻概述

    image.png
    image.png

    对于未知类别属性数据集中的点:

    1. 计算已知类别数据集中的点与当前点的距离
    2. 按照距离依次排序
    3. 选取与当前点距离最小的K个点
    4. 确定前K个点所在类别的出现概率
    5. 返回前K个点出现频率最高的类别作为当前点预测分类。

    概述:
    KNN 算法本身简单有效,它是一种lazy-learning 算法。
    分类器不需要使用训练集进行训练,训练时间复杂度为0。
    KNN 分类的计算复杂度和训练集中的文档数目成正比,也就是说,如果训练集中文档总数为n,那么KNN 的分类时间复杂度为O(n)。

    3.2 K 值的选择

    距离度量和分类决策规则是该算法的三个基本要素

    问题:
    该算法在分类时有个主要的不足是,当样本不平衡时,如一个类的样本容量很大,而其他类样本容量很小时,有可能导致当输入一个新样本时,该样本的K 个邻居中大容量类的样本占多数

    解决:
    不同的样本给予不同权重项

    3.3 数据库样例: CIFAR-10

    10类标签
    50000个训练数据
    10000个测试数据
    大小均为32*32
    image.png

    3.4 如何计算距离

    image.png

    测试结果:
    准确率较低
    image.png

    3.5 最近邻代码

    image.png

    3.6 超参数

    image.png

    3.7 K近邻小结

    问题:

    1. 对于距离如何设定?
    2. 对于K近邻的K该如何选择?
    3. 如果有的话,其它的超参数该怎么设定呢?

    交叉验证:
    image.png

    选取超参数的正确方法:

    1. 选取超参数的正确方法是:将原始训练集分为训练集和验证集,我们在验证集上尝试不同的超参数,最后保留表现最好那个。

    2. 如果训练数据量不够,使用交叉验证方法,它能帮助我们在选取最优超参数的时候减少噪音。

    3. 一旦找到最优的超参数,就让算法以该参数在测试集跑且只跑一次,并根据测试结果评价算法。

    4. 最近邻分类器能够在CIFAR-10上得到将近40%的准确率。该算法简单易实现,但需要存储所有训练数据,并且在测试的时候过于耗费计算能力。

    5. 最后,我们知道了仅仅使用L1和L2范数来进行像素比较是不够的,图像更多的是按照背景和颜色被分类,而不是语义主体分身。

    整体步骤:

    1. 预处理你的数据:对你数据中的特征进行归一化(normalize),让其具有零平均值(zero mean)和单位方差(unit variance)。

    2. 如果数据是高维数据,考虑使用降维方法,比如PCA。

    3. 将数据随机分入训练集和验证集。按照一般规律,70%-90% 数据作为训练集。

    4. 在验证集上调优,尝试足够多的k值,尝试L1和L2两种范数计算方式。

    四. 线性分类

    每个类别的得分
    image.png

    得分函数:
    image.png

    实例:
    0.256 - 0.5231 + 0.124 + 2.02 + 1.1 = -96.8
    image.png

    image.png

    image.png

    五. 损失函数

    5.1 损失函数概述

    image.png

    从上例可以看到,最终的评分效果不理想,预测值与实际值之间存在较大的差异,这个引入了损失函数。
    image.png
    从上图可以看出,模型评估的效果越差的话,损失函数的值就越大。

    image.png

    损失函数:
    image.png
    根据上图的损失函数,结合下图的x , w1, w2
    会出现 f(x,w1) = f(x,w2)
    但是w1只对一个变量设置了权重值,而w2却对所有变量设置了权重值,虽然模型评分相同,但是理论上将更多的变量加入到模型中是更好的方法。
    image.png
    image.png
    image.png

    5.2 正则化

    为了解决上面提出的问题,于是引入了正则化惩罚项
    可以理解的理解 λ 就是 w 2 w^2 w2
    y(x,w1) = 11 = 1
    y(x,w2) = 0.25
    0.25 + 0.250.25 + 0.250.25 + 0.25*0.25 = 0.25
    此时y(x,w2) 的损失函数就小于y(x,w1),解决了上面的问题。
    image.png

    5.3 损失函数终极版

    image.png

    六. Softmax 分类器

    Softmax 分类器 是 多类别分类,Softmax的输出是概率。
    image.png

    6.1 Sigmoid函数

    Sigmoid是符号函数:
    image.png

    x取值范围是(-∞,+∞),而y的取值范围是[0-1]
    刚好我们的概率取值范围也是[0-1],于是可以对应起来。
    image.png

    6.2 Softmax 分类器概述

    Softmax的输出(归一化的分类概率)

    损失函数:交叉熵损失(cross-entropy loss)
    image.png

    image.png
    上图被称作softmax函数

    其输入值是一个向量,向量中元素为任意实数的评分值

    输出一个向量,其中每个元素值在0到1之间,且所有元素之和为1
    image.png

    七. 最优化

    image.png

    粗暴的想法:
    image.png

    得到的结果:
    image.png

    7.1 找到山坡的最低点

    image.png

    第一个位置是随机的,然后不挺的迭代,找到最低点
    image.png

    跟随梯度:
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IYJswv5W-1659234249640)(https://upload-images.jianshu.io/upload_images/2638478-2962a7e9f53e5658.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
    image.png

    7.2 梯度下降

    image.png
    image.png
    Bachsize通常是2的整数倍(32,64,128)

    image.png
    上图是 训练网络时的LOSS值视化结果。

    7.3 学习率

    训练网络时的LOSS值视化结果
    image.png

    image.png

    7.4 反向传播

    函数运行的结果与验证集存在偏差(损失函数大),此时可以通过反馈结果,调整权重参数,尽可能的将 损失函数的值变小。
    image.png
    image.png
    image.png
    image.png
    image.png

    加法门单元:均等分配
    MAX门单元:给最大的
    乘法门单元:互换的感觉
    image.png

    八. 神经网络

    8.1 神经网络概述

    image.png

    image.png

    image.png

    image.png

    image.png

    正则化项在神经网络中的重要作用
    image.png

    越多的神经元,就越能够表达能复杂的模型
    image.png

    8.2 激活函数

    激活函数是用来解决 预测结果与变量之间的非线性关系的问题。
    image.png

    最开始的激活函数就是Sigmoid,但是他会存在一个梯度消失的问题。
    image.png
    image.png

    image.png

    于是引入了新的激活函数ReLUctant
    当x<=0的时候,y=0
    当x > 0 的时候,y=x
    image.png

    8.3 数据预处理

    image.png

    全零值初始化?
    image.png

    image.png

    8.4 DROP-OUT

    左图是全连接,模型效果更优,但是模型也更复杂,计算量也大。
    所以有了右图的DROP-OUT,将一些不重要的连接去掉,保证模型效果的同时,尽量减少一些不必要的计算量。
    image.png

    参考:

    1. https://study.163.com/course/introduction.htm?courseId=1003590004#/courseDetail?tab=1
  • 相关阅读:
    Linux_用户管理
    Spring Security 介绍中的 servlet 和 reactive
    物联网僵尸网络Gafgyt家族与物联网设备后门漏洞利用
    一次就能释放大量Mac内存空间的方法,你用过哪种?
    基于真理和逻辑之后的行动:年少轻狂、中年压力、老年迟疑
    json.Unmarshal() 反序列化字节流到 interface{} 对象,字段 int/int64 类型出现精度丢失...
    如何一起修改多张图片大小?一键修改多张图片尺寸的技巧
    学生个人网页设计作品 学生个人网页模板 简单个人主页成品 个人网页制作 HTML学生个人网站作业设计 汉语言文学设计题材网页
    前端国际化的思考与实践
    Linux:环境变量
  • 原文地址:https://blog.csdn.net/u010520724/article/details/126082537