美文网首页
Python深度学习(第一部分)

Python深度学习(第一部分)

作者: 沉寂之舟 | 来源:发表于2020-12-28 12:08 被阅读0次
    书封面.png

    传送门:
    Python深度学习(第一部分)
    Python深度学习(第二部分 -1)
    Python深度学习(第二部分 -2)


    写在前面

    目前: Keras版本: 2.4.0

    2

    第一章 什么是深度学习

    1-1.png
    1. 人工智能: 将通常人类完成的智力任务自动化.(PRA)
    2. 机器学习: 通过训练,使得程序能够"学习"到程序员预先编写之外的规则. (图像分类,语音识别,语言翻译)
    3. 深度学习: 强调从联系的层中进行学习,且层数较多(上百个). 分层表示学习(layered representations learing),层级表示学习(hirarchical representations learning).

    机器学习三要素: 输入数据点(编码),预期输出的示例(样本),衡量算法效果好坏的方法(调整).

    学习指寻找更好数据表示的自动搜索过程.

    深度学习工作原理:

    1-2.png

    深度学习的场景:

    接近人力水平的视觉,听觉(图像识别,语言识别,翻译,自动驾驶,下棋)
    注意: 作者很严谨地用了"接近人力"的说法

    机器学习历史:

    1. 概率建模(朴素贝叶斯,logistic回归)
    2. 早期神经网络(50年代开始,直到80年代重新发现反向传播算法,进入实践应用)
    3. 核方法: 一组分类算法,支持向量机(寻找决策边界),利用核函数可应用简单分类问题,但是难以扩展到大型数据集,也难以用于图像分类.
    4. 决策树、随机森林、梯度提升机:其中梯度提升方法,通过迭代训练模型解决之前模型弱点,目前处理非感知数据最好的算法之一。
    5. 回到神经网络(2010年出现重大突破)--深度卷积网络(convnet),并在自然语言处理,计算机视觉等方面取代SVM与决策树。

    理由:其他方法,对于初始输入数据有较高要求,必须手工为数据设计好表现层(特征工程),而深度学习可以自动完成。通过分层(特征维度扩展)一次性学习所有特征,简化了机器学习的工作流程。(工程化可能)

    之前为什么不做?深度学习一次性“贪婪”共同学习所有表示层,自然而然带来计算量的增加,而之前也没有好的硬件实现。(直到NVIDIA的GPU推出CUDA),同时数据集也随着Google,ImageNet等基准化了。(Google的认证码还是识别红绿灯,人行道,小轿车-用脚趾头也知道是在做自动驾驶的识别),另外算法也进一步改进(激活函数,权重初始化方案(预训练),优化方案等出现)

    第二章 神经网络的数学基础

    1. 初识

    Minist数据集,识别28*28的灰度图像,作为深度学习的"hello world".
    加载数据,网络结构,编译参数,执行Fit.

    1. 神经网络的数据表示

    张量(Tensor): 数据存储的多维Numpy数组.它只包含数值,是数字的容器. 图像是4D张量,视频是5D张量
    轴的个数(ndim)
    形状(sharp)
    数据类型(dtype): float32,uint8,float64
    数据操作: 切片,数据批量

    1. 张量运算

    逐元素计算(relu,加法),广播(补齐),张量点积(内积),张量变形
    深度学习的几何解释: 为复杂的,高度折叠的数据流找到简洁的表示(降维)

    1. 神经网络的"引擎": 基于梯度的优化,本书数学符号不多,幸好已经看了其他书,这块理解起来没有那么难.

    随机梯度下降: 选取随机的样本进行梯度下降(适用于样本远大于参数个数),由于并非每次都考虑到全局,准确性小于批量SGD.

    动量方法: 增加速度的考量,避免现陷入局部极小值.

    第三章 神经网络入门

    1. 神经网络剖析

    层: 深度学习基础组件(全连接层,循环层)-层兼容性
    模型: 层构成的网络(双分支,多头,Inception模块)
    损失函数与优化器: 衡量目标与调整学习的重要模块(反乌托邦的比喻还是挺幽默的)

    1. Keras

    模型级(model-levl)库,并不处理张量操作,求微分等低层次的运算.后端引擎可选TensorFlow,Theano,CNTK.

    1. 建立深度学习工作站

    Jupiter笔记本,云端服务器,GPU

    1. 电影评论分类

    数据准备: 评论转换为按照字典的序列(深度学习不关心单词本身的含义).
    构建网络: 使用Relu激活的Dense简单堆叠.
    方法验证: 训练损失随着迭代次数变小,但是验证损失并没有(出现过拟合)

    1. 新闻分类

    单标签,多分类;多标签,多分类

    数据准备: 同4的方式,转换为one-hot编码
    构建网络: 使用64个核的中间层
    损失函数,优化器: 分类交叉熵,rmsprop
    方法验证: 9层最优,之后过拟合.

    1. 预测房价

    数据准备: 样本较少,使用13个数值特征;加入数据标准化过程
    构建网络: 2个隐藏层,每层64单元,数据少->网络小
    损失函数: 均方误差(MSE),平均绝对误差(MAE)
    方法验证: K折验证,调整参数(迭代次数,隐藏层大小)

    第四章 机器学习基础

    1. 机器学习的四个分支:

    监督学习,无监督学习,自监督学习,强化学习.
    其中强化学习可以让机器对环境(游戏,棋盘,路况等)产生反馈,是现在研究热点

    1-3.png
    1. 评估机器学习模型

    机器学习是基于训练集数据展开的,但是其目的是要应用于其他数据(测试集),也就是说需要一个泛化(generalize)的模型.然后随着对训练数据的多次迭代,其必然会更加倾向于只适用于训练数据,这就是过拟合.

    • 留出简单验证
    • K折验证(分区,评价,汇总) -- 小样本
    • 带有打乱数据的重复 K 折验证 -- 计算代价大

    数据划分的注意事项: 数据代表性,验证集与训练集不相交,时间箭头

    1. 数据预处理、特征工程和特征学习

    向量化,值标准化,处理缺失值
    特征工程:(这个很重要),以识别钟表时间为例,好的建模可以大大加快机器学习速度(甚至不用到机器学习,简单计算即可)

    1. 过拟合与欠拟合

    机器学习的根本问题是优化和泛化之间的对立.

    • 减小网络大小(加大特征压缩)
    • 添加权重正则化(L1,L2)
    • 添加 dropout 正则化(有效,随机拿掉一些,避免有的权重过大,影响其他神经单元)
    1. 机器学习的通用工作流程
    • 定义问题,收集数据集 (这里可能需要一些爬虫技术)
      明确输入,并且假设输出是可以根据输入预测的(彩票啥的,就别瞎想了);同时假设输入足够多到可以建立输出与输入的关系.
      也就是说,机器学习本质上是归纳(对现有知识的特征提取),并没有产生新的知识.

      1-4.png
    • 选择衡量成功的指标(Kaggle 网站有各种问题的各种指标)

    • 确定评估方法

    • 准备数据(数据格式化为机器学习需要的张量数据)

    • 开发比基准更好的模型(基准一般指纯随机结果)
      三个关键参数:最后一层的激活(sigmoid),损失函数(binary_
      crossentropy),优化配置(rmsprop)

    • 扩大模型规模:开发过拟合的模型

    • 模型正则化与调节超参数(主要耗时处,参数需要不断试错)

    • 训练最终的生产模型,然后在测试集上最后评估一次

    相关文章

      网友评论

          本文标题:Python深度学习(第一部分)

          本文链接:https://www.haomeiwen.com/subject/jjbznktx.html