Python深度学习(第一部分)

书封面.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深度学习(第一部分))